Four and a half thousand lines of code. Three tangential open-sourced repos. A spaghetti mess of oversized and underdeveloped ideas. And one sexy, modern, interactive business card. TL;DR: it’s at the bottom.
The consultant’s life has a lot to recommend it, but it comes at the cost of stability. Over the winter of 2012-13, I had my first serious drought: for three months, nobody called. It turned out to be the natural ebb and flow, and when work returned in February it returned with a vengeance. But for the darkest months of the year I had nothing to do, and no established coping mechanisms to fall back on. So I fell into node.
The stated goal was a personal website, including standard fare: an About Me section, a blog, some other things. This was in the days before Ghost though, and anyway I was in it to learn, so I bullheadedly started from scratch. I learned the ins and outs of not only node, but mid-decadal CSS3, and web development outside of the rigid strictures of SproutCore, and every social networking API I could get my hands on. (I also taught my dog to follow her leash the right way around trees and signposts, which stands as my proudest accomplishment in life.)
It turns out that, absent rigid strictures, I invent my own, and the project soon swelled to an untenable scale: Before I knew it, each page was a dynamic web app, loaded and launched lazily, aggressively optimized with cacheable parts and preloaded data, full of realtime coordination between the client and the server, and with hooks that suggested the dashed-off, unstable outlines of a platform.
Then February hit, and clients materialized, and 80-hour weeks became normal. The website, half-built, overweight and very much between stable builds, faded.
This winter’s slowdown was less drastic than last, but it did happen. I put some effort into a project (stay tuned) which justified the creation of an honest-to-functional personal website – WordPress this time, like a normal person. I showed the previous winter’s Ozymandian wreckage to a friend over beers, and he suggested wisely that the About section – essentially complete, though ragged and out of date – might be worth salvaging as a standalone widget, embeddable and linkable.
So with the wife out of town and the dog asleep after a long day of tensely staring at squirrels, I set about hiding the unnecessary elements, all of the tentacles of scope blowout, leaving just a modern, interactive business card.
Here it is! (It’s real, you can click on it.)
(If you’re on an iPad, standard weirdnesses with scrolling in iframes apply. For example, if I tap and drag sideways, it scrolls up and down, and why do we even have rules, and Daisy Daisy give me your answer do.)
Here it is. (You can view an embedded version on a larger screen.)
Maybe only a couple thousand lines of code in evidence, but I’m pretty happy with how it came out, all embeddable and linkable and things. Even if there’s no formalized control flow to speak of, even if I only managed a half-baked twitter card (twitter card is now fully-baked!), even if I ran out of steam on the LinkedIn card and just slapped in a base prefab embed.
Along with formalizing and publishing any smaller standalone spinoffs, the plan was always to open the source, because why not, and because I write better code when I think I’m being watched. So, for your amusement, it’s up – minus API keys, and minus Mongo, into whom I got around to transitioning the bare minimum of content – on GitHub. A few things might even be generalizable: once properly scalpelled out, the Ken Burns card should respond to any Instagram API key… the GitHub card will display information for any user and any set of public repos, that is once you get the prerequisites installed, and track down the private environmental variables, and decode the mongoose schema… and… um… look upon my works!….