My Rails Rumble app this year is meant to be the beginning of a bigger project that I’ve been thinking about for some time.

I didn’t choose this idea because I thought it was a particularly good match for the Rumble, but because I really wanted to get it going.

The Idea

Creating chord sheets in a word processor really sucks:

  • It is difficult to correctly position chords, therefore:
  • It is very slow, you can’t place chords in real time.
  • You can’t transpose songs easily.

I am attempting to make the process of creating, editing, and using lead sheets much more natural, intuitive, and easy.

The App

mysongnotebook.com is up and running! Well, crawling might be a better term, but the important thing is that it now exists.

Here’s what you can do right now:

  • Import existing chord sheets from a format like this
  • Reposition chords by dragging them around
  • Edit and add lyrics
  • Construct new (basic) chords from a chord creation palette
  • Add more chords to a song

The application is plain, buggy, and almost unusable unless you know what the bugs are. Most of the issues right now are easy fixes, but are things that I either didn’t have time to address, or that I broke in haste during the last hour of the competition.

I’m eager to fix the existing bugs and want make the app at least minimally usable soon.

I have a lot of new feature ideas that I really like and want to start working, but I don’t want to get into those now.

The Experience

This year was quite a challenge for me in a number of ways.

Technically, it was filled with some new experiences and difficulties. My project last year was basically all stuff I’d done before or know how to do — it was just a matter of putting the pieces together. This year was much different. I was doing things I’ve never done before and the creation process was a big learning experience for me.

It was my first time using CoffeeScript and Underscore.js, both of which I really enjoyed. I also made a last-minute decision to use Backbone.js — released just two days before the Rumble began — which drove me to write my CoffeeScript in a much more organized fashion than I have in the past.

Almost all my time was spent writing CoffeeScript. I used haml-js for templating JS views.

I feel some disappointment with how far I got. I recognize a lot of places where I could have made better decisions in how I used my time. I spent too much time dealing with implementation roadblocks or details where I should have changed my approach or made it work in a different way.

Another challenge was that I was not in a good work environment. I am living in an apartment in Beirut, Lebanon with some family for a few months and I don’t have an office here. Working from the dinner table in a shared space is not good for productivity. The internet in Lebanon is infamously bad — worse than many third-world countries — and I had some connection problems at various times. I also had to go to a restaurant with internet for the start of the competition because we didn’t have electricity.

Overall I am extremely pleased that I used the Rails Rumble as an excuse to get this thing started!