diff --git a/_includes/about.html b/_includes/about.html new file mode 100644 index 0000000..c127b42 --- /dev/null +++ b/_includes/about.html @@ -0,0 +1,7 @@ +
+ +
about code52
+ + + +
\ No newline at end of file diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..67a8242 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,18 @@ +
+ +
\ No newline at end of file diff --git a/_includes/get_involved.html b/_includes/get_involved.html new file mode 100644 index 0000000..6ccd362 --- /dev/null +++ b/_includes/get_involved.html @@ -0,0 +1,13 @@ +
+

what can I do?

+ The easiest way to get started is to dive straight in: + +
+ +
+
\ No newline at end of file diff --git a/_includes/goals.html b/_includes/goals.html new file mode 100644 index 0000000..26f59e4 --- /dev/null +++ b/_includes/goals.html @@ -0,0 +1,12 @@ +
+

goals

+

These are some of the goals we want to achieve with code52:

+ + + +

The current organisers of code52 are Andrew Tobin, Brendan Forster and Paul Jenkins.

+
\ No newline at end of file diff --git a/_includes/latest_project.html b/_includes/latest_project.html new file mode 100644 index 0000000..a954333 --- /dev/null +++ b/_includes/latest_project.html @@ -0,0 +1,19 @@ +
+

current

+

The latest Code52 project is Show and Tell +

+ +
We want to hear from you about the cool things you've been experimenting with or the cool things you've built. We explain the idea in more details here.
+ +
+

Want to get involved?

+ + + +
+
Interested in contributing some code? You should check out our past projects!
+
\ No newline at end of file diff --git a/_includes/links.html b/_includes/links.html new file mode 100644 index 0000000..f6cfce7 --- /dev/null +++ b/_includes/links.html @@ -0,0 +1,12 @@ +
+

links

+ For those hungry for more information: + +
+ +
+
\ No newline at end of file diff --git a/_includes/past.html b/_includes/past.html new file mode 100644 index 0000000..c9bcc71 --- /dev/null +++ b/_includes/past.html @@ -0,0 +1,57 @@ +
+

past

+ + Some of our recent work + +
+ + + + + + +
+
 
+
\ No newline at end of file diff --git a/_layouts/layout.html b/_layouts/layout.html index 100fa96..e149d7a 100644 --- a/_layouts/layout.html +++ b/_layouts/layout.html @@ -1,38 +1,66 @@ - - - - - - - - - - - - {% if page.title != "code52" %}{{ page.title }} - code52{% else %}{{ page.title }}{% endif %} - - - - -
-
- Code 52 - a new coding project every week - - -
-
- {{content}} -
- -
- + + + + + + + + + + + + {% if page.title != "code52" %}{{ page.title }} - code52{% else %}{{ page.title }}{% endif %} + + + + + + + +
+
+ Code 52 - a new coding project every week + + +
+
+ {{content}} +
+
+
 
+ {% include footer.html %} + \ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html index 29946ed..cb2302c 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,6 +1,7 @@ --- layout: layout --- +

{{page.title}}

diff --git a/_layouts/splash.html b/_layouts/splash.html new file mode 100644 index 0000000..fcfab47 --- /dev/null +++ b/_layouts/splash.html @@ -0,0 +1,73 @@ + + + + + + + {% if page.title != "code52" %}{{ page.title }} - code52{% else %}{{ page.title }}{% endif %} + + + + + + + + + + + + + + +
+

code52

+

a new coding project every week

+
+ {% include latest_project.html %} + + {% include goals.html %} + + {% include get_involved.html %} + + {% include past.html %} + + {% include links.html %} +
+
+ {% include footer.html %} + + + \ No newline at end of file diff --git a/_posts/2011-01-16-ideastrike.md b/_posts/2011-01-16-ideastrike.md new file mode 100644 index 0000000..ea02337 --- /dev/null +++ b/_posts/2011-01-16-ideastrike.md @@ -0,0 +1,45 @@ +--- +layout: post +title: "Week 3: Ideastrike" +author: "@tobin" +comments: true +date: 2012-01-17 +--- + +##This week's idea + +Two weeks down, and the momentum is strong - we've got a packed room over at [Jabbr](http://jabbr.net/#/rooms/code52), we've been featured on the [Github blog](https://github.com/blog/1024-a-new-coding-project-every-week-at-code52), and we've got two projects that are going strong. + +So now we're on to week three, and another idea from our community - [Ideastrike!](https://github.com/Code52/Ideastrike) (code to go up soon ;)) + +**Our aim this week is to create a great site to give ideas and feedback, focusing on software development and good integration with other tooling.** + +There are many feedback and voting mechanism for ideas, but we think we can provide an open-source alternative, that is feature rich, simple, but powerful, and will be a great asset for the small guys trying to get started on projects. + +Here's an initial mockup from [@aeoth](http://twitter.com/aeoth) about how this might look. + +![](/img/week3-ideastrike-mockup.png) + +We've got a [Trello board](https://trello.com/board/ideastrike/4f137b417201526045146b8a) set up which we'll use to track the backlog of features and who's currently working on what feature - if you want access to the repository to help out, drop into the [JabbR](http://jabbr.net/#/rooms/code52) chatroom and get in touch. + +## What platform are we looking at? + +Well, we've had a lot of feedback this week about this being a ".NET only" group - we don't intend it to be that way, but as it was said on [The West Wing](http://en.wikipedia.org/wiki/The_West_Wing) - "Decisions are made by those who show up". + +We're looking for the primary group to start working with an ASP.NET framework - [Nancy](https://github.com/NancyFx/Nancy) as it's what some of us are familiar with, and what we think others with .NET experience will get up to speed on quicky. We also benefit from two [exceptional](https://twitter.com/grumpydev) [guys](https://twitter.com/thecodejunkie) who have been, and we hope will be, stopping by to offer support and advice. + +That being said, if some of the other communities out there - be it Java, Ruby, Python, Node.JS, Haskell, Erlang or Perl want to get involved - stop by, help us make decisions, and gather a group and code. + +We're happy to *have* help, we're happy *to* help. + +One idea we've had is if we collaboratively work on a set of specifications, so we can jointly create something that works cross-platform, for different scenarios and different communities - but a shared reference. + +We're happy to discuss it, to offer support, publicity where we can, but what we need is - if you're serious about contributing and you want to make this more than just about .NET, we need you to show up. + +##So what now? + +We'll be getting some code set up on the github in the next 24 hours, and discussing approaches and drawing up a battle plan in the chatroom - if you've got ideas you want, come in and discuss them with us (ping @aeoth, @shifty and @tobin in the room please), or leave a message on this blog post. + +Get into the chatroom at [JabbR](http://jabbr.net/#/rooms/code52) and join in on the fun! + +-- Code52 team \ No newline at end of file diff --git a/_posts/2012-01-09-downmarker-review.md b/_posts/2012-01-09-downmarker-review.md index a242049..e3c610c 100644 --- a/_posts/2012-01-09-downmarker-review.md +++ b/_posts/2012-01-09-downmarker-review.md @@ -14,9 +14,9 @@ So we'd like to present to you **MarkPad**. It comes with all the features you'd expect, and as you can see from the screenshot it includes an edit panel, live render, and the ability to push and pull posts from a MetaWeblog API endpoint (for blogs such as [Funnelweb](http://funnelweblog.com)). -You can find it available for download on it's [own site here](http://code52.org/DownmarkerWPF). +**[Try out the preview build](https://github.com/downloads/Code52/DownmarkerWPF/Markpad.1.0rc.zip)**, provide us [feedback](https://github.com/Code52/DownmarkerWPF/issues), or view the [source code](https://github.com/Code52/DownmarkerWPF) -We'd like to thank everyone that came on board, and we had quite a few people who delivered great code all week, and a few who came in to deliver a feature here and there - and we can't thank you guys enough - you made this possible. We'd also like to thank [Chris Lindhartsen](http://clindhartsen.deviantart.com/art/Focus-Text-Editor-176271501) for permitting us to use his "Focus" metro-text editor UI mockups as inspiration for MarkPads design. +We'd like to thank everyone that came on board, and we had quite a few people who delivered great code all week, and a few who came in to deliver a feature here and there - and we can't thank you guys enough - you made this possible. We'd also like to thank [Chris Lindhartsen](http://clindhartsen.deviantart.com/art/Focus-Text-Editor-176271501) for permitting us to use his "Focus" metro-text editor UI mockups as inspiration for MarkPad's design. We have a series of daily updates that show our progress up and give some insight as to what happened, which you can find on the blog - we've separated them into their own feed if you're interested. diff --git a/_posts/2012-01-09-jibbr.md b/_posts/2012-01-09-jibbr.md new file mode 100644 index 0000000..97331c0 --- /dev/null +++ b/_posts/2012-01-09-jibbr.md @@ -0,0 +1,33 @@ +--- +layout: post +title: "Week 2: Jibbr" +author: "@shiftkey" +comments: true +date: 2012-01-10 +--- + + +After the success of the [first week](http://code52.org/downmarker-review.html) and being [Hanselman'd](https://twitter.com/#!/shanselman/status/156270525935656960), we found ourselves at a bit of a crossroad with what to take on next. + +'Git for Windows' is the most popular idea on the list, but we have some contributors who were relatively new to Git, and we'd rather ease them into using Git rather than throwing them under the Git bus. + +So the group in the chatroom started discussing other ideas over the course of today, and settled on another which would help us with our projects. + +We want a bot to listen into a JabbR chat room 24-7 to follow the action and execute tasks in the background. We want to write extensions to integrate with the systems we use to run projects. And we want to automate the boring bits. + +That's where JibbR comes in. Some things that JibbR might do: + + * Send a message to the room about a GitHub pull request - no need to read email notifications. + + * Log an issue discussed in Jabbr to GitHub's issue tracker. + + * Take a idea raised in Jabbr and add it to UserVoice as a suggestion. + +This project uses [David Fowler's](http://twitter.com/davidfowl) work on the [Jabbot](http://github.com/davidfowl/jabbot) project as a starting point, and takes some inspiration from [Hubot](http://hubot.github.com/). + + +There's already a number of features [suggested](https://github.com/code52/jibbr/issues) - so go suggest yours too before its too late. + +Want to get involved? Drop in to [JabbR](http://jabbr.net/#/rooms/code52) and join in! + +-- Code52 team \ No newline at end of file diff --git a/_posts/2012-01-10-line-endings.md b/_posts/2012-01-10-line-endings.md new file mode 100644 index 0000000..3ca7a08 --- /dev/null +++ b/_posts/2012-01-10-line-endings.md @@ -0,0 +1,21 @@ +--- +layout: post +title: Line Endings +date: 2012-01-10 +comments: true +--- + +We're still learning Git and frankly it shows. We've hit an issue that can be best solved by copying a [wiki article](https://github.com/NancyFx/Nancy/wiki/Make-sure-line-endings-doesn%27t-bite-you-%28or-us%29) from [NancyFx](http://nancyfx.org/) nearly verbatim + +>##Make sure line endings doesn't bite you (or us) +###All good things must come to an end.. +> Before you begin working with NancyCode52, be sure to set your AutoCRLF option to false. This tells your git client how it should treat line-endings in your local copy of a repository and prevents you from ending up with Git informing you that every single file have changes in it, when you are pretty damn sure you never touched any of them. Do yourself (and us - we don't want your screwed up line ending commits if we can avoid it!) a favor and make sure this is configured correctly. + +> To set AutoCRLF for just the NancyCode52 repository, make sure you are in the correct folder and execute + +> `git config core.autocrlf false` + +> To make it the default setting for all repositories execute (this might very well introduce the issue in other repositories, if they rely on another setting) + +>`git config --global core.autocrlf false` + diff --git a/_posts/2012-01-16-jibbr-review.md b/_posts/2012-01-16-jibbr-review.md new file mode 100644 index 0000000..8a301e7 --- /dev/null +++ b/_posts/2012-01-16-jibbr-review.md @@ -0,0 +1,64 @@ +--- +layout: post +title: "Week 2: JibbR" +author: "@aeoth, @shiftkey and @tobin" +comments: true +date: 2012-01-16 10:00:00 PM +--- + + +As we are getting to the end of this iteration, it is time to take stock of what we have achieved. + +## What went well + +After being picked up by some influential tweeters, the Code52 room became the most popular room on JabbR - far surpassing our wildest expectations this far along. We also picked up some new contributors, and it was excellent to have contributors in different timezones. + +So we currently have a collection of *sprockets* (components which interact with users in a chat room) and *announcers* (components which periodically execute tasks and notify the chat room when new things have occurred). Important features include: + + * **Calculator Bot** - too lazy to open calc.exe? ask the bot! + * **Volunteer Sprocket** - (jokingly) assign work to a random person in the room + * **Weather Sprocket** - find out the weather for a specific zip code (US only :( ) + * **Quiz Sprocket** - use a quiz to break up the quiet times + * **GitHub Announcer** - track activity on a Github repo (and its forks) + * **Twitter Announcer** - display tweets for a specific account + * **UserVoice Announcer** - track activity in a UserVoice forum + +We even have these ones sitting as pull requests: + + * **Bitbucket Announcer** - notify activity from a build server + * **CruiseControl.Net Announcer** - notify activity from a build server + * **TeamCity Announcer** - notify activity from a build server + +These are run inside a console application with scheduling supported. + +## What could be improved + +We didn't quite get to the "feature complete" point this week, as I suspect we (ed: @shiftkey) were too ambitious with our goals. + +We have a fork which is running on AppHarbor, but we encountered a few hurdles. + + * MEF and AppHarbor aren't playing nice - [Paul Stovell](http://twitter.com/paulstovell) suggested that it should be supported as FunnelWeb does it. To be investigated. + * The website UI only has the basic functionality - to start and stop a bot - and lacks the ability to run specific sprockets or announcers. + * The components require APIs to support start and stop behaviour. + * The packages and website should be deployable + * [Paul](http://twitter.com/aeoth) just mentioned that [AWS Free Tier](http://aws.amazon.com/free/) now supports a micro Windows instance. Interesting... + * Hubot scripting support is *almost* there, but the way that [scoped-http-client](https://github.com/technoweenie/node-scoped-http-client) handles and returns the http object and responses is proving to be a little tricky to implement in IronJs. This means that scripts that *don't* use 'http' currently work, but those that do won't work until we figure that one out. + + + Here's a couple of screenshots of the website UI: + + ![](/img/week2-wrapup-dashboard.png) + + ![](/img/week2-wrapup-admin.png) + +## Fun statistics + +The [punch card graph](https://github.com/Code52/JibbR/graphs/punch_card) over at GitHub this month is very interesting. + +![Code metrics](https://chart.googleapis.com/chart?chs=800x300&chds=-1,24,-1,7,0,26&chf=bg,s,efefef&chd=t:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23|0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7|1,0,0,0,0,1,0,0,4,0,0,1,2,0,0,7,9,1,0,2,10,0,0,3,0,0,0,0,0,1,0,0,0,4,0,2,0,1,0,0,3,0,0,0,1,2,2,4,2,0,0,0,1,0,0,1,26,1,0,1,1,2,0,0,2,1,2,5,3,8,18,6,1,0,2,3,0,0,17,11,0,0,3,4,3,0,2,2,0,0,0,0,4,7,1,1,2,0,0,0,0,0,0,0,0,2,1,2,0,5,3,3,0,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,2,0,0,2,0,0,2,10,4,3,1,0,0,0,0,2,2,3,1,7,1,0,0,0,0,0,2,2,1,2,0,3,2,1,0,2,2,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&chxt=x,y&chm=o,333333,1,1.0,25.0&chxl=0:||12am|1|2|3|4|5|6|7|8|9|10|11|12pm|1|2|3|4|5|6|7|8|9|10|11||1:||Sun|Mon|Tue|Wed|Thr|Fri|Sat|&cht=s) + +## What next? + +The outstanding tasks are up on the new [Trello board](https://trello.com/board/jibbr/4f0f5e8ed8920290334bd12f). Feel free to add new idea to the backlog - or start work on one! Issues still go on our Github [Issues Page](https://github.com/code52/jibbr/issues) to discuss with the team. [Brendan](http://twitter.com/shiftkey) is speaking at a user group on Wednesday, so any discussion on these tasks may be delayed until he can get the code ready to merge upstream. + +-- Code52 team diff --git a/_posts/2012-01-16-some-words-about-gathering-ideas.md b/_posts/2012-01-16-some-words-about-gathering-ideas.md new file mode 100644 index 0000000..012b233 --- /dev/null +++ b/_posts/2012-01-16-some-words-about-gathering-ideas.md @@ -0,0 +1,63 @@ +--- +layout: post +title: Some words about gathering ideas +date: 2012-01-16 +comments: true +--- + +**Summary (TL;DR):** We'd like to improve the process for gathering ideas. If you have any input on the below situation, drop us a line in the [JabbR](http://jabbr.net/#/rooms/code52) room or [email](code52@code52.org) us. + +
+ + +As the [three](http://twitter.com/tobin) [of](http://twitter.com/shiftkey) [us](http://twitter.com/aeoth) have been discussing the next Code52 project to undertake, we've been discussing how we can solicit awesome ideas for projects. While the UserVoice site has served us well initially, the ideas we are currently seeing fall into three different buckets: + +* **Great idea, but constrained** - an idea which is constrained by access to some resource, e.g. hardware, operating system. +* **A replacement for X** - an idea to replace an existing tool (FOSS or otherwise), for whatever reason +* **Needs more work** - an idea which we've tried to reach out to the author to clarify + +## How do we address these issues? + +The first one, while seeming impossible, can actually be resolved if we have people on board who have access to the necessary hardware. This could be as simple as having a project schedule and allowing contributors to indicate their availability (and interest) in specific projects. There are other workarounds possible, but these require more logistical effort which we don't have the time to organise currently. + +The "replacement for X" ideas are an interesting topic (the underlying discussion for why it is that way is a discussion for another day). There was a fantastic quote from Dmitry Baranovsky last week at a user group: (may be paraphrasing) *"the good thing about reinventing the wheel is that sometimes you actually get a circle"*. This reflects my philosophy on building "replacement" tools. Yes, you can do it. But are you actually looking to create a better tool? When one suggests a "replacement for X" idea, the suggestion should include *how* the idea is different to what we have currently. + +The last group is perhaps a side-effect of our organisational efforts. We've been swamped this week since Code52 picked up a lot of interest in the interwebs, and while there's been some great discussion in the JabbR chatroom (just don't mention autocrlf there :) ), we haven't had the bandwidth we'd hoped to clarify ideas in depth. + +## So what is a good idea anyway? + +After discussing this over the weekend, we've come up with a few questions that future idea submissions should keep in mind: + +### **Can it be done in a week by a handful of developers?** + +We're not after the idea that you will make millions from, or an idea that will let you quit your job and become famous on [YCombinator](http://ycombinator.com/). We're after ideas that's been sitting on the backburner that you don't have the time for at the moment, or that you want/need help to implement. Let us have a shot at it for you, or join us and lead a team through developing it for you as an OSS project. + +We want to deliver something of value each week, and large projects are not feasible currently. But if there's something specific within your idea we could implement as a project, tell us! + +**Note:** *We are exploring how larger projects could fit within this concept, and breaking a big project down into a series of smaller projects may be the best way to achieve this.* + +### **Why would you like to see this idea implemented?** + +I said recently on Twitter that the most rewarding OSS projects are driven from a selfish need. Even something as simple as "I wish Product XYZ did {list of things}" can help start the discussion. + +Often we (the organisers) will do a simple Google search for existing products to compare and contrast with a suggested idea. If we cannot differentiate between an existing product and your idea, the idea is likely to have limited success. We will update the idea with our feedback and leave an opportunity to follow up - but the more information you can provide us with, the better armed we are to define the brief associated with a project. + +### **How can I help out?** + +Not everyone is a developer. But everyone can help out to ensure a project succeeds. Great software has many inputs which aren't code - documentation, design, user experience, co-ordination, etc. - and many hands make light work. + +### **What cool features can you suggest?** + +This may be the toughest question to answer. If you can provide us with more details around what you imagine the software doing, that: + +* gives the organisers more context to organise the project brief +* gives everyone an opportunity to refine the idea further +* gets people interested in executing the idea + +## And the next idea? + +It actually ties into this discussion. We've mentioned it in the chatroom over the weekend to gauge interest, but will officially announce it later tonight (AEDST). + +**We'd love to hear feedback on this - we're doing this to involve the community, and we can only guess the right approach if we don't hear your views on this.** + +-- Code52 team \ No newline at end of file diff --git a/_posts/2012-01-23-ideastrike-review.md b/_posts/2012-01-23-ideastrike-review.md new file mode 100644 index 0000000..00bed09 --- /dev/null +++ b/_posts/2012-01-23-ideastrike-review.md @@ -0,0 +1,66 @@ +--- +layout: post +permalink: /ideastrike-review.html +date: 2012-01-20 23:59 +title: "Ideastrike: Recap" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +A bit of a chaotic weekend, but it finally came together and we have another project to unveil. + +![](/img/week3-recap-logo.png) + +[Ideastrike](http://github.com/Code52/Ideastrike) - which we will switch to once it has the features we require to replace our existing site - is a web application for suggesting, discussing, planning and executing project ideas. + +## Curent Features + +So what did we get done in a week? + + * The website uses [NancyFx](http://nancyfx.org/) - a super-duper-happy-path web framework running on ASP.NET (also runs in other places). + * User authentication is done via [Janrain](http://www.janrain.com/products/engage) which means users don't need to create new accounts, and administrators don't need to manage accounts either. + * Markdown support just about everywhere on the site. If you have space for more than a sentence, we've added Markdown support. And a preview mode too, using [Showdown](http://showdown.im). + * [Twitter Bootstrap](http://twitter.github.com/bootstrap) has been used as the baseline for our site theme. + * Image Uploading using the [jQuery File Upload](http://blueimp.github.com/jQuery-File-Upload/) plugin - attach files to an idea. + * Oh, and running on AppHarbor [right now](http://ideastrike.apphb.com/). I wish I had more screenshots of the testing from earlier today - here's something more recent. + +![](/img/week3-recap-main.png) + +![](/img/week3-recap-idea.png) + +**Note:** this is a non-production environment and will be treated as such by us in the short-term. Any ideas you want to keep for posterity should go on our [Uservoice](https://code52.uservoice.com/forums/143105-code-52) site, not on AppHarbor. We will let you know when that's ready to go. + + +## Fun stats + +We had 14 separate contributors this week and 50 pull requests accepted - our busiest week so far. + +The [punch card graph](https://github.com/Code52/Ideastrike/graphs/punch_card) over at GitHub this week also tells a story. + + + + +## What's Next? + +While we're proud to have a working site going, we're not tying this one off just yet. We've got a number of things to add which are sitting on the [Trello board](https://trello.com/board/ideastrike/4f137b417201526045146b8a), just waiting, nay, begging for some love. + + * Github and Trello integration - we've started on the UI for this, but we want the activity feed to come alive as the idea evolves and progresses from concept to code. + * API and Client libraries - so that app developers can integrate with Ideastrike directly. + * A more dynamic web experience - we're using [Mustache.js](https://github.com/janl/mustache.js) already for the activity feed, and we've only scratched the surface of what you can do with JSON data and client-side templates. + * Database improvements - using the shiny new EF 4.3 Migrations to update the schema and persist data. + + +## What can I do to help? + +Interested in contributing? + + * Test out the site on [AppHarbor](http://ideastrike.apphb.com/) and log [issues](http://github.com/Code52/Ideastrike/issues) on Github. + * [Fork the code](http://code52.org/contributing.html) on GitHub and send us a pull request for something you'd like to add. + * Suggest a feature on the [Trello](https://trello.com/board/ideastrike/4f137b417201526045146b8a) backlog. + * Drop into the JabbR [chatroom](http://jabbr.net/#/rooms/code52) if you're not sure where to start. Of if you'd just like to chat. + +And we'll wrap up this week's post with another meme that was unearthed this weekend in JabbR. + +![](/img/why-dot-net.png) + +Thanks to [@NickJosevski](http://twitter.com/nickjosevski) for some hilarity. \ No newline at end of file diff --git a/_posts/2012-01-24-samurai.md b/_posts/2012-01-24-samurai.md new file mode 100644 index 0000000..fdcc37a --- /dev/null +++ b/_posts/2012-01-24-samurai.md @@ -0,0 +1,38 @@ +--- +layout: post +title: "Week 4: Samurai" +author: "@aeoth, @tobin and @shiftkey" +comments: true +date: 2012-01-24 +--- + +Three weeks down, and we're recovering from the epic week of activity for getting [Ideastrike](http://code52.org/ideastrike-review.html) off the ground and demanding [@jongalloway](http://twitter.com/jongalloway) bake us a cake (unsuccessfully, sadly) - and the [Jabbr](http://jabbr.net/#/rooms/code52) room continues to grow in size. + +So what's up for this week? + +## Codename: Samurai + +Yes, we're making a game. + +We have a rough idea of the mechanics of the game (its being discussed on the [wiki](https://github.com/Code52/samurai/wiki)), but haven't settled on a theme or visuals yet. But we have settled upon creating a **turned-based combat game with multiplayer support**. + +## What are we actually building? + +After much discussion about technology choices (and I'm fairly certain some blood was spilled - impressive for an online discussion) we came to agreement on two things: + + * *licensing and cross-platform experience is a bit of a minefield currently.* + * *focusing on the server logic and gameplay mechanics initially will provide opportunities for others to write clients for their favourite platforms.* + +So for this week we're focusing on the **server component** and a **client written using XNA**. Not your favourite choice? We'll have a Trello board setup over the next couple of days with a better roadmap on future projects - so now's the chance to suggest a platform on our [Uservoice](https://code52.uservoice.com/forums/143105-code-52) site that **you'd like to contribute to in the future**. + +Still have complaints? Please forward them to your local representative - if you weren't in the [JabbR](http://jabbr.net/#/rooms/code52) chatroom over the past 3-4 days we discussed the topic, you missed a hell of a debate. + +## How can I get involved? + +The initial code is currently being fleshed out as I write this on [GitHub](http://github.com/Code52/Samurai) (Samurai is the codename for the project, because [Brendan](http://twitter.com/shiftkey) is a sucker for a good random name generator). The [Trello board](https://trello.com/board/samurai/4f1d3d847a38f6221f1d9354) is being cultivated to define the tasks necessary to hit the ground running. + +This post may be a bit brief, but that's because so much is in flux currently and people's creative juices are just starting to flow. + +Want to see it evolve? Hang out in the chatroom at [JabbR](http://jabbr.net/#/rooms/code52) and join in on the fun! + +-- Code52 team \ No newline at end of file diff --git a/_posts/2012-01-25-gh-pages.md b/_posts/2012-01-25-gh-pages.md new file mode 100644 index 0000000..cf0d267 --- /dev/null +++ b/_posts/2012-01-25-gh-pages.md @@ -0,0 +1,26 @@ +--- +layout: post +title: Contribute to the project websites +date: 2012-01-25 +comments: true +--- + +You may have noticed that we have pages for each of the individual projects. In truth, we have sub-websites that anybody can edit with a pull request. + +##GitHub Pages (GH-Pages) +Any GitHub repository with a "gh-pages" branch has a website, usually in the form of *username*.github.com/*projectname*. In our case, as Code52 is the "organisation" that has all the repos under it, it'd be `code52.github.com`. + +What if we wanted a 'root' website (username.github.com) rather than sub-projects? Easy. Create a new repo on GitHub named "yourname.github.com". For Code52, that's [code52.github.com](https://github.com/Code52/code52.github.com/). + + +There are some neat tricks you can do to make that one of your own domains. If a repo has a CNAME file ([see our example](https://github.com/Code52/code52.github.com/blob/master/CNAME)) GitHub sets the canonical url to the value in that file. That can be done on individual projects, but we've done it on the "root" gh-pages for Code52, so all projects gh-pages appear as code52.org/<projectname>/ + +##Jekyll +So far we've just been modifying the gh-pages template (you can either create a gh-pages repo manually or click a button and GitHub creates a page from a template, giving you basic project info), but all gh-pages can be processed using [Jekyll](https://github.com/mojombo/jekyll). + +Jekyll is a static website generator which is "blog aware" and processes Markdown and turns it into HTML. I won't go into a long detailed explaination about how Jekyll is awesome - but gh-pages can either be 'plain' HTML or templated Jekyll/markdown which gives a fair degree of flexibility. The entire Code52 website is hosted off GitHub using Jekyll, so if you're unsure, check that out and ask questions. + +If you're looking for an editor for markdown, [we recommend one of our own](http://code52.org/DownmarkerWPF). + +##Fork, send a pull request, deploy +If you think we're doing something wrong on any of the Code52 websites - or you just want to add something missing, fork either the main website or an individual project, checkout the `gh-pages` branch, and send a pull request when you're done! \ No newline at end of file diff --git a/_posts/2012-01-30-samurai-review.md b/_posts/2012-01-30-samurai-review.md new file mode 100644 index 0000000..e4f01a8 --- /dev/null +++ b/_posts/2012-01-30-samurai-review.md @@ -0,0 +1,57 @@ +--- +layout: post +permalink: /samurai-review.html +date: 2012-01-30 23:59 +title: "Samurai: Recap" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +The end of another hectic week of code shenanigans is on us, and it's time to share what we have. This week we went in to make a game, the server back-end and an XNA front-end, and I don't think we did too badly for a week's effort. + +The week started off with a lot of discussion, drawing up plans and a lot of input in the room before we settled on an idea - and that idea was [Samurai](https://github.com/Code52/Samurai) - not just a codename, but a complete theme. + + +![](/img/week4-samurai-screen.png) + +Samurai is a tiled, turn-based, player-vs-player game that pits one army against another, a genre that has had many different entries over the years. + +## Current Features + +How far did we get this week? + + * We have a good basis for the front-end with a lot of hard work putting a framework in place thanks to [Quandtm](https://twitter.com/#!/quandtm) and some great tile designs by [Aeoth](https://twitter.com/#!/aeoth). + * A back-end built on MVC4 that got a fair way, with map and unit sections, game lobbies and user support, that can be brought in by any client. + * The start of an iOS client built on Monogame. + + +![](/img/week4-samurai-tiles.png) + +How far do we have to go? + + * We're planning on finishing up some unit control and movements on the WP7 client before we start doing some more maps and a play-test. + * We have some back-end work to do on resetting accounts, and showing some games on the administration side of the website. + * And much more to do in future weeks as we tune and build the game out - come and [join in](https://github.com/Code52/Samurai)! + + +![](/img/week4-samurai-end.png) + + +## The Weekly Fun stats + +There were 10 contributors this week and a lot of effort put in to get this off the ground. + +The [punch card graph](https://github.com/Code52/Samurai/graphs/punch_card) from GitHub shows how busy we were across the week. + + + + +## What's Next? + +As in previous weeks, we're still working on Samurai, and will be for some time - you can always come into the [chat room](http://jabbr.net/#/rooms/code52) and offer some help, or have a look at our [Trello board](https://trello.com/board/samurai/4f1d3d847a38f6221f1d9354) and see if there's something you'd be willing to help out on. + +We have also had a lot of movement in the last couple of weeks on [MarkPad](https://github.com/Code52/DownmarkerWPF) and [Ideastrike](https://github.com/Code52/Ideastrike) and we'll be getting a post up on those changes soon! + +The next project will be out tomorrow, and we think it'll be one that will be really useful for us, and the community at large - there's been a lot of talk about it in [the chat room](http://jabbr.net/#/rooms/code52) already, but no spoilers until we can get a post up tomorrow. + +We appreciate all the hard work people have put in on all the projects, and a huge thanks to [Quandtm](https://twitter.com/#!/quandtm) for all his efforts in getting the WP7 version up for us. You guys make doing Code 52 a pleasure and we're grateful for your company on this journey. \ No newline at end of file diff --git a/_posts/2012-01-31-pretzel.md b/_posts/2012-01-31-pretzel.md new file mode 100644 index 0000000..cbe51ad --- /dev/null +++ b/_posts/2012-01-31-pretzel.md @@ -0,0 +1,71 @@ +--- +layout: post +permalink: /pretzel.html +date: 2012-01-31 08:00 +title: "Pretzel" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + + +After an epic week doing game development (which for many of us was new territory), we've picked a project which revisits one of languages we use everywhere with Code52 - Markdown. + +## Pretzel + +Code52 are big fans of [Jekyll](https://github.com/mojombo/jekyll), the Ruby-based static site generator tool. In fact, the site you are reading leverages output from Jekyll (running on GitHub too - check out the code [here](https://github.com/code52/code52.github.com)) and all our project sites run on top of the same stack (more details [here](http://code52.org/gh-pages.html)). + +To develop locally against Jekyll, you need to install ruby and configure your environment to install the right set of gems. **We want to create a tool in this vein which is more friendly for .NET developers - and support for the technologies that they use so that they too can quickly create sites.** + +We also want to explore implementing features on top of this Jekyll-like workflow: + + * support different templating engines - Razor/Spark/??? + * support dynamic content alongside static content - for example using AppHarbor to generate content on-the-fly. + * support for different inputs - could we generate documentation for code using this tool? + +But before we head down that road, we want a simple tool to generate our websites. + +## Why Pretzel? + +We were discussing on JabbR what to name this tool, and someone described the process of generating a site as "baking". A few minutes later, we'd settled on the name "Pretzel" for the tool, rather than some derivative of Jekyll and Hyde. + +Conceptually, Pretzel could support two modes - **bake** and **taste**. + +**Bake** is for a once-off generation of the site. + +To scan the current directory for a website and detect the content to process, run: + + pretzel bake + +To scan a specific folder and parse the contents, run: + + pretzel bake C:\path\to\folder + +To explicitly specify the input - we should support inferring the input based on the files found anyway - run: + + pretzel bake --engine jekyll + +**Taste** is for testing a site locally using a browser - make a change, and Pretzel should detect the file changes and regenerate the site. + +To test a site locally (we plan to use [Dragonfly](https://github.com/loudej/dragonfly)), run: + + pretzel taste + +To specify the port to serve the site from (default will be 4000), run: + + pretzel taste --port 5000 + + +There's more ideas that we'll get to over teh course of the week, but this should give people an idea of how the tool should behave. + + +## How can I get involved? + +The initial code is up on [GitHub](http://github.com/Code52/pretzel). The [Trello board](https://trello.com/board/pretzel/4f25ffb3dbbed1ab5a4f0f5a) will be updated over the course of today to define the set of tasks we plan to implement. + +Got an feature you'd like to see implemented in Pretzel? Hang out in the chatroom at [JabbR](http://jabbr.net/#/rooms/code52) and join in on the fun! + + + + + + diff --git a/_posts/2012-02-06-pretzel-review.md b/_posts/2012-02-06-pretzel-review.md new file mode 100644 index 0000000..c9859ae --- /dev/null +++ b/_posts/2012-02-06-pretzel-review.md @@ -0,0 +1,59 @@ +--- +layout: post +permalink: /pretzel-review.html +date: 2012-02-06 23:59 +title: "Pretzel: Recap" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +Things were a bit quiet in the chatroom with [@tobin](http://twitter.com/tobin) taking a well-deserved holiday, but we've made a lot of progress on Pretzel - our site generation tool using .NET. + +## Current Features + +How far did we get this week? + +You can setup a new website using these three steps. + +**EDIT:** here's a quick [wiki article](https://github.com/Code52/pretzel/wiki/Installing-Pretzel) to get this running from the command line. + +![](/img/pretzel-console.png) + +This provides the demo site we've configured to help get people started experimenting - including images, styles and a sample post. + +![](/img/pretzel-demosite.png) + +You can then edit the files in the folder and see the site regenerate + +![](/img/pretzel-console-2.png) + +![](/img/pretzel-edit.png) + +If you want to understand more of how this tool works, have a read of the [Jekyll wiki](https://github.com/mojombo/jekyll/wiki) - this will help understand the concepts that Jekyll uses to differentiate between pages and posts, and how to configure your sites - this should help answer any initial questions users have about getting started with your own websites. + +Some other features on top of the site generation underway: + + * Wordpress Importing has begun - we'll update the documentation as soon as that is officially ready + * LESS compilation and JS minification within the 'bake' step. + * Razor template support - this is not as far along as our Liquid support, but is an excellent experiment with plugging in other templating engines. + +## More Features + +As we get time, these features are also planned: + + * Liquid extensions - including a decent set of extensions for users to integrate into their themes + * Refining the default project site to be a bit more featureful + * The ideas around mixing static and dynamic content (one big idea was to leverage AppHarbor to support this) didn't get off the ground. + +## - Weekly Fun stats + +There were 13 contributors this week - some new faces and some familiar ones. + +The [punch card graph](https://github.com/Code52/pretzel/graphs/punch_card) from GitHub shows how busy we were across the week. + + + + +## What's Next? + +The post for the next idea will be up shortly - we've been discussing in the chatroom how to tackle this idea, so stay tuned. \ No newline at end of file diff --git a/_posts/2012-02-07-jetbrains.md b/_posts/2012-02-07-jetbrains.md new file mode 100644 index 0000000..0e0163e --- /dev/null +++ b/_posts/2012-02-07-jetbrains.md @@ -0,0 +1,20 @@ +--- +layout: post +title: Big thanks to Jetbrains! +date: 2012-02-08 +--- + +[![](/img/logo_resharper.png)](http://www.jetbrains.com/resharper/) + +Big thanks to Jetbrains, who have come to the table and given us ringleaders a license for Resharper. While there is the eternal debate whether those using R# can program without it, for a project this size it's hard to function without it. Often we simply don't have time to go over everything while merging, and the highlighting of unreachable or broken code that R# provides alone is worth it. That's not even getting to the refactoring capabilities! + +[![](/img/logo_teamcity.png)](http://www.jetbrains.com/teamcity/) + +They've also granted us an open source license for Team City, which is operating on my home server, accessible via [ci.code52.org](http://ci.code52.org/). This will end up running and building all Code52 projects! + +###Why is continuous integration important? +With CI (continuous integration), every time somebody commits/merges into one of the master branches, the project is built. If it has tests, the test are run. We know immediately when and who broke the build, and we get to test it in an environment outside the "developer" environment. + +If it's worth doing more that once, automate the heck out of it. + +I already had the free ["Professional"](http://www.jetbrains.com/teamcity/buy/index.jsp) version installed for all my personal projects - it's the first (very important) step to making sure your applications don't just have a "works on this machine" badge. \ No newline at end of file diff --git a/_posts/2012-02-07-metro-dot-css.md b/_posts/2012-02-07-metro-dot-css.md new file mode 100644 index 0000000..ad0e03f --- /dev/null +++ b/_posts/2012-02-07-metro-dot-css.md @@ -0,0 +1,39 @@ +--- +layout: post +permalink: /metro-dot-css.html +date: 2012-02-07 08:00 +title: "metro.css" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +[This idea](https://code52.uservoice.com/forums/143105-code-52/suggestions/2465600-metro-css-built-on-bootstrap) started out as something straight-forward which we suggested before Code52 had officially started, and we've had a couple of projects touch on the [Metro design language](http://en.wikipedia.org/wiki/Metro_(design_language)) - our [Markpad](http://code52.org/DownmarkerWPF/) app in particular. And with Windows 8 nudging towards a new public build, more and more people are curious about it. + +## metro.css - using Bootstrap? + +Twitter just unveiled [Bootstrap](http://twitter.github.com/bootstrap/) V2. Bootstrap is a lean CSS/JS template for getting a website up and running with grid layout, responsive design, cross-platform support and a bunch of other bells and whistles. + +While we might not use Bootstrap *specifically* (while the layout portions would be very relevant, how much time would be spent unsetting styles for buttons and other elements?), we want to see something similar for helping people build Metro-style applications. + +## More than just a CSS file + +As this may appear to be a simple task, we are currently discussing specific goals to acheive: + + * Is it worth following the Bootstrap conventions for styles and structure, or do we not gain much given the differences in style. + * A package to integrate `metro.css` with an ASP.NET MVC/T4 templates - reuse what @Tobin has build with his [NuGet package](http://nuget.org/packages/MahApps.Twitter.Bootstrap) + * A template for a Liquid-based static site - implement a better template for the Pretzel default sites. + * CSS3 and/or Javascript animations and transitions + * Javascript to help create metro controls like Pivot and Panorama + * (if we get time) themes for Wordpress and Funnelweb, or even other templating systems (suggest your own) + * and perhaps other things we can conceive... + + +## Follow the chatter + +This week will likely be a highly-entertaining process of discussing, iterating and experimenting with style, layout and usage. We use [JabbR](http://jabbr.net/#/rooms/code52) heavily to discuss stuff in real-time - if you want to get involved, drop in on the action. If you can't keep up, don't worry - JabbR also supports browsing the conversation history of a room (just scroll up to go back in time), so you can catch up on the discussion easily. + +## How can I get involved? + +The initial project is up on [GitHub](http://github.com/Code52/metro.css). The [Trello board](https://trello.com/board/metro-css/4f2fd841a5146fa91fbff127) will be updated over the course of today/tomorrow as we sketch out what we'd like to demonstrate. + +Got some opinions on Metro UI? Hang out in the chatroom at [JabbR](http://jabbr.net/#/rooms/code52) and join in on the fun! \ No newline at end of file diff --git a/_posts/2012-02-13-metro-dot-css-wrapup.md b/_posts/2012-02-13-metro-dot-css-wrapup.md new file mode 100644 index 0000000..1f21b20 --- /dev/null +++ b/_posts/2012-02-13-metro-dot-css-wrapup.md @@ -0,0 +1,44 @@ +--- +layout: post +title: "Metro.css: Recap" +date: 2012-02-13 21:22:12 +11:00 +--- + +##Features +As we mentioned at the start, metro.css is built on the basis of Twitter's Bootstrap. We haven't pulled in a huge amount, just what we need - including the bootstrap grid/layout system. + +Metro.css is built on top of [LESS](http://lesscss.org/) and compiled down to css, like Bootstrap, so we had a bit of a learning curve, could define our colours and work with the methods built in to LESS - it was a great experience. + +###Fonts +Fonts are hard. Eventually we settled on three similar fonts to use for various platforms, with roboto being the fallback. + +![](http://code52.org/metro.css/images/fonts.png) + +###Colours +All the colours of the... metro-bow? + +![](/img/metro.css.colours.png) + +###Controls +There is a pivot control as well as a tile layout system with tilt on mouse-press (although only in Webkit browsers for now) + +##Whats next? + +* We will (eventually) migrate code52 to using metro.css - a decent whack of styles came from code52 as it was! +* There are still a stack of tasks on the [trello board](https://trello.com/board/metro-css/4f2fd841a5146fa91fbff127) before we'd consider this a "done" project - I'd personally love to see the gh-pages template knocked up so more projects can use that (rather than the makeshift template we created that [a few are starting to use](http://signalr.net/)) + +##Contributors +The turn out for metro.css has been - to say the least - disappointing. While it had a modest 36 votes, just three outside of the Code52 team turned up. We've had many declare that we're shooting ourselves in the foot for *restricting* ourselves to .NET or just Windows projects. This was the first project that had no platform restrictions... yet few showed up. As our first venture outside the .NET sandbox it was a bit discouraging, and we are looking at ways to get others involved beyond the suggestion step. + +##Download +You can view the documentation and grab all the relevant artifacts over at the [project page](http://code52.org/metro.css/) + +##Weekly Fun stats +![](https://chart.googleapis.com/chart?chs=800x300&chds=-1,24,-1,7,0,7&chf=bg,s,efefef&chd=t:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23|0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7|0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,5,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,4,2,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,2,0,3,0,0,0,7,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&chxt=x,y&chm=o,333333,1,1.0,25.0&chxl=0:||12am|1|2|3|4|5|6|7|8|9|10|11|12pm|1|2|3|4|5|6|7|8|9|10|11||1:||Sun|Mon|Tue|Wed|Thr|Fri|Sat|&cht=s) + +##Cool Stuff +As we alluded to earlier, a lot of the metro.css pack was built on top of ideas from work done on the new look [code 52](http://code52.org) web site that [@shiftkey](http://twitter.com/shiftkey) and [@aeoth](http://twitter.com/aeoth) worked hard on while [@tobin](http://twitter.com/aeoth) was on a beach - take a look and give us some feedback! + +The development of metro.css so far has also given the opportunity to give a lot of feedback into our previous project [Pretzel](https://github.com/Code52/pretzel) as we used it to generate test sites. + +Give both a shot together, check out the pages that get generated, and how the static site generator works, and what was built into metro.css and we hope some of you will like contributing once you see how easy it is! \ No newline at end of file diff --git a/_posts/2012-02-14-carnac.md b/_posts/2012-02-14-carnac.md new file mode 100644 index 0000000..4cd5bdf --- /dev/null +++ b/_posts/2012-02-14-carnac.md @@ -0,0 +1,48 @@ +--- +layout: post +permalink: /carnac.html +date: 2012-02-14 23:00 +title: "carnac" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + + +A new week means a new announcement, and this one is a bit obscure. First off, watch this clip: + + + +What does this have to do with anything, you might ask? + +## Carnac the Magnificent Keyboard Utility + +[This idea](https://code52.uservoice.com/forums/143105-code-52/suggestions/2517787-keyboard-jedi-log-keyboard-shortcuts-per-applic) was spawned from a previous project written by Roy Osherove called [Keyboard Jedi](http://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.html). At its core, the tool is about displaying keyboard shortcuts to users. It does some cool things to help (force?) the user to become better acquainted with the keyboard. + +![](/img/keyjedi.jpg) + +To complement that vein of functionality, I present to you exhibit B. + +

String Calculator from Corey Haines on Vimeo.

+ +Watch the stream of characters in the bottom-left corner of the screen as [Corey](http://twitter.com/coreyhaines) works his way through the kata. I am not familiar with the tool (perhaps someone in the audience knows it) but I fell in love with it's purpose immediately. While not practical for all scenarios, it is something that can be very useful for viewers to follow along with during a presentation. You could even filter it to only show keyboard shortcuts (like Keyboard Jedi). + +## Taking it to eleven + +The JabbR room were throwing around ideas last on Sunday around what other cool things you could do with this tool: + + * Is it possible to export shortcuts captured to a video editing program (rather than displaying them onscreen)? + * What about tracking statistics about the session - mistakes, navigating with keyboard, time spent using mouse, etc. What about over time? Is someone overusing specific shortcuts? + * Can we bundle keyboard shortcuts for typical apps you use? Can we detect shortcuts used by that user for that application and share them with the world? + * Can we bring back [Typing of the Dead](http://en.wikipedia.org/wiki/The_Typing_of_the_Dead) already? + +## The technology underneath + +As we have a few contributors who are familiar with WPF, we will be using that to write it. Sorry Winforms developers. Hopefully we can show off some cool tricks along the way about visuals and animations work with WPF. + +## Follow the chatter + +What we're looking for this week is coders and testers. Its a very specific app, but could open up a number of possibilities for developers to work on stuff. We use [JabbR](http://jabbr.net/#/rooms/code52) heavily to discuss stuff in real-time - if you want to get involved, drop in on the action. If you can't keep up, don't worry - JabbR also supports browsing the conversation history of a room (just scroll up to go back in time), so you can catch up on the discussion easily. + +## How can I get involved? + +The initial project is up on [GitHub](http://github.com/Code52/carnac). The [Trello board](https://trello.com/board/carnac/4f38fe6ec2fe26391c4e7d34) will be updated over the course of today/tomorrow as we sketch out the UI and features to implement. And of course the [JabbR](http://jabbr.net/#/rooms/code52) room is worth checking out too! \ No newline at end of file diff --git a/_posts/2012-02-19-designing-code52-part1.md b/_posts/2012-02-19-designing-code52-part1.md new file mode 100644 index 0000000..7ae3968 --- /dev/null +++ b/_posts/2012-02-19-designing-code52-part1.md @@ -0,0 +1,68 @@ +--- +layout: post +title: "Designing Code52: Part 1" +date: 2012-02-19 13:40:48 +11:00 +comments: true +--- + +Code52 is an interesting mix of technologies that will always require something most developers are lacking: design. There has recently been the rise of the "devigner" - a developer who can do design, or even the other way around (particularly with web tech), and there are always exceptions to the case where somebody is equally good at design as they are at developing. Unfortunately - at least in the .NET world we've been looking at so far - this isn't the norm *yet*. + +While this might sound like bragging (because some of our designs are nice), what we mean is "*design is hard when coming from the developer side*" hard work and practice - just like any new programming technique - is all it requires. + +Over the coming weeks we'll share what process we go through for design, as well as the inspirations and resources we draw on to improve our designs. + +Today, however, I wanted to share some of the tools - both digital and physical - that I use for designing Code52. + +##Physical Media +Yes, I go "old school" for just about every design. We still live in a world where its easier to quickly sketch something by hand, then spend more time making it more accurate digitally + +###Pens +The best investment for design sketching I've made is the set of [Sakura Pigma Micron](http://www.sakuraofamerica.com/Pen-Archival), size 005 (0.20mm tip) pens I have. The tiny pen tip allows for very fine drawing, and the lovely ink doesn't smudge. + +![](/img/designing_part_1/IMG_8245.jpg) + +While $3-5 a pen might seem expensive, these suckers *last*. [Miguel Endara](http://vimeo.com/miguelendara) drew a piece of art composed of 3.5 million dots (a technique known as [stippling](http://en.wikipedia.org/wiki/Stippling))... with just one of these pens. + + + +I don't *only* use Sakura pens - I also have a [Staedtler Mars Micro](http://www.staedtler.com.au/Mars_micro_au) mechanical pencil (which is "ok") and a [LAMY Logo fountain pen](http://www.lamy.com/eng/b2c/logo/006) with EF nib (which is awesome). Most people would just write with a fountain pen (which it *excels* at), but the broader tip (than the Sakura pens) and particular type of ink produce fantastic results. + +![](/img/designing_part_1/IMG_8252.jpg) + +###Paper +I use a mix of paper - three different notepads and a draughtsman table with some random A3 paper I've found. At the moment my wife and I are house sitting for friends, and we haven't moved the table so I can't grab a photo of that, but here are the three notepads. + +![](/img/designing_part_1/IMG_8246.jpg) + +From left to right, a hardback [Whitelines](http://whitelines.se/) A5 notebook (grid ruled), a [Rhodia](http://rhodiapads.com) "#15" (same as the #16, but 300 pages instead of 90) A5 (grid ruled) and an unruled A5 notebook I was gifted - it doesn't have a clear brand on it, so I can't provide more details. + +![](/img/designing_part_1/IMG_8247.jpg) + +I have also been considering a more "pocketable" A6 notepad to take everywhere with me - if you've got any suggestions, leave a comment below. + + +##Digital Media +###Hardware +While I'd love a Wacom Cintiq (if any philanthropists are listening!), I "make do" with the Wacom Bamboo I have - it's a few years old now and bottom of the range, but still a very nifty tool. + +![](/img/designing_part_1/IMG_8250.jpg) + +The tablet came in particular handy for [Samurai](http://code52.org/samurai-review.html)'s design, as we wanted to maintain a "hand drawn" look. + +###Software +Adobe Illustrator and Photoshop - when it comes to vector and bitmap manipulation, there isn't much better. In Photoshop CS5, proper "painting" brushes were introduced which puts Corel's Painter to shame. + + +**Icons** +For icon generation, we had some unpleasant results using Paint.NETs export, so we've moved to using Telegraphics (free!) [Photoshop ico exporter plugin](http://www.telegraphics.com.au/sw/product/ICOFormat) and combining with their (still free) [IcoBundle](http://www.telegraphics.com.au/sw/info/icobundle.html). This allows very fine tuning of resizing and what format. + +Why is this needed? Well, Windows XP will crash and burn when you run any app with a "PNG ICO", requiring the much uglier (and larger) "BMP ICO". + +The "work flow" for this: + +* Resize each "size/layer" in Photoshop using *"Bicubic Sharper (best for reduction)"* +* Manually tweak a few pixels here and there the smaller it gets for legibility (Optional) +* Save as `imagesize.ico` (ie, `256.ico`, `64.ico`) - make sure its a square image - and select "Standard ICO" as the output format. +* Once all the sizes are exported, from a command line `icobundl.exe -o projectname.ico 256.ico 128.ico 64.ico`. + +This gives ~200-500kB icons compared to PNG's that would be 20-60kB, but this is the only way to maintain compatibility (and good scaling) on Windows XP up. \ No newline at end of file diff --git a/_posts/2012-02-20-carnac-review.md b/_posts/2012-02-20-carnac-review.md new file mode 100644 index 0000000..9f14513 --- /dev/null +++ b/_posts/2012-02-20-carnac-review.md @@ -0,0 +1,55 @@ +--- +layout: post +permalink: /carnac-review.html +date: 2012-02-20 23:00 +title: "carnac review" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +What started out as an excuse to watch [Youtube](http://www.youtube.com/watch?v=9m_dT0wsrGI) clips and make jokes about turbans quickly turned into a neat little tool called Carnac, for those people who want to display their keyboard activities on screen. + +
+ +![](/img/carnac-logo.png) + +## Progress! + +After a week of WPF and Win32, we've implemented a number of awesome features already: + + * Using WPF to render an "invisible" window and process key presses under the hood. + * Overlaying activity over the current window - position, opacity, colours, font-size all customizable. + * Detect the active application and match up a shortcut with a known list of values. + +A couple of other features are in progress: + + * Password mode - detect a shortcut and hide the output until the shortcut is pressed again. + * Extending the shortcut API so that other apps can be integrated - YAML markup is used to represent the available shortcuts and can be downloaded from a remote site to the local machine. + * Support for "modes" which eliminate the noise of some keystrokes based on configuration - only show shortcuts, only show shortcuts for XYZ, etc... + + And a few features didn't get started: + + * Tracking statistics and trends of keyboard activity - we wanted to use RavenDB as an embedded database. + * Reporting based on historical data - just how awesome are you? + +## Carnac in action + +Here's a couple of videos from @shiftkey demonstrating the latest build of Carnac (you can download this build from [the project site](https://github.com/Code52/carnac/downloads) and try it out yourself). + +### Customsing the Carnac UI + + + +### R# shortcuts in Carnac + + + +## What's next for Carnac? + +We're getting the groundwork together the next project at the moment, but we're looking for people to help out with: + + * testing - there may be some issues with Windows XP and Vista environments. + * finding and fixing bugs - all the hot forking action is on [GitHub](http://github.com/code52/carnac). + * grabbing a task from [Trello](https://trello.com/board/carnac/4f38fe6ec2fe26391c4e7d34) - if you want to get into some dev, get in touch and we can add you to the board. + * hanging out in the [JabbR](http://jabbr.net/#/rooms/code52) room if you have any input or suggestions for features. + diff --git a/_posts/2012-02-20-github-for-outlook.md b/_posts/2012-02-20-github-for-outlook.md new file mode 100644 index 0000000..28f211c --- /dev/null +++ b/_posts/2012-02-20-github-for-outlook.md @@ -0,0 +1,36 @@ +--- +layout: post +permalink: /github-for-outlook.html +date: 2012-02-21 23:00 +title: "GitHub Tasks for Outlook" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +Unfortunately this is looking like a busy week for many of us, so we're taking the time out this week to do a relatively straightforward idea which was spawned recently in the JabbR room. + +While we are heavy users of GitHub, the notifications area of GitHub leaves much to be desired. We've already experimented with mobile clients and desktop clients to make this stuff easier, but a conversation last week around "why not use Outlook?" lead to a candid discussion and a simple specification. + +## What will GHT4O do? + +The tool should give you an overview of the important things you need to address for the projects you look after: + + * New and updated Pull Requests. + * New and updated Issues. + * Display notifications as configured on GitHub. + * View and respond to comments from inside Outlook. + * Leverage Outlook features like email, labels and perhaps tasks to integrate GitHub work with the rest of your day-to-day work. + + +## The technology under the hood + +The most popular tool of building addins for Microsoft Office is called Visual Studio Tools for Office - which allows .NET apps to integrate and behave like native Office addins. There's a bunch of resources on getting started with VSTO over on [MSDN](http://msdn.microsoft.com/en-us/office/hh133430). + +We will be using WPF for the UI, but the real project we will leverage is [Jake Ginnivan's](http://twitter.com/JakeGinnivan) [VSTOContrib](http://vstocontrib.codeplex.com/) libraries - this will allow us to quickly scaffold the code without getting bogged down in COM interop woes. + +We're also talking with @aeoth about making use of some of his recent work on a desktop port of the ["Milestone"](http://quandtm.github.com/Milestone/) GitHub client for WP7. This isn't cruical to the end goal of the week, but after using Reactive Extension in Carnac we're keen to make use of it in other scenarios. + + +## How can I get involved? + +The initial project is up on [GitHub](http://github.com/Code52/github-for-outlook). The [Trello board](https://trello.com/board/github-tasks-for-outlook/4f4234cdbfa22c0070ac4caa) will be updated over the course of today/tomorrow as we sketch out features and workflow ideas to implement. And of course the [JabbR](http://jabbr.net/#/rooms/code52) room is worth checking out too! \ No newline at end of file diff --git a/_posts/2012-02-27-github-for-outlook-review.md b/_posts/2012-02-27-github-for-outlook-review.md new file mode 100644 index 0000000..a2c9edc --- /dev/null +++ b/_posts/2012-02-27-github-for-outlook-review.md @@ -0,0 +1,55 @@ +--- +layout: post +permalink: /github-for-outlook-review.html +date: 2012-02-27 23:00 +title: "Github Tasks For Outlook - Review" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +The past week we decided to work on a smaller idea, that had ballooned into something larger as we discussed it. In the end Github Tasks For Windows was taken back to the essence of the idea for week one, but we have ideas to keep improving it after this. + +The current state of the project will work, and is ready to test out - but we won't be releasing a build this week until we get some bug testing done. In the meantime, we welcome downloading the source and running it to test out for us and review! + + +@aeoth has done up an icon for us to show off - it's not in the plugin yet, but it looks pretty awesome so we wanted to share: + + +![](/img/gtfo.png) + +## Current Features + +Entering your Github settings, basic authentication so far (username and password) + + +![](/img/gtfo-settings.png) + + +You can also upload your emails as a new request... + + +![](/img/gtfo-post.png) + + +And you can enter Milestones and assign users for the request... + + +![](/img/gtfo-collaborators.png) + + +The darker gray denotes repositories that don't allow issues, so you can see all your repositories you're active on, but also see that you may need to turn issues on to post to certain ones. + + +## What's next for the plugin? + +We're planning on getting OAuth login put in place, setting it up so that issues created on Github get synced back to your tasks in Outlook, add other emails as additional comments to an existing issue, and more... + + +If you want to help, have some experience with Visual Studio Tools for Office, or want some, come on board! + + * the source is up on [GitHub](http://github.com/code52/github-for-outlook). + * as always there's a feature list to complete up on [Trello](https://trello.com/board/github-tasks-for-outlook/4f4234cdbfa22c0070ac4caa) - if you want to get into some dev, get in touch and we can add you to the board - take a job or add a feature you'd like to see in there. + * hanging out in the [JabbR](http://jabbr.net/#/rooms/code52) room if you have any input or suggestions for features. + + +We're seeing a lot of great features and fixes coming in to all our projects, and we hope you're checking them out and enjoying them too! \ No newline at end of file diff --git a/_posts/2012-02-27-internationalization-mvc4.md b/_posts/2012-02-27-internationalization-mvc4.md new file mode 100644 index 0000000..b36e943 --- /dev/null +++ b/_posts/2012-02-27-internationalization-mvc4.md @@ -0,0 +1,28 @@ +--- +layout: post +permalink: /internationalization-mvc4.html +date: 2012-02-27 22:00 +title: "Internationalization Packages for MVC4" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +Internationalization of websites - being able to render a site in different languages based on the target audience - is not a new problem, and a collection of guidance and tricks that people have shared over the years to simplify this when building ASP.NET apps is out there on the interwebs. + +So why not bring all these tricks together? + +[This idea](https://code52.uservoice.com/forums/143105-code-52/suggestions/2602751-internationalis-zed-mvc4-project-template) had a massive spike of interest last week and rocketed up to the #2 spot, so we've taken that as a sign to start this off as soon as possible. Much love to [Scott Hanselman](http://hanselman.com) for suggesting the idea (indirectly) and promoting it on Twitter, and apologies for doing this during the [MVP Summit](http://mvp.support.microsoft.com/MVPsummit) when he'll be busy herding cats :) + +## What are we building? + +We want to put together a set of NuGet packages so that developers can add globalization and localization into a new or existing application, covering both server- and client-side components. + +The packages will contain code which people have shared that has helped them build applications - we started a discussion last week on [sync.in](http://sync.in/ltlbzbgOQx) about ideas and things we've found. This formed the initial set of features on [Trello](https://trello.com/board/internationalization-mvc4/4f49efbbd105c95e0c12332e) but we are open to other features if people want to share their own tricks. + +We are also planning a demonstration website which has these features implemented, and documentation guiding developers through the features. The first priority is a C# MVC website, but we are happy to work with the VB and WebForms developers in the future to port this functionality to other scenarios once the basics are in place - so get in touch and see how you can help speed this up! + +## How can I get involved? + +A sample website and the scripts to generate the NuGet packages are up on [GitHub](http://github.com/Code52/internationalization-mvc4). The [Trello board](https://trello.com/board/internationalization-mvc4/4f49efbbd105c95e0c12332e) has some tasks which are ready to be started. + +Unfortunately you need to be granted access to the board before you can assign yourself to a task, so create an account and drop into the [JabbR](http://jabbr.net/#/rooms/code52) room to get in touch! \ No newline at end of file diff --git a/_posts/2012-03-05-finances-winjs.md b/_posts/2012-03-05-finances-winjs.md new file mode 100644 index 0000000..6fb6361 --- /dev/null +++ b/_posts/2012-03-05-finances-winjs.md @@ -0,0 +1,29 @@ +--- +layout: post +permalink: /finances-windows8.html +date: 2012-03-05 23:00 +title: "MyFinances for Windows 8" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +With the release last week of Windows 8 Consumer Preview, we've decided its time to dive into doing something related to the new development stack - we've got a few ideas in mind but the one we're going to run with is [this idea](https://code52.uservoice.com/forums/143105-code-52/suggestions/2465806-winrt-line-of-business) - demonstrating how to build a business-style application on WinRT. + +## Goals + +The goal of this project is to build an application that supports entering, importing and reporting on personal financial data - income and expenses mostly. We want to keep the scope simple for the initial week's work, but we may expand on it down the track based on interest and feature requests. + +We're looking to show off how you put together a Javascript-based application for WinRT, and make it a sexy demonstration for the capabilities of the platform - touch, integration with hardware and cloud services, applying Metro design principles to a real-world application, and so on. + + ![](/img/WinJS-Mockup.png) + +*A crude mockup I did last night of one of the potential screens.* + +## How can I get involved? + +We'll set up the project structure on [GitHub](https://github.com/Code52/winrt-finances) tomorrow. The [Trello board](https://trello.com/board/winrt-finances/4f54b11dde0de5752b235a9d) also needs some love, so stay tuned for that tomorrow. Got some ideas? There's people in the [JabbR](http://jabbr.net/#/rooms/code52) room to discuss ideas with. + +If you are not familiar with WinJS, I suggest having an experiment with the project templates included in VS11. And although they were talking about the Developer Preview of Windows 8, many of the [BUILD videos](http://channel9.msdn.com/Events/BUILD/BUILD2011) discuss building Metro-style applications and are a great starting point for understanding more about the platform. + +These [two](http://channel9.msdn.com/Events/BUILD/BUILD2011/BPS-1004) [session](http://channel9.msdn.com/Events/BUILD/BUILD2011/BPS-1005) in particular are worth watching. + diff --git a/_posts/2012-03-05-i18n-recap.md b/_posts/2012-03-05-i18n-recap.md new file mode 100644 index 0000000..4e67f2c --- /dev/null +++ b/_posts/2012-03-05-i18n-recap.md @@ -0,0 +1,102 @@ +--- +layout: post +permalink: /internationalization-recap.html +date: 2012-03-05 22:00 +title: "Recap: i18n Packages for MVC4" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +Rather than boring you with the details of how this week went - it was quiet, then chaotic towards the end - I thought I'd run you through the packages you can install today and see the hard work done. + +These packages are split up so that users can pull in the features that they want in their applications, but if you want to start with a new application you can get started quickly. + +**Warning**: these packages are not yet available on the official NuGet repository. If you are feeling bold, add this feed to your NuGet Package Source settings: **http://www.myget.org/F/Code52** - this contains the latest alpha builds. These packages may drown puppies and kick kittens. Please log any and all feedback you have on the [GitHub site](https://github.com/Code52/internationalization-mvc4/issues). + + +
+
+
+

PM> Install-Package Code52.i18n

+
+ +The core package contains a helper class for mapping a locale code to a CultureInfo object, with additional helper methods to identify culture-related information. + +This also includes a config transform to enable globalization on your website. + +
+
+
+

PM> Install-Package Code52.i18n.MVC4

+
+ +
+
+
+

PM> Install-Package Code52.i18n.MVC3

+
+ +These packages extend the core and allow a user to override their current region inside your application. There are two pieces to this: + + * A ```LanguageController``` to handle requests from the browser and set a cookie value. + * A ```LanguageFilterAttribute``` set globally to detect the cookie and set the culture for the current user to a different value. + +
+
+
+

PM> Install-Package Code52.i18n.MVC4.Example.Razor

+
+ +
+
+
+

PM> Install-Package Code52.i18n.MVC3.Example.Razor

+
+ +These are the sample sites which have controllers, views and resources all ready to go. It is recommended that you install these into a **Blank** MVC Project as that's the scenarios we've been testing currently. + +Cool features: + + * jQuery.globalize support + * ModelMetadataProvider using [Phil Haack's)[http://haacked.com] [ConventionalModelMetadataProvider](http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx) POC. + +## 10 Second Introduction + +A very quick walkthrough after installing the example site package. You should see a page resembling this: + + ![](/img/i18n-1.png) + +*Start the application and you'll see the label in the top-left with your current language.* + + ![](/img/i18n-2.png) + + *Click on it to slide down a selector with the available languages.* + + ![](/img/i18n-3.png) + + *Pick one and the cookie gets set, reloads the page, and displays the new language.* + +A special shout-out to [David Christiansen](http://twitter.com/dchristiansen) who has been a great help this week with his tips and tricks like the above. + +## When will it be ready-ready? + +We'll let you know (by pushing the packages to NuGet officially and tweeting) when its stabilised and ready for general use. We're already gathering feedback on this so hopefully later in the week we can start planning for official releases. + +**Note:** Please read the App_Readme before diving straight in - you need to change the _ViewStart.cshtml file to point at the different template: + + @{ + Layout = "~/Views/Shared/_Layout.Code52.cshtml"; + } + + +## But wait, there's more? + +There's a lot more to this story - we timed it when we thought we'd get a lot of interest (sadly that didn't eventuate), and I know there are people keen to get involved. + + * Pseudoizer - the build has the ability to generate test resources so you can verify the localization of a site, but we haven't got this integrated into a project. + * DateTimeOffsetModelBinder - this has been started in [a fork](https://github.com/shiftkey/internationalization-mvc4/tree/ModelBinder-DateTimeOffset), but requires some polishing before we can merge it in to master. + * NuGet - the packages are generated from a build script, and there's some things we'd like to do that require some more Powershell skills and understanding the hooks available in ```install.ps1```. For example, pointing _ViewStart.cshtml to use a custom layout page rather than the default. + * Support for other versions/view engines/languages. + * Improved styles for the project templates - unfortunately the blank project templates are a bit plain... + +As we had a lot of interest in this idea, and the number of features still available to implment, I hope this is just the beginning. \ No newline at end of file diff --git a/_posts/2012-03-12-scanner.md b/_posts/2012-03-12-scanner.md new file mode 100644 index 0000000..b0b7042 --- /dev/null +++ b/_posts/2012-03-12-scanner.md @@ -0,0 +1,62 @@ +--- +layout: post +permalink: /enhance.html +date: 2012-03-12 23:00 +title: "Enhance - a Scanner" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +One of the earlier ideas we had, from [Scott](http://twitter.com/shanselman/) [Hanselman](http://hanselman.com/), on our [Uservoice](https://code52.uservoice.com/) was a scanner utility that had a metro look and feel. + +We've put it off a few weeks as we looked at projects that would help us out with administrating Code52 like [MarkPad](http://code52.org/DownmarkerWPF/) and [Pretzel](http://code52.org/pretzel/) whose sites have had a facelift lately, and have had large changes and improvements since being created. + +But we've always had it in the backs of our minds as a fun project, some of us have gone out and gotten some hardware to participate, and now we're set to go! + +## Goals + +What we really want, is to start simple - a scanning tool that builds on top of the Windows built in systems, but restyles the dialogs and pages into a metro look and feel, and simplifies the act. + +Then we want to look at extending it - offering some basic image processing functions like straightening the image, or basic color correction. + +And finally we want to extend it further with parts to handle some document management/OCR (to index what you've scanned for future reference), and so you can do things like upload what you've scanned to dropbox/rackspace/skydrive and similar. + + +## Some helpful starters + +Pete Brown's [WIA Example](http://10rem.net/blog/2010/01/08/scanning-images-in-wpf-via-wia) and [image rotation](http://10rem.net/blog/2010/03/24/rotating-and-cropping-an-image-in-wpf) and a [Silverlight](http://10rem.net/blog/2010/04/14/scanning-an-image-from-silverlight-4-using-wia-automation) one for kicks. + +[@aeoth's](http://twitter.com/aeoth) [WIA and OCR](http://www.theleagueofpaul.com/codesnippet-scanning-with-wia-and-ocr-with-office) post. + +[Scanning from an Auto Document Feeder in C#](http://ithoughthecamewithyou.com/post/Scanning-from-the-ADF-using-WIA-in-C.aspx) + +An [ADF library on Codeplex](http://adfwia.codeplex.com/) also cloned [on Github here](https://github.com/thegiddygeek/AutoDocumentFeed_for_WIA) + +[Scanning without Dialogs](http://miljenkobarbir.com/using-a-scanner-without-dialogs-in-net/) + +[Another example of WIA](http://geekswithblogs.net/tonyt/archive/2006/07/29/86608.aspx) + +A [WIA SDK from Microsoft](http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=18287) + +A [Twain library on Codeplex](http://bytescoutscansdk.codeplex.com/) and an [example on how to use it.](http://bytescout.com/products/developer/scansdk/bytescoutscansdk_first_step_with_c_charp.html) + +[AForge library](http://nuget.org/packages/AForge.Imaging) on Nuget for image manipulation - and [a feature list](http://www.aforgenet.com/framework/features/) + +[Craig's Libraries](http://cul.codeplex.com/wikipage?title=List%20of%20Features&referringTitle=Home) which can be found on [Nuget](http://nuget.org/profiles/jacraig) + +A [nuget package](http://nuget.org/packages/csharp-cloudfiles) for Rackspace and the [Rackspace API](http://www.rackspace.com/cloud/cloud_hosting_products/servers/api/) + +A [package for Dropbox](http://nuget.org/packages/DropNet). + +And a [Skydrive](http://skydriveapiclient.codeplex.com/) client. + +The [Skydrive SDK](http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=28195) and a recent [blog post that could help](http://windowsteamblog.com/windows_live/b/windowslive/archive/2011/12/07/skydrive-apis-for-docs-and-photos-now-ready-to-cloud-enable-apps-on-windows-8-windows-phone-and-more.aspx) + + +## How can I get involved? + +As usual the project is going up on [GitHub](https://github.com/Code52/enhance) tomorrow. [The Trello Board](https://trello.com/board/enhance/4f24963edbbed1ab5a11c5ad) has some thoughts outlined on where we think we'll be headed with it, but as usual we're always open to other ideas being added. You can ping one of us on [JabbR](http://jabbr.net/#/rooms/code52) to be added to the board to volunteer to do one of the features, or come in just to discuss the project, or chat in general. + +We're looking forward to seeing what we can come up with, and hope that lives up to the great WPF apps we've managed to put out over the past couple of months :) + +If you want to check some of those out you can do so on this blog, or the code is up on [GitHub](https://github.com/Code52/)! \ No newline at end of file diff --git a/_posts/2012-03-12-winjs-recap.md b/_posts/2012-03-12-winjs-recap.md new file mode 100644 index 0000000..bd89081 --- /dev/null +++ b/_posts/2012-03-12-winjs-recap.md @@ -0,0 +1,55 @@ +--- +layout: post +permalink: /winjs-recap.html +date: 2012-03-12 23:59 +title: "Recap - MyFinances for Windows 8" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +I wish I had something more to show than our Github repo, but this was not our most productive week. + +![](/img/technical.jpg) + +## What happened? + +While we've made some progress this week on the WinJS demo app, we hit a number of issues which slowed things down a lot: + +Things outside of our control: + + - new relatives coming into the world + - illness + - overheating laptops + +This we could have mitigated with better planning: + + - wrapping our heads around the changes to WinJS in the Consumer Preview + - how to structure the UI to better reflect application flow and Metro principles + - scaffolding the app better initially so that people could cherry-pick screens to work with. + +A few things worked well: + + - Having a specific folder for mockups in source control helped share UI ideas around but keep them tracked (both PSD and PNG formats depending on the software available to the users). + - Breaking tasks into prototypes helped people explore things in isolation without becoming part of the critical path. + +## What did we get done? + +We've got a simple app running that allows the user to navigate between a number of tabs at the top of the page. The first page we implemented lists off the transactions associated with the current user and allows for new items to be added. + +For those who are curious about building WinJS apps, in its current form the app demonstrates: + + - navigation between pages + - customising the domain model + - binding data to the screen + - using some of the new controls including lists and flyouts + - styling markup using CSS and the new *-ms* properties and values. + +## What's next? + +This is still under active development - the only issue at the moment is lack of time - and there are a number of features which have been started but not integrated into master. We are looking for this to be a sample application that people can use and developers can explore and contribute to, so this is only the beginning. + +Stay tuned for a demo of the progress made once we resurrect the machine with the video footage on it - there was some code changes which didn't make it out sadly. + +We also had a [few](http://csainty.blogspot.com.au/2012/03/windows-8-winrt-and-winjs-scope.html) [blog](http://csainty.blogspot.com.au/2012/03/winjs-namespaces.html) [posts](http://csainty.blogspot.com.au/2012/03/winjs-classes.html) from Chris Sainty introducing Javascript concepts for those who are getting started wtih WinJS. Brendan will also (hopefully) get time this week to share some of the features he's found around CSS and WinJS controls that have been incorporated into the My Finances app. + +And as always, we have the [JabbR](http://jabbr.net/#/rooms/code52) room for people to hang out and talk about Windows 8 or the other projects we are working on currently. \ No newline at end of file diff --git a/_posts/2012-03-20-gap-week.md b/_posts/2012-03-20-gap-week.md new file mode 100644 index 0000000..be00b84 --- /dev/null +++ b/_posts/2012-03-20-gap-week.md @@ -0,0 +1,62 @@ +--- +layout: post +permalink: /working-bee.html +date: 2012-03-20 20:00 +title: "Working Bee" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +With all the work that the Code52 team and its band of merry contributors have achieved over the previous weeks, we're now at the point where we'd like to slow down a bit and take stock of what we've achieved so far. + +### You might have missed... + +While [@tobin](http://twitter.com/tobin) and [@aeoth](http://twitter.com/aeoth) were working to get the Enhance project started, there has been a supreme effort behind the scenes during the week to address some outstanding work: + + - **[Pretzel](http://code52.org/pretzel/)** added support for using Razor templates alongside Liquid templates, and has a [Chocolately package](http://chocolatey.org/packages/pretzel) available for people to install on their local machines. + + - **[Ideastrike](http://code52.org/ideastrike/)** has been updated to use Nancy v0.10 - with that transition completed we are looking to enhance and expand on what we initially released to the world. + + - **[ASP.NET Internationalization](http://code52.org/aspnet-internationalization)** packages were shipped on NuGet. + +## What about this week? + +We're aware of the initial premise we made about "a new coding project every week" and how a pause goes against it, but we don't want to march onwards to the detriment of the previous good work we've acheived. + +We plan on taking a break from the insanity that is a new project each week to polish previous projects. We would much rather 40 *maintained* and *complete* projects than 52 incomplete projects that never reach their full potential. + +As such, we are calling a working bee - there's many things to do, and we want to get as much of it done now before we continue on with new stuff. We'll still be in and out of the [JabbR](http://jabbr.net/#/rooms/code52) during this time if you want to hang out - and yes, contributions are always welcome. + +[@shiftkey](http://twitter.com/shiftkey) will be over in Auckland for Codemania next week (grab him if you want to talk about Code52), and we will kick off a new project once he returns on **April 2nd**. + +## Working Bee + +### Installers + +Many of our applications require installers to make the experience super-easy for users. We've researched numerous tools but could not settle on a particular choice which would cover everything we needed from an install solution - so we're cherry-picking from various sources and building something [here](https://github.com/xpaulbettsx/NSync) which we hope will be a best-of-breed solution for deploying and updating applications. + +In the meantime, the awesome team at [wyDay](http://wyday.com/) have provided a license for Code52 to use their [wyBuild](http://wyday.com/wybuild/) tool as an update mechanism for our .NET apps. + +**Markpad** will be the first application from Code52 to use wyBuild, but we will have more to discuss on this in the coming days. + +Another "fun with installers" case we need to address is how Office requires a signed installer for addins from the web. We are looking to address this over the current week so we can get an official build of **GitHub for Office** out for users to test. + +### Documentation + +Each of the Code52 projects has a [gh-pages](http://pages.github.com/) branch - to introduce users to the application or library - and a wiki - to capture documentation and details to help with understanding of the project. + +The project page template (from the work done on MarkPad and ASP.NET i18n) has been spun off into a [separate repository](https://github.com/Code52/gh-pages-template) for people to contribtute to - ideas we have thrown around include different stylesheets and templates, but this has not evolved due to the initial goal of having consistent project pages for each Code52 project. + +Some of our library projects - Pretzel and ASP.NET i18n in particular - require refreshing existing documentation or new documentation to help users get familiar with certain features of each application. We want to ensure that details like documentation, which may be overlooked when a project starts, are not left behind as things grow. + +### Miscellaneous awesomeness + +A quick list off the top of our heads of the other things we are looking to knock off: + + - Even after [reworking the UI](http://code52.org/weekone-dayseventyseven.html) for Markpad, new ideas and suggestions for features are still coming in, including split-view/multi-monitor support, Github-flavoured Markdown, exporting to different formats and even document recovery. + + - Did I mention an extension API for MarkPad? No? Well I guess I just did. + + - MyFinances has gone back to the drawing board with some radical ideas to make the user experience stand out. Once this has been from @shiftkey's brain to working HTML the more advanced features like imports, reporting and achievements will be revisited. + + - Carnac has been gathering some user feedback from a couple of presentations - including a couple of interesting graphics-related issues we didn't uncover during our previous testing. diff --git a/_posts/2012-03-20-scanner-recap.md b/_posts/2012-03-20-scanner-recap.md new file mode 100644 index 0000000..06e326b --- /dev/null +++ b/_posts/2012-03-20-scanner-recap.md @@ -0,0 +1,32 @@ +--- +layout: post +permalink: /scanner-recap.html +date: 2012-03-20 23:59 +title: "Recap - Enhance" +author: "@aeoth, @shiftkey and @tobin" +comments: true +--- + +So, the week is over and it's time to report - so let's talk about where we're at. + +## How'd we go? + +The week started well, @tobin dived in with functional (even if not fully featured) code... until we tried @aeoth's scanner... + +From there it was an incredibly painful experience trying to work out how WIA really works, and the best way to proceed. + +Having a new scanner that covered for issues in requests made it difficult to test the problems that would arise for other people, but we got to a place where we have some simple scanning going in an app that looks pretty great. + +![](/img/scanner-recap-front.png) + +Unfortunately, given the problems we had with WIA we didn't get much further. + +We have had a few volunteers offering help, even taking tasks but unfortunately they couldn't commit in before the end of the week - we've even had people volunteer right towards the tail end of the week, and we look forward to what they'll bring to the project. + +![](/img/scanner-recap-scan.png) + +## What's next? + +We have a few jobs up on [Trello](https://trello.com/board/enhance/4f24963edbbed1ab5a11c5ad) and we're alway open to having more - or coming in and checking out the code on [Github](http://github.com/Code52/enhance) and doing some work on helping making it better with us. + +As always, we'll be working further as the weeks go on - and especially with our [Working Bee](http://code52.org/working-bee) weeks! \ No newline at end of file diff --git a/_posts/2012-04-02-say-wat.md b/_posts/2012-04-02-say-wat.md new file mode 100644 index 0000000..0e00b54 --- /dev/null +++ b/_posts/2012-04-02-say-wat.md @@ -0,0 +1,36 @@ +--- +layout: post +permalink: /say-wat.html +date: 2012-04-02 20:00 +title: "Say Wat?" +author: "@shiftkey" +comments: true +--- + +After a couple of weeks polishing existing projects nudging towards new releases, and @shiftkey getting up to [some](http://instagr.am/p/I0MLz8tL5K/) [shenanigans](http://instagr.am/p/IyQNjNtL1X/) at [Codemania](http://codemania.co.nz/) over the weekend, the gang are back and looking for more coding fun. + +While we have some significant ideas we want to refine and plan in more details, we have decided to try out something different this week. + +### Doing some Readme Driven Development + +This idea started out from a conversation over the weekend about how cryptic some Australian lingo can be. A word I'd thrown into a tweet had completely thrown the recipient and they had trouble understanding what I had said. + +I started throwing around possible solutions to the problem - urban dictionary came to mind, for example - but the existing solutions didn't quite fit for the scenario. + +After mulling over the solution and searching for a cool domain name over drinks, I decided to call it a night and start coding a solution. + +[http://sayw.at/](http://sayw.at/) is that starting point. + +### Off the reservation + +The Code52 guys had done a number of web projects so far this year, but these have been running on .NET. I wanted to push the envelope and try something different for this week. + +Enter Node. + +Yes, NodeJS is [so hot right now](http://www.youtube.com/watch?v=CV_hDyfmEw4), so its not like we're doing something very radical. But I know many people are curious about how to get started and how to build an app with Node. + +So we're going to spend a week building a Node app and you can follow along (or even get involved)! + +### Get Involved + +The project structure has started on [GitHub](https://github.com/Code52/saywat) and the [Trello board](https://trello.com/board/saywat/4f7974869bf90505711b92f8) has some initial tasks which are small enough to be started if people are curious. Got some ideas? There's people in the [JabbR](http://jabbr.net/#/rooms/code52) room to discuss ideas with. \ No newline at end of file diff --git a/_posts/2012-04-09-say-wat-recap.md b/_posts/2012-04-09-say-wat-recap.md new file mode 100644 index 0000000..9fda11e --- /dev/null +++ b/_posts/2012-04-09-say-wat-recap.md @@ -0,0 +1,26 @@ +--- +layout: post +permalink: /say-wat-recap.html +date: 2012-04-09 23:59 +title: "Say Wat? Recap" +author: "@shiftkey" +comments: true +--- + +With the long weekend due to the Easter break, this has been an interesting and relaxed week for all involved. + +As I need to dive into preparing the next project, here's a bullet list version of the recap. Or you can just go and play around with the site: [sayw.at](http://sayw.at). + +### What we acheived + + - **Learning how a good NodeJS application is structured** - much love to [Chris Sainty](http://twitter.com/csainty) for giving us some guidance on this. While initial demos show off cool things like building chat servers, going from that to separating application configuration and logic. + + - **MongoDB** - we had a relatively simple schema to represent our data (question, answers and users) and MongoDB was an ubiquitous option for us to test locally or use in live environments. With the availability of [hosted databases](http://mongohq.com) and support on many cloud providers (even [Azure](http://www.mongodb.org/display/DOCS/MongoDB+on+Azure)) this was an easy choice. + + - **Deployment** - we can take the one codebase and deploy it today to Heroku and AppHarbor (as long as they have a MongoDB addin configured too). We also learned about how node_modules should be treated in [source control](http://www.mikealrogers.com/posts/nodemodules-in-git.html) and were bitten by overnight releases of packages breaking pull requests. + + - **Testing** - we added JSHint (static analysis tool for Javascript syntax) and Mocha (unit testing framework) and learned how easy it was to setup [Travis-CI](http://travis-ci.org) to build the project directly from the Github repository. + +### What's next? + +As this was a relaxed weekend, there's still a [number of tasks](https://trello.com/board/saywat/4f7974869bf90505711b92f8) to be picked off before the client (being @shiftkey) is happy with a V1 release. We've got a wiki which should help with [getting started](https://github.com/Code52/saywat/wiki/Getting-Started) on setting up your project. \ No newline at end of file diff --git a/_posts/2012-04-10-dodo.md b/_posts/2012-04-10-dodo.md new file mode 100644 index 0000000..25a5942 --- /dev/null +++ b/_posts/2012-04-10-dodo.md @@ -0,0 +1,29 @@ +--- +layout: post +permalink: /dodo.html +date: 2012-04-10 01:00 +title: "dodo" +author: "@shiftkey" +comments: true +--- + +A few weeks ago, we had a discussion about building a Twitter app. As a group with [history](http://www.theleagueofpaul.com/mahtweets-is-dead) in building apps, we didn't want to do something conventional - and with Windows 8 being focused on the tablet space we started down a different path. This quickly became one of our [hot ideas](https://code52.uservoice.com/forums/143105-code-52/suggestions/2673882-metro-style-twitter-client) and we've had lots of people asking when we're going to kick it off. + +### Capturing the madness + +Rather than use JabbR to capture the discussion, we used **sync.in** to write down and edit our ideas. Aside from a minor hiccup with the cap on concurrent users, we had a productive hour or two discussing ideas in real-time and having a nicely formatted document at the end. + +The results of this can be found [here](http://sync.in/KlhETAjkLy) and those will be tranformed into the backlog for tasks to acheive this week. + +### Goals + +To identify some broad goals for the week: + + - the project should ship a reusable Twitter library as well as a client + - the client will not follow the existing norms of displaying lists of tweets + - the client should demonstrate some wicked animations and transitions + - the client should implement some radical features for other Twitter clients to shamelessly steal + +### Get Involved + +We've started a skeleton of the app (it should allow you to authenticate and render some tweets) on [GitHub](https://github.com/Code52/dodo) and the [Trello board](https://trello.com/board/dodo/4f82e9dfc10221fb0db2cff2) has some initial tasks which are small enough to be started if people are curious. Got some ideas? There's people in the [JabbR](http://jabbr.net/#/rooms/code52) room to discuss ideas with. \ No newline at end of file diff --git a/_posts/2012-04-16-dodo-recap.md b/_posts/2012-04-16-dodo-recap.md new file mode 100644 index 0000000..159e860 --- /dev/null +++ b/_posts/2012-04-16-dodo-recap.md @@ -0,0 +1,62 @@ +--- +layout: post +permalink: /dodo-recap.html +date: 2012-04-16 20:30 +title: "dodo recap" +author: "@shiftkey" +comments: true +--- + +The Code52 team had some big news over the weekend which I will address in a later post, but before we should get to the fun stuff about [dodo](http://github.com/Code52/dodo). + +## What's been done so far + +This week has been about setting up a baseline and implementing core functionality. + +At this point in time, the project is split into two distinct features: + + - *dodo* - a Windows 8 Metro application. + - *boxkite* - a library for interacting with the Twitter API in .NET 4.5 Metro. + +## dodo + + The application currently supports: + + - OAuth login + - Browsing the user's timeline, mentions, retweets and messages. + - settings storage - persisting the user's token between sessions + - diagnostics capture - so that we can log messages to the application's sandbox for debugging purposes. + +Other functionality which as been started on but not integrated into master includes + + - Grouping tweets by relative time ("just now", "last hour") + - Semantic Zoom - collapse a group of tweets to see just the user's avatars + - User Streams - rather than querying for data periodically, Twitter can stream data down to an open connection inside the app. + + ![](/img/dodo-example.png) + +## boxkite + +Once boxkite is feature-complete, tested and documented, it will move to a separate repository with NuGet packages available so that people can consume the API. + +There are no immediate plans for boxkite to support other framework versions, as: + + - it uses a number of .NET 4.5-specific features - including async/await and WebAuthenticationBroker. + - there are a number of [existing libraries](https://dev.twitter.com/docs/twitter-libraries#dotnet) out there for .NET apps + - I would prefer to focus on the dodo application itself in the short term. + + If you still have the urge to check out a shiny new Twitter library, [Matt Hamilton](http://twitter.com/mabster) spent the week building a .NET 4 client called [Budgie](http://matthamilton.net/budgie) that uses the Task Parallel Library heavily. + +## The future of dodo + +Yes, that's a joke. + +I'm keen to continue building this application for several reasons: + + - many developers have been interested/curious to learn about it - while the concept of a Twitter app are familiar, being able to see the internals is where the real educational value lies. + - I still have an urge to create a different experience for people to interact with Twitter. With the basics done, the next step is to focus on the UX. + - There is enough lead time to have something ready for when Windows 8 ships. + - There is still [a lot of work still to do](https://trello.com/board/dodo/4f82e9dfc10221fb0db2cff2). + + And yes, others are more than welcome to get involved. Come [hang out](http://jabbr.net/#/rooms/code52). + diff --git a/_posts/2012-04-16-learning-week.md b/_posts/2012-04-16-learning-week.md new file mode 100644 index 0000000..464a13a --- /dev/null +++ b/_posts/2012-04-16-learning-week.md @@ -0,0 +1,54 @@ +--- +layout: post +permalink: /show-and-tell.html +date: 2012-04-16 23:00 +title: "show and tell" +author: "@shiftkey" +comments: true +--- + +The Code52 organisers have been bouncing around an idea over the past couple of weeks, but before we dedicate some time to getting it off the ground we want to test out our theory with a little experiment. And it involves you. + +## Some Background + +Since we kicked off Code52 at the start of the year, we've talked with many developers who are keen to get involved with OSS development but don't really have the time to dedicate a full week to working on a specific idea. + +Does that sound like you? Well this is your week. + +We want to hear about what you have been working with in your spare time. We want to hear about the cool stuff we haven't had a chance to use. We want to get jealous about hearing how you've used it and what you've learned about it. + +In short, we want to hear your stories. + +## Show and Tell + +We're looking for people to write short articles on stuff they've used recently or something they've built recently to share with the big wide world. + +We want to hear: + + - what did you find that is awesome? + - what is awesome about it? + - how did you use it? + - what did you learn from using it? + - is there some code that people can have a play with? + +It doesn't have to be a long post. And things like pictures and code snippets are fine to help show it off. + +## But how? + +Got something you want to share? You've got a few options + +### I've already posted it! + +Already written about something cool you'd like to share? Tweet a link to the [@Code_52](http://twitter.com/Code_52) account and we'll get in touch. If we're suitably impressed by your awesomeness, we'll share it with the world. + +### I don't have a blog! + +Don't have a blog? Don't worry! You can fork [this website](http://github.com/Code52/code52.github.com) on GitHub and add your own post to the [posts folder](http://github.com/Code52/code52.github.com/tree/master/_posts). Once you've written the post, send us a pull request and we can proof-read it before pushing it live. + +If you haven't seen it before, the site layout and content is used as input for [Jekyll](http://github.com/mojombo/jekyll/wiki) to generate the site content. + +### I'm not sure where to start! + +The Code52 gang built a tool for editing Markdown files - called [MarkPad](http://code52.org/DownmarkerWPF). This is a great way to get started with writing your own posts (its easier than writing HTML, and you can see the rendered content as your write it). + +If you drop into the Code52 [chat room](http://jabbr.net/#/rooms/Code52) we can help with editing and getting the content up on the site. \ No newline at end of file diff --git a/_posts/2012-04-17-show-and-tell-tugberkugurlu.md b/_posts/2012-04-17-show-and-tell-tugberkugurlu.md new file mode 100644 index 0000000..9fd2087 --- /dev/null +++ b/_posts/2012-04-17-show-and-tell-tugberkugurlu.md @@ -0,0 +1,35 @@ +--- +layout: post +permalink: /show-and-tell/1/generic-repository-pattern.html +date: 2012-04-17 23:00 +title: "Show and Tell #1 - Generic Repository Pattern series" +author: "@shiftkey" +comments: true +--- + +## Introduction + +When Tugberk sent me the link last night to this series, my curiousity was piqued. The generic repository pattern is something we had used for previous Code52 projects - which had also used Entity Framework as the backing store. + +For those who are not familiar with it, a *repository* is typically defined as (from [Edward Hieatt and Rob Mee](http://martinfowler.com/eaaCatalog/repository.html)): a component which "**mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.**" + +Why use the repository pattern? + + - decouple the application logic from the data access logic + - test the application logic in isolation - swap out the database for an in-memory collections of data. + + Anyway, before I go spoiling the content, Tugberk has written a series on this: + + - in the [first part](http://www.tugberkugurlu.com/archive/generic-repository-pattern-entity-framework-asp-net-mvc-and-unit-testing-triangle), he discusses the pattern and why you should care. + - in the [second part](http://www.tugberkugurlu.com/archive/how-to-work-with-generic-repositories-on-asp-net-mvc-and-unit-testing-them-by-mocking), he explains how you can use this with Entity Framework and MVC3. + - and to finish, he's [released](http://www.tugberkugurlu.com/archive/entity-framework-dbcontext-generic-repository-implementation-is-now-on-nuget-and-github) NuGet packages for bringing generic repositories into your apps (and the source is on GitHub). + +Lots of detail, lots of code samples. I hope you enjoy it. + +## About the Author + +Tugberk Ugurlu hails from Turkey and juggles university studies with his work as a Programmer and Internet Sales Director. He blogs at [www.tugberkugurlu.com](http://www.tugberkugurlu.com/) and is [@tourismgeek](http://twitter.com/tourismgeek) on Twitter. + +## Addendum + + - If you want to learn more on the repository pattern, Jon Galloway and Jesse Liberty did a screencast on **[Building a Repository using TDD](http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-3-Building-a-Repository-using-TDD)** for their video series "The Full Stack". Check it out. diff --git a/_posts/2012-04-18-show-and-tell-garfbradaz.md b/_posts/2012-04-18-show-and-tell-garfbradaz.md new file mode 100644 index 0000000..d5ad1a7 --- /dev/null +++ b/_posts/2012-04-18-show-and-tell-garfbradaz.md @@ -0,0 +1,21 @@ +--- +layout: post +permalink: /show-and-tell/2/mvc-image.html +date: 2012-04-18 23:00 +title: "Show and Tell #2 - Learning by building MvcImage" +author: "@shiftkey" +comments: true +--- + + +## Introduction + +This post is from Gareth Bradley, who found the Code52 chatroom by accident while he was checking out [JabbR](http://jabbr.net/). When we announced the "Show and Tell" week, he wrote a post about what he does for a living and what [he's been learning in his spare time](http://garfbradazweb.wordpress.com/2012/04/16/code52-show-tell-my-open-source-application/). + +I share the same view as Gareth in that I **learn best by building something useful** - and Gareth's put together his own OSS project as a way to demonstrate what he's learned. + +The project code is at [mvcimage.codeplex.com](http://mvcimage.codeplex.com/), and I hope to see more cool stuff from him in the future. + +## About the Author + +Gareth Bradley is a 4GL applications developer on OpenVMS systems by day and learning various other technologies (including C#, C++, XNA and ASP.NET) by night. You can find his blog at [garfbradazweb.wordpress.com/](http://garfbradazweb.wordpress.com/) and he's also on Twitter as [@garfbradaz](http://twitter.com/garfbradaz). diff --git a/_posts/2012-04-19-show-and-tell-mabster.md b/_posts/2012-04-19-show-and-tell-mabster.md new file mode 100644 index 0000000..a7a88cc --- /dev/null +++ b/_posts/2012-04-19-show-and-tell-mabster.md @@ -0,0 +1,93 @@ +--- +layout: post +permalink: /show-and-tell/3/task-parallel-library.html +date: 2012-04-19 23:00 +title: "Show and Tell #3 - Building Budgie with the Task Parallel Library (TPL)" +author: "@shiftkey" +comments: true +--- + +## Introduction + +For those of you who aren't familiar with it, [Matt Hamilton](http://twitter.com/mabster) wrote a Twitter API library over a few nights last week as an experiment to better understand the Task Parallel Library. + +He's named it Budgie - you can [read up about it](http://matthamilton.net/budgie), browse the [source code](http://bitbucket.org/mabster/budgie), install the [NuGet packages](http://nuget.org/packages/Budgie) or try out his Twitter client [Halfwit](http://madprops.org/halfwit/) which uses it. + +I asked Matt if he was interested in discussing why he decided to use the TPL for his project and what was cool about it. + +## The problem with asynchronous code + +When thinking about what [Budgie's](http://matthamilton.net/budgie) surface API was going to look like, I knew one thing: it would be asynchronous only. There would be no methods like `GetHomeTimeline()` that blocked and waited for Twitter to respond. + +There are any number of ways to write asynchronous APIs. The one I've been most comfortable with to date (used in TweetSharp, another Twitter library that heavily informed Budgie) is to ask for a callback as a parameter to your method, and call that when your asynchronous task is done. For example: + + public void DoStuff(string text, Action callback) + { + // step 1: do stuff with text asynchronously + DoStuffResult result = ...; + + // step 2: call the callback with the result + callback(DoStuffResult); + } + +This technique works really well, but with the advent of C# 5 and the new "async" and "await" keywords, a new approach became the obvious choice: using the Task Parallel Library. + +The idea is simply to return a "hot" `Task` (that is, a task that is already running) from your method: + + public Task DoStuff(string text) + { + return Task.Factory.StartNew(t => ..., text); + } + +Note that the method above returns a `Task`, which is a special kind of `Task` that returns a result. If your method doesn't need to return a value (like a void method) you would return a non-generic `Task` object instead. + +The calling code can then decide what to do with that task. They might decide to block and wait for it to finish: + + DoStuffResult result = DoStuff("hello world").Result; + +Or they might use a continuation: + + DoStuff("hello world").ContinueWith(result => { ... }); + +Or, in C# 5, they might use the non-blocking "await" keyword: + + DoStuffResult result = await DoStuff("hello world"); + +Using the Task Parallel Library gives the caller some flexibility in that regard, and the fact that it integrates so seamlessly into the C# 5 syntax made it an obvious choice. + +## Using the TPL with WebRequest + +I decided to use good ol' `System.Net.WebRequest` when making my calls to Twitter, partly because it offered fine-grained control over the request and partly because I was doing "Google Driven Development" and a lot of code samples out there use it. + +`WebRequest` offers an async API in the form of its `BeginRequest` and `EndRequest` methods, and as it turns out, the TPL gives us a really easy way to turn those calls into a `Task`: + + return Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null); + +That returns a running Task which is performing the request and will return the response in the `Result` property. + +Budgie, however, doesn't use it. Why? Because I wanted all HTTP requests in Budgie to honour a Timeout property, and WebRequest doesn't honour its own Timeout property unless you use the synchronous `GetResponse` method. So my code actually looks like this: + + return Task.Factory.StartNew(() => request.GetResponse()); + +It could be argued that that's actually _more_ readable. :) + +From there I can use a continuation (since Budgie is written using C# 4 and doesn't make use of the "await" keyword) to take action when the task completes: + + return requestTask.ContinueWith(t => + { + if (t.StatusCode != System.Net.HttpStatusCode.OK) return null; + + Foo result = new Foo(); + + // populate result by deserializing the JSON returned in the response + + return result; + }); + +It's worth noting that `ContinueWith` in this case is returning a `Task`, since I've passed it a `Func` to execute. The fact that I'm "continuing" from a `Task` doesn't mean I have to return that type. + +All in all, it's pretty easy! Easier still had I written this code with C# 5, but I wanted to be able to build this from my home PC which doesn't have .NET 4.5 or the Async CTP installed. + +## Wrapping Up + +Using the TPL to create an asynchronous API is the logical choice in modern .NET development, and I wouldn't have done anything different in Budgie. I'm looking forward to the final release of VS11 and .NET 4.5, at which point I'll refactor the code to make use of the "await" keyword, but for now it's good to know that you can do this in a future-proof way with the current tools. diff --git a/_posts/2012-04-20-show-and-tell-davidburela.md b/_posts/2012-04-20-show-and-tell-davidburela.md new file mode 100644 index 0000000..3ecc03f --- /dev/null +++ b/_posts/2012-04-20-show-and-tell-davidburela.md @@ -0,0 +1,26 @@ +--- +layout: post +permalink: /show-and-tell/4/using-dvcs-to-host-code-examples.html +date: 2012-04-20 23:00 +title: "Show and Tell #4 - Using DVCS to host code examples" +author: "@shiftkey" +comments: true +--- + +## Introduction + +Ever come across a blog post from ancient history which includes an attachment that you really really need, but the link no longer works? [This post](http://davidburela.wordpress.com/2012/04/17/developer-blog-banter-3-responsecommunity-coding/) is for you. + +David Burela did a writeup this week on: + + - how he used to manage code samples with his blog posts + - the problems and limitations of this approach + - how he is using GitHub to make life easier for himself and his readers + +He explains how you can create your own repositories and include documentation, and references a [Windows Phone application](https://github.com/DavidBurela/Windows8DeveloperCampPhoneApplication) he wrote recently. + +David also mentions [MarkPad](http://code52.org/DownmarkerWPF)- an application built by the Code52 community to make writing Markdown-based files easier. + +## About the Author + +David Burela lives in Melbourne, Australia and focuses on Silverlight, Windows Azure and Windows Phone 7 development. He also just finished his first book "Microsoft Silverlight 5 and Windows Azure Enterprise Integration". He blogs at [DavidBurela.Wordpress.com](http://DavidBurela.Wordpress.com/) and is [@DavidBurela](http://twitter.com/DavidBurela) on Twitter. diff --git a/_posts/2012-04-22-show-and-tell-laumania.md b/_posts/2012-04-22-show-and-tell-laumania.md new file mode 100644 index 0000000..289ca07 --- /dev/null +++ b/_posts/2012-04-22-show-and-tell-laumania.md @@ -0,0 +1,24 @@ +--- +layout: post +permalink: /show-and-tell/5/porting-a-silverlight-game-to-xna-on-wp7.html +date: 2012-04-22 23:00 +title: "Show and Tell #5 - Porting a Silverlight game to XNA" +author: "@shiftkey" +comments: true +--- + +## Introduction + +Mads sent through a [blog post](http://www.laumania.net/post/2012/04/21/My-show-and-tell-post.aspx) yesterday about how his experiment on porting a game from Silverlight to XNA. + +His starting point: a game called "We are Bugs" from [Jeff Weber](http://www.farseergames.com/). + +You can go and play it [here](http://www.farseergames.com/wearebugs). I'll wait. + +Back? Great. So Jeff made the source code [available](http://www.farseergames.com/blog/2009/4/30/we-are-bugs-refactored-and-source-released.html) a while ago, and Mads has experimented with porting the code to Silverlight in WP7 and then in XNA. + +[His results are up on GitHub](https://github.com/Laumania/WeAreBugs-XNA) for those who want to compare and contrast the differences. + +## About the Author + +Mads Laumann is a developer from Denmark who works with C# and ASP.NET by day and experiments with a other Microsoft technologies in his spare time. He blogs at [laumania.net](http://laumania.net/) and is [@laumania](http://twitter.com/laumania) on Twitter. diff --git a/_posts/2012-04-25-re-evaluating-code52.md b/_posts/2012-04-25-re-evaluating-code52.md new file mode 100644 index 0000000..05d4492 --- /dev/null +++ b/_posts/2012-04-25-re-evaluating-code52.md @@ -0,0 +1,63 @@ +--- +layout: post +permalink: /reevaluating-code52.html +date: 2012-04-23 23:00 +title: "Reevaluating Code52" +author: "@shiftkey" +comments: true +--- + +I've been mulling over the contents of this post over the past couple of weeks - while it's been an amazing experience thus far, a few events behind the scenes have triggered some changes. + +## Farewells and Distractions + +Last week @aeoth decided to step down from his role co-ordinating and contributing to the Code52 group. He's been a big part in many of the things we've built so far, and we wish him the best with his future endeavours. + +@shiftkey will be spending his weekends living in airports as part of the Windows 8 Dev Camps around Australia over the coming weeks - plus some other things which he will talk about in the future - so he will not be as contactable as he has been previously. Once he returns from holidays in July (after [dddSydney](http://dddsydney.com) in fact) the schedule starts to look more like that of a normal person. + +So with logistics getting tougher to organise each week, we want to adapt to the situation in front of us - for everyone's benefits. + +## Rethinking the process + +So rather than continuing down this path to self-implosion, we want to try some changes to the process: + + - We want to start projects **when people want to build something** + - We want **the people involved to choose what we build** + - We want to **help people become contributors** + - We want to ensure that **everyone has fun and learns from the experience** + +## Nothing is set in stone + +Keep in mind that this is one big long experiment, and **we want you to get involved**. + +We've got a [massive backlog](https://trello.com/board/schedule/4f20b3df0162d41c670ffc6b) of ideas - if something stands out on that list that you'd like to work on, get in touch - [JabbR](http://jabbr.net/#/rooms/code52), [twitter](http://twitter.com/Code_52), or [email](mailto:code52@code52.org) all work. If you have something else that you'd like to do that's not on the list, don't worry - just get in touch through the same channels. + +With this change we are planning to drop our most radical requirement - time constraints. Up until this point, we've constrained ourselves to one week to focus on a project and get something working - which has been challenging at times. + +With this change, hopefully this frees projects up to evolve at their own pace and reduces the pressure on everyone. As we've found organising this, sometimes life just gets in the way - and that shouldn't be a barrier to getting involved. + +A complementary change to this is how we announce projects. Once we organise a project and a group of people to get involved, we aim to announce ahead of time (a week?) the project. This should give enough time for the group to get the groundwork in place, and give people who are following the action time to declare their interest and availability. + +## So what next? + +@shiftkey has something he wants to kickstart - specifically [this idea](https://code52.uservoice.com/forums/143105-code-52/suggestions/2730885-git-heat-map-generator) - but until he gets some spare time (next week at best), now is the opportunity for people to take charge and get involved - **what do you want to build?** + +@shiftkey has a number of OSS projects on the go - getting [Markpad](http://code52.org/DownmarkerWPF) in-app updates running, adding features to [Dodo](http://github.com/Code52/dodo), dogfooding [NSync](http://github.com/xpaulbettsx/nsync) on an internal app, reviewing pull requests and answering questions on JabbR - so I'll be hanging out in the [JabbR](http://jabbr.net/#/rooms/code52) room whenever I'm coding in my spare time. + +And of course, the [JabbR](http://jabbr.net/#/rooms/code52) room also tracks conversation history - so you can drop in and see what people have been talking about previously or just hang out and chat. + +## This week: @shiftkey explains more + +Over the course of this week, Brendan will discuss some of the philosophical goals in mind for Code52. While these are relatively simple goals, he will also discuss what we've learned so far and how we can improve things going forward. + +The topics he has in mind so far: + + - Always learning new things + - Push, Not Pull + - It should be fun + - Keep a balance + - Planning is a good thing(tm) + +Hopefully this helps to undestand more of what's been going on behind the scenes, and gives you a better idea of the *what*, *how* and *why* of Code52. + +We'll also keep the [Show and Tell](http://code52.org/show-and-tell.html) open as an ongoing thing people who want to share things they've learned or worked on - you should keep an eye on our [Twitter](http://twitter.com/Code_52) account for announcements. \ No newline at end of file diff --git a/_posts/2012-04-30-show-and-tell-belfryimages-setting-up-mef.md b/_posts/2012-04-30-show-and-tell-belfryimages-setting-up-mef.md new file mode 100644 index 0000000..bd568da --- /dev/null +++ b/_posts/2012-04-30-show-and-tell-belfryimages-setting-up-mef.md @@ -0,0 +1,18 @@ +--- +layout: post +permalink: /show-and-tell/6/setting-up-mef.html +date: 2012-04-30 20:00 +title: "Show and Tell #6 - Setting up MEF" +author: "@belfryimages" +comments: true +--- + +## Setting up MEF + +Ben posted yesterday about [setting up MEF](http://blog.belfryimages.com.au/setting-up-mef.html) with the goal of adding plugins to a simple application. It touches on splitting the plugin API from the application code, including two-way communication between the application and the plugin. This method will possibly be used to implement plugin support in [MarkPad](http://code52.org/DownmarkerWPF/). + +The project created for the post is [available on GitHub](https://github.com/belfryimages/mef-test). + +## About the Author + +Ben Scott is a developer from Rockhampton, Australia. He is employed as the IT manager of a financial planning firm, where he largely works on a C#, WinForms-based in-house investment portfolio management system, plus a number of slightly more interesting projects, some of them in */gasp/* PHP. In his spare time he likes to write posts about himself in the third person using other people's websites. He very occasionally writes at [blog.belfryimages.com.au](http://blog.belfryimages.com.au) and can usually be found on Twitter [@belfryimages](http://twitter.com/belfryimages) where he posts blurry photos of his lunch and complains about things. diff --git a/_posts/Week01-MarkPad/2012-01-03-day1.md b/_posts/Week01-MarkPad/2012-01-03-day1.md index 7ffad3f..2c9d814 100644 --- a/_posts/Week01-MarkPad/2012-01-03-day1.md +++ b/_posts/Week01-MarkPad/2012-01-03-day1.md @@ -1,17 +1,18 @@ ---- -layout: post -permalink: /weekone-dayone.html -date: 2012-01-03 23:59 -title: "MarkPad: Day 1" -feed: "project" ---- - -> The first few days of the first project (MarkPad) were retroactively blogged about because we only decided to do that *after* the fact. - -What can you expect from day one of a brand new project? Not much, right? Wrong. Awesomeness is what you should expect. The first sucker up to the plate was [@distantcam](https://twitter.com/#!/distantcam) who setup the Caliburn.Micro framework, hooked up MarkdownSharp and we were well on our way to getting a workable utility. - -![](/img/week1-day1.png) - -Initially we were using a plain textbox as the editor, but quickly discovered the powerful [AvalonEdit](http://www.avalonedit.net/) control from SharpDevelop. - +--- +layout: post +permalink: /weekone-dayone.html +date: 2012-01-03 23:59 +title: "MarkPad: Day 1" +feed: "project" +comments: true +--- + +> The first few days of the first project (MarkPad) were retroactively blogged about because we only decided to do that *after* the fact. + +What can you expect from day one of a brand new project? Not much, right? Wrong. Awesomeness is what you should expect. The first sucker up to the plate was [@distantcam](https://twitter.com/#!/distantcam) who setup the Caliburn.Micro framework, hooked up MarkdownSharp and we were well on our way to getting a workable utility. + +![](/img/week1-day1.png) + +Initially we were using a plain textbox as the editor, but quickly discovered the powerful [AvalonEdit](http://www.avalonedit.net/) control from SharpDevelop. + 17 commits for day one? Not shabby. \ No newline at end of file diff --git a/_posts/Week01-MarkPad/2012-01-05-day3.md b/_posts/Week01-MarkPad/2012-01-05-day3.md index 29ff199..bf11323 100644 --- a/_posts/Week01-MarkPad/2012-01-05-day3.md +++ b/_posts/Week01-MarkPad/2012-01-05-day3.md @@ -1,24 +1,25 @@ ---- -layout: post -permalink: /weekone-daythree.html -title: "MarkPad: Day 3" -feed: "project" ---- - -> The first few days of the first project (MarkPad) were retroactively blogged about because we only decided to do that *after* the fact. - -While day two was "slow", day three was anything but. An icon, a UI overhaul, and so many features. - -###The Logo -One of the good and bad things about an adhoc, democratic app is that everybody has a say. This has led to some great UI or logic choices, but on the flipside has also had a few instances of where nobody could agree and executive decisions has to be made. For the icon, we had two shapes and many colours to pick from! - -![](/img/week1-day3-logos.png) - -###UI overhaul -It was voted that the anything resembling the "Fluent UI" (Ribbon) should be nuked from orbit, and instead we opted to go for a metro look. Thankfully, we all knew a guy who knew a guy who had a [WPF Metro Library](http://www.theleagueofpaul.com/metro). - -![](/img/week1-day3-screenshot.png) - -The design was inspired by (and permitted!) [ClindHartsen](https://twitter.com/#!/clindhartsen)'s "[Focus Text Editor](http://clindhartsen.deviantart.com/art/Focus-Text-Editor-176271501)" - +--- +layout: post +permalink: /weekone-daythree.html +title: "MarkPad: Day 3" +feed: "project" +comments: true +--- + +> The first few days of the first project (MarkPad) were retroactively blogged about because we only decided to do that *after* the fact. + +While day two was "slow", day three was anything but. An icon, a UI overhaul, and so many features. + +###The Logo +One of the good and bad things about an adhoc, democratic app is that everybody has a say. This has led to some great UI or logic choices, but on the flipside has also had a few instances of where nobody could agree and executive decisions has to be made. For the icon, we had two shapes and many colours to pick from! + +![](/img/week1-day3-logos.png) + +###UI overhaul +It was voted that the anything resembling the "Fluent UI" (Ribbon) should be nuked from orbit, and instead we opted to go for a metro look. Thankfully, we all knew a guy who knew a guy who had a [WPF Metro Library](http://www.theleagueofpaul.com/metro). + +![](/img/week1-day3-screenshot.png) + +The design was inspired by (and permitted!) [ClindHartsen](https://twitter.com/#!/clindhartsen)'s "[Focus Text Editor](http://clindhartsen.deviantart.com/art/Focus-Text-Editor-176271501)" + We also introduced [Awesomium](http://awesomium.com/) as the preview control to make up for the lacking capabilities of the build in WPF WebBrowser (which is really just IE in an ActiveX/COM wrapper) \ No newline at end of file diff --git a/_posts/Week01-MarkPad/2012-01-06-day4.md b/_posts/Week01-MarkPad/2012-01-06-day4.md index fa0913a..09f3f0e 100644 --- a/_posts/Week01-MarkPad/2012-01-06-day4.md +++ b/_posts/Week01-MarkPad/2012-01-06-day4.md @@ -1,19 +1,20 @@ ---- -layout: post -permalink: /weekone-dayfour.html -title: "MarkPad: Day 4" -feed: "project" ---- - -If day three was a productive day, day four was insane. - -More UI refinement, including "UX" refinement with syncing of scrolling between the two panels -![](/img/week1-day4-screenshot.png) - -Another icon, this time for *documents* - that is, .md, .mdown and .markdown. Just like the app logo, we went through several iterations before we found the right one. - -![](/img/week1-day4-icons.png) - -`1-MetaweblogAPI` branch can now communicate with FunnelWeb/Metaweblog API to publish new posts and open, edit and save old posts! - +--- +layout: post +permalink: /weekone-dayfour.html +title: "MarkPad: Day 4" +feed: "project" +comments: true +--- + +If day three was a productive day, day four was insane. + +More UI refinement, including "UX" refinement with syncing of scrolling between the two panels +![](/img/week1-day4-screenshot.png) + +Another icon, this time for *documents* - that is, .md, .mdown and .markdown. Just like the app logo, we went through several iterations before we found the right one. + +![](/img/week1-day4-icons.png) + +`1-MetaweblogAPI` branch can now communicate with FunnelWeb/Metaweblog API to publish new posts and open, edit and save old posts! + `Win7Intergration` has (optional) file association (which is what the document icon is for) and jump list support - it's all starting to come together! \ No newline at end of file diff --git a/_posts/Week01-MarkPad/2012-03-20-day77.md b/_posts/Week01-MarkPad/2012-03-20-day77.md new file mode 100644 index 0000000..356108b --- /dev/null +++ b/_posts/Week01-MarkPad/2012-03-20-day77.md @@ -0,0 +1,29 @@ +--- +layout: post +permalink: /weekone-dayseventyseven.html +title: "MarkPad: Day 77" +feed: "project" +comments: true +--- + +MarkPad might be getting a little "long in the tooth" for a Code52 project but it is still one of the most actively developed projects we have. + +If we go back to what we had going on [*day one*](/weekone-dayone.html), it'd be fair to say it was ugly - not an unusual situation with open source applications, particularly in the "v1" stage. + +![](http://code52.org/img/week1-day1.png) + +While we may not be designers or trained in the blackarts of UX, we've made a real effort to give UI/UX the respect it deserves. + +![](img/markpad_revisit_1.png) + +![](img/markpad_revisit_2.png) + +While the UI is cleaner and dare I say it - prettier - what else has been going on in the land of MarkPad? A quick highlight + +* Font selection (size/type) for the editor +* Incorrect spelling detection +* "Jekyll" detection which allows pasting of images straight into the editor, which copies it to the right folder +* Discussion and the beginnings of an *extension* framework! +* wyUpdate/wyBuild auto-updater in the works + +Once we get extensions (powered by NuGet!) and app updater going, MarkPad will be an unstoppable Markdown juggernaut! \ No newline at end of file diff --git a/_posts/Week02-Jibbr/2012-01-10-day1.md b/_posts/Week02-Jibbr/2012-01-10-day1.md new file mode 100644 index 0000000..975048c --- /dev/null +++ b/_posts/Week02-Jibbr/2012-01-10-day1.md @@ -0,0 +1,41 @@ +--- +layout: post +permalink: /weektwo-dayone.html +date: 2012-01-10 23:59 +title: "Jibbr: Day 1" +feed: "project" +comments: true +--- + +Technically we started this on Day 0 with forking the [Jabbot](http://github.com/davidfowl/jabbot) project and gathering ideas and features while people explored the code. Due to the Hanselman effect, we had an overflowing chatroom and lots of discussion to keep us busy. + +### Drawing + +Paul was in the mood for drawing, and he started experimentign with Mr-T/Hubot themed graphics + +![](/img/week2-day1-drawing.jpg) + +### The Bleeding Edge + +Oh, and there were some JabbR fun and games to deal with straight off the bat. Some breaking changes in the [JabbR](http://github.com/davidfowl/jabbr) website hadn't propogated to a [SignalR.Client](http://github.com/signalr/signalr) release - but thankfully the awesome [@davidfowl](https://twitter.com/davidfowl) was on hand to help us get the right commits together and craft a version which played nice. + +### Experimenting with Sprockets + +One of the first features we added was support for periodic sprockets - we're calling them *announcements* - but more work was needed to get the infrastructure to a point where people could experiment further. A simple scheduler was added to the console app, and a sample plugin - telling you what time it was in Sydney - was added to the code. + +[Andrew](http://twitter.com/tobin) and [Stefan](http://twitter.com/cyberzeddk) also worked on adding support for additional commands to the bot, building test sprockets and running them in a test JabbR chatroom. + +We started spawning test rooms to ensure the main Code52 chat room was not annoyed by out experiments. + +Even a Mr T bot made an appearance - I wish I had a screenshot handy of the bot making fun of me. + +### Hosting + +We discussed where this hypothetical app would be hosted - a Windows Service was discussed, but we eventually agreed that it *should* be fine to host on ASP.NET. The [NancyFx](http://twitter.com/TheCodeJunkie) [guys](http://twitter.com/GrumpyDev) were in the JabbR chatroom to steer us in the right direction. + +-- @shiftkey + + + + + diff --git a/_posts/Week02-Jibbr/2012-01-11-day2.md b/_posts/Week02-Jibbr/2012-01-11-day2.md new file mode 100644 index 0000000..c5de7f7 --- /dev/null +++ b/_posts/Week02-Jibbr/2012-01-11-day2.md @@ -0,0 +1,64 @@ +--- +layout: post +permalink: /weektwo-daytwo.html +title: "Jibbr: Day 2" +feed: "project" +comments: true +--- + +More momentum, more interest, more progress and lots more chatter in the JabbR room - including a hilarious discussion on Git's autocrlf behaviour. + +![](/img/week2-day2-autocrlf.jpg) + +Credit goes to [@MotoWilliams](http://twitter.com/MotoWilliams) for the meme. + +### JabbR Updates + +Some changes to JabbR and SignalR - [David](http://twitter.com/davidfowl) (and I suppose [Damian](http://twitter.com/damianedwards) by extension) is planning a 0.4 version of SignalR. More changes to JabbR and SignalR pulled into Jibbr. + +### GitHub Sprocket + +Most of the heavy-lifting for the GitHub plugin is done - using JSON.NET's dynamic support to parse data from the GitHub API without defining strongly-typed models makes this about eleventy billion times easier. + +The plugin is intended to track and display notifications for: + + - commits to the master repository + - people watching the project + - pull requests (new and closed) + - activity in forks off the master repository - when a new one is created, when code has been pushed to it + - issues (new and modified) + +For example: + +![](/img/week2-day2-action.png) + +Since taking this screenshot, I've been contemplating how to differentiate notifications. Perhaps JabbR could support Markdown for basic styling of text? :) + +### Automate all the things + +A little anecdote: I hastily put together a script late the night before to move the sample extensions into a folder - for MEF to discover and load into the app. In my haste, I'd ignored the fact that I'd (likely) been running the script from a bash shell (thanks git-bash) and hardcoded some paths to get (what I'd thought was) the job "done". + +So I merged the changes into master and hit the hay. + +A few hours later, I wake up to [Stefan](http://twitter.com/cyberzeddk) demanding beer karma as a result of the harm I'd caused his mental state. Turns out that 'cp' isn't 'copy' and file paths are easy to destroy completely if you pick the wrong one for the wrong OS. + +With some input from Stefan and Tobin, the script now recurses all of the Extensions subfolders for assemblies. + + set solution_dir=%1 + set output_dir=%solution_dir%\Jabbot.ConsoleBotHost\bin\Debug\Sprockets\ + + del %solution_dir%\Jabbot.ConsoleBotHost\bin\Debug\Sprockets\*.dll + + for /D %%I in ("%solution_dir%\Extensions\*") do ( + xcopy %%I\bin\Debug\*.dll %output_dir% /C /Y + ) + +### Jabbot running on NancyFx + +[Seth Webster](http://www.sethwebster.com/) a contributor to the Jabbot project, put together a simple sample app of a Jabber bot running inside NancyFx. He's also been helping out with the JabbR testing over the past couple of days. Many thanks for his hard work. + +[Paul](http://twitter.com/aeoth) has taken that sample and started working on an administration tool for the bot: + +![](/img/week2-day2-website.png) + +-- @shiftkey \ No newline at end of file diff --git a/_posts/Week02-Jibbr/2012-01-12-day3.md b/_posts/Week02-Jibbr/2012-01-12-day3.md new file mode 100644 index 0000000..afe78f5 --- /dev/null +++ b/_posts/Week02-Jibbr/2012-01-12-day3.md @@ -0,0 +1,13 @@ +--- +layout: post +permalink: /weektwo-daythree.html +title: "Jibbr: Day 3" +comments: true +feed: "project" +--- + + + +Please excuse the inane ramblings of somebody who doesn't usually use the DLR and was somewhat delirious when victory struck. While it's not 100% yet, we have basic support for scripts from [Hubot](https://github.com/github/hubot), which means with a bit more work, we should get compatiblity with [the 150 or so in the community scripts repo!](https://github.com/github/hubot-scripts/tree/master/src/scripts) + +-- @aeoth \ No newline at end of file diff --git a/_posts/Week03-Ideastrike/2012-01-20-day4.md b/_posts/Week03-Ideastrike/2012-01-20-day4.md new file mode 100644 index 0000000..3ad75d7 --- /dev/null +++ b/_posts/Week03-Ideastrike/2012-01-20-day4.md @@ -0,0 +1,41 @@ +--- +layout: post +permalink: /weekthree-dayfour.html +date: 2012-01-20 23:59 +title: "Ideastrike: Day 4" +feed: "project" +comments: true +--- + +Ideastrike is in full swing and it's been a big social week for a few of us, so we've held off blogging a bit in order to devote our time to code! + +We were told the site was looking a little thin on details though, so here's your update ;) + +### What's it looking like? + +Paul has done a bit of the UI, as he does and we've got some pretty good looking parts, as you'd expect for the voting and the current layout (using [Twitter Bootstrap](http://twitter.github.com/bootstrap)) + +![](/img/week3-day4-layout.png) + +Of course it's just the start and gives us something to work with while we get the features done, but it's a fairly nice look already. + +### What's it built on so far? + +We've got [Nancy](http://nancyfx.org/) as we expected, and authentication is being built around [Janrain](http://www.janrain.com/) so we get Twitter, Facebook, Google accounts and more (and we don't have to worry about storing passwords. + +We have it all wired up with our favorite IoC container - [autofac](http://code.google.com/p/autofac/), some Markdown and other things being added in. + +### Who's involved so far? + +Our room has been fairly active with the Nancy guys helping out quite a bit with advice and going through the "Nancy way" of getting things going - and if they are helping you, or you've found it difficult to get some examples of getting it going then please think about giving back to them by helping them document what you had problems with! + +Ten people have [contributed](https://github.com/Code52/Ideastrike/contributors) so far, and please if you think you have some time and would like to contribute we'd be happy to have you. Come into the [Jabbr](http://jabbr.net/#/rooms/code52) room and select something from our [Trello](https://trello.com/board/ideastrike/4f137b417201526045146b8a) board or add your own idea to code up. + +### What's next? + +We're getting a lot of the base infrastructure down but we've still got some integration points, we've got a lot of ideas in progress to merge in and test out, and to get it up somewhere. + +The week's not over yet, so if you want to hope in and join us then [come on down!](http://jabbr.net/#/rooms/code52) + + + diff --git a/_posts/Week10-FinancesWin8/2012-03-06-day1.md b/_posts/Week10-FinancesWin8/2012-03-06-day1.md new file mode 100644 index 0000000..daed0c8 --- /dev/null +++ b/_posts/Week10-FinancesWin8/2012-03-06-day1.md @@ -0,0 +1,44 @@ +--- +layout: post +permalink: /week10-day1.html +date: 2012-03-06 23:30 +title: "MyFinances for Windows8: Day 1" +feed: "project" +comments: true +--- + +Only 24 hours into building something with the Windows 8 Consumer Preview and the JabbR room has been alive and kicking. + +### Progress? Already?! + +The project structure has been created, and a simple Expenses page has been created and styled to demonstrate navigation between pages and binding data to the UI. As this application is built using WinJS, we're seeing some people who are new to it. + +While the application is being built, we've identified a number of features we can prototype in parallel to demonstrate various APIs and scenarios which we can integrate into the main application. [Chris Sainty](http://twitter.com/csainty) has already started work on a synchronization example so that we can share data between devices. + +### Mockup - Dashboard and Notifications + +As I started mocking up the application, I realised I hadn't thought about the dashboard and what the application might display to the user on startup. + +So here's a walkthrough of how I envision it working - have input? Leave a comment. + +On startup, the application will display to the user any new notifications since they last opened the app. This time, the user is greeted with a couple of items to view, and those are emphasized by the application. + +![](/img/finance-dashboard.png) + +To view the item, the user taps or clicks on the item and the details slide down underneath. + +![](/img/finance-dashboard-itemselected.png) + +The user can then click **Close** to dismiss the item, or tap away to hide it. + +![](/img/finance-dashboard-no-notifications.png) + +Once all the notifications are cleared, the bar disappears and the application has access to the default dashboard. + + +### What's next? + +I suspect the next couple of days will involve discussion, experimenting with WinJS and prototyping features. If you want to follow the discussion and get involved then [check out the chatroom!](http://jabbr.net/#/rooms/code52) + + + diff --git a/about.md b/about.md index 256a1ad..5de5bed 100644 --- a/about.md +++ b/about.md @@ -1,43 +1,42 @@ ---- -layout: post -title: About -comments: false ---- - -code52 started with a simple idea: - -##"A new coding project every week" - -We want to **build fun stuff** in our spare time, **give back** to projects which need support, and **create a community** which is inclusive and engaging. - -##Who's behind this idea? - -We are (in alphabetical order) [Andrew Tobin](http://twitter.com/tobin), [Brendan Forster](http://twitter.com/shiftkey) and [Paul Jenkins](http://twitter.com/aeoth). - -Particular goals we want to achieve: - - - introduce developers to open-source projects and help them learn the ropes. - - contribute to projects across a range of technologies. - - let the community determine where to focus efforts (?). - -##Why a week? - -We're still nailing down the details at the moment, but in particular: - - - shorter timelines encourage achievable goals. - - shorter timelines reduce the incentive to procrastinate. - - more variety of projects to work on over a period of time. - -##How can I find out more? - -You can nominate and vote for projects on our [Uservoice](http://code52.uservoice.com) site. - -Discussions, ideas and suggestions can be posted on our [TenderApp](http://code52.tenderapp.com) site. - -And we're on [Twitter](http://twitter/code_52)! - - - - - - +--- +layout: post +title: About +comments: false +--- +code52 started with a simple idea: + +##"A new coding project every week" + +We want to **build fun stuff** in our spare time, **give back** to projects which need support, and **create a community** which is inclusive and engaging. + +##Who's behind this idea? + +We are (in alphabetical order) [Andrew Tobin](http://twitter.com/tobin), [Brendan Forster](http://twitter.com/shiftkey) and [Paul Jenkins](http://twitter.com/aeoth). + +Particular goals we want to achieve: + + - introduce developers to open-source projects and help them learn the ropes. + - contribute to projects across a range of technologies. + - let the community determine where to focus efforts (?). + +##Why a week? + +We're still nailing down the details at the moment, but in particular: + + - shorter timelines encourage achievable goals. + - shorter timelines reduce the incentive to procrastinate. + - more variety of projects to work on over a period of time. + +##How can I find out more? + +You can nominate and vote for projects on our [Uservoice](http://code52.uservoice.com) site. + +Discussions, ideas and suggestions can be posted on our [TenderApp](http://code52.tenderapp.com) site. + +And we're on [Twitter](http://twitter.com/code_52)! + + + + + + diff --git a/atom.xml b/atom.xml index 37561ea..16fcb8f 100644 --- a/atom.xml +++ b/atom.xml @@ -3,7 +3,7 @@ layout: nil --- - Code52 + Code52 Feed {{ site.time | date_to_xmlschema }} @@ -16,7 +16,7 @@ layout: nil {% for post in site.posts %} {% if post.feed != "project" %} - http://www.Code52.org/{{ post.id }} + http://www.Code52.org/{{ post.url }} {{ post.title | xml_escape }} {{ post.date | date_to_xmlschema }} diff --git a/index.md b/blog.md similarity index 80% rename from index.md rename to blog.md index ce52c08..e478ca8 100644 --- a/index.md +++ b/blog.md @@ -1,55 +1,64 @@ ---- -layout : layout -title : code52 ---- - -
    - {% for post in site.posts limit:10 %} -
  • -
    - {% if forloop.first and post.layout == "post" %} -

    {{ post.title }}

    - - - - {{ post.content }} -
    - Comments - {% else %} -

    {{ post.title }}

    - - {{ post.content }} - - Comments - {% endif %} -
    -
  • - {% endfor %} -
- - \ No newline at end of file diff --git a/contributing.md b/contributing.md index b1a6d88..fb2e27c 100644 --- a/contributing.md +++ b/contributing.md @@ -1,62 +1,81 @@ ---- -layout: post -title: Contributing to Code52 projects ---- - -##How do I contribute? -For the Code52 projects, we're adopting what is often referred to as "GitHub Flow". This doesn't exclusively apply to GitHub or even Git, but this is the example we're giving. - -> Note, this is different to "Git Flow", and although many of the principles are the same, it's much much simplier. - -###Step 1: Fork or branch the repo -![][1] - -At the top of every GitHub project is the magical fork button. If you don't have access to the repo, fork it to copy it over to your account. Once you fork it, you have full administrative privledges over your fork, so you can commit away. - -If you do have write access to the repo, just skip to step 2. - -![][2] - -###Step 2: Pick and issue, any issue. Be an issue! -Normally you'd easily be able to make a fork, branch and commit up changes, but in Code52 projects we're moving very quickly and can quickly pick up people. It's a good idea to 'stake your claim' on a bug or feature to fix up so that two people aren't working on the same thing. - -![][3] - -Go over to the original projects issue tab, and pick something that you'd like to work on. Don't see it there? Create an issue. If you can, assign the issue to yourself or leave a comment on the issue saying "I'll do this" - it needs to be explicitly stated, as just reporting an issue (be it a bug or feature) doesn't really let people know what you're doing. - -###Step 3: Create a branch and make some changes -Create a somewhat descriptive branch name on *your* fork, switch to it, make some changes. A descriptive name helps let us know what you are working on. Better yet, if an issue is created you can reference it *in your commit notes* by having "#IssueNumber" - ie, - -> \#1 - I added more awesome in - -If you do that, GitHub automatically creates a note in the issue tracker that you've referenced the issue, right down to the specific commit! - -![][4] - -To create branches in git, - - git branch MyBranchName - git checkout MyBranchName - -###Step 4: Send a pull request -It doesn't matter whether you've got full access to a repo or forked and have your own branch - you can pull request from your fork or from your branch back into the `master` branch. Even if you're the project "owner/maintainer", if there are others on the project, send a pull request and let somebody else accept/review it. - -Why a pull request? One, that gives the project maintainer notification that something has been done, and two, GitHub's pull request interface is a fantastic way to do code reviews. - -The pull request button is next to the fork button, up the top of a project. - -![][5] - -Neat so far, right? It gets better. The pull request will notify the project maintainers, and present them with an *awesome* magical button. - -![][6] - -Oh sure, there is extra information about the pull request - such as all the commits involved and full discussion capabilities, but at the end of hte day, the auto-merge button makes pull requests and GitHub flow *trivial* to do. - - [1]: img/githubflow_1.png - [2]: img/githubflow_2.png - [3]: img/githubflow_3.png - [4]: img/githubflow_4.png - [5]: img/githubflow_5.png - [6]: img/githubflow_6.png +--- +layout: post +title: Contributing to Code52 projects +--- + +##Getting ready to contribute +***For a detailed list of getting started links, head to the [Code52 wiki](https://github.com/Code52/code52.github.com/wiki)*** + +For all of the Code52 projects, we're using Git for our version control, and [GitHub](https://github.com/code52) as the central repo. + +Why Git and GitHub? Git is one of - if not the - leading *distributed* version control systems. All DVCS are faster than the centralised systems like SVN or CVS. We do understand that Git isn't as easy to grok - particularly on Windows - as other tools such as Mercurial (Hg). We feel that GitHub is better suited than other hosted source platforms, so we're persevering with it. There are a fair [few introductions to git](http://book.git-scm.com/), but feel free to ask questions on how to use it in [Jabbr](http://jabbr.net/#/rooms/code52). + +Why GitHub? The community around GitHub, including the fantastic service itself and the way they're embracing and encouraging open source software makes it ideal to work with for the Code52 team - remember, we're trying to promote OSS! + +If you're on Windows, check out GitHub's excellent guide for setting up [Git on Windows](http://help.github.com/win-set-up-git/) + +Once you've got Git setup, make sure you [fix your line endings](http://code52.org/line-endings.html) by setting `autocrlf` to `false`. You can do this on a per project basis by going into a project directory, and typing + +`git config core.autocrlf false` + +or at a global level and doing + +`git config --global core.autocrlf false` + +##How do I contribute? +For the Code52 projects, we're adopting what is often referred to as "GitHub Flow". This doesn't exclusively apply to GitHub or even Git, but this is the example we're giving. + +> Note, this is different to "Git Flow", and although many of the principles are the same, it's much much simplier. + +###Step 1: Fork or branch the repo +![][1] + +At the top of every GitHub project is the magical fork button. If you don't have access to the repo, fork it to copy it over to your account. Once you fork it, you have full administrative privledges over your fork, so you can commit away. + +If you do have write access to the repo, just skip to step 2. + +![][2] + +###Step 2: Pick an issue, any issue. Be an issue! +Normally you'd easily be able to make a fork, branch and commit up changes, but in Code52 projects we're moving very quickly and can quickly pick up people. It's a good idea to 'stake your claim' on a bug or feature to fix up so that two people aren't working on the same thing. + +![][3] + +Go over to the original project's issue tab, and pick something that you'd like to work on. Don't see it there? Create an issue. If you can, assign the issue to yourself or leave a comment on the issue saying "I'll do this" - it needs to be explicitly stated, as just reporting an issue (be it a bug or feature) doesn't really let people know what you're doing. + +###Step 3: Create a branch and make some changes +Create a somewhat descriptive branch name on *your* fork, switch to it, make some changes. A descriptive name helps let us know what you are working on. Better yet, if an issue is created you can reference it *in your commit notes* by having "#IssueNumber" - ie, + +> \#1 - I added more awesome in + +If you do that, GitHub automatically creates a note in the issue tracker that you've referenced the issue, right down to the specific commit! + +![][4] + +To create branches in git, + + git branch MyBranchName + git checkout MyBranchName + +###Step 4: Send a pull request +It doesn't matter whether you've got full access to a repo or forked and have your own branch - you can pull request from your fork or from your branch back into the `master` branch. Even if you're the project "owner/maintainer", if there are others on the project, send a pull request and let somebody else accept/review it. + +Why a pull request? One, that gives the project maintainer notification that something has been done, and two, GitHub's pull request interface is a fantastic way to do code reviews. + +The pull request button is next to the fork button, up the top of a project. + +![][5] + +Neat so far, right? It gets better. The pull request will notify the project maintainers, and present them with an *awesome* magical button. + +![][6] + +Oh sure, there is extra information about the pull request - such as all the commits involved and full discussion capabilities, but at the end of the day, the auto-merge button makes pull requests and GitHub flow *trivial* to do. + + [1]: img/githubflow_1.png + [2]: img/githubflow_2.png + [3]: img/githubflow_3.png + [4]: img/githubflow_4.png + [5]: img/githubflow_5.png + [6]: img/githubflow_6.png [7]: img/githubflow_7.png \ No newline at end of file diff --git a/css/base.css b/css/base.css new file mode 100644 index 0000000..98a69ca --- /dev/null +++ b/css/base.css @@ -0,0 +1,69 @@ +body { + padding:0; + margin:0; + overflow:auto; + font-family: "Segoe UI", "Segoe WP", Helvetica, Arial, sans-serif; +} + +#footerContainer { + margin-top:25px; + padding-bottom:25px; + padding-top:25px; + width:100%; + background:#e6e6e6; +} +.footer ul { + margin:0; + padding:0; +} +.footer li +{ + margin-right:10px; + display:inline; + list-style-type:none; +} +#sponsors { + + margin-top:25px; +} +#sponsors a:hover { background:none;} +#sponsors h3 { margin-bottom:15px; } + + +h1,h2,h3,h4,h5,h6 +{ + font-family: Segoe UI Light, Segoe WP Light, Segoe UI, Helvetica, sans-serif; + font-weight: 100; + margin-bottom:0px; +} +h1 +{ + font-size: 4em; +} +h2 +{ + color: #41b1e1; + font-size: 2.5em; +} + +h4 { text-transform :uppercase; font-weight:700; font-size: 1.5em; margin-bottom: 10px; margin-top:0px;} +a, a:visited +{ + text-decoration: none; + color:#13678b; +} +a:hover +{ + color:white; + background: #13678b +} + +.pivotItem { margin-top:10px; } + +@media screen and (max-width:900px) +{ + h1 { font-size: 2.5em;} + h2 { font-size:1.5em; } + h4 { font-size:1em; } +} + diff --git a/css/jquery.metro.css b/css/jquery.metro.css new file mode 100644 index 0000000..d365109 --- /dev/null +++ b/css/jquery.metro.css @@ -0,0 +1,50 @@ +div.page {max-width:1000px; margin:auto; overflow:hidden;} + +.rightside {float:right;} + +h1 {font-size:5em; font-family: Segoe UI Light, Segoe UI; margin:0; margin-bottom:-30px;} +h2 {font-size:30pt; margin:0;} +h3 {font-size:20pt; margin:0;} +h4 {font-size:20pt; margin:0;} + +.theme-bg {background:#000;} +.metro-pivot .headers { white-space: nowrap; height: 60px; display: block; clear: both; } +.metro-pivot .pivot-item h3, .metro-pivot .headers .header { font-size: 250%; font-weight: light;font-family: "Segoe UI Light", SUIL, Arial, sans-serif; display: inline-block; vertical-align: top; padding: 0; cursor: pointer; margin-right:15px; } +.metro-pivot .headers .header.current { } +.metro-pivot .items { position: relative; } +.metro-pivot .items .pivotItem { display: block; white-space: normal; text-align: justify; width: 100%; } +.metro-pivot .items .pivotItem .pivot-item { padding: 10px; } + +ul.metro-list { padding: 0; } +ul.metro-list li { display: block; margin: 10px 0; height: 20px; padding: 5px; overflow: hidden; border-left: solid 30px; list-style: none; } + +a.metro-button { display: inline-block; padding: 2px 10px; border: solid 2px white; color: white; text-decoration: none; margin: 10px 0; } +.start-menu-item { float: left; height: 120px; width: 120px; position: relative; color: White; margin: 5px; overflow: hidden; } +.start-menu-item label { position: absolute; margin: 5px; bottom: 0; left: 0; white-space: nowrap; } +.side-menu-item { height: 20px; padding: 5px 15px; border-left: solid 30px; margin: 10px 0; } + + +ul.metro-conversation { padding: 0 30px; } +ul.metro-conversation li { margin: 10px 0; display: block; padding: 10px; line-height: 110%; margin-right: 20%; position: relative; } +ul.metro-conversation li.alt { margin-right: 0; margin-left: 20%; } +ul.metro-conversation li .list-diam { position: absolute; top: -15px; left: 20px; font-size: 40pt; font-family: Arial; } +ul.metro-conversation li.alt .list-diam { left: auto; right: 20px; top: auto; bottom: -10px; } + +div.html { background: white; padding: 10px; margin-left: 30px; border: dotted 2px #aaa; } + +ul.metro-conversation li .question { color: #444; border-bottom: dashed 1px #444; margin-bottom: 5px; padding-bottom: 10px; } + +.wp-popup {display:none; margin:20px;} +.wp-popup-container {position:absolute; top:0; left:0; width:100%; display:none;} + +a.wp-colored-button {display:inline-block; padding:0 15px; border:solid 4px; color:inherit !important;} + + +.top-banner {text-align:right; border-bottom:dotted 1px #777; margin-bottom:10px; font-size:10pt;} +.top-banner .theme-box, +.top-banner .accent-box {display:inline-block; width:15px; height:15px; margin:3px; border:solid 1px #777; cursor:pointer; vertical-align:middle; } +.top-banner .accent-box {background:#F09720;} + +pre.jush {font-size:9pt; background:#F0F0FF; border:dashed 1px #aaa; padding:10px;} +pre.jush a {text-decoration:none; } +pre.jush a:hover {text-decoration:underline; } \ No newline at end of file diff --git a/css/landing.css b/css/landing.css new file mode 100644 index 0000000..93ae072 --- /dev/null +++ b/css/landing.css @@ -0,0 +1,150 @@ +@import url("base.css"); + +div.page {max-width:1000px; margin:auto; overflow:hidden;} + +.rightside {float:right;} + +.theme-bg {background:#000;} +.metro-pivot .headers { white-space: nowrap; height: 60px; display: block; clear: both; } +.metro-pivot .pivot-item h3, .metro-pivot .headers .header { font-size: 250%; font-weight: light;font-family: "Segoe UI Light", SUIL, Arial, sans-serif; display: inline-block; vertical-align: top; padding: 0; cursor: pointer; margin-right:44px; } +.metro-pivot .headers .header.current { } +.metro-pivot .items { position: relative; } +.metro-pivot .items .pivotItem { display: block; white-space: normal; text-align: justify; width: 100%; } + +ul.metro-list { padding: 0; } +ul.metro-list li { display: block; margin: 10px 0; height: 20px; padding: 5px; overflow: hidden; border-left: solid 30px; list-style: none; } + +a.metro-button { display: inline-block; padding: 2px 10px; border: solid 2px white; color: white; text-decoration: none; margin: 10px 0; } +.start-menu-item { float: left; height: 120px; width: 120px; position: relative; color: White; margin: 5px; overflow: hidden; } +.start-menu-item label { position: absolute; margin: 5px; bottom: 0; left: 0; white-space: nowrap; } +.side-menu-item { height: 20px; padding: 5px 15px; border-left: solid 30px; margin: 10px 0; } + + +ul.metro-conversation { padding: 0 30px; } +ul.metro-conversation li { margin: 10px 0; display: block; padding: 10px; line-height: 110%; margin-right: 20%; position: relative; } +ul.metro-conversation li.alt { margin-right: 0; margin-left: 20%; } +ul.metro-conversation li .list-diam { position: absolute; top: -15px; left: 20px; font-size: 40pt; font-family: Arial; } +ul.metro-conversation li.alt .list-diam { left: auto; right: 20px; top: auto; bottom: -10px; } + +div.html { background: white; padding: 10px; margin-left: 30px; border: dotted 2px #aaa; } + +ul.metro-conversation li .question { color: #444; border-bottom: dashed 1px #444; margin-bottom: 5px; padding-bottom: 10px; } + +.wp-popup {display:none; margin:20px;} +.wp-popup-container {position:absolute; top:0; left:0; width:100%; display:none;} + +a.wp-colored-button {display:inline-block; padding:0 15px; border:solid 4px; color:inherit !important;} + + +.top-banner {text-align:right; border-bottom:dotted 1px #777; margin-bottom:10px; font-size:10pt;} +.top-banner .theme-box, +.top-banner .accent-box {display:inline-block; width:15px; height:15px; margin:3px; border:solid 1px #777; cursor:pointer; vertical-align:middle; } +.top-banner .accent-box {background:#F09720;} + +pre.jush {font-size:9pt; background:#F0F0FF; border:dashed 1px #aaa; padding:10px;} +pre.jush a {text-decoration:none; } +pre.jush a:hover {text-decoration:underline; } + +#container +{ + max-width:800px; + min-height: 500px; + margin-left:auto; + margin-right:auto; + margin-top:150px; +} +.footer { + max-width:800px; + min-height: 500px; + margin-left:auto; + margin-right:auto; +} +.metro-pivot { + min-height:350px; + margin-left:2px; +} +h2 { margin-left:20px; } +.Tile { + float: left; + margin-right: 10px; + margin-bottom: 10px; + text-align:center; + padding: 5px; + opacity:0.75; +} + +.Tile img { border :0;} +.Tile:hover { opacity:1;} +.one { + width: 130px; + height: 130px; +} +.two-h { + width: 280px; + height: 130px; +} +.two-v { + width: 130px; + height: 280px; +} +.four { + width: 280px; + height: 280px; +} +.blue { + background: #00a9da; + background-image: linear-gradient(left top, #00ABDA 0%, #00BEF2 80%); + background-image: -o-linear-gradient(left top, #00ABDA 0%, #00BEF2 80%); + background-image: -moz-linear-gradient(left top, #00ABDA 0%, #00BEF2 80%); + background-image: -webkit-linear-gradient(left top, #00ABDA 0%, #00BEF2 80%); + background-image: -ms-linear-gradient(left top, #00ABDA 0%, #00BEF2 80%); + background-image: -webkit-gradient( + linear, + left top, + right bottom, + color-stop(0, #00ABDA), + color-stop(0.8, #00BEF2) + ); +} + + +.lime { + background: #8CBE29; + background-image: linear-gradient(left top, #8CBE29 0%, #95C92C 80%); + background-image: -o-linear-gradient(left top, #8CBE29 0%, #95C92C 80%); + background-image: -moz-linear-gradient(left top, #8CBE29 0%, #95C92C 80%); + background-image: -webkit-linear-gradient(left top, #8CBE29 0%, #95C92C 80%); + background-image: -ms-linear-gradient(left top, #8CBE29 0%, #95C92C 80%); + + background-image: -webkit-gradient( + linear, + left top, + right bottom, + color-stop(0, #8CBE29), + color-stop(0.8, #95C92C) + ); +} + +.purple { + background: #7c02d1; +} + + +.Tile h2 { color:white; font-size: 1.75em; margin-top:-10px; margin-left:0px;} +#sponsors { + + margin-top:25px; +} +#sponsors h3 { margin-bottom:15px; } + +@media screen and (max-width:800px) +{ + h1 {font-size: 2em;} + h2 {font-size: 1.5em;} + h3 {font-size: 1.25em;} + .metro-pivot .pivot-item h3, .metro-pivot .headers .header { font-size: 125%; display:block; } + .metro-pivot .pivot-item h3, .metro-pivot .headers {clear:both; height: auto; } + ul,li { margin-left:0px; padding:0px;} + #container { margin:5px; } +} + diff --git a/css/nuget-button.min.css b/css/nuget-button.min.css new file mode 100644 index 0000000..b1267a9 --- /dev/null +++ b/css/nuget-button.min.css @@ -0,0 +1 @@ +.nuget-button-commandWrapper{background:#d6d6d6;border:0 solid #fff;padding:.25em;margin:2.25em 0;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,startColorstr='#d6d6d6',endColorstr='#505050');background:-webkit-gradient(linear,0 0,0 100%,from(#d6d6d6),to(#505050));background:-moz-linear-gradient(top,#d6d6d6,#505050);border-radius:.5em;-webkit-border-radius:.5em;-moz-border-radius:.5em}.nuget-button-commandPrompt{background:#000;border:1px solid #c4c4c4;text-shadow:1px 1px 1px rgba(0,0,0,1);filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,startColorstr='#5e5e5e',endColorstr='#000');background:-webkit-gradient(linear,0 0,0 100%,from(#5e5e5e),to(#000));background:-moz-linear-gradient(top,#5e5e5e,#000);box-shadow:inset 6px 6px 14px rgba(0,0,0,.6),1px 1px 4px rgba(102,102,102,1);-webkit-box-shadow:inset 6px 6px 14px rgba(0,0,0,.6),1px 1px 4px rgba(102,102,102,1);-moz-box-shadow:inset 6px 6px 14px rgba(0,0,0,.6),1px 1px 4px rgba(102,102,102,1);border-radius:.38em;-webkit-border-radius:.38em;-moz-border-radius:.38em}.nuget-button-command{color:#72eb18;color:#e2e2e2;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:1.5em;line-height:1.5em;margin:.8em .5em}.nuget-button-commandWrapper a:link,.nuget-button-commandWrapper a:visited{outline:none;text-decoration:none!important;color:#e2e2e2!important;background-color:transparent!important;border:0!important}.nuget-button-commandWrapper a:hover{outline:none;text-decoration:none!important;color:#72eb18!important;background-color:transparent!important;border:0!important} \ No newline at end of file diff --git a/css/style.css b/css/style20120128.css similarity index 59% rename from css/style.css rename to css/style20120128.css index ce09279..ed82e21 100644 --- a/css/style.css +++ b/css/style20120128.css @@ -1,106 +1,120 @@ -body -{ - font-family: Segoe UI, sans-serif; - margin-left:auto; - margin-right: auto; - width:1100px; -} -h1,h2,h3,h4,h5,h6 -{ - font-family: Segoe UI Light, Segoe WP Light, Segoe UI, Helvetica, sans-serif; - font-weight: lighter; - margin-bottom:0px; -} -h1 -{ - font-size: 4em; -} -h2 -{ - font-size: 2.5em; -} -a, a:visited -{ - text-decoration: none; - color:#13678b; -} -a:hover -{ - color:white; - background: #13678b -} -ul -{ - margin:0; - padding:0; -} -li -{ - margin:0; - padding:0; - list-style-type:none; -} -.entry ul, .idea ul -{ - margin-left:10px; -} -.entry li, .idea li -{ - margin-left:10px; - list-style-type:circle; -} -#hometext a { font-size: 2em; margin-left: 5px; margin-right:10px; display: none; color: #41B1E1; font-weight: normal; } -#home:hover -{ - background:none; -} -#side -{ - float:right; - color: #41b1e1; - margin-left:50px; -} -#side .section -{ - margin-top:50px; - margin-bottom: 50px; - padding:0; -} -#side .section ul -{ - font-size:2em; -} -#content -{ - width:auto; -} -img -{ - width: auto !important; - height: auto !important; - max-width: 100%; - border: none; -} -.postdate -{ - font-size: 0.8em; - font-weight: bold; -} -.idea h1, .entry h1 -{ - margin-bottom: 5px; -} - -/* min-device-width: 800px instead? */ -@media screen and (max-width:900px) -{ - body { width:auto; margin:10px; } - #content { width : 100%; } - #side { float:none; width:100%; margin-left:0px; } - #side .section { margin-top:0; margin-right: 30px; } - #side .section ul { font-size:1.2em; padding:0px; margin:5px; } - #side li { display: inline; margin-left:3px; margin-right: 3px; font-weight: normal; } - #home { display: none; } - #hometext a { display: inline; } - h1 { margin-top: -0px;} -} \ No newline at end of file +@import url("base.css"); + +#container, .footer +{ + font-family: Segoe UI, sans-serif; + margin-left:auto; + margin-right: auto; + width:1100px; +} +ul +{ + margin:0; + padding:0; +} +li +{ + margin:0; + padding:0; + list-style-type:none; +} +.entry ul, .idea ul +{ + margin-left:10px; +} +.entry li, .idea li , .latest li +{ + margin-left:10px; + list-style-type:circle; +} +#hometext a { font-size: 2em; margin-left: 5px; margin-right:10px; display: none; color: #41B1E1; font-weight: normal; } +#home:hover +{ + background:none; +} +#side +{ + float:right; + color: #41b1e1; + margin-left:50px; +} +#side .section +{ + margin-top:50px; + margin-bottom: 50px; + padding:0; +} +#side .section ul +{ + font-size:2em; +} +#content +{ + width:auto; +} +img +{ + width: auto !important; + height: auto !important; + max-width: 100%; + border: none; +} +.postdate +{ + font-size: 0.8em; + font-weight: bold; +} + +.olderpostdate +{ + font-size: 0.8em; + color : #aaaaaa; + width: 150px; + margin-right: 15px; +} +.idea h1, .entry h1 +{ + margin-bottom: 5px; +} + +.latest +{ + border-bottom: 1px solid #13678B; + padding: 10px; + padding-left: 20px; + padding-bottom: 20px; + margin-right: 330px; /*hack*/ + margin-top: 10px; +} + +.latest h3 { margin-top: 5px; font-size: 1.8em; color: #13678B;} + +.latest .description +{ + font-family: Segoe UI Light, Segoe WP Light, Segoe UI, Helvetica, sans-serif; + font-weight: bold; + margin-top: 10px; + margin-bottom: 10px; +} + +.latest .details { margin: 10px;} +.latest .details ul { margin-bottom: 20px;} + +/* min-device-width: 800px instead? */ +@media screen and (max-width:900px) +{ + body { width:auto; } + #content { width : 100%; } + #side { float:none; width:100%; margin-left:0px; } + #side .section { margin-top:0; margin-right: 30px; } + #side .section ul { font-size:1.2em; padding:0px; margin:5px; } + #side li { display: inline; margin-left:3px; margin-right: 3px; font-weight: normal; } + #home { display: none; } + #hometext a { display: inline; } + h1 { margin-top: -0px;} + .latest { margin-right:0px; border-top: 1px solid #13678B; margin-top: -20px; margin-bottom: 20px; } + #container, .footer { width:auto; padding:10px; } +} + +#suggest { color: orange; } +#suggest:hover { color:white; background: orange } diff --git a/img/25.png b/img/25.png new file mode 100644 index 0000000..ab9250c Binary files /dev/null and b/img/25.png differ diff --git a/img/WinJS-Mockup.png b/img/WinJS-Mockup.png new file mode 100644 index 0000000..5c40731 Binary files /dev/null and b/img/WinJS-Mockup.png differ diff --git a/img/carnac-logo.png b/img/carnac-logo.png new file mode 100644 index 0000000..2cfed1e Binary files /dev/null and b/img/carnac-logo.png differ diff --git a/img/designing_part_1/IMG_8245.jpg b/img/designing_part_1/IMG_8245.jpg new file mode 100644 index 0000000..bfffd0d Binary files /dev/null and b/img/designing_part_1/IMG_8245.jpg differ diff --git a/img/designing_part_1/IMG_8246.jpg b/img/designing_part_1/IMG_8246.jpg new file mode 100644 index 0000000..b97707b Binary files /dev/null and b/img/designing_part_1/IMG_8246.jpg differ diff --git a/img/designing_part_1/IMG_8247.jpg b/img/designing_part_1/IMG_8247.jpg new file mode 100644 index 0000000..5fc02d3 Binary files /dev/null and b/img/designing_part_1/IMG_8247.jpg differ diff --git a/img/designing_part_1/IMG_8250.jpg b/img/designing_part_1/IMG_8250.jpg new file mode 100644 index 0000000..174d584 Binary files /dev/null and b/img/designing_part_1/IMG_8250.jpg differ diff --git a/img/designing_part_1/IMG_8252.jpg b/img/designing_part_1/IMG_8252.jpg new file mode 100644 index 0000000..036a99e Binary files /dev/null and b/img/designing_part_1/IMG_8252.jpg differ diff --git a/img/dodo-example.png b/img/dodo-example.png new file mode 100644 index 0000000..1dcce47 Binary files /dev/null and b/img/dodo-example.png differ diff --git a/img/finance-dashboard-itemselected.png b/img/finance-dashboard-itemselected.png new file mode 100644 index 0000000..f15e12c Binary files /dev/null and b/img/finance-dashboard-itemselected.png differ diff --git a/img/finance-dashboard-no-notifications.png b/img/finance-dashboard-no-notifications.png new file mode 100644 index 0000000..4b9c694 Binary files /dev/null and b/img/finance-dashboard-no-notifications.png differ diff --git a/img/finance-dashboard.png b/img/finance-dashboard.png new file mode 100644 index 0000000..a28b7d4 Binary files /dev/null and b/img/finance-dashboard.png differ diff --git a/img/gtfo-collaborators.png b/img/gtfo-collaborators.png new file mode 100644 index 0000000..24d04e3 Binary files /dev/null and b/img/gtfo-collaborators.png differ diff --git a/img/gtfo-post.png b/img/gtfo-post.png new file mode 100644 index 0000000..c8e8bf2 Binary files /dev/null and b/img/gtfo-post.png differ diff --git a/img/gtfo-settings.png b/img/gtfo-settings.png new file mode 100644 index 0000000..6211443 Binary files /dev/null and b/img/gtfo-settings.png differ diff --git a/img/gtfo.png b/img/gtfo.png new file mode 100644 index 0000000..013e297 Binary files /dev/null and b/img/gtfo.png differ diff --git a/img/i18n-1.png b/img/i18n-1.png new file mode 100644 index 0000000..39adff5 Binary files /dev/null and b/img/i18n-1.png differ diff --git a/img/i18n-2.png b/img/i18n-2.png new file mode 100644 index 0000000..e379d61 Binary files /dev/null and b/img/i18n-2.png differ diff --git a/img/i18n-3.png b/img/i18n-3.png new file mode 100644 index 0000000..0b60cc7 Binary files /dev/null and b/img/i18n-3.png differ diff --git a/img/ideastrike_logo_small.png b/img/ideastrike_logo_small.png new file mode 100644 index 0000000..2b3a9ff Binary files /dev/null and b/img/ideastrike_logo_small.png differ diff --git a/img/jibbr_logo_small.png b/img/jibbr_logo_small.png new file mode 100644 index 0000000..93241fb Binary files /dev/null and b/img/jibbr_logo_small.png differ diff --git a/img/keyjedi.jpg b/img/keyjedi.jpg new file mode 100644 index 0000000..20d76cf Binary files /dev/null and b/img/keyjedi.jpg differ diff --git a/img/logo.png b/img/logo.png index 0c5ffa6..d1b973a 100644 Binary files a/img/logo.png and b/img/logo.png differ diff --git a/img/logo_resharper.png b/img/logo_resharper.png new file mode 100644 index 0000000..52da6a6 Binary files /dev/null and b/img/logo_resharper.png differ diff --git a/img/logo_teamcity.png b/img/logo_teamcity.png new file mode 100644 index 0000000..e942f30 Binary files /dev/null and b/img/logo_teamcity.png differ diff --git a/img/markpad_revisit_1.png b/img/markpad_revisit_1.png new file mode 100644 index 0000000..62027b3 Binary files /dev/null and b/img/markpad_revisit_1.png differ diff --git a/img/markpad_revisit_2.png b/img/markpad_revisit_2.png new file mode 100644 index 0000000..c57dc2e Binary files /dev/null and b/img/markpad_revisit_2.png differ diff --git a/img/metro.css.colours.png b/img/metro.css.colours.png new file mode 100644 index 0000000..96c94d7 Binary files /dev/null and b/img/metro.css.colours.png differ diff --git a/img/pretzel-console-2.png b/img/pretzel-console-2.png new file mode 100644 index 0000000..fdfb687 Binary files /dev/null and b/img/pretzel-console-2.png differ diff --git a/img/pretzel-console.png b/img/pretzel-console.png new file mode 100644 index 0000000..8b18437 Binary files /dev/null and b/img/pretzel-console.png differ diff --git a/img/pretzel-demosite.png b/img/pretzel-demosite.png new file mode 100644 index 0000000..2ef26e4 Binary files /dev/null and b/img/pretzel-demosite.png differ diff --git a/img/pretzel-edit.png b/img/pretzel-edit.png new file mode 100644 index 0000000..73c9464 Binary files /dev/null and b/img/pretzel-edit.png differ diff --git a/img/scanner-recap-front.png b/img/scanner-recap-front.png new file mode 100644 index 0000000..18ad197 Binary files /dev/null and b/img/scanner-recap-front.png differ diff --git a/img/scanner-recap-scan.png b/img/scanner-recap-scan.png new file mode 100644 index 0000000..ebeba49 Binary files /dev/null and b/img/scanner-recap-scan.png differ diff --git a/img/technical.jpg b/img/technical.jpg new file mode 100644 index 0000000..1b6f39d Binary files /dev/null and b/img/technical.jpg differ diff --git a/img/tiles/carnac.png b/img/tiles/carnac.png new file mode 100644 index 0000000..71ffa1d Binary files /dev/null and b/img/tiles/carnac.png differ diff --git a/img/tiles/gtfo.png b/img/tiles/gtfo.png new file mode 100644 index 0000000..e30dd5f Binary files /dev/null and b/img/tiles/gtfo.png differ diff --git a/img/tiles/ideastrike.png b/img/tiles/ideastrike.png new file mode 100644 index 0000000..53eb7aa Binary files /dev/null and b/img/tiles/ideastrike.png differ diff --git a/img/tiles/jibbr.png b/img/tiles/jibbr.png new file mode 100644 index 0000000..f18d3ff Binary files /dev/null and b/img/tiles/jibbr.png differ diff --git a/img/tiles/markpad.png b/img/tiles/markpad.png new file mode 100644 index 0000000..3b24075 Binary files /dev/null and b/img/tiles/markpad.png differ diff --git a/img/tiles/metro.png b/img/tiles/metro.png new file mode 100644 index 0000000..f08a0d8 Binary files /dev/null and b/img/tiles/metro.png differ diff --git a/img/tiles/pretzel.png b/img/tiles/pretzel.png new file mode 100644 index 0000000..ab2f90d Binary files /dev/null and b/img/tiles/pretzel.png differ diff --git a/img/tiles/samurai.png b/img/tiles/samurai.png new file mode 100644 index 0000000..7c62cda Binary files /dev/null and b/img/tiles/samurai.png differ diff --git a/img/week2-day1-drawing.jpg b/img/week2-day1-drawing.jpg new file mode 100644 index 0000000..4b0f020 Binary files /dev/null and b/img/week2-day1-drawing.jpg differ diff --git a/img/week2-day2-action.png b/img/week2-day2-action.png new file mode 100644 index 0000000..457b1b1 Binary files /dev/null and b/img/week2-day2-action.png differ diff --git a/img/week2-day2-autocrlf.jpg b/img/week2-day2-autocrlf.jpg new file mode 100644 index 0000000..4357de3 Binary files /dev/null and b/img/week2-day2-autocrlf.jpg differ diff --git a/img/week2-day2-website.png b/img/week2-day2-website.png new file mode 100644 index 0000000..cc7aca3 Binary files /dev/null and b/img/week2-day2-website.png differ diff --git a/img/week2-wrapup-admin.png b/img/week2-wrapup-admin.png new file mode 100644 index 0000000..1f621d4 Binary files /dev/null and b/img/week2-wrapup-admin.png differ diff --git a/img/week2-wrapup-dashboard.png b/img/week2-wrapup-dashboard.png new file mode 100644 index 0000000..2ee3ad8 Binary files /dev/null and b/img/week2-wrapup-dashboard.png differ diff --git a/img/week3-day4-layout.png b/img/week3-day4-layout.png new file mode 100644 index 0000000..d054701 Binary files /dev/null and b/img/week3-day4-layout.png differ diff --git a/img/week3-day4-voting.png b/img/week3-day4-voting.png new file mode 100644 index 0000000..19a073b Binary files /dev/null and b/img/week3-day4-voting.png differ diff --git a/img/week3-ideastrike-mockup.png b/img/week3-ideastrike-mockup.png new file mode 100644 index 0000000..9e711ee Binary files /dev/null and b/img/week3-ideastrike-mockup.png differ diff --git a/img/week3-recap-idea.png b/img/week3-recap-idea.png new file mode 100644 index 0000000..c6109a5 Binary files /dev/null and b/img/week3-recap-idea.png differ diff --git a/img/week3-recap-logo.png b/img/week3-recap-logo.png new file mode 100644 index 0000000..0b10217 Binary files /dev/null and b/img/week3-recap-logo.png differ diff --git a/img/week3-recap-main.png b/img/week3-recap-main.png new file mode 100644 index 0000000..d42b410 Binary files /dev/null and b/img/week3-recap-main.png differ diff --git a/img/week4-samurai-end.png b/img/week4-samurai-end.png new file mode 100644 index 0000000..49f40fa Binary files /dev/null and b/img/week4-samurai-end.png differ diff --git a/img/week4-samurai-screen.png b/img/week4-samurai-screen.png new file mode 100644 index 0000000..d6b6f54 Binary files /dev/null and b/img/week4-samurai-screen.png differ diff --git a/img/week4-samurai-tiles.png b/img/week4-samurai-tiles.png new file mode 100644 index 0000000..4721e56 Binary files /dev/null and b/img/week4-samurai-tiles.png differ diff --git a/img/why-dot-net.png b/img/why-dot-net.png new file mode 100644 index 0000000..d5039a4 Binary files /dev/null and b/img/why-dot-net.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..0ab261f --- /dev/null +++ b/index.html @@ -0,0 +1,4 @@ +--- +layout: splash +title : code52 +--- diff --git a/js/contrib.js b/js/contrib.js new file mode 100644 index 0000000..c103ae4 --- /dev/null +++ b/js/contrib.js @@ -0,0 +1,49 @@ + function getContribs(projectName, projectUrl) { + $.ajax({ + url: "http://github.com/api/v2/json/repos/show/Code52/" + projectName + "/contributors", + dataType: 'jsonp', + success: function(data) + { + data.contributors = data.contributors.sort(function (a, b) + { + if (a.contributions > b.contributions) return -1; + if (a.contributions < b.contributions) return 1; + return 0; + }); + $("#contributors").append("

"+ projectName +"

"); + $("#contributorTemplate").tmpl(data).appendTo("#contributors"); + } + }); + } + + + $(function() + { + $.ajax({ + url: "http://github.com/api/v2/json/repos/show/code52", + dataType: 'jsonp', + success: function(data) + { + var count = data.repositories.length; + data.repositories = data.repositories.sort(function (a, b) + { + var adate = new Date(a.created_at).getTime(); + var bdate = new Date(b.created_at).getTime(); + if (adate < bdate) return -1; + if (adate > bdate) return 1; + return 0; + }); + + for(var i = 0; i < count; i++) + { + var repo = data.repositories[i]; + + if (repo.name != "code52.github.com" + && repo.name != "NuGetGallery" + && repo.name != "markdowndeep" + && repo.name != "gh-pages-template") + getContribs(repo.name, repo.url); + } + } + }); + }); diff --git a/js/jquery.address-1.4.min.js b/js/jquery.address-1.4.min.js new file mode 100644 index 0000000..1fbeecc --- /dev/null +++ b/js/jquery.address-1.4.min.js @@ -0,0 +1,29 @@ +/* + * jQuery Address Plugin v1.4 + * http://www.asual.com/jquery/address/ + * + * Copyright (c) 2009-2010 Rostislav Hristov + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Date: 2011-05-04 14:22:12 +0300 (Wed, 04 May 2011) + */ +(function(c){c.address=function(){var v=function(a){c(c.address).trigger(c.extend(c.Event(a),function(){for(var b={},e=c.address.parameterNames(),f=0,p=e.length;f"+n.title.replace("'","\\'")+" + + + +
diff --git a/projects.md b/projects.md deleted file mode 100644 index 02e3e3a..0000000 --- a/projects.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: post -title: Previous Projects ---- - -##[MarkPad](http://code52.org/DownmarkerWPF/) -**Contributors** - -* Cameron MacFarland [![][1]](http://twitter.com/distantcam) [![][2]](http://github.com/distantcam) -* Ian Randall [![][1]](http://twitter.com/KiwiPom) [![][2]](http://github.com/IanRandall) -* Paul Stovell [![][1]](http://twitter.com/paulstovell) [![][2]](http://github.com/paulstovell) -* Jake Ginnivan [![][1]](http://twitter.com/JakeGinnivan) [![][2]](http://github.com/JakeGinnivan) -* Mike Minutillo [![][1]](http://twitter.com/wolfbyte) [![][2]](http://github.com/wolfbyte) -* Andrew Tobin [![][1]](http://twitter.com/tobin) [![][2]](http://github.com/andrewtobin) -* Brendan Forster [![][1]](http://twitter.com/shiftkey) [![][2]](http://github.com/shiftkey) -* Paul Jenkins [![][1]](http://twitter.com/aeoth) [![][2]](http://github.com/aeoth) - - - - [1]: /img/twitter-2.png - [2]: /img/github.png \ No newline at end of file diff --git a/projectsatom.xml b/projectsatom.xml index ce2d2f2..1bb8085 100644 --- a/projectsatom.xml +++ b/projectsatom.xml @@ -3,7 +3,7 @@ layout: nil --- - Code52 + Code52 Progress Blog {{ site.time | date_to_xmlschema }} @@ -16,7 +16,7 @@ layout: nil {% for post in site.posts %} {% if post.feed == "project" %} - http://www.Code52.org/{{ post.id }} + http://www.Code52.org/{{ post.url }} {{ post.title | xml_escape }} {{ post.date | date_to_xmlschema }} diff --git a/projectsrss.xml b/projectsrss.xml index 4aaabde..cd99c14 100644 --- a/projectsrss.xml +++ b/projectsrss.xml @@ -4,7 +4,7 @@ layout: nil - Code52 + Code52 Progress Blog http://www.Code52.org/ @@ -12,14 +12,14 @@ layout: nil {{ site.time | date: "%a, %d %b %Y %H:%M:%S %z" }} {{ site.time | date: "%a, %d %b %Y %H:%M:%S %z" }} - {% for post in site.posts limit:10 %} + {% for post in site.posts %} {% if post.feed == "project" %} {{ post.title | xml_escape }} http://www.Code52.org{{ post.url }} {{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }} code52@code52.org (Code52 Team) - http://www.Code52.org{{ post.id }} + http://www.Code52.org{{ post.url }} {{ post.content | xml_escape }} {% endif%} diff --git a/readme.md b/readme.md index 284315d..975ae3a 100644 --- a/readme.md +++ b/readme.md @@ -6,12 +6,3 @@ Links - http://code52.uservoice.com/ -- suggestions and voting -Random slogans: - -- "new coding every week" -- "coding fun and games" -- "crowdsourcing software projects" -- add your own - - - diff --git a/rss.xml b/rss.xml index fde51f1..c112ce9 100644 --- a/rss.xml +++ b/rss.xml @@ -4,7 +4,7 @@ layout: nil - Code52 + Code52 Feed http://www.Code52.org/ @@ -19,7 +19,7 @@ layout: nil http://www.Code52.org{{ post.url }} {{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }} code52@code52.org (Code52 Team) - http://www.Code52.org{{ post.id }} + http://www.Code52.org{{ post.url }} {{ post.content | xml_escape }} {% endif %}