Recently, I took a hard look at some of the stuff I've been trying to do in the community, and I realized that while some things were effective, others weren't, and some of the latter category weren't working because they were too much work to maintain.
In the latter category was the previous incarnation of the Mid-Atlantic Code Camp website. Based on the ASP.NET Club Site Starter Kit, I put up the original madcodecamp.com to serve as a clearinghouse for all things code camp...pictures, schedules, downloads, etc. At the time that I put the site up, we were working on the very first Reston code camp, and the very idea of code camps was still pretty new in Mid-Atlantic.
One of the things that ended up being somewhat of an afterthought in terms of the development of the site was the schedule of upcoming code camps. Because initially we didn't have many happening, I simply hard-coded the list of upcoming camps, links, etc. into the master page for the site. Of course, this meant that when the code camp was over, I'd have to remove the link manually as well, and add any new ones as they were being planned.
If you're as smart as I think you are, you already know where this is leading...thanks to this poor design, I had a hard time keeping up with the site, so I decided to do an overhaul with an eye to simplification, and trimming the site to a core mission of providing links to upcoming code camps in Mid-Atlantic, and providing the community with the means to add their own camps.
So over the course of about a day and a half this week, I reimplemented the site, starting (almost) from scratch. The functionality supported includes:
- home page listing all upcoming code camps and a list of past code camps (the latter feature being a request from one of the local community leaders)
- Add a Camp page for code camp leaders to enter the information for their camps...to prevent spam, camps require approval before they're displayed
- Add camp page wraps an underlying web service, allowing community members to integrate listing new code camps directly into their sites as well (if you're a code camp organizer, feel free to ping me via the Email link above, and I'll send you the URL for the web service)
- RSS feed of new camps, implemented using the ASP.NET RSS Toolkit (note that the version that is linked from the ASP.NET web site is not the latest available). Version 2 is on Codeplex.
- Widget page, containing a mini version of the code camp listing, optimized for use as a gadget/widget on other pages/sites. To add the widget to your site, simply add the following HTML where you want the widget to appear (note that the bgcolor parameter is optional, and allows you to match the widget color to the background of your site):
- <iframe src="http://www.madcodecamp.com/codecamps.aspx?bgcolor=%23333333" width="175" height="200px" frameborder="0"></iframe>
- UPDATE: Since my original post I've updated the site to include info on all kinds of events, so here's a link to a new gadget/widget that lists all events, not just code camps:
- <iframe src=http://www.madcodecamp.com/eventsmini.aspx?bgcolor=%23333333 width="175" height="200px" frameborder="0"></iframe>
- The widget implements paging, and also provides a link to the Add a Camp page.
- Admin page (secured of course), for approving, editing, and/or deleting code camp records.
- With the exception of the widget page, all pages are AJAX enabled, using the UpdatePanel control to provide partial page rendering.
- Displays the Microsoft Community Bar, with relevant developer links, at the top of each page, implemented using a custom page base class.
Some shortcuts I took to speed development:
- Since I had previously used the Club Site Starter Kit for the site, I repurposed some of the database tables to support the new site. This minimized the amount of work required for DB stuff.
- Given that I'm at best a poor designer, I opted to snag one of the themes built into the Personal Web Site Starter Kit, which comes with Visual Web Developer, since the Black theme is visually similar (light text on dark background) to my blog
- Used the aforementioned RSS toolkit to avoid having to reinvent the wheel with the RSS feed.
The end result of the coding frenzy is a site which, while not as feature-laden, will do a much better job with its core mission of publishing a schedule of upcoming and past code camps and making them more discoverable to the community. the new site makes it possible for the folks organizing code camps to enter their own information, making it easier for me to keep up with all the code camps, and each camp automatically moves from the upcoming to the archive list when the event is over.
This experience reminded me of several things:
- I like to code and solve problems
- You can get a lot done in a short period of time with today's developer tools. Typed Datasets, AJAX controls, etc, all speed development and let you focus on the stuff you care about, instead of plumbing
- Coding at 4am may be exhilarating, and interruption free (thanks to everyone else being in bed), but it's also error-prone, and once you pass 30, you definitely pay for it the following day
Special thanks to all of the great code camp leaders in Mid-Atlantic for reviewing the site while I worked on it, and offering suggestions for improvement, especially:
Do you have a favorite app redesign/refactoring story you'd like to share? Add it to the comments.