Tag-Archive for » comment «

Wednesday, December 02nd, 2009 | Author: renaebair

I think it’s fairly common for programmers to build applications to meet a personal need. When I found out I was pregnant with our third child this past May I didn’t intend to spend my pregnancy writing a Sinatra application for naming babies, but I’ve had so much fun and have really grown as a programmer by doing so.

At the beginning of the pregnancy I was using a google spreadsheet to create a list of name ideas for the baby that friends and family could add suggestions to. You can view it here. It worked ok for a couple of weeks until I realized it would be nice if people could add comments and share their opinions about each name. I also thought it would be better if people could rate each name so I could see the general popularity of the individual names. I could not find an application that already offered this service in a simple, straightforward way.

For anyone that’s ever had the experience of expecting a baby, they’ve gone through the process of trying to come up with names, receiving lots input from friends and family, and probably felt overwhelmed at trying to keep track of all the great (and not so great) ideas. Thus, I figured this must be a solved problem, yet, I couldn’t find a nice, simple solution for it. Alas, NamingTogether.com was born!

From the start I wanted this to be incredibly simple; the expectant mother or couple goes through a very minimal signup process; with just a few graces of your fingers across the keyboard you’re ready to go with your own name list and a unique link to provide to anyone that you want input from. I wanted the user’s friends and family to be able to add name ideas, leave comments, and rate names without having to login to the site or go through any nonsense.

Simple interface for adding and rating names

Simple interface for adding and rating names

I decided to use Sinatra for this application. Previously, I had only coded a few small projects in Ruby and had not learned Rails or Sinatra yet. I figured that since the application was going to be rather small and succinct, Sinatra would be a good fit. As Adam and I delved deeper into the development process we discovered that using Rails would have made our lives a lot easier, but we stuck with Sinatra nonetheless. We’ll be working on a really thorough post about the development process very soon, and we’ll cover the challenges we faced using Sinatra on this project.

I spent the first several weeks learning Sinatra and DataMapper and writing some very basic functionality, and when my demands for the application far outgrew my knowledge-base I turned to Adam for assistance. He really helped to pull the application together. He hadn’t played with Sinatra before either, so he got to learn something new by working on Naming Together.

Being married to a programmer certainly has its benefits; after our two kids are put to bed in the evening, we get to sit down together on the couch with our laptops and hack away at things together. Adam has always been a great teacher, so the craftsman and apprentice relationship works out really well for us. I have great memories of late night programming sessions together during the last several months.

This experience has enlightened me on the process of working with other people on a project, creating tickets, closing tickets, and holding myself accountable to get things done when I commit to them. I also have a more thorough understanding of git, and even got to use Heroku for this project.  I would not have gained this level of understanding in Ruby and Sinatra without working on an application that truly benefited me in some way.

As a stay at home mom to two young children, at the end of the day, I often have very little energy and motivation to hack away at random projects or to push myself to learn something new. And since I don’t program professionally, I don’t get that working experience that really helps new programmers to become great programmers. Working on this application was what pushed me to keep learning new things and to become a better programmer. I was so excited for the kids to fall asleep each night just so I could implement some new functionality, or look at Adam’s commits from the night before to make sure I understood what he had implemented.

Choosing a name for the application was also a pretty fun process. I had a textmate doc filled with random words, phrases or ideas that came to me throughout the process of writing this application. One day as I was staring blankly at the document, feeling rather hopeless about coming up with the perfect name, I asked myself for the hundredth time, “What is this application really about, at its core?” All of a sudden, the name just dawned on me as I answered, “It’s about naming our babies, together.”

After months of evening coding sessions, the application is now live and ready to be hammered on. I’ve got some open issues that we’re going to be working on soon, like pagination, options for sorting names, option for parents to veto names altogether, etc. I would love feedback about the application, as this is going to be something that I’m going to maintain and support, even after a name is decided for our own baby bundle, due this December.