Thursday, July 17, 2014

My Condolences to Laid-off Microsoftees

My heart goes out to all of you who were affected by the Microsoft layoffs.

I was an engineer at Microsoft during the 2009 layoffs and, even though we knew they were coming, it was a shock when whole teams were eliminated regardless of performance. The layoffs announced today are just as difficult and several close personal friends came back from lunch today with no manager, no team, and no job.

This will be, without a doubt, a difficult time. Not just for those laid off, but for their families, friends, and our entire Seattle tech community and beyond. At the same time, I'm certain it'll open the doors to many new opportunities.

To all my friends and everyone else affected, my condolences. On to better times.

Thursday, April 17, 2014

Why Failing in School Was One of the Best Mistakes I've Ever Made

"Fuck me... I'm gonna get kicked out of school."

As I looked over my grades, the pretense of a bright future crashed down around me. I had been skating by for the past 2 years doing just enough to get by and it had finally caught up with me. "Two F's," I thought, "...double fucked. My life is over."

Before college, I was a great student. Under the close supervision of my parents, I managed to stay focused enough to keep up excellent grades while taking all honors classes. It was a time when I truly believed in my grand dreams of being a scientist and a visionary leader. But once I was out of my parents' house, I quickly fell prey to the seductive charms of my new-found freedom. My nights were consumed by parties, which meant my days went to recovery.

By the time I'd reached my junior year, the bad choices I'd made dropped my GPA to a 2.3, marginally above the threshold that would trigger expulsion. The two F's also put me on academic probation, meaning another bad quarter would also get me kicked out of school.

I immediately fell into depression, accompanied by deep reflection. As I assessed my life and what I hoped to achieve with it, I realized that, as humans, we're capable of constantly redefining ourselves; that while we can't change the past, we always have the power to shape the future.

This failure was a pivotal moment in my life and the boot to the face I needed to make me get my shit together.

After that, I stopped drinking. I cut back on social activities and invested my new-found time into studying. I coincidentally "discovered" computer science around the same time. The quarter after my grand failure, I happened to take a fundamental course in computer science (data structures and algorithms, for those familiar), which was optional for my major. About half-way through the course, something amazing happened. Something clicked. It was one of those moments where you suddenly just get it and the universe becomes incredibly transparent.

From that point on, I dove into computer science with passionate fervor. I filled as many of my upper-division requirements as I could with computer science and I excelled. I was getting nearly all A's and found myself programming in my spare time. That summer, I somehow convinced a startup to take a risk on me and got an internship as a software engineer. I soon started taking graduate-level courses and getting the highest scores in the classes.

Over time, I decided that I wanted to go to grad school to study computer science in more depth. By the time the application period opened, my GPA had turned around, but I'd done so much damage earlier that it was just below the 3.0 required for graduate admissions. Undeterred, I poured myself into the application, applying for a GPA exception and rallying support from the professors I'd gotten to know through my graduate-level coursework.

On a sunny San Diego afternoon, I was sitting in the basement of the computer science building and an email from the graduate admissions officer popped into my mailbox. I felt sick to my stomach and started trembling as I nervously opened the email and started reading.

I'd gotten in.

I nearly cried as an overwhelming flood of emotion came over me. Two years after I'd obliterated my future, I sat back and reveled in the moment when I knew I'd finally earned it back.

Friday, February 28, 2014

Welcome to the Future of Interactive Websites: Leap Motion

I stared excitedly as the lid of the suave, white box glided gently open to reveal a sleek, black device; a minuscule piece of hardware that made the bold promise of changing the way we interact with computers.


That little device was a Leap Motion, which arrived at my house unexpectedly in July, 2013. I had pre-ordered it in Nov 2012 and by the time July rolled around, had long forgotten that I’d done so, making it a pleasant surprise.

I plugged it in and started playing with it right away. The creators of the Leap did a fantastic job designing an Apple-esque end-to-end experience. The packaging felt great, the device itself had visual and aesthetic appeal, setup was simple, the APIs were well thought-out and documented, and the app store had some cool initial apps to play around with. Unfortunately, the apps were trivial or offered disappointing experiences, leading many friends to dial up eBay to unload unwanted devices. I have to admit that I was underwhelmed too, after having had my expectations set by the revolutionary vision promoted in videos released during the pre-order campaign.


But I’m a sucker for hardware, so I kept my Leap. After a few weeks, I found some free time and wanted to see what it would take to build an app. To my delight, I quickly discovered that they had cleverly architected the system such that it’s fairly easy to use with almost any programming language, and their APIs reflected this. I held my breath, hoping I’d find a JavaScript API and sure enough, there it was. “Wow!”, I thought. Suddenly I had the ability to take advantage of the most powerful software distribution channel in the world along with the ability to hack (via Chrome extensions) a unique interactive experience into the virtually unlimited software that was already available on the Web.

I began experimenting and found working with the Leap and its JavaScript APIs surprisingly easy and fast. One of the first things I built was a Chrome extension that allows me to control Reveal.js presentations with my hands. I then started playing around with WebGL. In no time, I was touting how much fun the Leap is to all my developer friends, which quickly led to a conversation with Will Little, co-founder and CEO of CodeFellows (an awesome program, if you haven’t already checked it out), and we started planning a workshop for the local community to learn how to program the Leap for the Web.

On February 20th, about 40 developers of all skill ranges shuffled into the basement of 511 Boren Ave North in Seattle, a venue otherwise lovingly known as “The Easy”. Leap Motion had generously sent us about 20 loaner devices in advance of the event, so as everyone settled in they went through the same magical experience I did when I first opened the box and lit up the device.


We went through a few basic examples, with participants making simple modifications to the sample code along the way (workshop presentation here). Then they were off to the races as we kicked off a brainstorming-and-open-project session. They came up with some cool ideas like a Theremin, an interface for exploring gene sequences, and a bunch of other ideas I don’t remember. While none of the more ambitious projects made sense for the short time we had, people built some fun stuff. The project I was most impressed with, which happened to be built by a pair of CodeFellows students, was a rock, paper, scissors app that accurately detected the count and final hand shape using the leap.


In summary, the Leap is a very cool tool that creates opportunities for unique interactive experiences on the web. People jumped way too quickly to concluding that it under-delivers on its promise. It’s easy to develop for and everyone who came to the CodeFellows workshop had a blast, regardless of skill level. I can’t wait to see more creative uses of this technology.