Trying Something New (My Week With Node.js)

Last Wednesday I sat down and wrote the following:

I want to try something new. Even though I was accepted to university way back in November, I've been pretty busy all year keeping up with my schoolwork. Now, as classes wind down, I find myself with a little free time. Tomorrow [Thursday, May 3] I don't need to go in to school at all. I could spend the day studying for the final exam I must take on Friday — that would probably be the safest decision — or I could try something new.

The result is a web-app I call Who Will I Know There? I think it's pretty neat (it's a tool for finding friends to connect with when you're moving somewhere new) and I hope you do, too.

Why?

I often feel as though I'm stuck in a rut with programming. I'll work feverishly on a project for weeks (or months), and then sit back and build nothing for a while.

This has become less frequent as I've grown older, which is nice. I hate not building cool things. Last Wednesday I decided that I'd try to hack on a new project for a week, in a language I'd never used before (node.js) and see what I could come up with.

I hadn't built anything in a while and I realized that I also hadn't learned anything new in a while, either. Learning new things is important to me, so I decided to give it a go: one week, one new language, one (hopefully) completed project.

(actually, I gave myself 12 hours, but I didn't come up with anything worth sharing after that time).

Node.js was a great choice

I'm still terribly inexperienced when it comes to programming. What little I've done has mostly been in Python and C. I've built a couple of web apps with Python (see: Bookshrink, Headliner), but this time I decided to go with something a little different: Node.js.

As far as I can tell it's an awesome language. I'm still getting used to it, and at first I definitely felt as if I were simply writing python with slightly different syntax. It's expressive, it's C-like, and although I don't fully understand the differences in equality testing (=== and !== vs. == and !=???) it's been easy to pick up.

Probably the best thing about Node is that it lets me use javascript for both client side and server side logic. All those little mistakes I used to make when I'd try to write something in Javascript using Python syntax or vice versa are now gone — there's no need to switch between two different languages.

Other than that, the biggest compliment I have is that Node was very easy to learn and use (with the Express MVC framework and Dotcloud for hosting) to get a website up and running very quickly. Prototyping and making changes has been painless, especially because I decided to use Twitter's Bootstrap framework-y thing.

The result — Who Will I Know There?

It's pretty hard for me to hack on something I'm not interested in. So I wanted to build something that would mostly help me out, although it being useful to other people would be a nice bonus.

I recently decided to defer my admission to university for an entire year and spend that time working at a Bay Area-based startup instead. The people at the startup are all far more intelligent than I am, and the experience will teach me just as much (probably more) than university would.

The problem is that the job is in the Bay Area. I'm from Philadelphia, and although I have some family in California, I have no friends in California for me to hang out with. I wondered if I could come up with some sort of application to search my Facebook friends find those who might be able to introduce me to cool people.

I linked to it at the beginning of this post, but Who Will I Know There is that application. I learned a lot while making it, and I think it's pretty slick, but I'd love to hear any feedback you may have! Please do go give it a try and let me know what you think!