Code for the IsItCodeMashYet? Sinatra site
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Is it CodeMash yet?

CodeMash is an annual conference held in January at the Kalahari Resort & Water Park in Sandusky, Ohio. It is one of the few conferences where attendees can see sessions on iPhone development, Python evangelism, dynamic programming in C#, using the Tapestry web framework in Java, and much more. Every year there is quite a bit of excitement around this conference, just try searching for #codemash on Twitter!

Last year to help this excitement, I built a countdown site using the Sinatra web framework for Ruby (see the screencast on how it works). Over the past year I’ve become fond of the idea of using the Rack library to build web applications without a framework. I combined this with the spirit of learning brought about by CodeMash to rewrite the Is it CodeMash yet? site directly on top of Rack, without a web framework helping me.

How does it work?

I won’t go into a detailed explanation of Rack here; if you want that check out the Rack specification and documentation. The file application.rb drives the web app. Its sole responsiblity is to render the view (for more details check out defunkt’s logic-free Mustache). The view uses the CodeMashCalculator object to determine if it’s currently CodeMash and the number of days left until the conference starts.


Obviously, this is a pretty basic application. My only planned addition at the moment is to add the Twitter search results for #codemash to the page background. If you have any ideas you would like to see, feel free to fork away make your changes. I will accept pull requests at my discretion.

To develop on the site you will need to install wycat’s RubyGems Bundler. If you haven’t used Bundler, be sure to check out Nick Quaranto’s guide. Make sure you add any gem dependencies to the Gemfile manifest.

If you have any questions on adding to the app (even if it’s “how do I use GitHub”), feel free to contact me and I’ll do my best to help you out.