Archive for » December, 2009 «

Monday, December 14th, 2009 | Author: renaebair

Do you use Vim? Emacs? Do you use Gemcutter for gem hosting? Do you listen to Soma FM? If you use free software, think about donating time or money this holiday season to support the individuals that put in long hours creating the awesome software that makes your life easier.

Adam and I have spent some time this month thinking about donating to charity in lieu of getting gifts for each other since our own needs are well met. And that’s when I began to wonder how we could donate directly to software developers that create free and/or open source tools that we use everyday, as a way to show our gratitude.

There are so many free tools that we get to use and enjoy daily. Showing our support for the tireless work these developers do helps to ensure that people will have access to these great tools in the future. There is a large group of people that help to keep us geeks up and running. This is a perfect time of year to say “thank you, I appreciate your work” by sending them some cash or asking them how you can help out with a project. You’ll probably feel uber geeky for doing so and you get to directly affect the happiness of people that help to make you happy; and that’s pure awesome.

In our little Ruby community, there are amazing people that give so much of themselves to create useful tools for us. I can’t help but think of Why The Lucky Stiff, and wonder if he might still be around if our community had been more thoughtful in showing our appreciation for the work that he did. Even with his absence there remain a great many people that make a true effort to support the Ruby and Rails community. I saw Jim Freeze and the volunteers at LSRC 2009 work tirelessly to create a great space for our community to gather. People that create free tools for learning Ruby like Jim Weirich (Ruby Koans), Jeremy MacAnally (Humble Little Ruby Book) and James Edward Gray II (Ruby Quiz) have obviously given of themselves without motive for profit. For many of us, programming is a job, but it’s also a hobby and a lifestyle. We are so used to information just being available to us that it’s easy to forget that it’s only available because someone took a lot of time to create those resources. That’s why it makes sense to think about showing our gratitude to the members of our community that add value to our experience.

Lately, there is a lot of talk about Ruby becoming “enterprise” and what that might mean for the core community. As the Ruby and Rails communities continue to grow it’s important that we support each other in our efforts to keep the landscape nurturing so that we can grow organically and communally. The best way for a community to stay authentic, even through sudden and steep growth periods, is for it to be loyal and supportive of its contributing members.

So if someone inspired you to learn Ruby or Rails and you’re happier for it, let them know how their enthusiasm inspired you. If someone spent a lot of time answering your newb questions, you could send them a thank you note and maybe a bottle of wine.

And of course, being a charitable geek means being thankful for all the cool tools we get to use. If you’re using shareware, consider upgrading to a premium version. If you use iStat Menus then throw them some cash. Teleport accepts donations as well. If you use Github and love it, then pay for it! If you are using open source software (like Gemcutter or Haml) then ask how you can get involved by contributing some developer time to the project. Donations made to support to Vim are actually going straight to a children’s center in Uganda where there is an aids crisis.

Of course we’re all dealing with the chaos of a very busy season. But, if you find some free time on your hands, consider giving something back to the people in our community that have gone out of their way create really useful tools that have made a difference in your life. This holiday season, thank some geeks for the work they’ve done!

Category: Uncategorized  | One 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.