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.
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.



Wednesday, 2. December 2009
Great post! The bit about you naming the application sounds like my experience in trying to name Hey Go Vote (which is languishing in what-free-time hell). I eventually told my brother, “I just want something to remind me, like… ‘Hey. Go vote.’” And that seemed like a good name.
I’ll be interested to read your more technical thoughts on Sinatra as well. I’ve not messed with it, but the smallness of it interests me.
Wednesday, 2. December 2009
Thanks for sharing your process! The application definitely accomplishes the ‘Easy’ goal post. One question on rating the names: Can you make it so the page doesn’t jump to the top after rating a name? (I’m on Firefox for Mac if that helps track it down)
Wednesday, 2. December 2009
Chris, absolutely! I’ve known about that issue, and have a ticket for it. Just going to require me to familiarize myself with some Ajax
It’s in the works, and thanks for bringing it up!
Wednesday, 2. December 2009
Love the post, love the app
Great work Renae!
As for the page jumping issue, insert a ‘return false;’ at the end of your star rating click handler. That will keep the default behavior of the tag from occurring.
Wednesday, 2. December 2009
Thanks CodeOfficer! It’s fixed, I appreciate the help!
You JS NINJA!
Thursday, 3. December 2009
I just hope that whether you pick a crowd-sourced name or one that you and your husband think up, that it’s a name your child will like and appreciate throughout their lives and not something you like in the moment. Childhood is difficult enough with out a name that lends itself to taunts and teasing.
“Toast?” “Pandora satellite?”
I vote for “Sarah Jane.”
Sunday, 6. December 2009
Nice work - the site looks great. I’m looking forward to seeing where your next iterations take it. Personally (and this just came to me), I think “boynamedsue.com” would have been my choice for the app name :-p.
My only feedback for the site would be to feature some of the public names, lists, and comments on the home page. This would give visitors more of a feel for the app right away, and show off some of the cool stuff that people are doing with it.
Somewhat tangentially, I saw this come across the Sunlight list other day just after reading your post here, and couldn’t help but think of your app:
http://groups.google.com/group/sunlightlabs/browse_thread/thread/7a5c1c1b500a88c6?hl=en
Thursday, 10. December 2009
Oh Renae! THat is SO COOL. I wish I had a baby/pet to name!