Gordon Koo

Stanford CS '08

LinkedIn 2010-2013

Airbnb 2013-

LinkedIn | Twitter | Github

  • Off My Arduino Training Wheels

    29 May 2012

    In May 2011, I went to my first Maker Faire. It was incredibly inspiring to see the culture of making things, shared by so many people of such diverse backgrounds. Inspired by a demonstration of the power of Arduino, I picked up a Getting Started with Arduino kit. I went home that night, opened up the kit, and poked around. I was able to get a red LED blinking before I decided to turn in for the night. The kit unfortunately went underneath my bed and there it stayed for one whole year.

    In May 2012, I realized that the next Maker Faire was coming up and I hadn't done anything other than turn on a red LED. I made it a point to go through the kit so that I could buy more things at the Maker Faire. While I only made my way through about 75% of the kit, I think I got the gist of it. I had learned how to crawl. I was ready to learn how to stand.

    I went to Maker Faire and it was just as inspiring as last year. Probably the best part was the Expo Hall, where you could just wander around and look at all the cool things that people have created. I ended up getting a soldering kit, the Ultimate Microcontroller Pack, and the O'Reilly Arduino Cookbook. This time, I didn't wait a year to try out my new toys. This past weekend, I made my way through quite a bit of the Arduino cookbook, learning how to use different sensors and how to send data input to the Arduino board through my computer. But I was still mostly turning LEDs on and off. I wanted to work on something substantial!

    I decided to try building an Arduino controlled robot/car/four-wheel-thing for my first project. I had and still have no idea what I'm doing, but each day brings me a little closer. I started off by buying a really cheap remote control car from Radio Shack. It cost me $8. Not too bad! I was amused when the man behind the counter at Radio Shack asked me if I wanted to buy a one-year warranty for the low price of 99 cents. Considering I would be ripping the car apart at home within 15 minutes after the purchase, I politely declined.

    I had a car. Now what? I unscrewed every screw I could find and pried everything open that I could pry. I got to the board that controlled the motor and the front wheels. On the advice of another website that had done a similar project, I clipped the wires and freed the board.

    I was also left with a nice set of wheels attached to a motor -- perfect for experimenting! I soldered two jumper wire cables to the wires that I had clipped so that I could plug them into my breadboard more easily.

    Now how should I experiment? All of the tutorials online seemed to require a ton of more materials than I had on hand, and there was nothing in the Arduino Cookbook about repurposing a remote control car. Or was there? It turns out that Arduino Cookbook did in fact have a section on controlling the speed of a brushed motor by using a transistor. Great! Now if I could only just get my Arduino to power the motor in this car and turn the wheels, not only would that be completely awesome, but it would also validate all of the effort that I went through over the past weekend. My setup was extremely hacky, but I was actually able to get it working! Here is what I've accomplished so far:

    Awesome! My next steps involve using an H-bridge to control the motor movement, and after that, controlling the servo that controls the front wheels.

    It's an incredible feeling to program something that actually exists in the real world for the first time, something whose existence does not consist entirely of pixels on a screen. I think Arduino will take a permanent place in my list of spare-time hobbies. I can't wait to build more things.

  • Why I migrated my blog to Jekyll

    11 Apr 2012

    About a month ago, I moved my blog from Posterous to Github Pages, which runs on Jekyll. A while before that, I had moved it from a rudimentary, custom built blogging platform built on top of IrisCouch. (In retrospect, I realize that trying to build my own blogging platform, while educational, was a case of engineer-trying-to-build-everything-himself-when-it-is-much-more-practical-to-use-an-existing-solution.) Well before that, I made a Wordpress blog with exactly three posts. And many, many years ago when I was a young boy, I started my first blog on Blogger. I used the FTP syncing functionality to actually publish HTML files on my webspace. At a lifetime of a little over seven years, my Blogger blog was the longest-lived of all the platforms I’ve tried. I ultimately stopped using Blogger after they discontinued FTP support.

    Why have the blogging platforms that I’ve tried after Blogger failed to retain me as a user? Shouldn’t technology improve over time, giving us better tools with which to do the things we love to do? Yes, it should, and I think that, in large part, it has. And I’m sure a large part of it was also the fact that as I grew older, I had less time (and perhaps interest) to blog. But as technology behind various Internet services evolved, a trend began to emerge.

    On March 12, 2012, Posterous announced that it was being acquired by Twitter. This caused a lot of head-scratching on The Internet. What did Posterous, a blogging service, have to do with 140-character messages? Many people began to fear that the Posterous product would be shut down, despite the message from the founders reassuring them that there were no plans to do so … yet. I was one such person. And you know what? I was tired of jumping around from service to service. I wanted the next one I chose to last me for a long, long time.

    The problem with using a service like Posterous is part of a somewhat controversial trend in Silicon Valley right now. So many other blogs have discussed this topic, so I’ll keep it short. When startups are just getting up off the ground, they need users to thrive. After they become successes, they’re acquired by bigger companies and shut down their products, abandoning the users who helped them build their way to success in the first place.

    Yes, Posterous has not shut down as of the time of this writing, nor have the founders announced any such plans. However, a service shutdown in the near future is not out of the question either. It’s this uncertainty that leaves Posterous users like me on edge. And even though, in the event of a shutdown, Posterous would probably provide a migration tutorial to transfer their data to a different service, it’s still really inconvenient and a big hassle.

    So why Github Pages then? Github Pages uses Jekyll as a blog generator. How it works is basically this: your blog is just another git repository. This means that you own all of your data. It doesn’t get sucked into a black hole cloud service. You’re simply replicating it on Github’s hosted platform. Should Github suddenly close up shop–well, there would probably be far more serious implications than migrating your blog, but humor me–then you still have all of your code on your local repository. What’s that? You somehow lost it, deleted it, or for whatever reason don’t have it anymore? Downloading your blog content is a git clone away! Github Pages may not be the most fully featured blog platform, but it’s enough for me, and knowing that I own my data allows me to sleep at night.

    Though it may not seem as important to others, owning my data is a big deal to me. Writing a blog, documenting your thoughts and opinions about life is an investment of time and energy. In the end, you have many snapshots of who you were and what you were thinking and feeling at those particular moments in time. And that’s something that I want to hold on to for a long time.

    For example: since I published my Blogger blog via FTP, I still have all of my posts from high school through the end of college. Here’s one from high school.

    If you’ve been around me long enough, you may have heard me [perhaps on more than one occasion] talk about what I will have when I’m rich. I’ve decided to make a list of all the things, lest I forget them. Most of these have to do with the mansion I’ll be living in.

    1. A gigantic room that is completely white. One like in the first Matrix, [“guns. lots of guns.”] only theirs was far more extensive. Someone asked me, and I don’t know who so please forgive me if you’re reading this, what I would do when it got dirty. That’s the worst question ever. I’d just have my people clean it!
    2. Indoor swimming pool. This is pretty much a given.
    3. Outdoor swimming pool. In case it’s nice outside.
    4. A room with a really high ceiling and stadium seating on one half. Usable for watching movies or TV, as well as other activities that require high ceilings.
    5. Firepole running up and down all of my floors. How cool would it be to have a firepole in your house? Think about it: Oh no, I’m late! Take the stairs? Too much physical exhaustion involved. Elevator? The wait is too long. The only rational choice would be to take the firepole. In three seconds, you’re at ground zero. If I have kids, they’ll just stay on the first floor so they don’t fall to their deaths.
    6. A room made completely out of bed. No square inch of that room is left uncovered. The easiest way to get around in that room is to crawl. Or roll like a snake. No shoes allowed inside, of course. In fact, no shoes allowed in the entire house! What are we, barbarians?
    7. The master bedroom–mine, of course–will have a refrigerator in it. When you get the rumblies in the tumblies, it’s too much of a hassle to take the firepole down to the kitchen. Instead, just walk five feet and get whatever you need right there. It’s genius, I tell you!
    8. A ball pit. I’ve always thought that ball pits were fun, and this way I can ensure that nobody’s peed in it.

    I was kind of a weird kid.

  • Beautiful day in the Castro

    11 Apr 2012

    As I stepped off the bus, I noticed it was a particularly beautiful day in the Castro.

  • Copying files in Vim's Netrw directory listing

    09 Apr 2012

    Today I was trying to figure out how to copy a file while in the Netrw directory listing in Vim. In the past, I have tried to look it up in the Netrw documentation, but I never got too far since it’s quite long. Anyhow, today I powered through my laziness and finally read up on how to copy a file.

    Copying a file involves three steps. Marking a file, marking a target directory, and then actually copying it. To mark a file, place the cursor over the file you wish to copy and hit mf which stands for “Mark file”. Then find the directory you want to copy to, place your cursor over the name of the directory and hit mt, which stands for “Mark target”. Then hit mc (does that stand for “Mark copy”?) and voila! You can also mark the target directory first, then mark the file to copy, and it will still work.

    For more on what you can do with marked files, see the Netrw documentation!

  • Interesting typo in an email from Google Wave

    19 Mar 2012

    See if you can spot it!