Interview with Rails development addict, Bruno Bornsztein
This week Bruno Bornsztein got in touch with me to mention his new Rails-powered Web application, Snapballot. It's a quick and easy poll / survey creation service that works using Flash and Rails. I quickly realized how many projects I'd seen coming from Bruno lately (12 at the last count) and decided to quiz him on his addiction to Rails and the development of Web apps.
Ruby Inside: You started out in Web application development with FeedMarker.com, an online RSS news reader with tagging and bookmarking features. What was involved in its construction and operation?
Bruno Bornsztein: When I started building Feedmarker, I didn't know much about web development (and I had only just heard of Rails). I had built lots of HTML/CSS sites and played around with WordPress and B2Evolution, so it was natural to use PHP. The first version of Feedmarker was a great learning experience, and I looked at lots of open-source PHP projects to figure out things like authentication and RSS parsing.
During the next year I picked up Rails; my first impression was confusion, followed by absolute love. I had been lost in PHP-land, trying to use components like PEAR to make things easier. Rails provided a structure within which I could develop. It told me where to put templates, how to separate model and controller code, and made things like authentication dead-simple. I decided to re-write Feedmarker in Rails, and completed it in about three weeks.
You've worked on a lot of projects in a short period of time. Where do you typically get your ideas? Are you the type of developer who loves quick release schedules and agile techniques?
I'm a 'scratch-your-own-itch' developer; my ideas are usually things I want to use but don't exist. Feedmarker came about because I wanted a cross between del.icio.us and bloglines, SnapBallot.com (my latest side-project), came about because I wanted a simple, quick embeddable flash poll (and couldn't find any good ones out there).
I don't think in terms of release schedules. I just code as fast as I can and deploy. I'm not fastidious about releasing my own apps, I just get them halfway done and out there, and then fix problems as they come up. I'm more careful when it comes to client work, but even then, I like to be as fast agile as possible, and let my tests be my safety net.
How long did SnapBallot take to develop to its current stage?
SnapBallot took less than a week to build. Most of that was spent on the Flash portion, which I built in OpenLaszlo (it was my first time using it so there was a bit of a learning curve).
Have you used Rails for all of your Web applications since FeedMarker? If so, do you attribute any of your success and speed to Ruby / Rails?
Rails allows me to develop and deploy a lot of ideas because it removes barriers from the path. Getting a simple idea to the point where it's usable in Rails is a matter of hours, so there isn't a lot of cost/risk in trying things out.
Curbly looks like your most serious project to date. Give us a quick overview about it and the technology behind the site.
Curbly is a community for people who love where they live. It's a place where people can share pictures of their homes, get design inspiration, and connect with home-improvement experts.
Curbly was built in Rails by two people (me and Ben Moore) in just under a month, using the new REST conventions and a TDD approach. We use mongrel and Apache2 to serve it, and we backup our database and user-generated content to Amazon's S3.
What advice would you give to developers wanting to build Web applications as you have? What things have you learned along the way that you wish you'd known in advance?
Build something! Just go out and build it. Anything, whether it's a new idea or an old idea or a something that's been done a million times. Just get something to the point where you can launch it on a server and show it to people. That's a huge accomplishment, but one that people often don't reach because they spend too much time planning, researching, and talking and not enough time coding.
Things I wish I'd known: TDD is worth it (especially when you're a solo developer). When you're walking a high-wire, you need a safety net, and that's your tests. If you're tests are good, you can be agile, you can deploy often, and you can make changes to your app with confidence.
What are your impressions of Rails 1.2 and REST? Are you integrating REST techniques into your applications yet?
I love them. Everything I've built since Curbly has been on EdgeRails using REST conventions. It guides your development and forces you to think about your controller logic. I look back at old code now and by comparison it just looks so ... ugly.
What do you see happening in the near future with your Ruby and Rails developments?
Right now, Curbly is still my main focus. But I won't hesitate to build new ideas when they come to me. I'd like to spend a little time in the near future re-writing Feedmarker (it's open-source!), as that code is pretty crusty, and I'd also like to start contributing more of my work to the community via plugins or open-sourcing some of my apps.
Thanks to Bruno for a great interview! I don't know where he gets the time for all of these great projects. Surprisingly he also runs a Rails consultancy, MissingMethod, so if you need a project developing quickly but with agile practices in mind, it might be a great place to try.