Weapon of Choice

November 12, 2011

One thing I love about writing my own little side-projects and one-off programs is that I can constantly try out new ‘weapons’ for developing software. And once I get a feel for something I like, I can practice and train myself to become more effective with it.

When I’ve gone to battle lately, here’s what I’ve been bringing:

##Language: Ruby If you told me two years ago that I would reach for Ruby as my go-to language, I wouldn’t have believed you. I was pretty into Python - the language I was learning when I first fell in love with programming - and Ruby was a little weird (I still find some Ruby syntax inferior to Python).

But I like gem more than pip, I like Rails more than Django, and Sinatra is close enough to Flask that I don’t notice.

I still bust out Python for one-off scripts, but if I’m starting a web project these days, it’s going to be in Ruby.

There are no heavy IDEs required, no 30 lines of boilerplate and no complicated process to get my program running. There is a vibrant community of developers (both locally and across the web) making gems, writing posts, and creating learning materials that make Ruby a joy to work with.

##Datastore: MongoDB Let’s put aside the arguments of scalability, ACID, reliability, etc etc.

I like MongoDB because it gels with how I think. I really like the concept of a document store and Mongo’s ad-hoc queries can do everything I need. But most importantly, no setting up a rigid schema and defining a bunch of tables. There’s a time and place for a rock-solid SQL setup with migrations, foreign keys, and a heavy-duty ORM - but not for most of my projects.

##Platform: Heroku I don’t think this needs much explaining - Heroku is just awesome. Git-based deployment, tons of easy to use addons (MongoHQ, Cron, and SendGrid are my personal favorites), and everything Just Works. I recently spent some time setting up nginx, Unicorn, and Capistrano for a project and it made me appreciate how simple and elegant Heroku is even more. DevOps is just not my thing.

##Frontend: Bootstrap + css3-github-buttons Bootstrap is a piece of drop-in magic that gives me the power to make things not look awful. The grid system is easy to use, the default fonts look good, and the form elements are really slick.

The css3-github-buttons project is a set of commonly-used buttons and icons. All I have to do is add class="button icon search" to a link to transform it into a rounded button with a subtle gradient and magnifying glass glyph icon.

I don’t have the artistic ability to be a designer, but I know what looks good and what doesn’t. My projects without Bootstrap don’t look good, and my projects with Bootstrap do.

My Weapons of Choice share some common traits; I look for something that is fast and straightforward to get started with, flexible, expressive, and, most importantly, readable.

I spent like an hour on wikipedia looking through this List of Weapons to try to find one that matched these traits and I ended up picking the .

Yup, it’s a wooden stick - that’s how I roll.

built with , Jekyll, and GitHub Pages — read the fine print