One of the most commonplace dilemmas developers encounter when working with new technology is figuring out how to gain hands-on experience. It's a classic case of the chicken and egg paradox; without a sound understanding of the technology, how can one be expected to build a substantive project using it? On the other hand, if building something of substance isn't realistic, then how can progress be made towards becoming a knowledgeable developer? Often, the obvious solution is to simply bite the bullet and learn through trial-and-error. However, in an age where project turnaround time is often measured in days and not months, sometimes you just don't have the luxury to learn at a leisurely pace, not to mention conjure up an interesting idea for a practical project.
So what's the best alternative? Looking at the source code of other more knowledgeable developers, of course! For years the open source community has learned in precisely this fashion, sharing a wealth of code through sites such as SourceForge and GitHub. While the Microsoft community has also for years shared code, albeit in a much more loosely organized fashion, it wasn't until the founding of CodePlex that these efforts began in earnest.
Success in the IT industry seems to be directly intertwined with the size of one's M&E expenses. Pre-conference dinners, post-conference drinks, user group pizza... it's almost like food is nerd flypaper.
To help the programming community manage the logistical intricacies involving dinner plans, Microsoft luminaries Rob Conery, Scott Hanselman, and Scott Guthrie created NerdDinner. A companion project to their book, "Professional ASP.NET MVC 1.0", the NerdDinner project includes many of the typical features you'll find in such a Website, including user registration and login, the ability to both add your own group dinner as well as find dinners occurring in various locations, and RSVP for upcoming dinners. The project also plots dinner locations using the Bing Maps Platform. According to the project page, upcoming features include OpenID support, Virtual Earth API integration, a mobile version of the site, and much more.
You can get acquainted with the NerdDinner project via the live site, which allows you to interact with all of the aforementioned features.. Via both the CodePlex project and book site you can download a copy of the book's 196-page sample chapter which guides you through the creation of the NerdDinner project.
Activate Your Glutes
Of the ten projects discussed in this article, Activate Your Glutes is the most recently created, having been added to CodePlex just over one month ago. The brainchild of James Randall, Activate Your Glutes gives users the ability to track daily exercise progress. Although a fairly new project, Activate Your Glutes already packs a powerful punch, having incorporated technologies such as jQuery, Rhino Mocks, and VisiFire Charts.
I spoke with James via e-mail regarding why he chose to use CodePlex to host his fledgling project. He responded, "Although I'm a recent member of the CodePlex community , I've been making use of it for a couple of years as a non-contributor and some of the projects I use on a regular basis (such as ASP.Net MVC, Unity and AutoMapper) have their homes on CodePlex. I wanted to give something back to this community and so it seemed a natural place for my own MVC based project to have as its home. It's also easy to get started with, and offers a good set of support features over and above source control such as the wiki and issue tracker."
You can create an account and experiment with the Activate Your Glutes project features over at http://www.activateyourglutes.com/.
TailSpin Travel was the title given to the theme project discussed during PDC 2009's Day 1 keynote which highlighted key features of Microsoft Visual Studio 2010 and .NET Framework 4 can be used to create powerful Web applications. In addition to being built atop ASP.NET MVC 2, the Tailspin Travel project incorporates use of Windows Identity Foundation, Windows Server AppFabric, and SQL Server 2008's Data-Tier Application (DAC) feature.
ASP.NET MVC 2 Knowledge Exchange
There are few programmers who haven't used Stack Overflow, let alone heard of the next-generation community-based support site which incorporates aspects of a wiki, blog, forum, and Digg. No doubt, Stack Overflow's unique approach and fantastic interface is a case-study for developers interested in creating cutting-edge community-driven Websites.
Andrew Siemer must have had the same idea in mind when he created Knowledge Exchange. The project companion to his DotNetSlackers article series titled Buildinga StackOverflow Inspired Knowledge Exchange. The project takes a holistic approach to project development, focusing not only on the technology but also upon topics such as setting up a proper development environment, creating wireframes, and using CruiseControl.NET.
Who Can Help Me?
Who Can Help Me? is based upon an interesting idea which helps users find individuals possessing a certain desired technical skill set. Built using a wide variety of technologies including DotNetOpenAuth, Castle Windsor, TweetSharp, and Less CSS for .NET, Who Can Help Me? may provide valuable insight into how to create a truly heterogeneous MVC framework-based application.
Hollywood Hackers is a companion project to the recent MSDN article, "Fuel Your Application's Engine with Microsoft Azure Storage", authored by Kevin Hoffman and Nathan Dudek, which demonstrates how to use various features of Windows Azure in conjunction with ASP.NET MVC 2. The project theme revolves around an ASP.NET MVC 2-driven site which sells the magical technology used in Hollywood movies, and demonstrates asynchronous messaging and processing using Windows Azure Storage.
Oxite is an ASP.NET MVC Framework-based blogging application used to power several high-profile Websites such as VisitMix and PDC. Offering countless features one would expect in an enterprise blog, such as plugin support, skinning capabilities, comment moderation, API support, Oxite provides tremendous insight into the capabilities of ASP.NET.
The project maintainers make special note about oxite no longer being developed to meet a goal of providing a standalone blog engine, but is instead being developed for reason of evolving the aforementioned Websites. They suggest developers in search of an ASP.NET MVC framework-based blog engine solution check out Orchard.
Just as Oxite is really a showcase project for developers interested in building a blogging engine, the Kooboo CMS is really a case-study for learning how to create a powerful content management solution using ASP.NET MVC framework. Offering the ability to create custom content types, manage content templates and menus, organize workflow, and schedule tasks, Kooboo offers developers tremendous insight into the underpinnings of an enterprise CMS.
Prsync.com is a press release aggregation site which accepts releases both from the user community in addition to automatically aggregating them via corporate RSS feeds. CodePlex's companion Prsync.com project includes all of the source code used to power the site. While the project description does not make any reference to special bells-and-whistles, it does appear as if great emphasis has been placed on best practices as defined by the Microsoft patterns & practices N-Tier Web Application Patterns group.
The ASP.NET MVC Membership Starter Kit
An active user community is clearly one of the key ingredients to most of today's successful online project, and so it would be wise for any developer to take sufficient time to understand how to effectively manage user accounts. To help others better understand how to leverage ASP.NET's Membership & Roles providers to manage users and roles, Troy Goode has create a very popular CodePlex project called the MVC Membership Starter Kit. Features include the ability to create, modify, and delete users, change a user's e-mail address, and update user roles. While the MVC Membership Starter Kit doesn't take advantage of any features new to MVC 2, this project should nonetheless serve as a great introduction to developers new to managing user accounts.
Learn more about the project and check out interface screenshots at Troy's website.
Have you made your ASP.NET MVC project's source code available via CodePlex or another site? Tell us about it in the comments!