On Personal Projects, Staying Sharp March 14, 2013

Originally posted by me to the NYC Engineers list. If you are an engineer and would like an invite, contact me @whistlerbrk.This was written very roughly and barely proofread, so please forgive any typos or grammatical errors.

So I’ve recently recommitted to late night college-style hacking. It’s been an incredibly productive month, and I’ve still managed to be healthy by going to the gym / eating well, save blowing out my back last Saturday on the slopes eek.

It’s a personal project that has kept me engaged, and it is honestly nothing too exciting or novel. A glorified content recommendation engine (uggh, so 2010 / pre-‘curation’ trend, amiright?) but let’s put that aside for now.

Anyway, here are some thoughts on running a personal project in no particular order.

a. lean, iterative blah blah

I made a good choice to get something up and running as quickly as possible. Not exactly a revolutionary thought but maybe something that we don’t do when it comes to a personal project. It is particularly helpful in my case since my app provides a daily email. Seeing that email is constant reminder that this works, but it could be better.

b. It’s a good time to commit to improving your tool chain.

As I mentioned in an earlier thread my tools from text editors to version control were showing signs of age. Late night hacking was incredibly conducive to taking the proper time to read documentation and commit to learning new tools and improving work flow. This for me included learning new bash tricks and scripting some more handy functions, changing and learning a new text editor (still no vim, haha, maybe next time).

c. recommit to your build vs. buy analysis.

Seriously, in this age of dynamic languages, and perhaps particularly as a Ruby programmer, it is so easy to just search for “#{service_name} #{language_name} api” or something to that effect, and try it out. 

In the case of web services clients - there are *way way* too many HTTP libraries out there and your library of choice may have a dependency on one which you are not currently using. This just adds to memory bloat on shared hosting, where your personal project is likely to live.

Also, are you *really* using that library for everything it offers? Or are you just rocking a single call? Can you just use curl and/or Net HTTP? Then do that… hell, crib just that code from the client library which is probably licensed to allow you to do so.

d. recommit to hacking

Along that thought of cribbing is just hacking stuff together. Solving and working around silly things and not letting them being a blocker to getting to your next step. There are very few problems today that can’t be sidestepped.

e. get people using it and write tests.

I never use to write tests for personal projects, but since I have friends beta testing for me, it’d be kind of embarrassing if something broke. I don’t really have a choice but to test, the project quickly became complex enough to merit it.

final thoughts on the technology forefront in the 90s vs. today

Consider that for those of us coding in the mid to late 90’s the likelihood of us creating something novel was much higher than it is today.

Design didn’t matter because if something functionally worked (e.g Matt’s bulletin boards), it was well received regardless of design.

Today, the tools for creation are everywhere, anyone can make a site, and that’s swell. But it’s comprehensive design, experience, branding, content, and partnerships that make web go round now.

Consequently, engineers have been pushed back into their domain and it is harder and harder to create something novel from the ground up, specifically on the web.

That being said, I recognize that there is much in terms of specific engineering problems such as scalability, data science, mass storage vs. data access for us to do. 

The opportunities, in my opinion, lie on the HCI (human computer interface) forefront. Multitouch has been here and real time object manipulation with things like Leap Motion / Kinect / GSpeak / whatever is on the verge.

The tools for creation on that forefront are still being developed and it where engineers have a great advantage in novel creation. All that being said, you will not get away with mid-90’s level web design on these new fronts.

tl;dr: late night hacking on personal projects is a good time for improvement as an engineer. Also, HCI is cool.