Every two weeks we profile new, cool and fun Node.js products to keep you “In the Loop”. This time around we profile Geddy, a simple, structured web framework for Node.js. When we heard about this framework, especially its name, we were in a rush to chat with Matthew Eernise about it.
We almost feel like we should start this interview by asking, “How’s it going, Geddy?”, but we are not sure if anyone would get the joke. So instead we’ll just ask you to tell us about Geddy.
Now that you’ve told us about what Geddy does … how did it earn the name Geddy?
Geddy Lee from Rush is known for hitting those high notes. What are some of the high notes that your Geddy can achieve?
Matthew Eernisse: Matthew Eernisse: Geddy is amazing at taking you from nothing, to a practically useful app, in an incredibly short amount of time. User-authentication, including third-party auth with services like Twitter and Facebook is baked right in. But the best thing about Geddy is honestly the community of people around it. The committers and contributors are an incredibly nice group of people, and make everybody feel welcome on the mailing list and in IRC. We’re all just working on this stuff because it’s fun, and that attitude shines through.
Why did you build this for Node.js?
Matthew Eernisse: When I started working on Geddy it was very early with Node, and all there was was Express for building Web apps. (This was in the pre-Connect days.) There was no easy, structured way to build RESTful Web APIs. I had used Sinatra for apps in the Ruby world, so I was familiar with the thinking behind Express, and I knew it wasn’t great for anything moderately complicated.
I started in working on a RESTful router, and once I had that, I needed content-negotiation. And of course, once you go from spitting out balls of JSON to rendering pages as well, you need something for rendering templates. Then you want a nice API for data-access and you need an ORM. It just kind of snowballed, and before I knew it, we had a framework.
I think it’s incredibly useful to have a common set of conventions for organizing your Web applications. I don’t believe in “one size fits all,” but as we move beyond the hobbyist and DIY crowd, and more and more people are building practically useful apps with Node, having a common frame of reference is super-helpful. Geddy broadens the playing field, and gives a lot of new people a entry point for building Node apps.
Can you tell us about the process of creation in Node.js? Do you have any tricks, tips, or suggestions for anyone else looking to use Node?
My best advice is to dive in and start building something awesome. Don’t be afraid to ask questions — and never, never be afraid to say “I don’t know.”
You have a nice selection of templating engines supported, with EJS, Jade, Handlebars, Mustache and Swig. You also made sure that Geddy can work with MongoDB, Postgres, Riak, and in-memory. Did you have any challenges getting things aligned here?
Matthew Eernisse: Coordinating changes that touch the templating is always fun. You have to check everything in so many different permutations. One of our newest committers, Ben Ng, has done some fantastic work automating our tests for some of that stuff to make it less painful.
The biggest changes to the ORM have been the new migrations stuff. There’s still a lot of work to do there, especially around making associations easier to set up between models, but we’ve made some good progress there already. I heard rumors of work on a MySQL adapter as well, but we’ll have to wait and see what happens with that.
Have you received any feedback from people who have created something awesome with Geddy?
Matthew Eernisse: Last year’s Node Knockout winner in the Innovation category used Geddy for their “NodeJS Christmas Sweater” project. It was pretty amazing, putting people’s messages up in LEDs on an actual Christmas sweater. They used Geddy for authenticating users and posting the messages.
In a more practical arena, there is a major advertising and digital agency using Geddy for various projects. And they’ve already been kind enough to begin contributing back.
What else is planned for Geddy, or Node.js in general?
Matthew Eernisse: We just got v0.9 out the door, and we’re already working on the next version, which will make it even easier to build a pure backend Web-service, and to customize the way you handle errors.
Finally, a two-part question… what’s your favorite Rush album, and have you checked out the band’s Clockwork Angels tour yet?
Matthew Eernisse: Favorite Rush album? Oh, that’s tough — like trying to pick a favorite child. Maybe “Hemispheres,” because it shows them in their full prog-glory? Hm, or maybe “Moving Pictures,” since it’s such a definitive album for them, and has so many classic tracks? Oh, or maybe “Signals,” since that was the first Rush album I ever bought when it had just come out? See how bad I am at this?
I haven’t seen them on this tour. The last time I saw them was on the Time Machine Tour, where they performed “Moving Pictures” in its entirety. (The first time I saw them was on the Power Windows Tour.) They have so much stamina for a bunch of old guys! I hope I’m lucky enough that someday people will say that about me.
As always, if you have a cool Node.js project or product you think we should profile, reach out to us at [email protected] and we’d be happy to get you In the Loop.