I was at Isilon for eight years. In some sense, that was three years too long; I stayed because the handcuffs were golden and the work had long become routine. Isilon had grown explosively; I was now third-longest veteran, and was still writing web apps for new extensions to the Isilon product line. I wasn't writing C anymore; the job of writing Python libraries had been farmed out to others. I was comfortable. I was lazy.
Then 2008 happened. The market fell apart. The tech world collapsed. The world seized up in economic shock. Isilon was bought by EMC and a lot of people got laid off. They gave me a bucket of money and... that was it. Like millions of other people, I was out of work.
I'd been in a hothouse environment for eight years. Isilon had been fairly open-source unfriendly; they took a lot of stuff in, but discouraged employees from contributing to open source projects, mostly due to paranoia about copyrights and poaching. I'd been working with Webware and Prototype. The world had moved on to Django and jQuery. I needed to follow them.
I hacked and played and discussed on this blog how I'd dived head-first into Django and taught myself a few nifty things. I also discussed a little side-project about using Python to write transpilers. This combination caught someone's attention: he asked me if I could write a Django app that would take in a single
<textarea> and, whenever the user pressed [Enter], send the contents of the textarea to a transpiler, and display the results in a
<pre> page next to the
<textarea> The transpiler was written in Python, so it would be easy to integrate with Django. He needed it to work on a multi-user basis, because he was going to South Korea soon to teach assembly language programming, and he needed this as an instruction tool.
It took me five days. He paid me well for it, and that was that. I blogged about my success.
Sometime in mid-December, I got wind from a friend about a little company that was trying to be "The Netflix of Independent Filmmakers." They needed help badly. They were desperate. Their original hosting site had gone up in bankruptcy and deleted their entire website, written in .NET, secretly over a weekend; they had no backups; they had no website; the guy they'd hired had finished 2/3rds of the site in Django before getting fired for reasons nobody there would discuss. Could I please finish the website and get it running by Sundance, which was five week away?
I said I'd try. I mostly succeeded. It was actually more than 2/3rds done; the database schema wasn't insane, it was just poorly managed. I taught myself migrations pretty quickly, and soon had the central component of the site up and running in two weeks.
While I was doing this, I learned that there was another crisis. They didn't rent movies, but they sold them. They had a commercial DVD printer that could burn a title and print a label and slap the whole thing together as a bespoke edition of any ISO image in almost zero time. They had all their DVDs in ISO format on Amazon Web Services. But their streaming service had been on the .NET site; they'd lost all their Flash-ready video. The four people running the office were downloading the ISOs to their Macs, one at a time, finding the movie, encoding it by hand, and uploading it to the streaming site, then logging into the admin page and flipping the "ready to stream" button.
If they were lucky, they'd have been done with the whole collection sometime in August, eight months later. Sundance was now three weeks away.
This is where serendipity comes in:
I'd been laid off, home, bored for a lot of the time. I watched a ton of anime. I introduced my kids to the kid-friendly stuff like Little Snow Fairy Sugar and Uninhabited Planet Survive! Some of it I burned to DVDs, I taught myself transcoding using mplayer, mencode, transcode, and a few other tools for converting "soft" subtitles to "hard" so the kids could watch those when I wasn't home. I asked one of the guys if I could take a crack at the encoding issue. "If you can make it go faster, go right ahead."
I did. I bought the O'Reilly Amazon Web Services manual, and learned what tools would let me list and download files from S3 to a Linux box. I used mplayer's "index" option to dump the contents of the ISO, and wrote a little Perl (yes!) script to find "the longest track," which is usually the movie. I figured out how to encode it to Flash. And I used the tool to upload it back into the Flash section of their storage. I did it with one movie. Then ten. Then I broke up the entire list of unencoded films into twenty lists of about a hundred films each. I wrote a little script to spin up a new Amazon EC2 server and encode all the films on the list; I did it with one list, and it worked. So that weekend I spun up nineteen more in parallel, and doled out my lists.
That Sunday I was able to call the boss. "It's done," I said.
"You mean they'll all be ready by Sundance?"
"No," I told her. "They're all done. Now. All two thousand of them."
She was quiet for a few moments. She'd heard that spinning up lots of parallel EC2's was expensive. "How much did that cost me?"
"Eighty-six bucks. And some change."
"Can I keep you?"
She did, too.
The serendipity was that I'd saved her business twice; once, by knowing what I was expected to know; I had my shingle out as a Django middle-tier developer with confidence end-to-end; and twice, because completely by luck I had the toolset necessary, how to transcode video, to save her specific business.