Shortlog - a log of everyday things

View the past: 2013 2012 2011 2010

Atom Feed

Entries from 2011

2011-01-02 | 0 comments

Wow, my posts are rather behind on the times. Let's clear the backlog:

December 28th: Sarah arrived! While DFW's arrival-status screen was mildly defunct (see below), we managed to meet up successfully, and went home and had tasty chili for dinner. After dinner - long conversation on my blue couch until late-o-clock.

Broken flight arrival time display at the airport

December 29th: Sarah and I went on a two-mile run in the morning. She's training for a half-marathon, and I'm trying to get in a habit of exercising. I ran in my Vibrams, which was fun, but resulted in hotspots on my feet and extremely sore calves the following three days. She also led me through a decently long session of yoga afterward to stretch out. I can't imagine how much worse it would have been if we hadn't stretched.

We started on a 500-piece glow-in-the-dark puzzle of a (rather creepy-looking) fairy or goddess or something standing with a long flowing cloth on a wave. We also watched an episode or two of the Dr. Oz show with my mom. It's quite simplified from what I'm sure Sarah studies in Nutrition, but the intent is to reach a broad audience with factual, actionable information, which it does. We stayed up late again, working on the puzzle and talking.

I've quite missed having my close friends in physical proximity. I can't expect to have the same level intimacy with my new friends in California yet, but I find it much harder to build such relationships without living in the same building as them. This will require further effort on my part.

December 30th: Last day with Sarah. Joni and Juliet (two of my mom's friends) came over and shot the breeze for a bit. They're entertaining folks.

That afternoon/evening, Sarah and I drove down to Mexia, where we joined four other dear friends from A&M for dinner and an evening together. It was a really special treat to see everyone. I played the Speights' piano, joined in a round of 42 (which my team won), played a match of pool (which my team lost), and caught up on the lives of my friends after our diaspora. We've had varying levels of struggle with our new lives, but we're all coping and making progress. It's a beautiful thing to have friends that you know will understand a joke you make, or that think of the same memory as you from some conversation. That's another thing I'll have to build in Berkeley.

As the evening progressed, more friends parted ways, and eventually I left Sarah with Lara and her family and drove back to Dallas.

December 31st: After spending a week seeing people, I needed a day off from socialization. I spent most of the day relaxing at home (and moaning about my poor aching calves). I beat my dad at a game of chess - I managed to win a material somewhat early on, then exchanged down until I was a bishop and three passed pawns up, at which point my dad resigned. I've no real gauge of my skill level, but I like to think that I'd beat most people who don't play chess regularly, and would lose to most people that do. Whatever ranking that is.

I finally managed to get a copy of the Console Hacking 2010 presentation slides and video from 27c3, which was absolutely fantastic. Even Penny-Arcade wrote about how awesome it was. Basically: the PS3 is completely, utterly, permanently hacked. Sony screwed up their cryptography implementation in such a major way that their secret signing key could be reconstructed from the signatures themselves, distributed with all software they've signed so far. Oops. Perhaps the best part is that Sony can't reasonably change the signing key, or all software released for the PS3 will stop working, so the hack is reasonably permanent.

In the wise words of Hector Martin: "OtherOS was Sony's single best security feature." It kept the (good) hackers sufficiently entertained to not bother trying to break into the system.

January 1: I went to lunch at Hong Kong Royal Restaurant (dim sum!) with Matt and Katy. It's quite good - 4 star rating on Yelp, and our experience was also positive.

After lunch, we went to Fry's Electronics and wandered around for a bit. I found nothing particularly enthralling this trip. I definitely wouldn't mind having a nice Weller soldering iron, but I don't fancy trying to pack one in a carry-on suitcase. I was surprised to see the Pragmatic Bookshelf books at Fry's, but I guess that makes sense after all.

After Fry's, we stopped by Target seeking a season of NCIS on sale for Katy's mom. We didn't find it, but I did buy the Tron: Legacy soundtrack by Daft Punk, which is pretty great.

My family met Nicole and her sister and mom at Osaka, a sushi buffet, for a dinner of epic proportions. I ate my fill and then was SUPER SLEEPY (yay, food comas!). So much delicious food.

Following dinner, we all returned to our house to open xmas (new year's?) gifts. I got a slick black hoodie that read "Powered by Open Source" from Ariana (it's so me!), a neck pillow for plane flights from Elaine (got a couple of long trips coming up), and a copy of Cooking for Geeks from Nicole (so I can really know what I'm doing in a kitchen!). I had a good time, and it was nice to relax with their family again.

January 2: My friend Thomas from TAMS and I were supposed to meet at the movies to see Tangled, but it turns out that he was hit by the iPhone alarm bug (yes, the second one - there was also one around daylight savings time. Why Apple hasn't fully audited that code yet, I have NO idea.) so I saw the movie with my family, and we met up afterward for cards, chat, and video games. He's just finished a semester abroad and his undergrad studies; so he'll be applying to both jobs and grad schools over the next few months.

Tangled was cute. I can't help but analyze the CGI of every movie I see, now that I've taken computer graphics. Yay, subdivision surfaces!

2011-01-05 | 4 comments

Now that I've got two friends messing around with Shortlog, my minimalist blogging engine (crazy, I know), I've come to the realization that I need to make it easier for people to access/use my software. I need to make it less tied to my particular setup, more easily configured, and better-documented.

Then I realized that this applies not only to shortlog, but the rest of my projects as well. And the first step in using someone's code is obtaining it.

So here you go. I've gone and organized a few things enough to get a decent-looking gitweb page up to make the source available. Documentation and modularity will come in due time.

Another interesting thing I noted today: most of my computer usage is a giant hierarchical organization of data segments. Multiple desktops play home to multiple tiled windows. Most of these windows are either:

  1. web browser windows, each with a multitude of tabs, or
  2. terminal windows, each with a multitude of tabs.

While there are also occassionally chat windows (with several tabs) or the one-off LibreOffice window or file manager, this is my most common interaction with my computer - finding and selecting the desired context to interact with.

This sounded remarkably like Ben Schneiderman's Direct Manipulation Interfaces. To make context switches cost less, I (subconsciously) put likely neighbor contexts next to each other. I may set rules, like "desktop 1 is for communications, desktop 2 is for OpenKinect development." The catch here is that some end nodes (application windows) fit into multiple places in the heirarchy.

My question is then: is there a way to keep the benefit of being able to keep such rules for quickly finding the relevant context and still preserve relative context nearness?

2011-01-06 | 3 comments

OpenKinect has synced master and unstable, which means I need to get my behind into gear and get my API changes in before the upcoming 0.1 release. Stuff is still segfaulting in libusb, and I have no idea why. Crap.

Kyle and I have been talking about features we'd like to add to Shortlog, the engine that powers this blog. Things we've come up with so far:

If you dear readers have any suggestions for things I should add to my blog, I'd love to hear them! Leave a comment!

My calves are sore as all get out, thanks to standing up on my tiptoes 242 times (it was a competition with my mom, for the record. I won.). Hopefully I'm gaining muscle!

2011-01-12 | 1 comment

Okay, I've done a really poor job of keeping my blog up-to-date recently. Apologies, dear readers. Let's clear the backlog:

January 7: I met up with Sarah Hodde and Eric Rasche as they were passing through Dallas. We went to a Panera Bread. I'd never been, but Eric was an experienced Panera client. I love paninis. We talked for a good few hours, catching up with the happenings of each other's lives. It was so good to see both of them - apparently, we've all had really rough semesters.

January 8: Eddie Eigenbrodt and Julia White, two awesome folks from A&M (that I had sadly not seen in quite some time) were engaged. Today was their wedding! I drove down to Dripping Springs in the morning and found the event center at which the wedding was set to take place. It was supposed to rain, and the wedding was to take place outdoors, but the sun peeked out from behind the threatening clouds just in time for the ceremony to begin. I didn't know which side of the aisle to sit on - I met both Eddie and Julia my first semester at A&M, and had several classes with them both.

Everything was beautifully decorated in black, white, and red. Julia has always loved penguins, so they made numerous appearances in the decor, including a pair of plastic penguin figurines (one tall, one short) sitting atop the wedding cake. The dinner tables were numbered, but not sequentially. Rather, each table had a number that was significant to Eddie and/or Julia in some way, like pi, Avogadro's number, Planck's constant, 235 (for Uranium 235, since Julia is a nuclear engineer), or 1050 (the muzzle speed of a .22 pistol in feet/sec(both Eddie and Julia were involved in pistol team)). I got to sit with the pistol team at table 1050, and they were interesting people. In a "wow, small world!" moment, I met the brother of Andy Echols, whom I knew from the A&M computer society. In another "wow, really small world!" moment, Mark Browning introduced me to Kate Stewart, the Ubuntu release manager. Turns out she's friends with Julia's dad. We chatted for a bit about the open-source community and contributing and how cool she finds it to see the project come together from the top, but also run into the individual hackers that make it happen from time to time and hear about the pieces. Pretty awesome coincidence.

All together, the wedding was lovely and perfect and I'm overwhelmingly happy for Eddie and Julia. We sent them away by the light of a hundred sparklers, and it seemed like everyone had a splendid and joyous time. And inspired by Gabe, I lit two more sparklers and used them as poi. Another wedding guest said I "looked like I knew what I was doing" which was awesome because I totally didn't.

ANYWAYS: Congratulations, Eddie and Julia! I wish you all the best in your life together!

January 9: The night of the wedding (after I'd left and checked into my motel, thankfully), I came down with some bothersome sinus bug that resulted in my blowing my nose nonstop for practically the entire night. I coulden't breath out of either nostril, and had an awful time falling asleep. Around 4:30, I finally managed to stay asleep for more than an hour, eventually leaving to drive back up to Dallas around 11am. Oh, it was snowing. There was snow and a small amount of ice on I-35, which had a negative impact on visability, highway speeds, and my level of calm. I made it home about 15:30, at which point I finally got to take some proper decongestants and nap and eat. The wedding the day before was so awesome that it was totally worth it though.

January 10: Didn't accompish much of anything. Tried going for a run, but it was ridiculously cold and I was done running after about 10 minutes. I covered probably ¾ths of a mile. Gah.

On the upside, the frigid air and running cleared my previously-blocked nostrils out rather well.

January 11: See January 10. Although I did learn about how NOT to use libusb from different threads. Which is relevant since I still don't understand why my high-res patchset for libfreenect crashes.

I got a bit stressed out at the prospect of packing and leaving, which was strange, since I've been fine doing so for the past 5 years or so now.

January 12 or, "When the **** hits the fan": I was scheduled to fly to Boston today. Through Atlanta. For historical value, I'll note that Boston is currently having a massive blizzard (30mph winds, over a foot of snow), so no flights got in today. Furthermore, Atlanta is on the tail end of uncharacteristically cold weather, including so much snow that their roads iced over. Atlanta owns a grand total of 8 snowplows for the entire city. CNN did a viewer-submitted piece today showing a guy ice skating down Peachtree Street, Atlanta's main street. So Atlanta has not been terribly on top of flights either.

But I was hopeful. Neither of my flights were cancelled when I woke up. I hugged my dad and sister goodbye as they left, and then my mom drove me to the airport. Both flights were still a go. I went through security. About 10 minutes before my first flight boards, my dad calls me, letting me know that in the past minute, my second-leg flight had been cancelled. Along with every other flight from Atlanta into Boston except one that arrived just before midnight. I quickly went up to the service desk, and the helpful woman there managed to get me one of the rapidly vanishing seats on that last uncancelled flight.

My DFW -> ATL leg went smoothly. When I arrived, the second-leg flight was still a go. It remained that way for about three hours, and then I got another phone call from my dad, again helpfully letting me know that my flight had just been cancelled and that I should seek another. (How he managed to get this info so quickly is beyond me, since he got me the word faster than the Departures screen at the airport. I have this picture in my mind of him refreshing a flight status webpage every 10 seconds all day long, which makes me laugh.) So I hauled between terminals to find the Airtran Customer Service desk, and they put me on the first flight out on the 13th. We'll see how that turns out tomorrow. For now, though, I've pulled up a comfy patch of carpet in a corner near a power outlet for the night.

Oh, one other thing about Atlanta: the wifi sucks. Well, technically, not the wifi - the access points ping just fine, but they block access to the general web with what's probably a massively overloaded squid proxy. That might explain why the redirecting proxy managed to drop approximately every other connection I tried to make.

"But!" you might say, "don't you have your Nokia N900, with which you can tether at delicious speeds?" I do indeed, but it turns out that T-Mobile's 3G backend was also having issues. I'd get an IP, but couldn't ping anything at all. Eventually I figured out that I could force the phone to use only EDGE instead of 3G bands, and that worked. That wasn't until much later in the evening, though, so most of the time I was trying to check my flight status with either of two failing paths to the Internet.

BUT now I have EDGE so I can write this lengthy and belated post. With any luck, in twelve hours, I'll be in Boston.

2011-01-13 | 0 comments

A series of naps on a matched pair of seats provided me with enough rest to be surprisingly cheerful this morning. My flight switched gates (twice), but it looks like everything will be on time now.

I met a woman and her daughter who were also travelling to Boston and had been stuck in Atlanta for two days. The mother did computer science in the 80s with CPM, and the daughter was planning to study math and physics. We chatted for a bit about technology, politics, and the future of our nation.

UPDATE: I have arrived in Boston. My aunt picked me up, and I am now settling down for a nap.

2011-01-17 | 0 comments

This post is backdated, on the grounds that I should have written it on the 17th and I have a decently large post for the 18th to write as well, and that they're kinda disjoint topics. Some people might say that my blog engine should support multiple posts per day, and they'd be right (it is, in fact, on my roadmap), but that feature is not at the top of my priority list right now, and no features have gotten much attention lately, so they can deal. So, without further ado: my Boston trip.

Just because it deserves a paragraph of its own for emphasis: I've had an absolutely fantastically awesome time the past few days.

As previously mentioned, I successfully made it up to Boston. That night, my aunt and I went and visited my cousin Erik, his wife Julie, and their two children and two cats. Julie made a completely delicious chicken pot pie from scratch, which I had several helpings of. Samuel is now able to eat corn, which is exciting as both of the kids have the strangest mix of mutually-exclusive allergies. The kids and I played with LEGOs and rolled a ball, and later that evening I explained how objects fall at the same speed (up to air resistance), complete with experiments involving dropping all sorts of things from arm's length. Julie read excerpts from the Maine Dictionary with the proper accent, and we all laughed and had a merry time.

The next morning, I packed up my effects and accompanied my aunt to a doctor's appointment. It took quite a while longer than she had expected. Fortunately, we arrived at MIT just in time for me to drop off my effects in Death From Above (the Mystery Hunt team I joined) HQ before running over to Lobby 7 for the kickoff event. And oh, what a kickoff. When I arrived, there was a string group playing some procession theme that I couldn't quite place. Lobby 7 was, of course, packed with people, and I managed to nearly walk into Nicole before recognizing her. On the second floor, there was a man dressed up as a preacher. Slowly, the music turned from "generic wedding procession" into "wedding adaptation of the Mario theme," and Mario and Peach arrived on the scene. A hilarious sequence ensued involving Bowser crashing the wedding before the couple could be joined in "holy mushroom-ony" and kidnapping Peach. Hunters would have to help Mario rescue Peach by solving puzzles and defeating Bowser. The hunt began shortly thereafter.

I took a break for a bit to go meet with Michael Bernstein and the other members of the User Interface Design Group. I had the pleasure of joining their 1pm group meeting, where I shared about my work with the Kinect, listened in on their preparations for the CHI 2011 Workshop on Crowdsourcing and Human Computation, and learned about some of the their current focuses.

After that, the next 48 hours or so were dedicated fairly strictly to the Hunt. There's no way I'd be able to do the hunt justice in a blog post, so I shall simply link to the Hunt website and discuss a few of my favorite puzzles. Before I begin, I should note that the hunt had five rounds, each focusing on a different video game - Mario, Mega Man, Zelda, Civilization, and Katamari Damacy. A few puzzles that I either helped solve or just found interesting:

One night of the hunt, my friend Lora from Berkeley IMed me and thanks to Death From Above's awesome organization, it was really easy for her to join in the hunt. She donated her expertise on France to help solve Pointillisme. The more brains, the better!

Another interesting event worth mentioning was when Mark Browning called me. He needed to get to some documents on his computer proving marriage and had only HTTP access. So he called me up and had me SSH into his desktop and symlink his documents folder into his public_html folder so he could find the documents he needed to sell his car. I was happy that I could help my friend in a time of need.

Sleep during Hunt was minimal. I took a couple few-hour naps on the couches in CSAIL (they're quite comfy!) to refresh myself when I started hitting a wall. The rest of the time, I was running on pure adrenaline.

After Hunt ended, I helped clean up CSAIL and vaccuum the rooms we used. I met Bill Reading (who was on the winning team last year, and thus helped run the Hunt this year) at the Hunt wrapup session in 26-100, and he shared all about his trip to Germany for 27c3, which sounded awesome.

And after that, I went back to East Campus, where I dropped off my effects, and then joined a dozen or so friends at the Cambridge Brewing Co. for dinner, where I had an excellent BBQ burger. Upon return, I met up with more old friends, made some new ones, and broke out my Kinect. I got to observe MIT kids making fools of themselves in front of the TV. It was fun and entertaining to watch. Later, we watched How To Train Your Dragon and Wall Street 2, exchanged backrubs, and played Super Smash Bros. Brawl. I took a nap around 8am after a nice girl named Cheetiri made me breakfast. I had meant to visit the 6.270 lab (LEGO robots!) but failed to do so. Maybe next year.

A touching moment: as I was preparing to leave for the airport and giving my goodbye hugs, my friends from EC exclaimed that I wasn't allowed to leave. Even though I'd only shared parts of a single semester with them, they appreciated me and welcomed me warmly, and told me I had to come back and visit again. I was surprised. They all treated me like I was a real MIT alum, which made me feel really special.

I took the T back to the airport. I couldn't remember if I had a CharlieCard in my wallet, so I shoved the billfold up against the reader, and it worked. Guess I still carry one, though I've no clue where.

My flight from BOS to SFO was uneventful. My line at security only had the metal detectors, so I didn't even get a chance to make a statement about the backscatter machines by opting out. Oh well. I moved with purpose once we arrived in SFO and BARELY made the 10:27 BART train out. I arrived home at about 20 minutes before midnight, and found a box on my bed. Assuming it to be Christmas gifts that my parents shipped, I left it alone, took a much-needed shower, ate some dinner, and fell asleep.

2011-01-18 | 1 comment

Woke up about an hour before my appointment with my counselor. I decided to look at the box that was sitting on my bed when I arrived home last night.

Turns out that the box I mentioned yesterday was neither xmas presents nor from my parents. It was also not from any address I recognized - some Brian Jeffries guy in Kentucky. Curious, I opened the box. Inside, I found...another box. Somewhat heavy. This one had a handle, and a rather unique design on the outside of an exploded-view of rocket of some sort powered by a mouse wheel. It seemed strangely familiar, but I couldn't quite place it. Then there was a sticker on the back of the box that threw me off - a lithium-ion battery warning.

"What's going on here?" I thought to myself. "I don't recall ordering anything recently, and I don't know anyone who lives in Kentucky." Confused, I applied my skeletool blade to the seal on the box. I opened the lid. And then I saw this piece of paper:

Chrome netbook controls page

"Oh. I know what that is!" thought one part of my brain. "No way!" went another. "Wow, that was a while ago!" offered a third. A fourth added, "Good thing you didn't open the box last night."

For those of you who still have no clue what I received: my box contained a Cr-48 ChromeOS laptop, courtesy of Google. I had applied to the Cr-48 Pilot Program back in early December, but figured my chances of receiving a unit were quite a long shot, and completely forgot about it over break while I was in various other cities.

Looks like I was mistaken. A second review of the box indicated that it was delivered on December 21st, which meant that it sat in my apartment complex for a good couple weeks before my housemate could bring it in. I'm pleased - this suggests that my apartment complex and all who pass through it are trustworthy.

Obviously, I did what any self-respecting nerd would do: I tore off the rest of the packaging, popped in the battery, and powered it up. It booted very quickly, as advertised - about 10 seconds. Logging in and getting started was easy - the hardest part was getting my just-out-of-bed hair into a condition suitable for a login picture. Bookmarks and the like synced from the Google servers, and I was left with a Chrome instance not unlike those on kraken and phoenix, my desktop and laptop, respectively.

And shortly thereafter, I realized I had about 15 minutes to eat breakfast and get my rear end over to campus, or I'd be late for my appointment. I set the Cr-48 on its charger (also a delightfully small object) and ran to campus.

I analyzed my present state of being and plans for the semester with my counselor, and was satisfied with the insights obtained. Afterward, I dropped by the BiD lab to visit my friends. They described me as looking much healthier and happier. They're completely right. The past month has done amazing things for my mental health. I've gained back the weight I lost last semester.

I returned home so I could buy groceries (since I still had very little in the house) and played around with ChromeOS. My thoughts so far:

I've yet to try out the free 100MB/month of Verizon 3G, or plugging in a memory card with photos, or in fact any USB devices. I'm sure the opportunities for each of these will arise as time goes on. This notebook has much better battery life than my Dell Latitude D830 (although it's much less powerful) and is definitely more convenient to break out at a moment's notice. Thanks, Google. This was a super-awesome welcome-home present. I'll do my best to break your software so others won't have to.

That was today's round 1 of awesomeness. Round 2 was my housemate getting a 10 cup fuzzy logic rice cooker. You can set a time for this thing so your rice will be ready when you get home. It will keep rice moist for a full day. It plays a happy tune when the rice is ready. Andrew and I tested it out tonight, and the brown rice was pretty awesome. My rice consumption is going to at least double this semester.

2011-01-20 | 0 comments

I'm curious as to what's happened in the past five months, with regards to the Skype protocol. I know that in July, a talented reverse engineer did what those before him didn't want to bother with (PDF, slide 52/72) and reimplemented the seed-to-RC4-key function (the core of Skype obfuscation/encrypted messages) in nearly 3000 lines of C. He was supposed to present at 27c3, but apparently didn't. The code, however, is still out there.

As a major fan of open-source software, I'm wondering: has anyone bothered documenting the (current) Skype protocol? I'd love to see a free/open-source implementation of the Skype protocol, say, for Telepathy. If the docs exist out there somewhere, then it shouldn't be terribly hard to write - Telepathy was made to be quite flexible. If, on the other hand, the protocol is still undocumented, well, maybe I have a good semester project. How to construe this as a computer security project...hrm.

Switching topics: the GNOME 3 website has launched. I can't help but read down the feature list and think "wow, KDE's had that for X releases!"

Activities? Plasma has had these for years. Notifications system? KDE led the design of the freedesktop.org spec that's in use by all. And it ships in 4.5. Keyboard launch/switch? See KRunner and its multitude of searchable capabilities. System settings? Let's not go there again. Window tiling? Shipped in KDE 4.5; now I can't operate efficiently without it. Netbook interface? Marco Martin did that in time for KDE 4.4. Dark application themes? Is that even a feature? (If it is, KDE's had the Obsidian Coast theme since at least 2006.)

I'm not saying that GNOME isn't an awesome software project; it absolutely is, and provides a ton of people with exactly what they want and need. I'm just noting that KDE is the innovation powerhouse and ships good ideas, despite its comparable lack of commercial funding.

2011-01-22 | 1 comment

Luke's birthday is coming up, so he, myself, and a couple more friends are going on a 7-mile hike in Mt Diablo State Park. I'm going to wear my Vibrams (and pack my socks and hiking boots, just in case).

Today I received my first spam comment. Yay, my blog is moving up in the world!

Update: The hike was excellent, although we wound up not going on the full 7-mile loop, we did go up to the summit and did a brief free-climb on a rock. It was about 15°C out, but was quite windy, particularly at the summit. I enjoyed wearing the toe shoes on the way uphill and for the rock climbing, but changed into my boots for the descent - too many sharp rocks, steep hills, and too much loose gravel for comfort. Here's a few pictures from the venture:

Awesome view
Awesome view.

You could see a lot of counties.
You could see a lot of counties.

The sky was gorgeous too.
The sky was gorgeous too.

A rock formation we happened upon.
A rock formation we happened upon. And happened to climb upon.

Luke on top of the world.
The birthday boy, on top of the world.

More of us atop the rock.
More of our merry hiking party atop the rock.

Drew with hair whipping about in the wind.
Me, with ridiculously wind-whipped hair.

Andrew has a picture on his camera of all six of us, which I will post once I've obtained it.

2011-01-23 | 0 comments

Woohoo, someone (in particular, Ken Ono) finally found a finite formula for the integer partition function. PDF here. Now we can all quickly solve Project Euler problem 76, mmmm?

2011-01-24 | 1 comment

I woke up this morning in tears. I haven't had a nightmare like that in a very long time. On the upside: I'm sleeping well enough to dream!

The EECS Career fair was today. When I told the Microsoft recruiter that I had worked on the open-source Kinect drivers, he wrote a large E on my resume and circled it. I believe this to be a good sign. Other fun from the career fair included a rather bubbly Autodesk recruiter, taking a brief C quiz for nVidia, having the Google recruiter recognize me and remember that I'm a PhD student and who my advisor is, and getting a scarf from VMware. I won a keychain with 64GB of unusable flash (shiny, though!) at the Intel infosession this evening.

I made a cucumber/bell pepper/tomato/ricotta salad for dinner. It's been a while since I broke out the balsamic vinegar, but it turned out well.

Two sequential names on my Jabber contacts list (both starting with J) have statuses that consist of the same word four times. The two people in question also don't know each other, which makes this even more amusing. For the curious, the words are "DNS" and "sigcomm."

2011-01-25 | 0 comments

I had my first meeting with my advisor since I returned to Berkeley. I was quite nervous, particularly since I hadn't made any progress on projects since leaving town, and my subconscious attitude toward research had worsened. In three minutes, he managed to eliminate all of the negativity and frustration and worries that I had about classes and research and everything else. The next twenty consisted of planning who we'd contact for research plans, summer opportunities, and so forth. I left excited and feeling good.

UPDATE: I managed to fail to notice that the State of the Union Address that follows (and which I offer my extensive critique of) was the 2010 State of the Union, not the 2011 State of the Union. How embarrassing. Fortunately, most of the criticism still stands.

This evening, President Obama gave his State of the Union address. If you're an American and haven't watched/read it yet, please do so now. Besides, if you don't, you'll probably be a little confused by the rest of this blog post, because I'm going to go through some of the things that stood out to me. Feel free to follow along in the transcript.

Dad, I expect you to share your thoughts. I know you'll have some good insights; you always do.

"Next, we can put Americans to work today building the infrastructure of tomorrow." INDEED. America has done a ridiculously poor job of investing in infrastructure, as compared to China, Japan, and Europe. I wish we had better rail systems in more places. Whether Internet or phone service should be considered public infrastructure or not raises some interesting questions.

On clean energy: the success or failure of this plan will depend largely on how such clean energy systems are subsidized. On principle, I'm all for clean energy, and renewable energy. I believe it's the only viable solution for the very long term, and that eventually, energy will become the primary resource (and even currency) of the world. Unfortunately, we're not at a point where clean energy technology is efficient enough to recoup its own costs over its lifetime, and we do a great disservice by subsidizing production of clean energy (think commercial power plants) rather than innovation and research to make this technology more cost-effective. See this excellent Forbes article for some more background. The picture the data paints right now is that due to government subsidies, clean tech deploys ineffective technologies that do not recoup their costs, and since the companies are profitable (because of the subsidy) they do not bother investing in further research. So my takeaway: invest tons in clean energy research, not deployment. When it's good enough to be viable on its own, feel free to subsidize national deployment to promote adoption of the viable tech.

On exports: well, duh. The way you wind up paying off government debt is by selling things that other people want. And the way to do that is to create value. Note: intellectual property only counts as value when you're doing business with copmanies that follow your rules. Guess which developing economies aren't interested in following your IP laws? So yes, we need to up our exports.

"In the 21st century, the best anti-poverty program around is a world-class education." Indeed. The Jews figured this out centuries/millenia ago; they've always valued education, and that's why they've done rather well financially throughout history. Unfortunately, as a result of their success, they've aroused the anger and vengence of many jealous, less forward-thinking cultures.

"This year, we will step up refinancing so that homeowners can move into more affordable mortgages." I'm not sure I like this one so much. While I'm not interested in denying people a place to live, it's my understanding that a major factor leading up to the housing crisis was that people buying houses could get WAY more credit (and thus, buy way more house) than they should reasonably have been afforded. With the unfortunate American attitude of entitlement and living a luxurious life, these folks wound up buying more expensive houses than they could really afford. The result was foreclosures and the housing bubble bursting. While offering refinancing might be the compassionate thing to do, part of me thinks "you shouldn't have bought that much house, and you're getting what you deserve." Government offering to fix all ills produces a whiny, expectant citizenry, rather than a responsible one.

And on that note, healthcare. I don't know enough about the healthcare system to be a fair judge of most factors. However, this statement stuck out at me: "Patients will be denied the care they need. Small business owners will continue to drop coverage altogether. I will not walk away from these Americans, and neither should the people in this chamber." I take some amount of issue with this - the US spends more on healthcare per capita than every other country I could find data for. (Source: EOCD Health Data 2010.) It seems odd, then, that given that we don't have nationalized healthcare (well, not really deployed in full yet) that we should be denying so many the "care they need." Ultimately, we have to put a price on how much we're willing to spend on a person - that's what insurance is, after all. If we can't afford to pay as much as we want to, then in the long run, yes, patients must be denied the care they need. It's not sustainable for a nation to do otherwise. I recongnize that the insurance system is inefficient and sometimes exploitative. However, the big picture facts remain the same - we can't afford to spend this much per capita on healthcare, particularly not by government mandate. Take a look at some of the European countries that are falling apart because they can't afford to live the way they want to. Another problem with universal healthcare is that once it's granted, there's really no way to reverse that decision, should it be economically infeasible.

Which brings us to the question of the deficit. This is where I shat a brick, to put it simply. "Now, if we had taken office in ordinary times, I would have liked nothing more than to start bringing down the deficit. But we took office amid a crisis." It's remarkably convenient how often there's a crisis in Washington. Or a war. On a poorly-defined concept that won't go away. Like the war on drugs. Or the war on terror. A hallmark of an authoritarian state is that it is in a constant state of emergency. I'm not saying we are under a police state, but I think that "crisis" is an excuse. But I digress.

"Starting in 2011, we are prepared to freeze government spending for three years." Excellent! But wait, there's more. "Spending related to our national security, Medicare, Medicaid, and Social Security will not be affected. But all other discretionary government programs will."

What. The. <censored>. There can be no sacred cows in the budget. Let's examine the data, shall we? There's a fantastic infographic called Death and Taxes that gives a wonderful, easy-to-follow graphical presentation of the US government spending. While the main item in the graphic is the Federal Discretionary Budget, if you look to the far right, you'll see the pie-graph penny that represents the Total Budget.

We're spending a total of 3.834 trillion dollars, and we're slated to collect 2.567 trillion. While this alone is alarming, let's cross-reference the four items of spending we said would be immune to this government spending freeze. By the way, "spending freeze" just means no adding new expenditures. We'd just keep all our current spending levels.

National Security spending: 895 billion. Medicare? 491 billion. Medicaid? 297 billion. Social Security? 730 billion. That's 2.413 trillion dollars. That's 63% of the federal budget that we just said would be immune to a spending freeze (not even cuts!). And those four items alone are 94% of our receipts (income to the budget). Throw in the national debt interest (251 billion, which we can't exactly elect to stop paying), and you exceed 100% of our receipts. Boy, it's going to be awful hard to get spending in line with income when you're both cutting taxes and refuse to even freeze spending on costs that amount to greater than your entire income. Again: what the ****. This is not an adequate plan for restoring solvency to our nation. The whole speech lost credibility in three sentences.

"We've made substantial investments in our homeland security and disrupted plots that threatened to take American lives." Oh, we've made investments, all right, but said investments have hardly disrupted any "plots that threatened to take American lives." Increased public vigilance and the attitude that plane hijackers are not just going to detour you to Cuba are what has stopped would-be terrorists. I've complained before about how the TSA doesn't actually provide real security, just security theater. On the other hand, they've increased government spending, which IS a major issue. And don't say "but this creates jobs for Americans!" because I will smack you down with the broken window fallacy.

"I'm also calling on Congress to continue down the path of earmark reform." Hooray. Can't happen soon enough. "But we can't stop there. It's time to require lobbyists to disclose each contact they make on behalf of a client with my administration or with Congress. It's time to put strict limits on the contributions that lobbyists give to candidates for federal office." Great. I'll believe it when I see it - neither party is exactly incented to limit their income from lobbyists, in kinda the same way that neither party is incented to make it easier for third parties to acheive meaningful representation.

There was a bit on how Iran is seeking nuclear weapons, and I couldn't help but think of Stuxnet at this quote: "That's why the international community is more united, and the Islamic Republic of Iran is more isolated. And as Iran's leaders continue to ignore their obligations, there should be no doubt: They, too, will face growing consequences. That is a promise." It does seem likely that it was the U.S. and Israel behind that worm. I'd cite the NYTimes article directly, but they've decided to hide all their content behind a paywall. Pity.

State of the Union: some things good, some things misguided, some big promises that I'm skeptical about, and some that weren't big enough.

What are your thoughts? In particular, I'd love to hear where you disagree with my views and why, so we can all get a broader perspective on the tough issues of the day.

(Fun fact: this is the longest entry I have written, to date.)

2011-01-26 | 4 comments

So, my epic post from yesterday refers to the 2010 State of the Union, not the 2011 one. Epic fail, Drew, epic fail. I'll be reviewing the transcript (but not the video, since the white house has decided that it'd rather post the video to youtube than host the .mp4 for download (scratch that, there's a download link on youtube (the first time I've seen such a thing - apparently they do this for public domain videos))) (update: 1.3GB .mp4 here) and hopefully critiquing the more recent words. I'd like to point out that most of my critique from yesterday still stands.

Education: statement about the Jews having figured it out still holds.

"We need to out-innovate, out-educate, and out-build the rest of the world." Yeah; pity that we only do the first of those.

"We need to take responsibility for our deficit and reform our government." Yes! Please, nation, take responsibility. Reform things more efficient and spend less.

"This is our generation's Sputnik moment. Two years ago, I said that we needed to reach a level of research and development we haven't seen since the height of the Space Race. And in a few weeks, I will be sending a budget to Congress that helps us meet that goal. We'll invest in biomedical research, information technology, and especially clean energy technology -- (applause) -- an investment that will strengthen our security, protect our planet, and create countless new jobs for our people." Hey, there's that clean energy technology bit again. Same caveats still apply - fund the research until it can pay for itself over its lifetime. Only then subsidize deployment. All right. Hey, this next quote also sounds good. "We're telling America's scientists and engineers that if they assemble teams of the best minds in their fields, and focus on the hardest problems in clean energy, we'll fund the Apollo projects of our time." Sounds like good research to me.

"So tonight, I challenge you to join me in setting a new goal: By 2035, 80 percent of America's electricity will come from clean energy sources." Eh. 2035 is kinda far away. We put a man on the moon within a decade; at a glance, this is not as ambitious as it should be. Someone who knows energy, please correct me.

On education: "That responsibility begins not in our classrooms, but in our homes and communities. It's family that first instills the love of learning in a child. Only parents can make sure the TV is turned off and homework gets done." Yes. I'd love for the public to care like that. Keep at it.

"And Race to the Top should be the approach we follow this year as we replace No Child Left Behind with a law that's more flexible and focused on what's best for our kids." Yes, please! Get rid of No Child Left Behind; it's a program that fails our best and brightest, who in turn are the ones who create businesses and jobs and breakthroughs.

"And this year, I ask Congress to go further, and make permanent our tuition tax credit -- worth $10,000 for four years of college. It's the right thing to do." Okay, education is my soft spot. You can just about ask for a blank check for schools, and I'll sign my name on the line. That said, I'm not sure that tax credits are the right way to implement this, though. Schools, as much as I love them, are frightfully inefficient beasts, full of bureaucracy and excessive layers of management (at least, the UC system is). I wonder if we could afford students the same level of benefit by making the schools more efficient with their funds. Maybe I just don't understand because I've been fully funded to attend school all my life.

Another probably controversial question: will a society consisting entirely of college graduates be sustainable? Or will we have a similar situation as we do now, except the person ringing up your fast food order will have a BS instead of a GED? I'd love to see some data or a study suggesting either way; I've really got no clue. I'd love for everyone to be that well-educated, but I also need a reality check.

On illegal immigrants: step 1 must be adequately securing our borders. Unless you have fully secured your borders, offering amnesty is simply incenting more illegal aliens to get here faster, so they can be part of the next amnesty grant. Call me cold, but this should apply to the children, too. Children have always suffered and will always suffer for their parents' indiscretions. Sadly, this situation is no different.

On infrastructure: yep, same as last year. I'm curious as to how we'll be doing the bit with private industry. For example, in the Dallas Fort-Worth area in Texas, there are a number of toll roads. These were funded with taxpayer dollars, but are privately owned (some, ultimately by overseas corporations) and will likely never pass into American hands. Should such crucial infrastructure be owned and operated by foreigners? Should we be giving these tax credits to foreigners? If the goal is making competitive infrastructure with the rest of the world, I think the answer here is no. So again we'll have to be careful how this is implemented. The devil's always in the details.

"Within 25 years, our goal is to give 80 percent of Americans access to high-speed rail." Splendid. I was always disappointed that we didn't have railcars like Japan, China, Korea, and Europe. Those things are sweet.

The next remark was flippant, but hit me like a sack of bricks. "This could allow you to go places in half the time it takes to travel by car. For some trips, it will be faster than flying -- without the pat-down." (emphasis mine). Whoa. Either 1) we're going to need good security for these newfangled expensive rail systems that we want all these people to use, 2) we don't actually need the invasive pat-downs from the TSA, or 3) both. In any case, this remark is completely off-base. I find the fact that the President is making light of the erosion of my freedom to not be groped when I travel about the country very alarming. Very alarming indeed. This is not a perk, and it should not be a motivator for developing new rail systems. I'd like them to stand on their own merits, thanks.

On Internet access: by all means, fund it, but make sure the public is getting what it's paying for. That means strong assurances of Net Neutrality, the cornerstone of the Internet's equalizing power. Net Neutrality has been the de facto standard for many years, and thanks to the geniuses behind TCP, it's in everyone's interests to reduce congestion, and proportional-share allocation already works. Without Net Neutrality, big companies will be able to edge out small startups. If it weren't for Net Neutrality, we wouldn't have Google, Facebook, or Twitter, because they would not have been able to grow and compete on a net dominated by large anticompetitive companies. The FCC decision does not provide adequate Net Neutrality provisions for wireless carriers. Increasingly, our young and poorer demographics use their cell phones as their only source of Internet access. Failure to provide Net Neutrality will ultimately prove an unfair disadvantage to these peoples in the digital world. I do wish Obama had mentioned the importance of Net Neutrality in promoting innovation - it ties in so well with the rest of his platform.

On simplifying the tax code: great idea. We'll have to see how that plays out.

On regulations: very diplomatically handled.

On health care: everything I said yesterday still stands. "What I'm not willing to do -- what I'm not willing to do is go back to the days when insurance companies could deny someone coverage because of a preexisting condition." Again: someone's gotta pay for it, and we already spend more than every other nation in the world per capita on healthcare. And whereas the healthcare bill was presented as reducing our deficit, it has yet to deliver on that promise.

"Now, the final critical step in winning the future is to make sure we aren't buried under a mountain of debt." Ah, finally, the deficit question. He proposes the spending freeze, Gates agrees we can do without some of our military funding, still only accounts for tiny portion of our expenditures. "Now, most of the cuts and savings I've proposed only address annual domestic spending, which represents a little more than 12 percent of our budget. To make further progress, we have to stop pretending that cutting this kind of spending alone will be enough. It won't." Damn right it won't. Let's hear the rest. "...the only way to tackle our deficit is to cut excessive spending wherever we find it -- in domestic spending, defense spending, health care spending, and spending through tax breaks and loopholes." Again, agreed.

"To put us on solid ground, we should also find a bipartisan solution to strengthen Social Security for future generations." Ugh. No. We should get rid of the program entirely, and stop playing musical chairs with the debt. It is not the government's place to provide for the elderly. "We must do it without putting at risk current retirees, the most vulnerable, or people with disabilities; without slashing benefits for future generations; and without subjecting Americans' guaranteed retirement income to the whims of the stock market." Umm...how do you propose we cut costs, again?

On transparency in government: yes, put all that stuff on the Internet. And more. And stop playing silly games classifying documents that don't need to be classified. And keep up with the FOIAs. And quit claiming "state secrets" to cover up things that the citizenry won't agree with. Thanks.

Blah blah blah terr'ism. Shouldn't have been in all these countries to begin with; it's about time we got out of there.

And the rest was meant to be inspiring, but didn't really work on me.

So, in review: an awful lot of the same things. Education, science, and development. Some shenanigans about spending and the deficit. And then closing with inspirational remarks. Sounds like a recipe.

2011-01-27 | 0 comments

In another delightful instance of "small world, huh?" I found out that Ian Haken, a friend of mine from TAMS, is also taking the same Computer Security course as I am. I didn't even know he was at Berkeley. The conversation went something like this:

Dr. Song: "Okay, let's take a short break!"
Me: *walks over* "Okay, this is gonna be really weird, but...you look frighteningly familiar. Are you Ian Haken?"
Ian: "...yes, I am." *suspicious eyes*
Me: "Drew Fisher, TAMS class of '06."
Ian: *pauses* "You've got a lot more hair than you used to."

And then after class we caught up with what we were both doing with our lives, talked about Nokia tablets (he has an N810!), and I gave him a tour of the BiD lab. We might work on a security project together; who knows.

I'm excited, because GMail deployed HTML5 desktop notifications. Awesome. Wonder if I can hook that up to the rest of my desktop notifications via the D-Bus NotificationItem-1 spec. That would be excellent.

I'm also excited, because KDE 4.6 is out:

KDE logo

2011-01-28 | 1 comment

Aww, crap. I wake up and there's 23 spam comments in the queue. They don't even conform to my markup language. The websites they link to also don't exist. It's like they're random robotic web vandals. Looks like it's time to implement some anti-bot tactics. UPDATE: we'll see if this works.

2011-01-29 | 0 comments

My laptop's backlight is fading on the left side. This makes me sad, since I have a white-on-black terminal that I usually keep on the left that is getting increasingly hard to read.

This was actually pointed out to me at Mystery Hunt, but I think it's gotten worse. Or maybe I'm just using my laptop in too well-lit areas. Or maybe my eyes are worsening, and it's affecting me more. Either way, blah. I may try disassembling the panel and seeing if it's just a loose wire or something.

In other news, Kubuntu fails at packaging KDE 4.6 - despite my best efforts, the gstreamer Phonon backend (now made default!) and Pulseaudio are not getting along at all. As in, I can crash both systemsettings, plasma-desktop, and pulseaudio itself, all by trying to play a test sound. Good job, guys.

I shouldn't complain; rather, I should track down the bugs and fix them. I'm happy to fix upstream bugs, but a tad frustrated with distribution bugs. I'm considering installing Fedora on my desktop, since they manage to do a much better job of shipping a working, fully-featured KDE. One prerequisite for switching is verifying that I can (without too much trouble) do all the same things that I used to do with Ubuntu. So I made a list, and am working through it. Tasks remaining include running a DHCP server and verifying support for GRUB2.

Beef: it's what's for dinner:

Lots of chunks of cooked steak on a plate.

2011-01-30 | 1 comment

Last night, Jono and friends held a get-together to celebrate Australia Day (which actually takes place on the 26th, but this was the opportune weekend day). We grilled sausages, watched The Castle, and then sat around and talked about all sorts of things. One of Jono's Australian friends and I talked about politics and political theory for quite some time. We covered health care, parents' rights over children, age of independence, and the greater standard deviation of wealth in America as compared to other prosperous nations (and in turn, its positive and negative impacts). We also spent a while analyzing how the US and China are interacting financially, and how we're both parasitic toward the other. I spent a good portion of today reading up on the theories of John Rawls and Robert Nozick.

This analysis of Google Maps' readability is spectacular. I found it linked from this site, which makes note of small design details that have a large impact on usability. Cool stuff.

2011-01-31 | 0 comments

I'd forgotten how long it takes to copy 351 GB over the network. Even with gigabit, cruising at 20MB/sec (which is rather optimistic, given that the other end has to flush everything to disk as it goes, and there are plenty of small files that will wreck performance), you can expect to spend 5 hours. Using a 10/100 switch will take about twice as long. I'm pretty sure it's still faster than doing the same thing with a USB disk, though.

So, hopefully my backup will finish by noon (it didn't, but it did finish within 15 minutes of noon), after which I can safely wipe my desktop, go crazy with repartitioning, RAID, encrypted volumes, and LVM, and install Fedora. Woohoo.

PG&E's automated caller called me at 8:00 this morning to remind me about my appointment tomorrow. Yes, I haven't forgotten. Yes, it woke me up, and I can't even be productively grumpy toward the computer.

I did not get into the Swing DeCal. Darn.

2011-02-02 | 0 comments

Discovery of the day: on Fedora, simply setting "NM_CONTROLLED=no" in /etc/sysconfig/network-scripts/ifcfg-ethX does not stop NetworkManager from managing the interface. You also need to specify the appropriate MAC address as the HWADDR. This took me way too long to figure out.

It also took me a while longer than I'd anticipated to discover that NetworkManager 0.8 does not support ethernet bridges. While this was fairly expected, I was still a little frustrated that I couldn't find this in the documentation for a long time.

BiD lunch today was pretty awesome - not only did Anuj and Nick walk to Cheeseboard and back to get six delicious pizzas, Jonathan Bachrach came and gave a slick talk on his ideas for the future of materials, CAD/CAM, and construction. He presented a technique for constructing many types of solids by chained tetrahedra by proving their satisfiability, doubling the voxel resolution, incrementally merging paths into a single loop, and then exploding the solid into a chain, tracking angles at each tetrahedron's bounds to produce the folds necessary to fold the desired solid from a straight chain. It was like doing protein folding backwards - start with what shape you want, know that it's possible to make, and then work backwards to a starting point. The best part is that each tetrahedron in the chain can be represented as a single bit. Sweetness. Sample application: reconfigurable materials. Turn your desk into a chair, a fan, an addition to your house, anything. I was impressed. One of the coolest things was that his "slides" were not done in Powerpoint, or Keynote, or anything that you normally do slides in. He had a full hour's talk prepared as a long sequence of interactive 3d models, which he'd flip through like a slide deck (but so much slicker). I am inspired to give awesome presentations.

I meant to go swing dancing tonight, but my garage gate opener is defunct (or perhaps the gate motor or receiver is, or something), so I would have wound up missing much of the lesson and not being able to give a ride to my compatriots, so I decided to bag dancing tonight in favor of calling my parents, which worked out nicely. I hadn't talked to them in rather a long time, and it was great to catch up.

2011-02-03 | 1 comment

Oops, I managed to get the datestamp on yesterday's entry wrong. That can happen when you're not in the same timezone as your server.

I'm bummed that OpenSUSE backed out on systemd integration for 11.4. Looks like Fedora may be the first to ship it after all.

I think I've gotten everything that I used to run on my desktop functioning again. Whether or not this will persist across reboots is something that will be determined after I get home - I've learned not to fiddle with network configuration and reboots remotely.

Oh, and I need to fix Fedora's GRUB2 numeric sort. Somehow, 2.6.35.10 is sorted as "less than" 2.6.35.9, which is just flat wrong.

UPDATE: definitely did not configure things to persist across reboot. The following sequence of events looked something like this:

2011-02-04 | 1 comment

Today:

2011-02-05 | 0 comments

I keep saying that neither of the dominant powers in the government are doing enough to get our spending under control. At the risk of sounding pretentious, I'm right. So is Rand Paul. Although as I've noted before, I'm a sucker for education and research, so I flatly disagree with many of the cuts he's proposing, I think this is the first legitimate proposal for spending cuts that comes close to the order of magnitude that we need to get our budget under control.

I spent several hours today on Python Challenge. It's kinda like notpron, except meant to be solved with the assistance of Python programming. I learned more about the httplib module, the regex module, the zipfile module, and the pickle module, so I'd say it was a decent investment of my time.

Patent reform: you're doing it wrong (pdf). Giving patents to the first inventor to file (rather than first to invent) means that large multinational companies with lots of resources can take patented ideas from other countries and patent them in the USA. Smaller damages means it won't cost as much for the big companies when they're found to infringe on each other's patents, but also means that it won't cost them as much when they're found to infringe on small companies' patents. And what happened to prior art? The whole thing seems to make patents worse at their original intent - to promote innovation by those who fear others would copy their ideas before they can monetize them. This proposal weakens patents as the leveler between the small innovator and the large corporation.

This also sucks for academia, where you're supposed to publish as soon as possible, once you have good results. Now, if you want ownership of your idea, you have to get your patent filing in first, too, in addition to getting your system working and reduced to practice. This could have the unwanted side effect of forcing innovators to pick between publishing and patenting.

If you've been following the George Hotz vs. SCEA lawsuit (summary: Hotz succesfully reverse-engineered and published an unrevokable key used in the PS3 security system, SCEA got mad and filed a lawsuit against him in California (he lives in NJ) to make an example of him), **** just got real. I think I'm pretty well-informed on the facts in the case, and while I don't know all the relevant US court cases, it seems pretty clear that Hotz hasn't broken any law.

This evening, Luke and Jake invited me over for some Settlers of Catan. At 10:15 pm. 'Twas awesome. After much distraction, we played a fine game in which I won by a single turn at the very end, thanks to a Year of Plenty that I used to build a road and a settlement on a desert space, which I followed up with a Victory point. It was a thrilling game. After the round, we sat around and chatted for a while, and Jake played songs on guitar, and then we played a few matches of N64 Super Smash Brothers. Jake is ridiculously good as Link. Eventually, it was quite late, so I grabbed my tools (I'd left the set with Luke from when we built our multitouch table early last semester) and headed home.

2011-02-06 | 1 comment

As part of my efforts to harmonize my home directories (and ensure I have an offsite backup of important schoolwork), I've set up ownCloud on my dedi, which I can mount via webdav with davfs2. It takes a good long while to upload 5GB of data to my server via a residential modem.

I've also discovered that rsync with its default options doesn't play nicely with davfs2 and ownCloud - not sure why, but TONS of files wind up in the lost+found folder. Throw in the --inplace option, though, and everything works just dandy. It's the strangest thing.

Also, based on my apache logs: it would probably be wise if I pushed the ownCloud logs off into another logfile, 'cause MAN, WebDAV is chatty. I suppose there's not really a better way to do file locking over a stateless protocol like HTTP, but still. In addition, it'd be great if WebDAV supported ctimes and mtimes, because something in the chain (davfs2/owncloud/ext4) is losing them, which means rsync wants to overwrite every file, including the ones that have already been transferred. This is fail, and merits further investigation.

Today was also Super Ad Sunday, a day during which (in accordance with tradition) Americans watch hilarious ads for cars and other products, punctuated by snippets of American football. Andy, the BiD lab grandpa, invited the whole lab over for the afternoon, and there was talk of meeting to go rock-climbing beforehand. It turned out that I was supposed to meet up at Andy's apartment, rather than at the rock-climbing gym, so I was the only one who went rock climbing, but I had a great time and thoroughly wore out my arms. The gym does mostly bouldering, but also has a couple of slacklines, rings, and a ladder consisting of doorframe-size holds. I learned proper climbing technique from a couple guys who were doing ridiculous routes. I discovered that my body is pitifully weak. I must resolve this.

As for the party: there was much food and drink, and about a dozen folks gathered to celebrate. After the game was over, we played some Rock Band, and I finally got to try out the keytar. I think I'd honestly do better with a staff and sheet music. Maybe I just need to get used to the key/color layout, and then it'll all make sense. Thinking about what key the songs were in and the chord progressions they used made everything a lot easier. I could play Pro mode on medium/hard, which I consider not bad for a first try. After playing a bit on keytar, Lora made fresh ramen and I boiled gyoza, and then I took a turn on the mic, singing "Saturday Night's All Right for Fighting" by Elton John. Good times.

2011-02-07 | 0 comments

I've isolated the datestamp bug to davfs2 by testing the same rsync on a dav folder served up by apache's mod_dav_fs, rather than by ownclould. Since the result (incorrect timestamps) was the same, I've concluded that owncloud is not necessarily the problem. Time to dig into the davfs sources and figure out what the deal is with timestamps.

A couple random quotes:

2011-02-08 | 1 comment

Happy birthday, Sarah Luna! May you find joy in everything you do.

2011-02-09 | 0 comments

I sent my friend Sarah a surprise yesterday - a copy of The Upside of Irrationality. Looks like it arrived. :)

According to John Canny, one of the annotated data sources used for speech recognition is...reality TV shows with transcripts. My mind is blown - I thought that reality TV couldn't be useful for anything. Apparently, I thought wrong.

Now I want to think about other ways that something I consider useless could, in fact, be turned to work for good.

2011-02-10 | 3 comments

It's been an interesting 24 hours.

Last night, I dove back into my broken high-resolution patchset for libfreenect, the open-source Kinect drivers. This debugging trip took me through compiling libusb from source to enable debug messages, finding that libusb was getting a status code of -2, searching through the Linux kernel for the matching ioctl(), and eventually finding that the command in question was returning -ENOENT, which means that the device completely disappeared. As a result, subsequent libusb calls to the same open device handle would cause libusb to crash. Ordinarily, you'd stop sending commands to the device as soon as it disappears, but the cleanup code in our demo wanted to shut the device down cleanly.

It took a while for me to realize what this meant - through a particular series of control commands to the Kinect, I was CRASHING THE KINECT, and it stopped responding to further communications. After a couple of random tests, I hit on the solution: don't send the "stop the video" command more times than you send the "start the video" command.

Then there was another bug in my own code that had evaded me for two months where, when starting a video stream, I'd queue up 16 isochronous transfers before aborting because the pixelformat/resolution combination was invalid. Obviously, I should have done the check up front and failed early, before calling any functions with side-effects. If I'd followed marcan's software development advice, I would have figured this out a long time ago. He writes:

"One great technique to use is to do as much as possible in advance. Gather all required information about the system, read any required data files, prepare any modifications, and only at the very end actually commit the changes to the device. If anything goes wrong during the preparations, you can just abort the entire operation and be certain that the device is still safe."

Bingo. And as soon as I did that to my code, everything started working consistently. Thus, I'm now in cleanup mode for this patchset, which I hope to submit upstream some time in the next couple days. Many thanks to Antonio Ospite for testing and reviewing my patches.

So, all that was last night. As for today: the noteworthy event was the miracle berry social hour.

The CS department regularly hosts social hours, which usually consist of a person or two getting a bunch of somewhat-themed foods and beverages, and then bunches of people would gather and chat for a good while. This week, Justin (who is one of my teammates for my security project) organized a social hour themed around the miracle berry. The interesting thing about this particular berry is that it contains miraculin, a glycoprotein that fools your taste buds into thinking sour things taste sweet. It's pretty crazy.

So, Justin had procured $60 worth of miraculin tablets and $40 worth of other foods, like lemons, limes, oranges, tomatos, pickles, radishes, and so forth, and they were all sitting neatly arranged on a table outside Wozniak lounge. I let half a tab of the miraculin-cornstarch mix dissolve on my tongue, and then ate about a third of an orange slice and nibbled on a lemon wedge. It was pretty weird, having the lemon taste so sweet.

Then I started getting a headache, so I went inside the Woz to sit down. Shortly thereafter, I realized this was no normal headache, but rather a low-blood-pressure headache. I took off my backpack and put my head between my legs, in an attempt to stay conscious.

Then the nausea hit. I hastily moved to a chair next to the giant trash cans. Justin watched over me as I described as best I could that I was suddently unwell, my blood pressure was dropping, I might pass out, no, I'm not diabetic, no, I don't have any known food allergies, and no, I don't need an ambulance quite yet, but if I do pass out, that might be a good next step. Then I puked what little I had eaten up, which was a most unusual experience. Thanks to the miraculin, the bile didn't really taste bad at all - it was mostly sweet, with a very small hint of puke flavor.

By this time, I'd attracted a small crowd of folk who watched over me as the color slowly returned to my sickly-white face. Justin brought me my backpack and my "Powered by Open Source" hoodie which lay across the room. Another guy brought me a cup of lukewarm water. I shivered in shock for a bit, but remained conscious, and after a while, my fingernails turned from blue back to their normal pink, and I was able to stand up and walk around again, after which I went home and took a nap.

Other thoughts: I've had this particular response to stimuli three times in the past six years or so. All three were after receiving flu shots, so I've come to associate the headache, optional passing out, and optional nausea with that particular immunization (although really, it's just vasovagal response). As for what happened today: I'm unsure, but if I had to guess, I'd say maybe I'm one of the rare people with a miracle berry allergy - the internet seems to suggest that in rare cases, people get nausea and cold sweats after consuming miraculin. I was quite proud that I did not pass out this time, and in retrospect, this was perhaps one of the best circumstances I could have had such a reaction in. After all, I was surrounded by intelligent friends who looked out for me and entertained me while I recovered.

Clearly, I'll have to test this out again under controlled conditions.

2011-02-11 | 2 comments

I registered this domain less than a year ago. Before then, I was practically impossible to find on the Internet - I had a small website that I hosted as a subdomain under my friend Matt's domain. It sat on a VPS that later went belly-up when the admin managed to (in one fell swoop) ruin every client's filesystem. Good thing we had backups.

Fast forward to today. In the past year (as far as the web is concerned), I've created my blog and written up a couple of projects. I've made a brief landing page. I still haven't gotten around to doing any design for the site. Nonetheless: search for my name on Google today, and I'm the top result (at least, for all the boxes I have access to).

What does this even mean?

2011-02-13 | 0 comments

Man, what an awesome day today was.

Lora invited me to join her Buffy the Vampire Slayer-watching group (which consists mostly of friends from when they were all at Stanford). It turns out they were in the middle of Season 5, which was not far from where I was in the series. I agreed, and since I have a car and she doesn't, I volunteered to drive.

The day held much more than just watching several episodes of one of the better TV series of the late nineties and early noughts. Here's a summary of the day's events:

It was quite the fun several-destination trip, and I met tons of friendly people. Yay!

2011-02-14 | 1 comment

My laptop's backlight went out again today, and stayed out. This was quite unfortunate, as I was expecting my laptop to last me a good while longer. So, since I had planned to spend my Monday with a functional laptop (since the Qualcomm Innovation Fellowship app is due tomorrow ahhhhhh!), I spent a couple hours with the best screwdriver I've ever used, and tore my laptop apart. Wouldn't you have done the same? :D

A couple pics:

Laptop in pieces on the table.
Laptop in pieces on the table.

Backside of the monitor, once removed from the chassis.
Backside of the monitor, once removed from the chassis.

Closeup of the high-voltage power connector that I reseated
Close-up view of the high-voltage backlight power connector that I disconnected and firmly reseated.

I put it back together, and boom! Backlight was back, and I could use my laptop once more. It wasn't how I had planned to spend my Monday, but it certainly beats being out a computer.

2011-02-15 | 1 comment

Kenghao and I have submitted our proposal for the 2011 Qualcomm Innovation Fellowship competition. Woohoo, it's done.

My high-resolution support patches have landed in the unstable branch of libfreenect, which means I've broken everything thoroughly. On the upside, I've gotten some great feedback on my patchset, including at least one successful tester on Windows (which I never so much as tried to compile on), and some great discussion on acceptable API changes.

I also learned today that the guy who has taken a leading role on maintaining the wiki and FAQ for OpenKinect as well as answering lots of questions on IRC doesn't even have a Kinect. Nonetheless, he manages to help bunches of people with their issues. He's just really observant (he's pointed out inconsistencies in our documentation that I missed) and remembers what other people say, so he can share solutions to the same issues. I am thoroughly impressed. bankP (his IRC name) is a wonderful example of the fact that you don't have to be a software developer to contribute to and make an impact on the open-source community.

Bruce Schneier wrote an interesting article on why society and security is tougher in the developed world.

There have been tons of articles on the recent series of events regarding Anonymous and HBGary. While I won't go into the details of how the security firm got their servers hacked and tens of thousands of emails leaked (by a group of 5 people, including a 16-year-old girl), I do find it worth discussing what has come to light as a result: corruption.

What sort of corruption, you ask? Mafia-like tactics being leveraged by our government and large corporations against their opposition. This report is an excellent overview of what's been discovered. In particular, Bank of America and the US Chamber of Commerce both hired Hunton and Williams to solicit proposals to deal with Wikileaks and critics of the Chamber. A team of three companies - HBGary, Palantir Technologies, and Berico Technologies - submitted a proposal that included offensive tactics against individuals, suggesting that they should "target opponents' personal lives and family".

It's interesting to note that while Palantir and Berico have since both severed ties with HBGary and denied involvement in such proposals, the leaked emails (full site here) strongly suggest otherwise. Oh, and then after vehemently denying involvement in the Wikileaks proposal, Palantir disciplines an employee for involvement in the Wikileaks proposal. I DETECT AN INCONSISTENCY IN YOUR STORY.

I'm alarmed that our government and corporations are stooping to such tactics. I've got so many questions. What has happened to the concept of honor, or integrity? Where is transparency and accountability? Why did it take the efforts of a group of hackers engaging in retaliation to stumble upon this? Is this an isolated instance, or are these sorts of tactics systemic in our government?

Finally, one more question I'm almost afraid to know the answer to: if we had more transparency in our governments and corporations, what else would we find?

2011-02-16 | 0 comments

My friend Nick Zentay got into grad school, fully funded, at Texas A&M! I am proud of him.

Taint tracking has to be the most underwhelming security tool I have ever heard of. It simultaneously produces too many false negatives and too many fakse positives. Any attept to reduce one increases the other, and both mistakes can be easily triggered by benign code and malware alike. It balloons completely out-of-control, unless you designed the whole program you're analyzing with taint tracking in mind, in which case you already reap the benefits of privilege separation thanks to a clean architecture. I'm a little frustrated that we spent so long in Security today talking about such a fundamentally flawed idea. Time to read some refutation papers (and then the refutations of the refutations).

2011-02-17 | 0 comments

Last night, I watched IBM's Watson defeat the two winningest human Jeopardy players in the show's existence. It was one of the most impressive things I've seen in recent history. Best part: during final Jeopardy, Ken Jennings writes his answer:

Who is Stoker?
(I for one welcome our new computer overlords)
$1000

Who is Stoker? (I for one welcome our new computer overlords)
Source

Unrelated: my laptop's backlight now provides even lighting. This was not the case on January 29th, when I wrote about how the left side was fading, nor was it the case when I was in Cambridge for the Mystery Hunt, when someone pointed out that my monitor was kinda dark on the left side. But it appears to be fixed now!

My dad sends me this article from Fox News, with the comment "I truly believe that the nation is setting up your generation for an economic collapse by refusing to get the budget under control." I've written about the US's failure at fiscal responsibility before. Unfortunately, dad, I can't disagree.

2011-02-18 | 1 comment

An article in Icarus suggesting that there could be a Jupiter-sized gas planet in the near Oort cloud? How very interesting.

The SEC folk who are supposed to be regulating Wall Street later leave and take lucrative jobs at the major firms? Sounds like a bit of "you rub my back; I'll rub yours." How very interesting.

Whoa. I just ran into one of the students in my HCI class. While I was doing laundry. In my apartment building. Apparently, he lives here too.

2011-02-19 | 2 comments

I wrote a not-even-half-baked log-parsing script so I could go through my website logs and see how people were finding my site. With all due respect, I'm not interested in how my friends arrived at my site - they generally either have the URL bookmarked or in a feed reader or some combination thereof. No, this is targeted at the people who don't know me and wind up on my site (and hopefully find it interesting). I analyzed only the most recent week's logs: Feb 13 - Feb 19. I have my site's lifetime of logs, though, so I could feasibly run this analysis on the entire history, if I automated it a tad more.

I get the vast majority of my non-self-referred traffic from Google. This does not particularly surprise me. What does surprise me, though is some of the search queries that manage to land on my site. So I went back to Google and performed the same searches, and noted which result my site was, at the time of writing. All query strings are reproduced verbatim.

Google query stringGoogle rankingReferred pageComments
18F2550 linux7thhttp://zarvox.org/usbsnes/Whoa. A chip name and "linux" gets you my website? Crazy.
Based on HID-Test by Christian Starkjohann4thhttp://zarvox.org/usbsnes/So, that's the guy who wrote the V-USB library I used for that project. Does it merit a top-10 result? I doubt it.
drew fisher1sthttp://zarvox.org/We already discussed this one :)
cr48 cut and paste shell to chrome qemacs4thhttp://zarvox.org/shortlog/month
pollingg routine in assembly language4thhttp://zarvox.org/usbsnes/Spelling mistake is faithfully reproduced
nick peach hbgary22ndhttp://zarvox.org/shortlog/monthThis is what happens when a bunch of otherwise unrelated blog posts get indexed together.
zarvox5thhttp://zarvox.org/
inside of ddr padsImages: 31sthttp://zarvox.org/ddrpad/gallery/ddr_pad_project/original_img_1118_jpg.jpegPeople seem willing to go through a lot more images than regular web results.
pg&e fee emergency power hook-ip???http://zarvox.org/shortlog/monthI have no idea. I couldn't find this result.
atmega328pImages: 6thhttp://zarvox.org/ddrpad/RedArrow.pngFor some reason, I get a surprising number of Google Image results for the red and blue arrow schematics from that project.
Use Xbox 360 Dance pad on stepmania7thhttp://zarvox.org/ddrpad/Here's what you do: you plug it in. That's all.
atmega328 led internal resistor pull-up8thhttp://zarvox.org/ddrpad/
Drew Fisher1sthttp://zarvox.org/Note the capitalization.
usb hid controller parts9thhttp://zarvox.org/usbsnes/
drew fisher2ndhttp://zarvox.org/resume.pdfThis one found my resume, which is a good second result after my website for my name, methinks.
v-usb hid report descriptor size calculate34thhttp://zarvox.org/usbsnes/
pic micro snes controller usb5thhttp://zarvox.org/usbsnes/And I didn't even use a PIC for that project.
how can i know if my usb snes adapter works2ndhttp://zarvox.org/usbsnes/Try it out and see? Also, really? 2nd?
miraculin and effecting taste????http://zarvox.org/shortlog/monthPedantic: wrong use of "effecting"
light dance pad10thhttp://zarvox.org/ddrpad/I happen to know I'm #1 for "LED dance pad"
rock band keytar python script????http://zarvox.org/shortlog/monthI couldn't find this one in the results. Color me surprised.
at90USB breadboard37thhttp://zarvox.org/usbsnes/I guess I mentioned that chip on my page, and how I didn't use it.
Drew Fisher berkeley4thhttp://zarvox.org/resume.pdfThis search came from a Mac user in Germany. The first three results were from a class wiki and the BiD webpage.

I also had one user manage to arrive at my site via Yahoo, with the query "arrow LED using microcontroller" which found http://zarvox.org/ddrpad/.

I had one visitor from a Windows 98 machine.

Today I learned the proper name for the condition where you have eyes of different colors: Heterochromia iridum. One of my friends in middle school had one golden eye and one brown one.

2011-02-20 | 0 comments

The battery in my UPS is failing. As a result, it makes this obnoxious beep at regular intervals. I've decommissioned it in favor of my (epic) 12-port power strip, at least until I can get a new battery or new UPS.

2011-02-21 | 1 comment

Hehehe, Johnny Lee (of Microsoft Kinect fame) was behind the Open Kinect bounty. Apparently he wanted PC support for it when he was working on the project at Microsoft, and management didn't. So he hatched a plan to get that technology into the hands of the people that might create awesome stuff with it, and with the help of the folks at Adafruit and a worldwide community of hackers, he showed the world just how cool NUI technology could be. Microsoft caught on, and has now announced a development kit for researchers and enthusiasts for Kinect on the PC this spring.

I'm excited for this.

2011-02-23 | 0 comments

Whoa. In my apache logs:

171.159.64.10 - - [23/Feb/2011:00:35:47 -0600] "GET /shortlog/month HTTP/1.1" 200 29875 "http://www.google.com/search?hl=en&source=hp&q=nick+peach+hbgary&aq=f&aqi=&aql=&oq=" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; MS-RTC S; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8)"

Again: no good reason I'm that result. Who was searching, anyway?

(03:24:23) zarvox@rabbit ~ $ host 171.159.64.10
10.64.159.171.in-addr.arpa domain name pointer spxysfo1.bankofamerica.com.

I'm a little creeped out. I would guess that either 1) someone inside BofA is looking for info about their contact with HBGary, or 2) someone inside BofA is looking to see what the Internet currently says about them.

In other news, Kenghao and I made some progress on our research. I implemented a root-finding algorithm in C, and optimized it over a moving window of functions by applying Newton's method.

Initial benchmarks showed my approach to be about half as fast on my laptop as just solving for all roots explicitly with the BLAS eigensolver. On Kenghao's machine, it was even worse - my code was slower by a factor of four.

Then we tried it on a Nexus One, and my code was 37% faster than the eigensolver. Since this is intended for mobile phones, eventually, this is promising. Later, I remembered that I hadn't enabled compiler optimizations, and even on my computer, performance shot to within 20% of that of BLAS. I still have some ideas on how to make it even faster.

2011-02-24 | 2 comments

It's raining hard. I love the sound of the rain at night.

I have an offer for a summer internship. Hooray, I won't starve this summer!

Go read Sarah's post on Quiet People.

2011-03-01 | 0 comments

Gah, algorithms problem sets SUCK. On the upside, I'm getting lots of good practice writing things in LaTeX - real LaTeX for my homework solutions, and mostly real LaTeX for equations in Google Docs, where I take my notes (gotta put that CR-48 to good use!).

Reza brought his Vizsla (named Keplar!) into lab today. He loved playing fetch. I could probably get along well with a Vizsla, or at least this one - he was very quiet and unimposing, yet friendly and energetic. Usually I find dogs either too loud and whiny or too slobbery, but Keplar was pretty chill.

Reza and Kenghao and I went through a bunch of piles of old electronics from research projects past. Among various other things, we found several USB soundcards with 5.1 out, optical out, and optical in, and they work out-of-the(-carboard-storage)-box under Linux. I couldn't help but think of Gabe and his awesome mixing with his falling-apart Mac and that unusually-nice external sound card. Maybe if I have free time again, I'll play with mixxx some more - the ability to DJ properly wouldn't be a bad skill to have.

I am not needed for jury duty at 8am after all. I will check back between 11 and 12 to see if I am required for roll call at 1pm.

UPDATE: wasn't needed at 1pm either, which is an excellent thing, since I needed the sleep. Still super tired.

TODO: write letter of recommendation for A&M prof, reformat lecture notes for security class (before lecture), reimplement my Newton's method algorithm with additional intermediate steps to make it work more of the time, and spend some quality time looking at qemu's internals for my security class.

Politics linkdump time:

Supreme Court says (pdf) AT&T and other corporations don't have "personal privacy" rights the way individual citizens do. I agree - without complete knowledge, the free market will not avoid immoral behavior, even if that be the desire of the citizens. I could take that and turn it into a full-blown discussion, but I don't think I have the time nor the coherence to write that up right now.

Republicans still don't get net neutrality. The point is to prevent discrimination based on content - preserving that freedom of speech that you keep hammering on and on about. Adjust prices based on the quantity of bandwidth used, if you like - that's perfectly reasonable usage-based billing - just make sure you market it like that. I could do a proper rant for this too, but again: sleepy, and too much TODO.

2011-03-04 | 0 comments

Wow, I'm really behind. I've only written once in the past week. Ouch.

Wednesday: Leila Takayama of Willow Garage is open-sourced for the benefit of all. Their goal is to make personal robotics a reality. They've also been really excited about the Kinect, and are apparently interested in getting an open-source driver for the microphone array. Say, that's on my TODO list!

As any marketing person should be able to tell you, "under-promise, and over-deliver" is the correct approach to robotics. Tell people that the robots are really dumb, and they'll think much more highly (and significantly so) of the same robots than if you prime them with the belief that they're smart.

Also: robots (currently) take a long time to think when processing huge amounts of sensor data. During this time, they appear completely uncommunicative. Just adding the gesture of "scratching" its "head" while doing this computation made test subjects think more highly of the robots and their intelligence. Fascinating. To make robots more human, we need to give them idle movement.

There was also a good bit on the Texai, a set of telepresence robots. If you watch the Big Bang Theory, you might have seen this episode in which Sheldon uses a Texai to represent himself.

Sadly, since I have class at 1, I had to leave just before the end of Leila's presentation, but suffice it to say: it was pretty cool stuff.

Then in security class, we had a guest lecture from Google's Adam Barth, who is basically the leading mind in security on the Web. We discussed how the Web originally had no security policy, the development of the Same-Origin Policy, how cookies are broken, cross-protocol attacks, and what can be done in the future to improve the security of the web. This was also excellent.

I spent the evening writing a letter of recommendation for one of my professors back at A&M who was nominated for a teaching award. I thought back to writing my statement of purpose for graduate school: evidence-based anectdotes that show what you're saying are more convincing than simply saying something. By the end, I thought it was a pretty good letter. Good luck, Dr. Liu! Thank you for all the guidance and preparation you've given me.

Thursday: I woke up at an unholy hour of the morning to join my fellow BiDizens Wes, Andy, and Lora at Bridge's Rock Gym in El Cerrito. I had MUCH more success at climbing than the last time I was at Bridge's. Perhaps it was the moral support, or perhaps my arms have grown stronger since, or perhaps it was because I ate a good breakfast. In any event, I had a ton of fun, despite scraping skin off my fingers like a cheese grater. I'll grow some calluses if I do this often enough, surely.

After climbing until my arms were doing that thing they do where I can no longer grasp anything long enough to get both feet on the wall, I went home and took a nap. It was excellent.

Algorithms class was uneventful, though I did get a couple more humorous quotes from Satish Rao. For the record, this is the professor who's said:

The other professor for that class, Umesh Vazirani, has also produced some excellent lines:

It may be confusing at times, and the problem sets may suck, but at least the class doesn't lack for entertainment.

That evening, Andrew had organized a potluck dinner party at Luke's apartment, so I made a giant bowl of cucumber salad with many colors of bell peppers and grape tomatoes and mozzarella. Other folks brough roast chicken, chips and guacamole, pita bread with feta and hummus, collard greens, and Luke made this excellent chicken noodle bake topped with melted cheese...all was excellent.

It turned out that the garage door at my apartment complex was defunct (again!) so I couldn't drive, but fortunately David and Shaddi were already heading our way to pick up Jon, so we all packed into the '95 stick-shift and successfully traveled to our destination. (Fun fact: that word can be spelled "traveled" (US) or "travelled" (UK) and both are considered correct.)

Then I got home, reverse engineered the Kinect audio firmware upload procedure, successfully extracted from a USB dump a byte-for-byte copy of the firmware originally found in an update package, and briefly wrote up my work and sent it to the mailinglist before realizing that it was 3am and OH CRAP I NEED TO MEET KURTIS AND BRIAN IN LAB IN 6 HOURS SLEEP TIME.

Friday: Overslept, slightly. Was still was the first one to lab - "Berkeley time" means 10 minutes after when you said something was going to happen. I worked with Kurtis and Brian on some electronics, verifying that various components in the circuit were functional, and trying to hunt down the reason why the vending machine motors were not turning at a satisfactory rate.

Hastily prepared an application and NDA form in advance of my pair of back-to-back Google interviews, emailed the signed and scanned pages off to the recruiter. Why they let you sign the docs with a self-signed Acrobat reader cert but not a PGP key in the strong set is beyond me. Then I ran home, since I have no cell reception in the BiD lab, and no good place to sit for a phone interview on campus anyway. Interviews went seemingly well.

After the two hours of interview (during which time I was very very hungry) I made myself some lunch (bagel and lox + leftover cucumber salad) and settled down for a rather long nap, which resulted in me sleeping through a meeting for my security team. >_>

Time to implement some code for research, then work out patches for libfreenect this weekend.

2011-03-07 | 0 comments

Let's make some NUIse!

So far, there has been little public work on developing drivers that work with the Kinect NUI Audio. For the unfamiliar, the Kinect has a four-microphone array that can be used to identify the direction from which a sound came. Further, the Xbox360 also sends it whatever it's playing out the speakers in real time, so the Kinect can cancel that out from the microphone data. It can hear you (just you!) over the explosions or whatever sound your stereo is playing. That's pretty cool.

However, none of this has been available outside of the Xbox360 SDK. I think that some people would find this useful, and that even after Microsoft releases their development kit for academia and hobbyists, some of these folks might want to use open-source software.

So: here's NUIse, a proof-of-concept driver for the NUI Audio device. I reverse-engineered the protocol and implemented my own software that streams the data from the four microphones to files. I'm in the process of documenting the entire protocol on the OpenKinect wiki.

Since it's hard to post a screenshot of an audio driver, you'll have to settle for this audio recording.

This was not accomplished in a vacuum. I owe thanks to a number of folks that made this work possible. To name a few:

2011-03-10 | 2 comments

Sometimes I wonder if it's weird that I only really have one drawer of files. Financial records on the same level as middle school papers.

Tonight, Andrew and I are hosting a dinner party. I'm supposed to make bread bowls. I hope they turn out well.

I've also been thinking: are there tools to empower or assist manual reverse engineers? I basically stared at hexadecimal digits until they made sense when working on the Kinect, but are there tools to do the same sort of pattern-matching that happens in my mind? Could they suggest structure and interpretation of the data? Would they actually be useful, or only an academic novelty?

I am in the process of writing up an explanation of how I worked out the Kinect audio protocol. I intend for it to:

  1. Show you the way I approached and solved the problem
  2. Share some insights and techniques that might be reusable for other reverse-engineering tasks
  3. Be at least marginally entertaining to those interested in the topic

Sebastian Ortiz posted more USB logs, including some during calibration, so I may be able to get a better understanding of how the noise cancellation works. That will make the aforementioned article longer. Oh dear.

UPDATE: bread bowls turned out AMAZING. Also, I need to learn to get over the dough being sticky on my hands and add more water to bread dough in general.

2011-03-12 | 4 comments

Today I discovered Tax The Churches. I'm curious as to what other people think about this idea, but also about some of the background behind taxes and tax-exempt organizations. I had some other thoughts, but I couldn't express them clearly, so I opted not to write them.

Sometimes there are things that I want to say, or write about, but I'm afraid to make them public for fear of the social consequences of saying such things. Thus, I'm planning to take after roc, write my thoughts anyway, and publish only the hashes. If, someday, I reveal the posts, you'll be able to verify that I had written them at the earlier time. I doubt these hashed posts will be common; I've got too much to do anyway. :P

This weekend is the Southwest Regional Collegiate Cyber Defense Competition. Go A&M! Show off your skills and your teamwork! You guys make me proud.

2011-03-14 | 0 comments

Yesterday, we started Daylight Savings Time. Since everything there still applies, please read my objections from last fall.

CS Visit Day has been going well; more on that later.

Congratulations to the TAMU CCDC team for winning ANOTHER regionals competition. You guys rock!

I find the Programmer Competency Matrix to be excellent. I'm proud to say I fit in Level 3 of a majority of the categories. The nice thing about that visualization is that it reminds me that I still have much to do and learn, and that I must continue raising the bar.

2011-03-15 | 0 comments

CS Visit weekend: a rousing good time. One of my hostees is definitely coming to Berkeley, and I think there's a decent chance at the other. The potential additions to BiD are also fairly cool people.

There are a bunch of BiD folk going to CHI 2011. We may or may not be getting a penthouse for the week.

Mark Browning sent me a link to this video about CCDC that I was (briefly) interviewed for. I had completely forgotten about it. Mark and I appear together at the 28 second mark.

I heard and gave feedback on Anuj's practice quals talk today. His proposal relates to children learning language through asking questions. I need to read more developmental psychology. Mom, friends, moms of friends, and friends of Mom: do you have any good books on that subject that you'd recommend?

Later, I went to a "Microsoft Tech Fest" where I wound up knowing more about the Kinect than the MS rep. I was more than a little disappointed, but in retrospect, I suppose I went into a recruiting event hoping it would be like a tech presentation, which is my fault.

Accomplishment: I have reworked the libfreenect API and sent my patches upstream. We'll see if I can figure out Cython so I can fix up the bindings. I also need to figure out a way to import nuise into libfreenect. Augh.

On that note, though: nuise now detects if it's already uploaded firmware. This means you no longer have to unplug and replug the Kinect (or change source code) every time you want to run nuise. YAY FEATURES.

It rained a lot today. Hopefully my Vibrams will be dry by morning.

2011-03-17 | 0 comments

Interesting read of the day: a guy posted his genetic code on Github, a site for collaborative software development.

Someone else uploaded said code to Promethease, which is a website that analyzes your DNA sequence and tells you interesting things about risk factors or ability.

Now I want my genome sequenced!

One problem with unified message notifications on my phone: when two different people send me instant messages, they appear as the same notification window. When I select it, it opens only the last message sent. This means that if someone sent me an SMS, and then someone else sent me 7 lines of instant message, it's very easy for me to not notice the SMS. This happened today.

Desired behavior: spawn a new window for each contact you receive messages from. This will prevent messages from going unnoticed at the sender level. Each window could receive the yellow "requesting attention" highlight. In fact, this behavior would be nearly trivial to implement, since it's already standardized and specified.

I wonder what the current behavior in MeeGo is. Might have to look at the images again. UPDATE: no wonder my MeeGo experience was so bad in the past. My SDHC card is only Class 2. They recommend at least Class 6. This would vastly improve I/O (by a factor of at least 3), which in turn would improve performance of any operation that is I/O bound, like most things involving photos, or launching applications.

TODO: get nice microSDHC card.

2011-03-18 | 0 comments

Oh man, awesome food discovery: Pineapple sausage from Evergood Fine Foods. Absolutely delicious. I think I could eat these every day. And they're sold at the Safeway just up the road from my apartment. WIN. By the way, Mom, apparently the Costco by the Turnpike and DNT sells these; try them out next time you're up there.

Random question of the day: do you think I am more sheltered or less sheltered than you are? Why?

2011-03-19 | 1 comment

An hour or so this evening: ead2c3784f90a67f57de4baae27f3729. Although I do need to stop fooling around and get back to finishing that post on reverse-engineering the Kinect audio protocol.

2011-03-20 | 6 comments

Wow, awesome party was awesome.

Andy had some folks over for a St. Patrick's Day (observed) party. We totalled 8 - Andy and his girlfriend Kim, Kim's friend Judy, housemate Rachel, former BiD student Seth, and I drove myself, Wes, and Kim from the BiD lab (same name, different person). We had TONS of corned beef, cabbage, and carrots, with Guinness Extra Stout. I baked a tasty loaf of bread, and Wes made soda bread. There was much food and drink and merriment.

I also had passed Games of Berkeley on my way to the FedEx shipping center this morning (mailing back signed forms for my summer internship), and decided I would find Pandemic, a board game that I played with Nick and Eric over winter break and rather enjoyed (though I neglected to mention it in the relevant blog entry). So Andy, Wes, Judy, and I played Pandemic. I forgot the win condition, though, and thought that although we had collected all four cures, we had to eradicate all the diseases as well, so at the time, we kept playing until we ran out of cards, seemingly clutching defeat from the jaws of victory. It wasn't until after the fact that I realized we had actually won. I had fun, either way, and want to play that game more often.

The group also played a bit of Dance Central with Andy's Xbox360 and Kinect. It turns out I do know someone in town with both pieces! It also turns out that Judy is delightfully nerdy, has been following the OpenKinect project, and has been super excited about it! Suffice it to say that her reaction was priceless when I shared that I'm one of the devs on the project. :) It was really neat to randomly meet someone who was familiar with and appreciated my work. I hope we get a chance to meet again - she seemed like a pretty cool friend to have. As a bonus, Andy let me confirm my suspicions about the Kinect audio calibration routine by letting me run it and listen to his speakers, so I can say for certain that I have the audio channels labelled correctly now. Who says you can't have a party and make project progress at the same time! :D

I also wound up teaching Andy's Kim how to French braid hair - Kim has really long, thin, straight blonde hair that braids very nicely. Judy has layered hair and bangs that made it more difficult for me to demonstrate on, but her braid turned out decently too.

Then we played through New Super Mario Bros Wii. I picked up the controller somewhere in World 2, and we played through to the end of the game, which took until shortly after 3am. Practically the entire time was filled with laughter, which is an excellent way for a party to turn out. Fun activities, interesting people, delicious food, and laughter. What a great way to start Spring Break!

UPDATE: I have now implemented email updates for comments. If you don't want to receive notification of reply comments via email for posts you have commented on, let me know, and I'll get around to implementing that feature.

2011-03-24 | 1 comment

Spring Break has been mostly uneventful. I've not travelled anywhere, but I have spent some time reading, sleeping in, working on various brain activities, and generally relaxing.

Today I discovered a leak in the ceiling of my kitchen. Joy. I've notified the landlord, but there's nothing that can be done until it stops raining. (It's been raining on a daily basis for approximately two weeks now.)

I've continued work on the Kinect audio protocol, and I now believe that I will have to correctly implement the cryptographic exchange to enable the noise cancellation. While I don't think I need a private key for this, since every Kinect has different certificates, I will be unable to perform a replay of any of the USB logs that I have available, since they were not collected from my Kinect. I must figure out how the computation was performed, and mimic it fully. This is troublesome, but hopefully still doable. I'm learning about ASN.1 encoding and even more about authentication protocols.

I recently received a card in the mail from my friend Caitlin. Thanks, Caitlin! It really made my day.

I've also spent some time working at solving The 2 Tone Game, a mini puzzle hunt. There's a Stanford-style hunt on April 9th that I'll be doing, and I might also try DASH3 on April 30th. We'll see how busy/hosed I get.

It is one month until my birthday. What I shall do that Sunday, I do not know. Suggestions?

2011-03-26 | 0 comments

After a good while of sitting on our hands, Matt, Jason, Travis, Kyle, and I upgraded our server from Debian Lenny to Debian Squeeze. As a result of some incompatibilities, my blog had about an hour or so of downtime while I rewrote the engine against web.py 0.3. Everything should be up again now; let me know if you seen anything broken.

2011-03-27 | 3 comments

I notice subtle changes in the Gmail interface. Today, they made the green and red status icons used in the Chat contacts list less saturated. I probably would have missed it, except for the fact that the Labs feature that shows little robot icons for people using Android phones still shows in the original colors:

GTalk buddy list with different icon brightness

This was interesting, the most exciting thing I've seen in a while was this:

18:36 <@qDot_> BTW, zarvox, would you like integration rights on the repo? :3
18:36 <@qDot_> BEcause me doing this is getting a little silly, obviously.
18:36 <@qDot_> There's really no need for me to be man in the middle at this point.
18:39 <+zarvox> qDot_: I would love commit rights to the repo :)
18:39 <@qDot_> Ok. I'll talk to Josh.
18:39 <+zarvox> Thanks.

(a half hour later...)

19:09 <qDot_> Congrats. You're a maintainer as soon as Josh gets you added, which will hopefully be in the next few minutes.
19:13 <zarvox> :D
19:13 <zarvox> *gives qDot_ a big hug*
19:14 <qDot_> Something we should've done a long time ago. :)
19:14 <zarvox> heh, I figured I had to show I was reasonably reliable and going to hang around and that my code didn't suck first
19:16 <qDot_> Oh, no, it's more than we're all just flakey and once you get in the routine you forget you can change it or that other people can help.
19:17 <qDot_> But, yes, what you said too.

So, now I'm official an OpenKinect maintainer. Sweet. Thanks, qDot, JoshB, and marcan! You guys rock.

I'd thought for a while that I really ought to make a significant contribution to the open-source world. I'm reaching the age that a lot of the folks who wrote pieces of software that I admire were when they made their contributions, and I'd been feeling like I should be doing the same. I've been programming for over 10 years now. It's high time that I made something useful and gave it to the world. So, one of my personal goals has been to produce a useful piece of open-source software.

I'm on that track now. I'm not done. This is only the beginning. But I'm moving in the right direction. :)

2011-03-28 | 2 comments

Sebastian sent me another USB dump, which I'll use over the next couple days (read: weeks) to verify some useful things about the Kinect audio stream. I'll probably either wind up implementing a decent portion of TLS 1.2 to get this working, or I'll use gnutls or some other library. Trouble is, gnutls is LGPL, and I was hoping to relicense this code under the 2-clause BSD license. I'll figure something out. Probably much later than planned, though - this week is going to be busy. UPDATE: JUST KIDDING GNUTLS WILL BE FINE. I fail at remembering the details of the LGPL.

I woke up for the first time this morning at some hour like 07:30, glanced at my alarm clock, and rolled back over and went back to sleep. I woke up a second time at 10:10 when my mom called me, asking after the whereabouts of my lockpicks (one of her friends managed to lose the key to her lockbox). I woke up for a third time at 11:50, when my phone kindly reminded me that I was supposed to be on campus by 12:05 for lunch with prospective M.Eng. students. That last one inspired fear of tardiness in me, and I rather quickly made my way to campus. Of course, I arrived right on time. :)

I have a frightening amount of work to do this week. A few papers, and implementing process separation for qemu I/O devices for a class project. Time to get intimately familiar with a pile of UNIX socket and syscall functions.

Also time to either implement a GUI in C++/Qt for exploring a dataset I have, or figuring out the Python bindings to clapack. While we're at it: does anyone know which is more draining on a cell phone battery: 100% CPU usage, or constant 3G radio usage? This project has a design tradeoff that probably depends on these numbers.

Also time to read some papers for security class.

Hmm, the word "time" appears eight times in this post (ten if you count the word "times"). Guess what's on my mind lately?

2011-03-30 | 3 comments

Comcast is having an outage that includes my apartment. Annoying. I need to check if they have any semblance of an SLA in their service contract; the amount of time their service is down is starting to get ridiculous.

Good thing I have my N900 and my CR-48, each with service from a different provider. Redundency is a good thing.

UPDATE: Oh, the irony. Right as I finish writing this, service comes back up and nagios sends me an SMS to let me know.

2011-04-01 | 0 comments

Things that are less than awesome:

Things that are awesome:

I feel like I should have some examples of things that are more than awesome, to demonstrate the axiom of trichotomy. Maybe some ridiculous April Fool's day joke will qualify.

2011-04-02 | 0 comments

I baked cookies with white chocolate chips and walnuts. The recipe I used was ridiculous, and called for too little flour and too little baking time. The first batch turned out a bit messy, but the rest were all right (after I added more flour to the dough and baked them for two more minutes).

For the record, the weather is downright gorgeous today. Cool and breezy, but with a nice sunbeam. The serenity makes me want to just sit outside and let my mind wander.

TODO:

I may use libtomcrypt to implement the cryptographic authentication involved for the Kinect (since GNUTLS doesn't understand the cert I have to deal with), but that's getting put off until later, on the grounds that I don't have the time to learn Yet Another Library right now. I think I'm getting close to having that part working, though.

I feel like I've learned an awful lot lately. I've taught myself some reverse engineering, learned more intricate details of how USB works, read the TLS spec and a good portion of the TCPA spec (pdf), and come to understand much more deeply how cryptography is implemented. I've written a big integer library, starting with increment and going to addition to multiplication to modular exponentiation, and deduced several techniques that will make such code faster.

And that's just what I've done in my non-school time. I've learned how speech recognition works, about a thousand problems that are equivalent to least-congestion routing, and a similar number of ways to solve a linear system of equations. I've learned that most security techniques aren't about providing absolute security, but rather making things less easy for people to screw up. I've found that satisficing is way more effective a strategy for getting things done than seeking perfection, but that the latter's purity is itself rewarding. I've started toying with an idea that I think I might be able to turn into a thesis.

Yet, for every fact I learn, I find a dozen more questions, a pile of things I still have yet to learn. There are a zillion lectures that I want to go hear. I have a significant reading list backlogged. My TODO list above is but a tiny sample of what I actually have to do. There is never enough time. I must choose what is worthwhile.

I wonder how close I am to ten-thousand hours spent working with computers. Maybe I've gone over it already. I hope I'm choosing wisely.

Recently, someone asked me through a mutual friend how to become pro enough with computers to pass a particular (rather stringent) interview. I replied with a link to Peter Norvig's Teach Yourself Programming in Ten Years. I didn't mean to be snarky, simply realistic. My friend replied: "it is upsetting to think that I can only be great at a handful of things before I die." It's true. That limiting factor is enough to make you question the sincerity of someone who claims to want to learn something. How much can they really want to understand? Should any of us bother to be a mentor at our field of expertise for someone who isn't willing to put forth the same effort we did to gain our talent?

Is it fair to expect such reciprocity? Is it just to demand it? Is it kind? Who am I to judge whether you're trying to get the cheap benefit of my labor, or if you too are beginning the journey of a lifetime? How could I stand to crush another's curiosity, when curiosity and the passion to learn are the most beautiful things I know in this world?

I will share everything I can, for that is what I would wish from everyone else. In turn, I must recognize that learning doesn't always happen on my own terms. I hope you'll do the same.

2011-04-06 | 0 comments

I'm behind on blogging. I have an extensive writeup of Monday and part of Tuesday to do. They will be post-dated, but eventually posted.

Today, the BiD lab speaker was Nic Ducheneaut, speaking about massively multiplayer online games; namely, the interactions and social structure formed by players of World of Warcraft. This talk attracted a wide array of new faces, including a girl who had hair down to her legs. I wanted to tell her that her hair was awesome and impressive, but had to leave for class. But I digress.

It turns out that WoW is a great platform for research, since there are long-lived groups, piles of quantitative data, and consistency of the game over different cultures (US, Europe, and Asia servers all have the same game structure). It also turns out that the US players are more careless, have less organized groups, and in general, seem to take the game and social structure less seriously. The US players die more than those in Hong Kong or Taiwan, despite spending less time in combat. Takeaway: the US is reckless.

Players tend to start out playing solo a greater percentage of the time, but as they progress, they spend more and more of their time in groups. Part of this is the way the game is structured - as tasks grow harder, you eventually reach a level cap, so the only way to continue to increase strength is by adding numbers to your group.

I found it fascinating that the majority of guilds did not survive more than 6 months, which suggests that organizing and maintaining a guild is a challenging task (which isn't so surprising, really). Further, about 90% of players are in a guild with 35 people or less. Back in the days of raids that required 40 players, this meant that game content was inaccessible to the majority of players. Now, Blizzard has changed to 20-man raids, which helps make them more approachable. The larger guilds have very military-like structures. I suppose that's what they are, in-game.

Players also are moving toward indirect socialization, much in the way that Facebook and Twitter are more passive forms of interaction than those of old. Nic made no judgment of this interaction, simply a statement of fact. He also mentioned Putnam's Bowling Alone, which made me think back to that excellent political science class I took.

All in all, very fascinating work.

Now I'm doing my midterm, for real. Explanation will come in a post-dated entry.

2011-04-10 | 0 comments

This post will discuss events leading up to, stories from, and aftermath of The Game, a scavenger puzzle hunt associated with Stanford. Yes, I'll get to last Monday's post eventually.

A good while back, my labmate Lora introduced me to (among others) her friend Soja, who was in the process of writing a puzzle hunt, and was toying with Rubik's cubes. This Saturday (the 9th) was the date of The Game itself. Lora, Wes, and I formed a team named PhDestroy! for The Game.

We were in the first round of competitors, so we were supposed to report to the Hacker Dojo in Mountain View 20 minutes before our designated start time of 09:30. Since that is early o'clock, and since Lora's parents live in Los Altos (much closer to Mountain View), we opted to meet up Friday night, make dinner, drive down to Los Altos, spend the night there, and sleep in a little more the day of the game. Lora brought fresh produce from her CSA drop which produced a salad and roast asparagus, and I made the delicious pineapple sausages that I've swooned over before. Om nom nom.

Saturday morning, we reported to the Hacker Dojo at about 09:15 (ehh, whatever) to sign release paperwork. Costumes were encouraged, so I wore my trenchcoat and my wizard hat. One of Lora and Wes sported a grey fedora - I don't remember who wore it more, nor who started wearing it, but it worked for both of them.

We had a veritable Smörgåsbord of other things we brought, in case they were useful:

Rather than give a blow-by-blow of every puzzle, I'll just mention two of my favorites:

At the Gates of Hell on Stanford campus, we found a Rubik's cube labelled with some numbers, red or pink hearts, and stars with what appeared to be Braille dots on them. The numbers indicated which of the six faces a tile belonged on, but not all tiles were labelled. I spent a good while working out the constraints, labelling each tile and eventually solving the cube. Each face had three star tiles on the right, and a pattern of red and pink hearts on the left which formed a 3x2 grid, just like a Braille letter. After some fussing about and pinging Game Control which told us there was a typo (the Rs should have been Os), we figured out that the clue read AT EL PALO ALTO (not ATELPALRALTR). I love Rubik's cubes, and (with the exception of the typo), this puzzle was very well put together - it gave enough information such that the most logical way to proceed was the correct one, but left enough to the solver to still be fun.

A webpage with some ASCII art made of a bunch of letters from the set {A, G, C, T}. I broke out the Cr-48, ssh'd into my server, and quickly wrote a Python script for converting three-letter bases into their corresponding single-letter amino acid codes. This was the point where I realized JUST how awesome having the Cr-48 was going to be. Thanks, Google!

There were also several puzzles that we didn't get right off the bat, to say the least. We spent about an hour trying to find a clue in the plot-development page that contained none, rather than looking at the clue given at the next site. We spent a rather long time before we learned to read interleaved 2-of-5 barcodes manually. This gave us a pair of GPS coordinates, which we assumed were in degrees. By the time Game Control confirmed the clue with "yes, m/s" we were already halfway to Saratoga. Whoops.

We also wound up severely off-course when we were trying to solve a puzzle titled "Real irrational" which should have taken us two minutes if we'd realized that we were working with octal numbers for ASCII characters, but instead we wound up with four three-digit numbers that we tried to make sense of by going to addresses on the El Camino Real (same name, right?). This wound up putting us in Sunnyvale, which was also way too far southeast. On the upside, we stopped and got food, which helped put us all in better moods.

As a team, we were probably a bit too stubborn with the puzzles. We didn't know how long we should wait before asking for hints, or what the relative penalty for asking for a hint would be, so being the self-reliant folk we are, we generally didn't ask until we'd been stumped well over an hour. This, combined with Game control being understaffed (and accordingly swamped with calls), put us a bit behind the curve. I'd say our teamwork wasn't bad - Wes provided interesting thoughts and interpretations (and awesome soothing guitar music on the road), Lora had local knowledge and navigation prowess, and I drove and put my mad computer skills to use where applicable.

We finished The Game at 02:06 Sunday morning. The endgame gives you an administrative password that you're supposed to give to one of three characters: a sentient computer program that plays the stock market, the programmer who wrote it and feels it's gotten out of hand, and the mafia-associated CEO of the company that formerly employed the programmer who wrote the aforementioned program. Any choice was considered a win condition. We made the unique decision to give the password to all three characters, telling them they should work out their problems in a peaceful, productive manner. This amused Game Control.

We returned to Lora's parents' house in Los Altos for the night, and I fell asleep in less than ten minutes. I woke up due to sunlight around 8, did some quick subtraction (8 - 2:30 = not enough) and went back to sleep until 11:45, when I was awoken by a knock on my door and Lora informing me that "French toast is best when warm." Awesome.

We showed up (about 45 minutes late; whatever) to the post-Game reception at the Hacker Dojo, titled "Mimrsas and frrd" (a good-natured poke at the misspelled Rubik's cube clue), and got a pretty decent rundown from Game Control of how stuff happened. It was very comforting to know that some of the issues that we'd had weren't entirely our fault. We all offered our (legion) constructive criticism, and I think I volunteered to playtest the next game they write. Maybe I'll help Game Control next time. We'll see.

All in all, I had fun, despite a few lows over the day. Thanks to Game Control for putting the event on, and thanks to Lora and Wes for teaming up with me for a great day of puzzle-hunting!

2011-04-13 | 14 comments

Cross-posted from Facebook.

TL;DR I'm leaving Facebook on my birthday and deleting my account; please follow my blog and email (drew.m.fisher@gmail.com) or IM me (drew.m.fisher@gmail.com for Jabber, drew.m.fisher on Skype) if you want to keep in touch.

I'm leaving Facebook. On my birthday, April 24th, I will delete my account. Why? Several reasons:

First, it was a time sink. I read lots, and saw lots of generally useless noise. I learned little from my time spent on Facebook. It's telling that I came to think of it as time spent, rather than time well used. It was no longer a good use of my time. It became filled with uninteresting fluff.

Furthermore, as an obsessive engineer, I seek the best tools for each task I wish to perform. Facebook, while decent at a variety of tasks, is not the best at any of them:

All of the above offer better workflow for their own particular task, more powerful features, and in the long run, more time saved. Few, if any, require any more learning than the comparable tools in Facebook's own.

I came to the conclusion that pretty much the only thing Facebook had going for it was that many people already had an account and spent copious time on the site. While this is perhaps relevant for things that require site registration, I found a very uncompelling argument to keep with it.

Finally, I take issue with Facebook's treatment of its users and their privacy. I recognize that most of you probably won't find this very important or compelling, but Facebook has a pretty long history of:

You all know I'm a techie. For a security- and privacy-minded individual like myself, this sort of behavior (and ongoing trend toward the worse) is deeply troubling. I've complained about these for quite some time. I realized that if I wanted to have any moral authority whatsoever, I needed to put my money where my mouth was, and stop using Facebook myself.

"But," I thought, "how could I leave Facebook? Everyone has an account! It's the primary method a lot of people use to keep in touch with their friends! Think of what you'd lose if you left!"

What would I lose if I left? As a scientist, I decided that the best way to answer my question would be to perform an experiment. Last summer, starting some time around July (I forget the exact date), I stopped logging in to Facebook altogether. Well, with single-digit exceptions over 9 months. Close enough.

It wasn't as bad as I thought it would be. I found myself with more time to read fascinating things, work on personal projects, and enjoy my time in the real world. I finished an electronics project that I'd been thinking about doing for four years. I started writing a blog of the happenings of my life, including writing the software that powers it. Many friends still instant messaged me. I got pictures from friends by email. My mom continued to call me via Skype and ordinary telephone. I got the most epic box of brownies I have seen in my life in the mail. If anything, making the interaction more scarce had made it more precious, and the time I gained was phenomenal.

I consider my experiment a success. I determined that I can live and live well without Facebook. When Sarah Luna wrote that she would leave Facebook on her birthday, I decided that I, too, would delete my account on my birthday. I see it as simply making the gains from the experiment permanent. Moving to Phase 2.

In recognition of the fact that for some of you, this may be the only form of contact by which you know to reach me, I am writing this note to offer you alternatives. It is not my intent to sever contact with all you wonderful people. I simply ask that if you wish to reach me, you do it through any of a multitude of methods that do not involve Facebook:

Contact me, and I will reply happily and at length (although I can't necessarily guarantee promptness). If you write a blog, send me the URL, and I'll subscribe to your feed. Comment on mine and I will write back. I do still want to hear about your lives.

And perhaps consider: what would you really lose if you left, too? Could you make better use of your time?

With love,
Drew Fisher

2011-04-14 | 0 comments

Things that I think are awesome:

Linkdump of people whose papers might be relevant to my ongoing audio work on the Kinect (thanks for the names, Brandyn!):

I find it kinda cool, learning the names of the experts in my various fields of study. There's only so many, after all, and you start to recognize the names and faces along with the work. That's something I hadn't expected - I guess I never really though about the fact that the number of researchers in a field was finite. My daily dose of "small world, huh?"

2011-04-16 | 0 comments

Among piles of other things, I'm in the process of seeking housing in Palo Alto for the summer and Berkeley again in the fall. Today, I learned in great detail about the concept of "soft story" buildings, after seeing a sign at one of the complexes we visited that referred to Berkley Municipal Code section 19.39.060.

It turns out that Berkeley has a program for identifying soft-story buildings that might be dangerous in the event of an earthquake. Since it's rather likely that we'll have a significant earthquake in the next couple decades, and since lots of housing in Berkeley would not survive such an earthquake, the city created measures to help protect the city against the expected natural disaster: all buildings that were likely to have soft-story weakness were required to have an inspection by a professional engineer, who would file a report on the building's safety. If the building was considered potentially hazardous, the building owner would be required to make tenants and visitors aware through letters and signage that it was known to be possibly unsafe, until it is retrofit with structural reinforcements to bring the building up to a higher standard of safety. No mandate to actually retrofit the buildings was given, but the action taken effectively incentivizes landlords to fix their dangerous buildings by making them less desirable on the housing market.

One of the apartments we went to see was on Berkeley's Inventory of Potentially Hazardous Buildings (pdf). I've pretty much reached the conclusion that as nice as the apartment was, it's a pretty bad idea for me to choose to live in housing on the Potentially Hazardous Buildings. My life and possessions in the event of a rather likely seismic event are worth more than saving a hundred bucks a month. I'd rather not have my car go like this.

In other news: I filed for my 2010 tax returns today. I seriously need to start upping my withholdings exemptions, because this is a second year that I've given the US government a sizable several-month interest-free loan. Then again, goodness knows they need it.

2011-04-20 | 2 comments

Things that I have done to mitigate stress the past few days:

2011-04-22 | 0 comments

Some interesting links:

Amazon's been having some rather significant downtime lately. I can't wait to read the post-mortem analysis, when it's all over. It does make one wonder how worthwhile throwing everything to the cloud really is. Even Microsoft doesn't have this totally figured out yet.

2011-04-23 | 0 comments

Today, I joined a bunch of Stanford and Berkeley folk for competing in Google Games, which is kinda like a puzzle hunt and trivia game and a coding competition. I really do love these puzzle hunt activities. I hooked up a bruteforcer to a slitherlink puzzle, coded one of the programming problems, and had valuable insights on several puzzles. One of them, a word association puzzle, was widely hated by all the teams I talked to, but I rather enjoyed the rest of the competition, even if we got quite stuck on silly things a couple times.

Coincidentally, I ran into several folks I'd known before:

It's a small world.

After the competition, our team visited Palo Alto/Stanford (decked out in all our Berkeley gear...this produced some looks and some interesting conversations). We visited the Gates building, and saw the Gates of Hell, and passed by Steve Jobs' house, and the HP garage. Stanford is gorgeous, and very spacious.

Then, we broke out our smartphones and found a pizza place in SF where we had some deep-dish pizza. It was tasty, but a little heavy on the tomato sauce. I prefer Sicilia's, but that's way on the other coast. Alas.

2011-04-24 | 2 comments

(Antonio and Sarah, you inspired this one.)

Today marks my birthday. Sweet 0x16.

This year, I moved to a new place, and made many new acquaintences that are turning into friends. Friends that I anticipate growing closer to and enjoying for many years to come. Friends that will see me at my best, and at my worst, and will see to it that I pass through both. Friends that will challenge me, guide me, and teach me. Friends whom I hope I am teaching in return.

I started a blog. I closed my Facebook account. I joined a community through which I (re)awoke a passion and made friends in at least four countries. Hopefully I'll have the pleasure of meeting them in person some day. I started making significant contributions to the open-source community. I lived for nine months in an apartment, and made my own food, and didn't starve to death.

Upward and onward.

2011-04-25 | 3 comments

I woke up this morning around 08:00 to the deafening sound of silence. Most ordinary people would enjoy the peace and quiet, but even in my pre-alarm stupor, I knew that something was wrong. See, I leave my computer on 24/7, and if it's silent in my room, that means my computer isn't running. And when my computer isn't running, I have a problem.

I rolled over and saw the power light on the front of the tower blinking amber. An SMS on my phone from my system monitoring solution confirmed "kraken is DOWN." (Yes, I name my systems after mythological creatures.) A look at the repair manual (good thing I've got phoenix, my laptop!) told me this means "The computer is receiving electrical power, but an internal power problem might exist."

I opened up the case, and after a brief bit of looking around, found this:

Blown capacitor on motherboard

That's a blown capacitor on the motherboard (the one with the golden stipe); while the lighting is nothing great, you can see the top is not uniformly the same color as the rest of the capacitors.

kraken has served me well (and nearly constantly) for 7 years now, so it's not like this is terribly surprising. Nor is it a particularly damaging failure - my disks are perfectly fine, and my data is backed up to phoenix anyhow. It is, however, a nuisance to deal with this time of year.

If I had a comparable capacitor on hand, I might try soldering a new one in its place, but 2200μF at 6.3V capacitors are a part neither I nor the BiD lab have lying around.

So, after 7 years of excellent use, it is time for me to get a new computer. I'm still deciding what to get, and would appreciate suggestions of:

2011-04-27 | 0 comments

I opted to wait on purchasing a replacement desktop until my new credit card arrives, so I can use the purchase of the new computer to hit the card spending requirement (landing me some number of airline miles), then pay it off and not use it again. Either way, I'm aiming for ~$1k, which means I'm probably going to buy a fairly high-end Sandy Bridge processor, a ton of RAM, a motherboard with dual NICs, and as silent a case as I can find to put it all in.

I talked to David Sun in lab today about his work involving localization with array microphones, and he gave me some pointers that might help in implementing an open-source sound localization library for use with the Kinect. Most of that work is currently on hold, though, because 1) all my notes on the cryptographic handshake are on my desktop, safely saved, but currently inaccessible without yanking the disks and doing some magic with external housings that might upset the RAID1, and 2) I HAVE PROJECTS THAT ARE DUE SOON AAAHHHHH!!

On that topic: our security term project is progressing. Preliminary tests were successful and show a 10x slowdown to network traffic with our technique, which may turn out to be acceptable. Promising results, at least, which we'll detail in our poster session on Friday. TODO: set up printing on the giant plotter in the lab.

2011-04-29 | 0 comments

Today's poster session for computer security class went well, despite running a bit long. It was scheduled from 4-6pm, and as of 18:15 our group still hadn't started presenting to the professor. There was also a small mishap in printing the poster yesterday, where we couldn't remember poster sizes and printed a 4'x3' poster (which turned out to be GIGANTIC) before realizing we probably were supposed to make a 3'x2' one. OOPS. We taped the giant one to the wall and went with it anyway.

Tomorrow is the Berkeley Mystery Hunt, and I'm SUPER excited for puzzles. Here's to hoping it's well-written, well-run, and well-played. :)

2011-05-01 | 2 comments

Yesteday was the first Berkeley Mystery Hunt! I captained a team by the name of PhDestroy! which included Lora and Wes (with whom I teamed up for Stanford's The Game) and added Andy from the BiD lab, Nima (with whom I joined forces for the College Puzzle Challenge), one guy Nima knew named Di, and one guy named Bobby from the mailinglist.

Our merry band of 7 puzzlers got off to an incredibly slow start, solving something like one puzzle in the first four hours, but as we got more hints and worked out more, we started picking up the pace. I won't talk about the puzzles, since the organizers want to run this hunt again for a Bay Area Night Game at some point, but suffice it to say that we eventually got our act together, solved the metameta, and at 10:53pm, won the game. (Actually, HQ had to cut the entire runaround because we were the first team to get there, and they wanted to finish by 10:30, with wrapup at 11. Oh well.)

Amusing events involved Andy trying to wheedle puzzle solutions out of Hunt HQ, getting to reuse a piece of Python I've had on my computer for over three years, and exchanging stories with the organizers.

I've volunteered to help the organizers write next year's hunt, and have some good ideas for puzzles floating around in my head. That's another major step toward completion of an item on my bucket list. I do hope I'll have the time to help make this happen - I really do love these puzzle hunts. :)

One special thanks to my team, who made that day delightful (even when we were stuck and frustrated) and one to the organizers, who put the whole thing together over the course of several years. I had a blast!

UPDATE: photo! From left to right: Bobby Liue, Di Wang, Drew Fisher, Nima Ahmadi Pour Anari, Andy Carle, Lora Oehlberg, Wes Willett. Thanks to Ankur Mehta for the photo.

A happy PhDestroy! team with the University's treasure

2011-05-06 | 1 comment

I am hopelessly behind on my blogging. In my defense, it's the end of the semester and I've been busy.

Monday: BiD took a field trip down to Menlo Park to visit Willow Garage. As expected, it's a darn cool place. We got to tour the facilities, see all the robots and demonstrations, and ate a delicious lunch. I chatted with Radu Bogdan Rusu about object tracking. Afterward, I showed off the Kinect audio driver I've written to Nate Koenig, and he seemed to think it was cool.

That evening, the toilet in the half bath broke. Specifically, the shutoff valve had broken, so the bowl refill tube was constantly spewing water. Ordinarily, this would be a small problem, except for the fact that the metal stop valve at the base of the toilet was so stuck that neither Andrew nor I could budge it, even with the assistance of a wrench and a power screwdriver. Thus, we had a pipe spewing water and no way to shut it off. Andrew jury-rigged the toilet to be in a constant state of flushing so it would drain. Yay for engineering!

Tuesday: I went to the bank to retrieve my passport from the safe deposit box. The plumber came by, but couldn't shut off the water until the afternoon.

I also introduced Sarah to the concept of airbnb, a site for finding rooms/couches/airbeds to crash on in various cities. It's the appropriate tool for the slightly scrappy minimalist who'd rather find a more inexpensive room with friendly people than stay in a hotel.

Wednesday: my panic level escalated as I prepared for my final presentation for my algorithms class. I also picked up my midterm, which was absolutely utterly a mistake.

Thursday: finished preparing my presentation and delivered it (after much searching about for an empty space in which to give the talk). I had the misfortune of having to present after two theory students who had WAY more relevant-to-the-class talks than I did. But hey, that's how it goes. It'll go the other way when I get to TA the HCI class next fall and everyone has to code stuff. :P

After dinner, I called my dad and talked for a while, then went over to Kristin's house to assemble her new desktop. We were able to get everything up and running with few troubles - one too few power cables, the unfortunate combination of an IDE DVD drive and a motherboard with only SATA ports, and an upgrade-only Windows installer gave us a little grief, but all hardware worked correctly, and with a USB flash drive we were successful in flashing the BIOS, (double-)installing Windows, and getting everything up and running. Now I can say I've assembled a computer from parts!

Today: I packed my luggage this morning and am flying to Vancouver for CHI (which is why I had to present my project on Thursday). I'm on the same plane as Wes and Kenghao from BiD lab, so it should be pretty fun. I'll see if I can find a prepaid SIM card or something while I'm in Canada; I don't really want to pay roaming charges.

UPDATE: I've arrived in Vancouver, and the view from the apartment we're staying in is AWESOME. It'll be even better once the fog clears. Pictures will come later.

2011-05-13 | 2 comments

Wow. I have had an AWESOME week at CHI, and I have LOTS to write about, but I also have a final project paper to finish writing up today, another paper that we're supposed to be submitting on Monday, and I'm moving to Palo Alto on Sunday to boot. So (sadly) stories will have to wait.

Oh, and I'm back in the US safely. In case you were wondering.

Update (rewrite?) from two weeks after the fact: Got up rather early and caught the train back to Vancouver Airport. At the terminal, I ran into Anand Kulkarni and Truc Nguyen, who happened to be on the same flight back to SFO. After getting home, I ate some food (I honestly don't remember what), crashed for about 30 minutes, and then went to campus to join Edward Wu and Justin Samuel in writing up our research paper for our security class. It got a little rough at the end, but we submitted our paper precisely on time and I delivered a hardcopy of the finished product to the box ouside Dawn Song's door. Then I went home and slept.

2011-05-14 | 0 comments

I spent basically the entire day in the BiD lab (or elsewhere on campus, like in the 5th floor conference room in Soda hall, because the lab gets COLD) working with Keng-hao on our paper submission for the Wireless Health conference. By the end of this day, I was quite sick of writing papers.

2011-05-15 | 2 comments

Today I moved to my summer residence in Palo Alto. Well, for some value of "moved." I didn't bring much: just my bedding, towel set, clothing, laptops, and Kinect. Getting the queen-sized mattress into my Avalon alone was rather tricky - I ended up using the orange luggage strap that Bloomberg gave me at CHI to keep the mattress folded in half in the long dimension, and somehow managed to stuff that unweildy mass in the back seat. The floor of the parking garage was rather dirty, and it had been raining, so the mattress cover got a bit dirty and damp in places. I'm washing it.

The drive was uneventful - I left ten minutes later than I had planned, but Google Maps had overestimated travel time by the same ten minutes, so I arrived right on time. Robby and I did a walkthrough of the house with the woman who gave us the keys. It's quite a nice place - two-story, six bedroom, three bathrooms, sizable kitchen, lots of downstairs common areas, washer and dryer, backyard...all in pretty good condition. It's about 4 miles from the office I'll be working at this summer.

After moving my stuff in, Robby and I moved a good deal of his possessions from his previous residence to the house, with an intermediate stop at the IMO office, where we set up my computers. I have a desktop running Kubuntu and a laptop running OSX. This should be fun.

I ate dinner at the Korean BBQ restaurant in downtown Palo Alto for dinner; the same place that Evelyn and Sarah and I visited two summers ago. It was delicious.

Now I'm wishing I'd had room for my chair in the first trip from Berkeley. I'm sitting on the kitchen floor with a $9 IKEA table in front of me, bundled up in the blanket my sister gave me. I'll be going to bed pretty soon, methinks.

We still won't have internet at the house for a while. Thank goodness I can tether with my phone. And by that, I mean: thanks, Nokia.

2011-05-16 | 0 comments

Since I'm a computer scientist, yesterday was my zeroth day of work, which makes today my first day at work. It took a while to get everything up and running, but the last thing I accomplished before going home was getting the product running on my desktop. I considered this a reasonable accomplishment for the first day, given the complexity involved. Hopefully my experience will help get the other interns up and running even faster.

2011-05-17 | 0 comments

I made my first commit to the IMO source tree today. Startups are awesome - you move fast. This one is particularly awesome - interesting problems, a product that I rather like, and a fantastic work environment. Dual 30" monitors, food/drinks all the time, KDE on my desktop...it's pretty sweet.

2011-05-18 | 2 comments

Jeez, I am behind on my blogging. I still haven't written about CHI, nor my papers, nor my adventures in Palo Alto thus far (nor my reverse-engineering adventures, in case you had forgotten about that writeup. Still on hold). It's all been pretty excellent, but pretty busy. Sadly, I need to drive for about two hours tonight still, and I lack speedy Internet at my place in Palo Alto (I'm still tethering with my phone, and getting Comcast to listen to us is another story still). If it's not too late when I get back, maybe I'll paint the tales I've been mentioning thus far in greater detail.

Update from 2011-05-27: a real post:

There's a decent contingent of IMO employees who like rock climbing, and the indoor climbing gym they usually go to has this deal where they can refer a friend, and the friend gets a free lesson and day of climbing, so I tagged along. Somehow we crammed five people into Tom's tiny sports car. They showed me the ropes, and I already knew the knots (hooray, Boy Scouts), so shortly thereafter, I joined the others to climb some routes. It's much more planning and finesse than I had thought. It'll be a while before proper form becomes innate, but now I know: stay close to the wall, keep your arms straight, and your legs bent. I climbed a 5.3 during the lesson, a few 5.7s, and a couple of 5.8s. My arms eventually reached the point at which I can no longer grasp anything, let alone hold my weight (which, of course, I'd need to do less if I had proper form). My veins were sticking out of my arms in a very foreign way. It was awesome.

Nicolay took us though a long sequence of stretches afterward. I'm fairly certain I have that stretching session to thank for my arms not falling off the next day.

After the gym closed, John Rizzo and I agreed that we wanted food, so we went to In-N-Out and had tasty burgers. They were delicious. I got home at some terribly late hour in the morning, but it was an awesome day.

2011-05-20 | 0 comments

This evening, a group of 6 of us IMO folk went to dinner at the Cheesecake Factory. While waiting to be seated, Robby and John discussed how I should order the "2700." I hadn't seen such a dish on the menu before, but it turns out that 2700 refers to the number of calories in the dish.

After we were seated, and we got to look at the menus, we found that the 2700 had in fact been upgraded to the 2990. I opted for one of the 1770's instead, which was delicious.

2011-05-22 | 0 comments

I sat on the couch and spent many consecutive hours reading A Game of Thrones. Andrew and I set up our mini-grill and stuffed ourselves silly with grilled sausages, grilled pineapple, and grilled bell peppers. DELICIOUS. I drove back to Palo Alto and met the third bro of Brohaus (who moved in on Saturday). Oh, that's our business' name, as far as Comcast is concerned. Having Internet access is a wonderful thing.

2011-05-23 | 5 comments

So, the parts I ordered for my desktop have mostly shipped, with the exception of the case that I would be putting everything in, because the place I ordered it from ran out of stock. Stuff will arrive Thursday, but I probably won't be able to build my machine until the new case comes in (which could be another while). I still have to decide what case I want. I was aiming for a quiet case without too many glowy lights - they're pretty, but annoying at night and when you're trying to watch movies and stuff. On the other hand, if I had more light from my desktop case, I might not have to buy a lamp for my room in Berkeley. Decisions, decisions.

2011-05-25 | 0 comments

You know you like your job when you spend over 14 hours at the office and don't even notice when it's past midnight and you're still fascinated by a problem. I rather like my job - we have some crazy problems, but we have a bunch of sharp folks, and I have all the tools I need. I am the limiting factor in what I accomplish, and that is a very empowering feeling.

2011-05-26 | 0 comments

I plan to make back-dated posts for much of the past few weeks. The CHI posts will probably take a little longer since they're less clear in my mind and I have pictures, which means that I have to decide which ones to post and format and resize and rename and link them all, so even with scripts, it takes a little longer to write the posts. To the people who would propose objectively and technically better blogging solutions: LA LA LA I CAN'T HEAR YOU OVER THE AWESOMENESS OF MY BLOGGING ENGINE. <3.

My new power supply for the desktop I'm building arrived today. The rest of the parts should arrive tomorrow. I'll still be short a case, though. I've operated without my desktop for over a month now. It feels kinda weird - I've adapted to using my laptop and phone instead, but it's definitely put a damper on my computer usage at home.

On the OpenKinect side of things: lostincake just sent in an updated C# wrapper, so I'm going to test that out and hopefully merge/push the changes as soon as I can verify that they work right. :)

2011-05-27 | 0 comments

I slept in. I went for a run in my Vibrams in the afternoon, and it was beautiful. For the first 8 minutes, that is. Then it (very slowly!) started raining. I ran home. Shortly thereafter, Robby and I drove to Wal-mart to get assorting house things - dish soap, a dish scrubber, and trash cans. We also stopped by BevMo! so Robby could stock up on BAWLS. A successful venture, followed by me fooling around with Skype and trying to get the C# libfreenect wrapper working.

2011-05-29 | 2 comments

Today was quite a busy day.

I suppose it started out last night, when I put my sheets in the washer, got distracted, and failed to move them to the dryer. Bit of an unpleasant surprise when I meant to turn in for the night and my sheets were still wet. I put them in the dryer, curled up in my blanket on the floor, and wound up crashing until 6am, at which point I woke up, removed my sheets from the dryer and made my bed, got in my freshly-made bed, and failed to fall back asleep for the next two hours. I did hear a veritable symphony of birdcalls though.

I finally got the C# libfreenect wrappers working this morning (I think I had to install a bunch of 32-bit compatibility libraries), so I pushed those changes out.

Around 10am, Robby and his former housemate and I went to U-Haul to rent a truck to move Robby's remaining stuff from his former residence to the Brohaus. I then started crawling the Craigslist "free stuff" listings for nearby items of interest. It turns out that someone had made a posting about a week ago regarding an upright piano. I emailed the lady, and it turned out that the piano was still there. We needed breakfast still, and I had just gotten an SMS from Jono, who was visiting assorted family members in Palo Alto, so I invited him to join us. We picked him up and had breakfast at Hobee's. I had huevos rancheros, and some spectacular blueberry coffee cake.

After breakfast, we dropped Jono at the Caltrain station and picked up the U-Haul truck from where we had parked it in Palo Alto and set off to obtain the piano. It was not terribly far, but it was terribly heavy. It's a good thing there were three other guys at the place we were picking the piano up from in addition to our three, because it took some serious effort to get the thing out the door and down the stairs. It took Robby and James and I an additional dose of sincere effort to get the piano up the ramp into the truck.

Then we realized that we had no way to tie the piano down in the moving truck, but we'd sooner find out how bad a thing that was than have to unload the piano, pick up some gear, and reload it. The next 15 or so minutes were some of the slowest, most frightened driving I've been party to in quite some time. At every stop sign, the piano would roll around in the back, slamming into the walls loudly as we slowed or accelerated. And Palo Alto has lots and lots of speed bumps and stop signs. Let's not forget that you don't want to have to make unprotected left turns. We managed to plot a route that had only one left turn, and that was at a stoplight. After we finally arrived at the Brohaus, we opened the back to survey the damage. The baseboard had fallen off the piano, but the rest was (somewhat surprisingly) intact. We wheeled that sucker into the garage, because the three of us lacked sufficient manpower to lift it up the steps at the front entryway. Needless to say, the piano needs tuning.

After the piano adventure, we waited around at the Brohaus for a while, hoping that the parking situation at the other house would improve. I took a nap (which I felt quite entitled to, after last night's sheets error). Chuan stopped by, accompanied by his friends Jason, Brad, and Jackie. With seven people, we were able to move the piano properly indoors.

We sat outside in the backyard for a while, chatting. Around 5:20pm or so, we decided that Robby and James and I would go back and pack lots of stuff from the old house and meet Chuan and friends at The Counter for delicious burgers at 7. Packing was mostly uneventful, although Robby's desk had to be removed from the building through the window, since it wouldn't fit through the doorway and if we disassembled it, the wood would splinter and not be fit for reassembly.

We finished packing stuff right around 7, drove the truck back to Brohaus, and picked up Michael (who had just gotten back from SF) for our trip to The Counter, which was merry and delicious. Grilled pineapple is excellent on burgers.

2011-05-30 | 0 comments

This has been the first year I've actually consciously noticed the seasons changing. I attribute this in large part to my lack of indoor lighting. I can't stay up as late as I used to, because the constant darkness makes me sleepy, even in the light of my monitor. I have a giant window on my wall, which makes it impossible to ignore the sun's chipper rays in the morning, even though the window is on the west side of the building. The effect is even stronger in the Brohaus, where I have an eastern window. I am no longer able to sleep in late unless I am overwhelmingly tired.

Perhaps another part of it has been the heater varying between functional and off, over the course of the winter. You notice the cold more when you have no choice but to face it. I wonder what else I'll notice in this manner.

2011-06-01 | 2 comments

My desktop case arrived today, so I finally had all the parts that I needed to resurrect kraken, my old desktop.

The parts:

Computer parts used to build my new desktop

CaseAntec P183 Mid tower (rated as one of the better quiet cases available)
Power SupplyNexus RX-8500. Incredibly quiet.
MotherboardAsus P8P67 EVO (one of the few motherboards with dual NICs)
CPUIntel Core i7 2600K (Sandy Bridge). At the time, the highest-ranking CPU on this benchmark that didn't cost four digits.
RAM16GB: 4x4GB Corsair Vengeance DDR3 1600, 9-9-9-24 CAS latency
Graphics CardnVidia 9600 GT that Robby gave me
Hard disksTransferred from old computer
Optical drives...are for people who don't know how to use USB and netboot installers. ;)

The build took a while, since I'm still pretty inexperienced at building these things. The fact that neither the case nor the motherboard had assembly instructions didn't help. It's a darn good thing the one I built with Kristin a month or so ago did - I probably would have missed a step or two otherwise.

The only two tools I needed (and technically, I could have done it without the awesome screwdriver, just more slowly):

Husky screwdriver and Leatherman Skeletool

The case is one of the Antec ones that puts the power supply in the bottom of the case. I'm still not sure how I feel about this. On the upside, the power supply creates far less turbulance around the processor at the bottom, and the case can have a vent at the top, which is more efficient since heat rises. On the downside, it puts the power supply in a different place than most motherboards and power supplies expect you to put such things, so some cables may be too short to route comfortably, which can cause turbulence and reduce cooling efficiency. Also, it's harder to flip the switch at the bottom than at the top.

Picture of inside of empty case

The case also had these cool pull-out bays for the hard disks with these huge rubberized shock absorbers:

Hard disk mount with shock absorbers

All assembled (yes, the cables are a mess):

New desktop fully assembled!

About five minutes of fiddling with UEFI BIOS settings, and I successfully booted kraken. Later, I'll have to reinstall everything with 64-bit packages, and set up VMs, and...I'll be busy this weekend, I imagine. :)

And yes, the thing is as quiet as I had hoped. With the case fans set to low speed, I worried for a moment that the system didn't start when I pressed the power button. Even at high speed, the fans are peaceful. I am quite pleased.

2011-06-02 | 0 comments

Cool day. I went to a SIGGRAPH meeting featuring a talk by Johnny Lee (HCI researcher and one of the core contributors to the Kinect project at Microsoft) that I had heard about from qDot (the other OpenKinect maintainer) three hours before the event. Thanks to the fact that I'm already in Silicon Valley, I was able to go anyway.

It was cool hearing about how Microsoft had to learn how to deal with taking research where things are often poorly or underspecified and being able to integrate such a team with their software engineering prowess where they have a lot of skill at successfully solving well-defined problems. One thing Johnny noted in particular was the fact that traditional software engineering expects linear progress over time - you expect to accomplish twice as much work in two months with the same manpower as in one month. That doesn't hold true for research - it's much more a series of quantum leaps, and much harder to predict future performance. Now that I've heard about some more of the difficulties involved in the Kinect project, I'm even more impressed by what Microsoft was able to deliver. Congratulations, Johnny - you accomplished your goal of commoditizing depth cameras. :)

After the talk, I hung around and chatted with the other attendees and Johnny about all manner of HCI-related things until about 10pm. When I got home, there were 20 snails in our front walkway. I counted them.

2011-06-05 | 1 comment

First story: I spent a decent portion of yesterday and today installing Windows 7 on kraken to make it a dual-boot machine. This was a longer and more involved process than is ordinarily the case, and one which was made much worse by my big mouth and stubborn attitude.

I'll start off by noting that two posts ago, I said something to the effect of "optical drives are for chumps who don't know how to do USB and netboot installs." So, obviously, when it came time for me to do a Windows 7 install, you can bet what piece of hardware I wasn't going to use.

I should note that two of my housemates offered their SATA optical drives, but I felt obligated not to use them after talking big about how I didn't need one.

Windows 7 can be installed from a variety of bootable media, and in particular, installing from a USB drive is officially supported. You just copy the data from the DVD onto the flash drive, run G:\boot\bootsect.exe /nt60 G: (if G: is the drive letter of the USB drive you just copied things to), and then boot from the USB drive. Magic.

So I used my laptop to rip my properly-purchased Windows 7 Ultimate disc into an iso, and then I scp'd that image to my desktop. It was at this point that I realized that I had left all my flash drives in Berkeley, in addition to all my external hard disk drives. Crap.

I came up with a solution in fairly short order - I have a 16GB microSD card in my Nokia N900 which had no data of importance on it (I was using it to play around with MeeGo). The phone will present itself as a pair of USB disks when hooked up to a computer via USB. So I would use my Linux phone to orchestrate this Windows installation.

Since I refuse to run Windows programs as root in wine (it's just a bad idea), I'd need a Windows install to do that

I have a 32-bit Windows XP virtual machine that runs inside KVM. It is a relic from a different age, and I hadn't used it in a while. I spent three hours bringing it up to date.

I could have used the VM to partition and format the memory card, but it turns out that KVM only supports USB 1.1 for USB passthrough, so that would have been terribly slow. On the upside, ntfsprogs provides mkfs.ntfs, and I'm quite familiar with fdisk by now, so I was able to format my "flash drive" and copy all the files from the DVD image to it at high speed from Linux. Huzzah!

Then, I booted up the VM, tried to run bootsect.exe, and discovered that bit with bootsect.exe from above has another limitation. In particular: the Windows install running bootsect.exe has to be the same bitness as the Windows 7 installer image. That is, if you're using an installer DVD for 64-bit Windows, you'll need to run bootsect.exe from a 64-bit windows install.

I don't have a 64-bit Windows install. But I did have some foresight, some resources, and a lucky guess.

At work, several of us had needed to install Windows 7 Home Premium. Each of our computers had come with a license, but the first thing we did after unboxing them was install Ubuntu on them, so we put the Win7 installs in VMs. To speed along the installs for myself and others, I dropped an iso of both the 32-bit and 64-bit installer discs. So, I ssh'd into my work computer, mounted the 32-bit image loopback, scp'd that bootsect.exe through three intermediaries and into my WinXP VM, and ran it.

It worked.

So I booted the Windows installer from my Linux phone, ran through the install, then ran through the install again (since this was the upgrade disc, but a full license). Many hours later, I had a Windows 7 Ultimate install.

Then I used my laptop to put GNU GRUB on my phone, so I could use it to boot Linux, so I could reinstall GRUB on the master boot record, so I could actually dual-boot. Victory!

Second story: Georges Harik invited all of the IMO employees over to watch the Dallas/Miami basketball game on his 3D TV. He has one of the Samsung 3DTVs and something like 27 pairs of active-shutter glasses.

The effect was pretty neat. It was most appreciable when the 3D presented itself as simply adding depth to the image - no objects in the frame "closer" than the screen itself. When things appeared to float it midair, it just looked weird. The glasses made my eyes kinda tired, and they were a little tight around my skull. Sarah says my head is getting to big again.

Third story: I'm reading Surely You're Joking, Mr. Feynman!. Entertaining.

2011-06-10 | 2 comments

I've spent 10 hours in the datacenter over the past two days, unboxing, racking, and configuring a bunch of new servers. Lots of things that were supposed to work didn't. I did get to break out my sysadmin skills, though. Unfortunately, in unboxing all the pizza boxes, I managed to cut a fairly deep slice into my left thumb with my beloved Leatherman Skeletool. I suffered a -1 penalty to DEX for the rest of the day.

I find it oddly fitting that today's xkcd is also about setting up servers. I've been staring at debian-installer prompts for quite some time today.

Robert and I played Tetris Attack (which is nothing like Tetris at all) for a couple hours after work today. I went from fairly awful to winning between one in three and one in four games. He wants us to train for and enter a Tetris Attack tournament. We shall see.

2011-06-15 | 0 comments

Catch up time!

Saturday: I drove up to Berkeley and enjoyed delicious foods with the rest of the cooking club at the house on Keith Street. There was spinach salad with walnuts and strawberries, sliced pineapple, and TONS of delicious lasagna. I had three slices. It was excellent. There was a cocunut cake with an amusing slant - one of the pans had tilted in the oven, so one layer was a normal cylinder shape, whereas the other was...much taller on one side than the other. Tasty, either way.

The conversations were entertaining as usual. Later, we split up into two teams of 5 and played Taboo. Justine and Jon Long and I are pretty awesome at Taboo, if I may say so - we won after collecting some 13-point lead after an equal number of turns. Perhaps part of this was Greg trying to answer "MYYYYYY DIIIIIIIIIIICK" to every description. One particularly funny exchange went something like this:

Me: Infinite mass, dark. (well, that's technically wrong, but the point was made)
Jon: Black hole! (Correct.)
Greg: MYYYYY DIIIIIICK!
Me: Well, it does have infinite mass.
Justine: And has never seen light.
(laughter until tears)

It's always a fun time with that crowd.

Sunday: I (along with Lora and Wes and Mark) helped Andy Carle move from his place in El Cerrito to his new place in Richmond. Moving large pieces of furniture is, as usual, a constraint satisfaction problem. One of the other guys at the apartment complex had left his underwear out drying on a plank of wood laid across the fence on either side of the walkway between the stairwell and the curb. This made for an unusual obstacle when moving mattresses and boxsprings and other furniture.

After we finished the move, we ate delicious pizza on the deck of the new house. There were a few fruit trees that I'd never heard of before with these small succulent fruits with huge seeds. Nominally tasty, though bees nearby scared me. I guess I'm still not over my stinging insect phobia.

I drove back to Palo Alto, and Chuan had moved in and Michael had returned from his travels. Brohaus is up to 6 bros now. The energy is excellent - I had forgotten how much I liked living with tons of people. I long to return to the dorms at A&M and MIT.

Our house has four ethernet switches forming a minimum spanning tree.

Monday: Wildly uneventful.

Tuesday: Before work, I called my mom. She's spent the past several months planning all the details of this giant trip to Boston for her church that they leave for tomorrow morning. I hope it goes well.

After work, I chatted with David Wagner on Skype about possible research collaborations. Fun stuff - I may have more projects to join come Fall.

Wednesday (today): mostly uneventful, but made some good progress on my project at work. When I got home, I googled one of the other imo interns and found his webpage. Turns out he's an excellent pianist.

On that topic: I need to get a tuning kit for this piano that I have at the house, so I can get it in working order.

2011-06-24 | 0 comments

I have developed a minor case of what I believe to be Dyshidrotic eczema. I'll be going to sleep earlier now, methinks.

I finished Surely You're Joking, Mr. Feynman!. One part at the end resonated in my head:

"The first principle is that you must not fool yourself -- and you are the easiest person to fool. So you have to be very careful about that."

Very careful indeed.

2011-07-11 | 1 comment

Gah, birds are loud. It sounds like an aviary outside my window in the morning.

Last night six of the guys in our house (myself included) drafted Zendikar. It was my first time actually playing MtG proper - I'd watched others a fair bit, and understood a decent amount of the mechanics, but I knew nothing about this set. I wound up with a Blue/Green control/landfall deck that wound up winning 2-0 against Robby, 2-1 against Michael, and 2-0 against Chuan before people had to go to bed (we'll finish the round-robin tonight or something). After that, Chuan and I played exhibition matches until one of us reached 4 wins, which was quite exciting when Chuan won the first three but I came back.

Today I'm meeting with Leila Takayama and Brian Gerkey of Willow Garage to discuss the future of open-source Kinect drivers.

2011-07-17 | 2 comments

I read this essay and was so taken by it that I felt the need to reshare it. The line that really spoke to me was in the title:

There's no speed limit.

It's how I've felt my whole life about everything. As a child, I could not understand why other people did not learn things at the same pace as I did. It's why I read about as many things as I can, to this day.

The problem is, it asks what becomes an uncomfortable question - namely, are people actually all created equal? If we accept that they are, then I am still convinced that anyone can set an inordinate pace for themselves, and be able to keep up with it, should they so choose. Really, there's no clear upper bound to how fast you can learn something, if you don't worry yourself with matching speeds with everyone around you. But that's not quite what we see happening in the real world. And besides, it doesn't take the other half of the equation into account - the intrinsic motivation of the learner. I've seen people who didn't care about anything excel, and people who struggle with all their might and fail.

There are two possible explanations that I can come up with, and perhaps the answer lies somewhere in between. The first is that some people are simply smarter than others, have more potential than others, are imbued with more drive than others, and deserve more investment than others. But that's not politically correct. No one wants to hear that their child is ugly, or lazy, or a bully, even if it's the truth. To me, it seems as though people do not value the truth as much as they value feeling good about themselves.

The other explanation I can offer is that our society is structured in a way that discourages our young people from taking their education into their own hands.

We learn from an early age that we should stay in line with our peers. If one student pushes herself to finish an assignment early, she is told to sit and be quiet until the other students are done. She implicitly learns that there's no point in trying to learn as quickly as possible; she should simply stick with the rest of her class. If she doesn't, it makes it hard on the teacher, who unfortunately has to serve as both tutor and authority figure. And that doesn't even touch on the social issues that arise when she's demonstrably more productive than her peers. She's made into the common enemy of the other students. What a terrible reward for being smart and proactive about her education!

The problem with education with no speed limits is that such a system doesn't scale the way we need it to to work with the society we've built. You can't put 30 kids the same age in a classroom together to be supervised by a single teacher if they aren't going to learn things together at the same pace. You'd have utter chaos. No speed limits worked for Derek Sivers (from the link above) because he had private lessons, where his teacher could adapt things to his pace and set what others would call incredibly high expectations.

Education scales when you can have a few adults keep kids in a school all day to keep them out of the way of other adults trying to get work done with the hope of imparting some knowledge upon them. Don't get me wrong; I think that education is important to having a developed and educated society like our own. We'd pay a different productivity cost if we took the master-apprentice route - we'd have a lot more people spending time teaching their trade to the apprentices rather than putting it into practice.

The question is: is this worth it? Are there ways we can improve our options? The most obvious way to improve the efficiency here is to push more responsibility onto the excess resource in the reaction - the children. If the learning is student-led, then the teachers don't have to be as numerous. The kids will teach each other, too. Sugata Mitra's TED talk shows how it works.

I find it interesting that so many people that I know say that they didn't learn how to learn until they reached college. Even given the limited sample, that's a sobering thought - we're failing to teach the most important foundations until we've passed through the vast majority of our formal schooling.

Don't teach kids things. Teach them how to learn, and set the expectation that they do so in abundance.

2011-08-01 | 1 comment

Great weekend. (And yes, I know I haven't blogged in a while. I've been busy.)

Saturday: Slept in. Went to the Counter for lunch and had a 1 pound burger, topped with swiss cheese, grilled pineapple, dried cranberries, scallions, roasted bell peppers, mayonnaise, and a fried egg. I finished it, but have no intention of ordering a full-pound burger ever again.

Drew with a giant burger

I also learned enough about gstreamer to get audio playback of the Kinect audio capture. Sending the data through ROS is still a work-in-progress; mostly because packaging OpenKinect safely is funky.

Sunday: I rediscovered my Nokia earbuds in my backpack. I've been missing out on proper bass response in my headphones all summer. I listened to a few of my favorite OCRemix songs and got goosebumps from the warmth of the bass. I can't wait until I can use my speakers back in Berkely again.

I was also semi-invited to a birthday party for Susie Fu, a TAMSter from two years below me who went to MIT and is now interning with Microsoft in Mountain View. She instructed the Brohaus to dress up, but all of my dress clothes were in Berkeley, so I wound up wearing jeans, a button-up shirt, my red fedora, and my trenchcoat. I had Chuan try on my trenchcoat, and the result was nothing short of fantastic:

Chuan looking like an Asian businessman
You want to trust this man with your money.

We drove up to SF for the house party, which was substantial in size. There was a variety of food and drink, a number of people from TAMS, and lots of people from Microsoft. I met another PhD student who works at MSR on theory (in particular, asymmetric cryptography), and a pile of other PMs and SDETs. I also ran into another guy from Lucasfilm that I'd met before at the Berkeley recruitment event who had also been wearing a trenchcoat at the time. He recognized me without my trenchcoat, and identified me as "the trenchcoat guy." As a bonus, three other guys at the party were also wearing fedoras. Someone else I talked to also knew Zach Abel. It's a small world. Most everyone was pretty nerdy, and I enjoyed meeting them all.

Susie (or one of her housemates) has a very fluffy calico cat named Zoe. We were fast friends. I miss having a cat.

Later in the evening, the partygoers played several rounds of Never Have I Ever. Let's just say that there was quite a wide variety of things that people had and had not done. Around 22:40, I called for everyone to help clean up the place before we left, which was a great success. I washed ~2/3rds of the dishes. I like being a helpful partygoer, and the hostesses were appreciative. All in all, a great party, and I'm glad the rest of Brohaus talked me into going even though I didn't have dress clothes.

2011-08-03 | 0 comments

Comcast is down at the Brohaus.

Obviously, that won't keep the hopelessly addicted from their Internet fix. I connected my N900 to my desktop and tethered. Then, I installed dhcpd and bind9, configured both, and (after some iteration on firewall rules) got network up and running for the other computers in the house. We're winners.

I made some good progress at work today on multiple projects. I am pleased with myself, although one thing that we did is (necessarily) a pile of ridiculous hacks upon other hacks. Still - they work (so far), so I'm not going to knock it.

2011-08-08 | 2 comments

Chuan and I tuned the piano this weekend. It took 6 hours, and the top three octaves are still somewhat flat (there's a particularly bad A and G up there), but it's so much more playable than before.

We also went to Costco and bought lots of food. Apparently the pineapple sausages I love so much come in packages of a dozen at Costco! :D

Sadly, the Costco we were at did not have the awesome chicken pot pies that I recall from my time at home, but we did get some chicken alfredo pasta and calzones, so those were tasty. Also: a giant container of strawberries. Think 4x what you see in normal grocery stores.

2011-08-09 | 0 comments

Today we launched Steam chat support at imo. It's pretty cool. Support for mobile apps should follow soonish.

Wow, I've been part of a real launch for a service that people really use. Tingly happy feeling. :D

2011-08-11 | 0 comments

Yesterday was Katherine Maslyn's birthday. She and her housemate Amelia Lin invited Brohaus over to Girlhouse for board games. Much fun was had - we (Robby, Chuan, Dustin, Jeffrey, Arun, and myself) listened to Simon and Garfunkel's best hits album on a real working turntable, looked at Dustin's ridiculous Starcraft2 team page, went into Mountain View for bubble tea (and ran into Kat Busch while we were there), played a new board game called 7 Wonders (Amelia won), ate cake, and generally just sat around chatting for a while about all manner of things until 1am.

Tonight, we plan to go to a meetup on rationality and human biases organized by followers of Less Wrong, a blog written by the same person who wrote of Harry Potter and the Methods of Rationality, which is both absolutely hilarious and wildly informative. Hopefully the meetup will be similar.

2011-08-15 | 0 comments

Tonight, Brohaus went out to dinner to celebrate the awesome summer that we all had together. The full-time Brohaus residents took the interns out to Sushi Tomi in Mountain View and ordered Omakase. As before, it was fantastic, and we all had a wide variety of tasty dishes.

Dinner at Sushi Tomi
Chuan, Dustin, Jeffrey, Arun, and JJ

Dinner at Sushi Tomi
Jason, Brad, Michael, and Robby

Dinner at Sushi Tomi
Robby, Michael, and me

Dinner at Sushi Tomi
And again.

Dinner at Sushi Tomi
Bros chilling.

Dinner at Sushi Tomi
And bros laughing.

Some of the bros are addicted to bubble tea (particularly from Tea Era in MV), so we stopped by there. On the walk back, we ran into Kanjun (who we'd met at Susie's birthday party) and Raghu (who works for Facebook) on Castro Street. We all chatted for a good ten minutes and laughed about how awesome our housing situation was with 9 people in a house.

Then Robby and I went back to the office, since we'd only worked 6 hours that day. I resolved a longstanding issue and documented my work.

2011-08-19 | 0 comments

Yesterday was my last day at imo. I wrapped up as much as I could, documented the weird bits, and explained everything else to Ahmed. I really enjoyed my summer working there.

Then I went back to Brohaus, put all my stuff (except my bed) in my car, drove back to Berkeley, unpacked, and crashed on the couch. I had a hard time getting to sleep; I went to bed at 1:30, which is a couple hours earlier than I had been going to bed the past week.

I had to get up in time to arrive on campus by 8:30 (so early!) for the training seminar for new GSIs. It was good - we covered lots of relevant logistics, but mostly focused on how to be a good inspiring TA and how to deal with situations that are likely to arise.

After the seminar, I went to BiD lab where I discovered that one of my labmates, Kim, was to leave tomorrow to go work on designy things at Disneyworld. Andy, Pablo, Kim, and I all went to Ici (warning, terrible site design that requires Flash), a fancy ice cream shop, to send Kim off. They had some unusual flavors - I quite enjoyed my cone of Earl Grey ice cream. Then we went back to BiD and set up the tables and net and C-clamps in ping-pong formation and played all matchups. The graph of wins was a consistent DAG - Pablo beat Andy, who beat me, and I beat Kim. But we all had lots of fun!

I walked back home and set up my desktop. For a while, I thought both of my graphics cards had died or something, but then I discovered that I had merely switched the DVI cables and was looking at the wrong input. Then, after cleaning up my room a bit more, I drove back to Palo Alto around 1am, since I didn't fancy sleeping on the couch two nights in a row.

2011-08-20 | 0 comments

I slept in. Dustin and Jeffrey and I arranged plans to go to shopping centers to get Dustin fancy things for a wedding he's attending. All our schedules were a little wacky, but we managed to refuel my car, get lunch from the Ace of Sandwiches, and head out to the Stanford Shopping Center. Dustin was seeking a watch, possibly a dress shirt, and definitely a tie.

Our first stop was Macy's. Didn't like any of the ties nor shirts, and it turns out the watches were all in the women's Macy's. We stopped at the Express (they have nice shirts!), but it was expressly for women, so no dress shirts. We got to the women's Macy's and found the watch Dustin liked...for $40 more than he could get it for on Amazon.

Then we all went to the Hair International and got haircuts. I had a few inches taken off the back to get rid of all the split ends - I haven't had a haircut in over a year. It feels better now.

Having failed to acquire a nice shirt and a nice tie, we drove up to the Hillsdale Shopping Center in San Mateo. Since we were thirsty, we got frozen yogurt, then proceeded to the Express which was not only having a sale but also had a Foursquare check-in deal. I wound up getting a sharp red dress shirt. Jeffrey and I helped Dustin identify shirt colors (he's colorblind) and he picked one and a shiny black tie.

We stopped by the Lego store and reminisced about our childhoods. I particularly appreciated the Imperial A-Wing:

Lego A-Wing with Death Star in background
Note the Death Star in the adjacent display box.

Then we went to Macy's and Dustin got a couple more of the stretchy athletic Nike shirts that he likes, and I got one in dark blue. The Macy's apparently requires presentation of photo identification for all credit card transactions, which is at the very least in violation of their Merchant Agreements with Visa and Mastercard. I intend to report them - while the policy is perhaps well-intentioned, it cannot be considered an effective fraud deterrant, and it raises unpleasant questions about privacy and information security. I think of the same sort of thing when I hear about government policies - oftentimes a well-intentioned policy winds up accomplishing the opposite of its intent, or fails to accomplish its stated purpose while causing unintended consequences. We should create rules based on what they will actually do, not what we want them to do.

Finally, we went to a Thai place in Mountain View for dinner, and then went home and I stuffed my bed in the backseat of my car and drove back to Berkeley and unloaded things and processed more backlogged TODO items.

2011-08-29 | 1 comment

Quoth Jacob Appelbaum, via Twitter:

"Someone in Iran is performing an active MITM on Google with this cert right now (remove diginotar from CA root list): http://pastebin.com/ff7Yg663"

Not a good sign.

In other news, I'm none too pleased with Apple right now. It's nigh-impossible to get a MacBook Pro to boot from anything but the internal hard drive or the internal CD drive. Which is a shame, considering the EFI fanciness they drove to market.

I wouldn't have minded, except for the fact that there's a bug in the Linux kernel preventing the kernel from talking to the CD drive on my MacBookPro8,2 at all. It's been around since 2.6.33 and thus affects at least the past two versions of all the Linux installers that I'd deem suitable to use. Moreover, there's a (two-character) patch that I hope will get merged before Fedora 16 Beta, but (as it was developed in the last week) is currently unavailable in any distro.

So I can't read the installation stuff off the CD drive. Ordinarily, this wouldn't be a problem - I've got at least three other methods for doing a Linux install that don't involve the CD drive. People who have used Linux on netbooks are probably familiar with the approach of doing installs from USB flash drives. On the MacBook Pro, this is a non-starter - the firmware can't boot from USB.

Now I'm about at a point where I'd try to just format the partition and do the install as though it were in a chroot and rsync the filesystem from one in a VM, except Apple also saw fit to remove their ext2 driver from OSX entirely. So unless I want to install on either FAT32 (which will have broken permissions) or HFS+ (for which I'd have to disable journalling to get read-write support), or UFS (which admittedly would probably work, but I've never set it up before, and I'm not sure if OSX will format a partition like that), I can't do that either.

The other technique that I'd employ (network installation) has problems of its own. When possible, I like to use the netinstaller off a USB drive, since it's easier than setting up DHCP and DNS and NAT and TFTP and pxelinux and a bootmenu...but we already established that USB is not an option. In particular, I seem to have found a particularly annoying bug in either firmware or an OSX driver. When I connect an ethernet cable directly between my desktop and the MBP, suddenly, the Mac starts hanging in a strange way. Based on the symptoms, I'd guess that every syscall is blocking and never returning. I'm unable to spawn new processes, read or write on the filesystem, read network config, or in general, do anything useful. This made testing annoying.

Searches on the web also suggested differing levels of success in netbooting Apple machines from anything other than an Apple netboot server.

My options remaining are thus:

  1. See if netinstalling something like Debian works and if so, do that and then update things and ignore the broken CD drive (I'm skeptical as to whether this is doable at all, at this point)
  2. Install Fedora 16 Alpha in a virtual machine, build a custom kernel in that vm with that two-character fix, master my own installer ISO, burn that to a CD, and install from that media (more feasible and much greater probability of success, but an awful lot of effort, and downloading all the packages will push us over our monthly bandwidth cap (also not my fault))
  3. Notify #fedora-qa, wait until this is fixed in Fedora 16 Beta, then install that (high probability of success, but won't happen for about a month)

So far, I'm leaning toward the last option, but the lack of a reasonable window manager on OSX is killing me.

I'm also learning C#, since we're getting a bunch of Kinects for CS260 to do projects. The Kinect SDK for Windows does not support such things as Processing or Python (well, maybe IronPython, but I am NOT bothering with that), so I'm going to learn enough to support the class for their projects. Which means doing all the projects in advance myself. Which really shouldn't be too hard - I'm at least halfway through the Bubble Cursor assignment already.

2011-08-30 | 0 comments

Man, I should have taken out a long put option on VDSI yesterday as soon as I heard about the fraudulent SSL cert their subsidiary issued. The stock fell nearly 10% between when I read about the fake cert and now.

2011-08-31 | 2 comments

Wow, last night I had the WORST sleep I've had in the past year. Woke up at least every two hours, and closer to every 15 minutes toward the end. Now I feel nauseated, but not feverish. What the heck, body. We're supposed to be a team.

I also dreamt vividly that when I woke up my computer and monitor were missing (presumably stolen). This did not help.

2011-09-02 | 0 comments

"Classes are great. You just show up, and they do the learning for you! Why would you ever NOT go to class?" - Justine Sherry

2011-09-12 | 2 comments

This weekend was the Microsoft Puzzle Hunt. Ordinarily, you'd have to be in Seattle/Redmond to participate, but this year they were kind enough to run a simulcast instance of the game in the Bay Area through the internet.

It was great. The hunt was train-themed. I'd never hunted with any of the people on my team before, but they were all pretty sharp. We started out ranked in the top three, but lost some steam over the course of the day. By 3am, it was just me, Ankur, and Nima puzzling, and we were all pretty tired. By Sunday at 5pm, we were in 9th place out of 29 teams. I quite liked the round 2 meta - perhaps I should get a copy of Ricochet Robots. I also particularly appreciated the "Whistle Stop" puzzles, which were designed for teams to complete together as quickly as they could which usually involved plays on words. The first couple were quite easy and made for a good morale boost. I can't wait for the MIT Mystery Hunt.

This link is food for thought. The thoughts described there are quite close to my own. I wound up reading the paper that article references at the end.

In other news, today I learned that there is a protein involved in the mammalian signalling pathway called Sonic hedgehog homolog. Yes, it was named after this one.

Oh, and apparently we humans have also made glow-in-the-dark cats. Pretty cool technique - they use an analogue of HIV for cats called FIV to deliver genetic material to eggs before fertilization.

2011-09-15 | 0 comments

Today I learned how to write GUIs in C# with WPF. Never before has it taken me 14 lines to draw a single arc on the screen. I am used to one, maybe two. I am not thrilled.

Heh, the latest Ctrl+Alt+Del comic makes a passing reference to Dr. McNinja. I wonder how many people read both.

2011-09-19 | 0 comments

A map of the undersea data cables around the world. (Thanks for sharing, Jeff!)

2011-09-25 | 1 comment

Last night, I went to the opening concert of Dream Theater's US tour in SF. It was nothing less than spectacular.

We lined up outside the Warfield a bit early. There were a number of tables set up where people were playing chess and speed chess (for money, apparently). I watched a game, and the players weren't particularly good - they missed a free rook several times. I chose not to play.

Now, the cover band (Trivium) was...not my kind of band. I couldn't understand a word they were saying (shouting?) over the excessive amplification of the drums. In fact, I couldn't hear the guitars over the drums either. I should have brought earplugs for this section of the evening.

Once Dream Theater came out, though, everything was awesome. They opened with "Bridges in the Sky" and fed that directly into "These Walls." The crowd responded with a standing ovation and thunderous cheering. LaBrie said "now THAT is the warmest welcome we have EVER had in San-Fran-Cisco."

The setlist included (I can't say I remember the particular order):

Interestingly, no songs with lyrics by Mike Portnoy, who left the band in September 2010.

I sang at the top of my lungs and drummed along to every song I knew. It was awesome and amazing and joyful, and I was thrilled to be there. Those guys are incredibly skilled.

2011-09-28 | 0 comments

A Federal District court judge ruled provisions of the US Patriot Act unconstitutional today. It's about time. It may be that the decision is appealed; if so, I hope the appellate court will have the sense to uphold the ruling.

In a completely unrelated court case, I found out that judges (from the 7th Circuit, at least) can have a sense of humor: from ProCD v. Zeidenberg:

There is no box; there is only a stream of electrons, a collection of information that includes data, an application program, instructions, many limitations ("MegaPixel 3.14159 cannot be used with BytePusher 2.718"), and the terms of sale.

I see what you did there.

I recently installed KDE on Windows. I now have Kontact syncing with Google Calendar, a screenshot utility that doesn't involve me using an on-screen-keyboard to hit printscreen (Apple is really annoying me), a hex editor that rocks, and a reasonable fixed-width text editor. I'm impressed - everything I've used has been rock-solid stable. This was not the case a couple years ago when I last tried KDE on Windows. Thanks to all the devs for their efforts.

2011-09-29 | 1 comment

As I was leaving campus last night, I saw a deer in the bushes. It proceeded to run into the street and nearly got hit by a pickup truck. Oh deer.

My chair just broke. Yes, the one I've had for five years since TAMS. The piece on the right-hand side that holds the chairback up snapped. It's served me well for quite some time now. Time to search for a steelcase think on craigslist.

Thanks to xkcd, I learned about the tragedy of the commons. It seems to me the idea applies to our banking industry, where the marginal value of the addition of a new banker (or quant, or speculator, etc.) is great for the banker, but we've already surpassed the percentage of GDP at which point finance ceases to contribute materially toward GDP. But since the benefits are privatized and the costs are borne by the public, any rational actor will do what's worse for society. You could probably make the same argument about any similarly "saturated" industry.

2011-09-30 | 5 comments

I just finished reading The Big Short. I have little reason to believe that any of the structural problems with Wall Street described therein have been resolved. Outlook: cynical and gloomy.

2011-10-02 | 0 comments

Had dinner with Matt and the Brohaus at Tofu House last night. Korean BBQ is delicious. We started some ridiculous anime that had only six episodes, and somehow everyone lost interest by the middle of episode 2.

Arun brought out his 5x5x5 Rubik's cube, which I spent a good while solving twice. Kmas studied flashcards for Starcraft 2 with Terran units and buildings, then played through a couple single-player campaigns. Jeffrey set up his Kawai weighted electric keyboard and I played some random songs on it. Another Brohaus intern moved in at some point that night after arriving from Scotland. I crashed on the futon some time around 5am.

I drove down to San Jose to pick up a Steelcase Think chair from a guy on Craigslist for the surprisingly low price of $250 (they retail for at least double that). I now have a snazzy new office chair.

2011-10-05 | 1 comment

Yesterday, I went to a talk by Ralph Nader about the problem with Big-Time College Sports. It was a fantastic talk - a very cohesive tale story detailing how the athletic scholarship and intercollegiate sports have damaged physical education and intramural sports for the rest of us, how athletes' top priority is not education but sports, and how all this brings our society down what he termed the "sensuality ladder."

Today, I went to a talk on game theory in which Tim Roughgarden explained that the "price of anarchy," or inefficiency in letting a group of players all act toward locally optimal strategies rather than having a benevolent dictator provide a globally optimal strategy, is low. It also turns out that games that have a Nash equillibrium wind up with the same price of anarchy as games that are merely "no regret" (a much weaker assumption). A fantastic amount of this talk went over my head, and Tim carefully avoided making any claims as to political outcomes of this research, but I find it interesting to (probably improperly) apply this to politics and say that the cost of libertarianism is "low."

Also today, Steve Jobs died. I had the good fortune to grow up with a father who loves technology and an Apple computer in the house. I wonder how different my life would be now, had that not been the case.

It is upsetting to think that I can only be great at a handful of things before I die. Thank you for choosing those things you found important, Steve. You built a revolution in a garage.

2011-10-15 | 0 comments

I have about a thousand things running through my head right now. But first, let's catch up:

My parents and little sister flew in last weekend + Monday (Oct 8, 9, 10) to visit. It was a ton of fun. The weekend in summary:

Saturday: I picked them up from SFO and then we drove into the City to visit Pier 39 and Ghirardelli Square. Traffic was the most horrible thing I have ever driven through in my entire life. We tried to route around the traffic and got caught up in a slew of streets that were one-way in the direction we didn't want to go. We wound up driving (VERY slowly) along the Embarcadero. There were crowds of people, all over - my mom described it as looking like Seoul, Korea. On the upside, we were getting quite the tour of SF, but we had no idea why traffic was so terrible.

Then I saw the B-2 stealth bomber.

It turns out that this was the tail end of SF Fleet Week, and there was a wicked-cool airshow. We found parking and got clam chowder in bread bowls from a street vendor, and then enjoyed watching the Blue Angels and Canadian Snowbirds do incredible formations. We walked about Pier 39, and I got to see F-16s do snap rolls while flying straight upwards and diving straight down. It was downright amazing. Tommy Kennedy would have been in heaven.

We walked over to Ghirardelli Square and my dad and sister bought chocolate while my mom and I just sat on the steps for a bit. We left the City just after 4pm. We had dinner reservations in Sausalito for 6pm. We called to warn them we'd probably be late. Horrible, awful traffic. From my friends' reports, BART was also very crowded.

While we did make it into Sausalito right at 6pm, we stopped at the scenic viewing area at the north end of the Golden Gate bridge for some fresh air and photo opportunities. Oh, I should point out that my dad loves taking photos and home video.

Dinner at The Spinnaker was delicious. We took the Richmond bridge back to Berkeley. I showed my parents my apartment and we talked and played cards. I took them back to their hotel, and they gave me a box of Crunchy Corn Bran cereal - apparently, my dad can only find it in bulk in 24-packs nowadays.

Sunday, my family went to the nearby Trader Joes and obtained breakfast. I picked them up from near their hotel and we ate at my apartment. We drove up to the Berkeley Rose Gardens and spent a good while there. It was a lovely day out - a little warm in the sun, but perfect in the shade.

I pointed out some impressive-looking spiderwebs. My dad went wild with his optical recording devices, and my mom quipped that they'd get home and have a half-hour of video showing nothing but spiders. It was fun, all the same.

We had lunch from Gregoire with the company of a long-time family friend Anna Theiret. After lunch, I took my family to campus and gave them the tour of the four buildings that I spend 98% of my campus time in and the student center. The BiD lab was surprisingly full of people for a weekend. Lora would later describe my family as adorable, particularly my dad shooting home videos.

The family went to Crepevine for dinner, which was also great, then played cards until late-o-clock. I haven't played very many 4-player card games lately, which is such a shame. Gotta get Andy and a couple other folks to play bridge. Alternately, we should get our D&D campaign back up and running, once Wes does his quals talk.

I got up early to visit my family at their hotel one last time before I had to leave to get my things and go to class. They successfully navigated BART to the SFO airport.

The week began.

I submitted a (rather short) proposal for a talk for 28c3 on reverse engineering USB protocols. If accepted, then I have one less thing to worry about (getting a ticket to 28c3 before they sell out) and one more thing to worry about (fleshing out said talk before the end of the year).

I have been working extensively on a project for the UIST 2011 Student Innovation Contest which I will disclose in more detail after we present it. Those of you who stalk me on github may have noticed the repo with my code already. I'll see if I can take a video of people using the contraption and post it here.

I've been updating my collection of OCRemix tracks and discovered that a bunch of folks whose remixes I've long loved now have their own professional discography. Many of the people that started out reimagining game music for the love are now employed by the game industry as composers. Andrew and Jillian Aversa (OCR: zircon and pixietricks) do some of my favorite electronica and celestial vocals, respectively. I bought all of zircon's discography; from the first two sets alone, I can conclude that I will be enjoying these for a long time to come.

I noticed at this week's BBQ that one of the Berkeley CS grads has sectoral heterochromia - in this case, a brown spot in an otherwise blue eye. I found it fascinating, so I looked up a bunch of reference on heterochromia and eye genetics. After doing the requisite reading, I wonder if I might have central heterochromia. Apparently, it's pretty common for people with green eyes. What do you think: do I have heterochromia?

Picture of my face cropped to just my eyes
Close-ups (warning: possibly creepy): Left eye, Right eye

I (finally (this has been a work-in-progress since late April (let's see just how deep I can nest parentheses (this looks kinda like Lisp)))) merged support for image registration into libfreenect this week. Special thanks go out to Kyle McDonald and Florian Echtler for their contributions to this (somewhat large) patchset.

I both hosed and recovered my laptop's Windows install today. Don't install self-signed USB filter drivers in 64-bit mode if you haven't turned off signed driver enforcement. Particularly if both your mouse and keyboard are USB and your machine (MacBook Pro!) has no legacy ports. Safe mode won't save you, but the advanced boot options menu will - it has "Disable Driver Signature Enforcement" as one of the boot options. Huzzah, all works. It's worth noting that none of the tools that use event tracing for Windows (ETW) can actually show you the data in the packets that your machine sends, since the kernel doesn't log that data, but filter drivers (like BusDog) can.

I went to the local Thai restaurant for dinner tonight. The waitress recognized me and knew my order. I had my food in something like 6 minutes from when I entered the restaurant. I think this is the first restaurant with which I've developed that kind of rapport.

Tomorrow morning I take Amtrak to Santa Barbara for UIST. I plan to write a Wikipedia article and grade assignments en route.

2011-10-20 | 0 comments

Got back from UIST last night. Storytime! (Note: post-dated. I'm really bad at getting these entries written on time.)

Sunday: What a terrible morning. I managed to hit my snooze button 9 times unconsciously before finally waking up 70 minutes later than planned. I was supposed to wake up at 7:15, so I'd catch the 8:08 BART to Oakland and catch the 8:50 Coast Starlight Amtrak train (which leaves once per day).

I looked at my alarm clock, and the last digit was right. Unfortunately, the other two were too large. I had missed the BART. Next train left Berkeley at 8:38, and arrived in Oakland at 8:51 - too late. ****.

Turns out I wake up very very quickly and become quite alert when I'm dosed with adrenaline like that. It was a good thing I had packed my bags the night before - I threw on clothes, looked up driving directions to Jack London Square on Google Maps, and snapped a picture of the directions with my phone. Google estimates the route at 17 minutes. Sounds doable. I drove as quickly as safely possible to my destination.

I arrived by the station, but didn't know where I was supposed to park. There were garage buildings, but they all appeared to require permits. Driving around frantically, I finally saw a sign that read "Amtrak Parking" and followed it. As I crossed the tracks, I saw the train I'm supposed to be boarding waiting. I got quite nervous as I had to drive further away from it.

I turned into the nearest parking lot...which happened to be owned by Fox News, and gated. I exited that parking lot and entered the next one, which had a pre-pay meter where you buy a permit for X hours and display the receipt on your dash. Great, except that it only lets you pay for 72 hours in advance. I was going to be gone for ~86. I decided I would worry about that later, and right now I needed to catch my train. I bought the 72-hour permit, unloaded my backpack and suitcase, and sprinted as fast as I could.

I all-out ran a football field and a half to the four-story skybridge that would take me back over the tracks. I reached the base right as the elevator started going up. Guess I'll take the stairs. I was breathing heavily by this point, but I couldn't stop - I had to catch that train. I took the stairs back down on the other side, and ran for the end of the train where I saw a uniformed someone standing. He asked if I had a sleeper car ticket. Nope. Wrong end of the train.

Which was fine, because I didn't have my ticket anyway. The woman at the other end of the train informed me that 1) I needed a ticket, not a confirmation code, so I'd need to go inside and print one off, and 2) She had to leave. So I left my bags right there, ran in, printed my ticket, and ran back. I collapsed into an empty seat, lungs burning, asthma attack setting in. Within 30 seconds, the train started moving. I was exhausted. But I was on board.

The rest of the train ride was fairly uneventful. I used my N900 to set up a wireless hotspot for myself and Valkyrie, and I did some reading. Lunch was expensive and the burger was a bit dry, but I've had worse.

We arrived so early that the previous Amtrak train was blocking us at the station in Santa Barbara. I checked into my hotel and dropped off my bags, and we walked the ~2km along the beach to the conference hotel to collect our registration materials. All the food was gone, so we went to El Torito for dinner. I told everyone about the origins of the CD-ROM boot standard by the same name.

Monday: overslept again, but it just so happened that the session I was late to was the crowdsourcing session, so I wasn't too heartbroken. UIST is a single-track conference, which threw me off, initially - there's not a whole lot going on at any given time other than the paper presentations or breaks. On the upside, you get to see all the papers. On the downside, the long sessions get somewhat grueling.

I particularly liked Leila Takayama's talk about the (in)effectiveness of sidetone for telepresence and the MIT folks' Real-Time Collaborative Coding in a Web IDE talk. I want better tools for collaborative reverse engineering.

Björn, Wes, Meredith Morris from MSR, Thorsten and Jan from Aachen, Valkryie, and I all went to the nearest restaurant for lunch (which happened to be that same El Torito). It was a pleasant discussion - I really enjoyed talking with Thorsten about differences between the US and Germany/the rest of Europe.

Monday's keynote by Ge Wang on his iPhone Ocarina and ChucK and thinking about time-based concurrent programming was fascinating. I thought back to the time when I was chatting with Dave Thomas about it - he found it neat and was tinkering with randomly generated melodies. I wound up using ChucK to make TDMF tones - at some point, I'd like to be able to identify phone numbers by ear.

We presented our project - the Moussage mat - at the Student Innovation Competition. We take input from a Microsoft TouchMouse, transmit it over the network, map the touch points into touch intensity within 12 zones, and send 12 values to a microcontroller, which drives 12 vibrating motors embedded in a sheet of foam that you're lying on for a human-controlled massage experience.

It was very well-received - we wound up with a bunch of people claiming they would just lie down and sleep there for a while. (Nice try.) By the end of the night, people were coming over, saying that their peers had told them to come see our project. People were amused that we had used bullet vibrators as motors. They're cheap (the ones we got were ~$4 each), small, well-encapsulated, and reasonably powerful. In other words: the perfect off-the-shelf part for our project.

Sadly, we managed to burn out the power supply that we were using to drive all the vibrators about 70 minutes into the three-hour demosession, but that was after the judges (and most of the people that would visit our demo) had come through, so it turned out okay.

We're in the process of preparing a demo video; I'll probably make a decent writeup of the whole thing and post it as its own subfolder on my site. Later.

Tuesday: More fine talks. I liked the Stacksplorer talk. Julia Schwarz likened dealing with multitouch APIs as trying to do a lot of things at once, like juggling - and then proceeded to juggle 5 balls on stage. The round of applause was merited. We talked after the session about other approaches people have taken and how all "potential action" previews need to be free of side effects. Other cool talks:

After the talks and a brief town hall, it was dinner time. I had several helpings of the delicious salmon. The keynote speaker, Dan Jurafsky, gave a great talk that explored language and what we can learn from its history. We traced through the history of "ceviche" and "ketchup", explored the difference in words used to advertise cheap and expensive potato chips, and learned some decent predictors of interactions from a corpus collected from a speed-dating session. I will be hopelessly analyzing all my conversations henceforth.

After dinner came thanks and awards. Our Moussage mat won 2nd in the "Best Implementation" category of the Student Innovation Contest! I was thrilled. After the level of positive reception from the previous night, I somewhat expected we'd win something, but it was exciting anyway. I wound up chatting for a good while with Juan, the guy from København whose project beat ours. Maybe I'll see him during my Europe trip this winter.

Since it was our labmate Shiry's 32nd birthday, Bjoern invited us back to his hotel room for birthday festivities - the party included Bjoern, Shiry, Maneesh, Wes, Peggy, Valkryie, Nick, Manas, and myself, all from the BiD lab. Manas brought along Jen Fernquist. Fun discussion was had - politics, economics, and all sorts of things I usually don't chat about with my labmates.

Manas, Jen, and I went to the Student Volunteer party after that. Katrina, the head SV who I'd met in May at CHI, had told me to come and that I should feel free to "bring all the cool people." Most declined. I volunteered to be the designated driver - I've never been much of a fan of alcohol. Others at the party were.

Wednesday: I was originally going to take the Amtrak back on Wednesday, but then I found out that the 3D interaction session wouldn't happen until after the train left. That session included the much-anticipated KinectFusion demo. Fortunately, Manas had driven down and was kind enough to offer a ride in his car back. So I got to see all the fancy demos!

Since relatively few people get to go to these conferences, let me say very clearly: KinectFusion works just as well in person as it appears to in the video - 30 FPS with all the bells and whistles. It crashed a couple times, but I'm not going to complain about it. Very impressive work.

I liked the concept from 1 Thumb, 4 Buttons, 20 Words Per Minute: Design and Evaluation of H4-Writer of making Huffman trees with four branches at each node. It makes me want to learn all the DTFM tones by ear and use them as a higher-data-density Morse code.

The Toucheo demo was just awesome. Multitouch + 3D display, with somewhat sane surface manipulations. If they throw in a Kinect for direct 3D interaction, they'll be golden. I loved it.

Manas and I drove back to Berkeley, stopping in San Luis Obispo for dinner. We found a place called Thai Boat with unusually enthusiastic staff. They were all just so happy to serve us! And you can never go wrong with pineapple fried rice. We stopped at a gas station, and the owner of the convenience store greeted Manas in Hindi and they had a nice conversation. Shared language and culture gives most people a sense of connectedness, it seems.

We got back to Oakland shortly after midnight. We found my car, which to my great surprise was neither ticketed, towed, nor impounded. I drove it back to my apartment in Berkeley, relieved, and crashed.

2011-10-24 | 1 comment

This is over a week old, but it was striking, and I felt I ought to share it:

Dizzying but invisible depth, by Jean-Baptiste Queru (of the Android Open Source Project)

Over the past couple years, I've come to an interesting realization - I like knowing how protocols and markup languages work. Their design informs my own, and being able to speak the exact language that another system is expecting means that you are able to interact with it. You are able to understand it. You are able to analyze its behavior. This concept of common ground - speaking the same language, whether it be text strings, or a sequence of voltage levels, or something else - is a very useful abstraction. It makes it possible to build higher order things on top of them, and then people only have to understand the layer they're working on.

One of the reasons I think I like knowing all sorts of protocols is that it means that I can interact competently with systems (or people) at any of the layers. It means that I can be useful in a greater variety of settings. It means that I can start to identify where in the stack of layers a brick is missing, when something breaks. And that is something the world seems to find valuable in an engineer. If I were a recruiter, I would expect the breadth of an applicant's competencies with different protocols and languages, particularly in different layers, to correlate with the applicant's ability to deal with complexity, which I'd consider fundamental to good engineering.

It would be terribly convenient if we could apply the same principle to people. And to some extent, we can. Some layers, like spoken and written languages, are fairly good opaque abstractions. Others, like cognitive models, emotion, group interactions, and a pile of the other interesting emergent behaviors of humanity are not. People can't handle that sort of cognitive load without better abstraction - we are simply too complex.

But since we have to deal with other people anyway, I think our brains come up with ways to cope. Inevitably, we wind up making simplifications to systems. I'd posit that both stereotypes and common spoken and written language are a way that the human mind deals with the excessive complexity of people. Through both, we have restricted the amount of complexity that an individual must consider when interacting with people.

Both have an up-front cost to learn and a loss of a certain amount of expression as a result. People have feelings that they cannot adequately put into words, and stereotypes can result in improper and hasty judgment. But in exchange, we gain an abstraction layer - a common ground - that makes a great many other interactions wildly more efficient or even tractable. Without written and spoken word, we would lose history. Without history, we would be unable to build on the knowledge (and abstractions) of our predecessors.

One last thing that we rarely mention: once fixed, abstractions cannot be easily changed, since other abstractions are built on top of them. Just as we cannot change the USB protocol (we can merely add a new one), we cannot easily change languages, or alphabets, or stereotypes, but we can add new ones. Just as the tail and the appendix were useful in our earlier evolution, we are stuck with these eccentricities in our development. We must design our abstractions wisely, if we can, for we are stuck with them once we make use of them. My mind is filled with questions:

2011-10-30 | 1 comment

Awesome party last night, hosted by the BiD lab. We arrived early and rearranged the lab to block off our desks and have more open space in the middle of the rooms, and set up lights and drinks and food. My advisor Björn was our DJ. I should point out that Björn was a professional DJ before he went to grad school, and it was the interesting interfaces used by DJs that prompted him to do research in Human-Computer Interaction. Needless to say, the music was great.

Seeing Björn in the mix, I couldn't help but fondly recall Gabe's random mixes on hall at 5E, and learning the general ideas behind DJing - beatmatching, pitch control, lead in, cueing, and crossfading. Björn says that most people take about a year to develop the tacit knowledge needed to be able to mix well and consistently. I wonder if that'd be a skill worth investing some time in. I'd guess that another large part of it is getting to know what BPM and key each of your songs are in. Time to go install mixxx.

As this is the weekend nearest to Halloween, the party was a costume party. There were some great costumes - Manas printed off a poster-sized blank Facebook Wall using the lab plotter and let people write on his wall. There was a girl dressed as Siri. There was a vampire (and not the sparkly variety) and several pixies. Luke was a crossing guard. Pablo was a convincing Don Vito Corleone, with a coat and white vest. I wore a red dress shirt and dark dress pants, my red fedora, and my black trenchcoat. I entered the costume competition for "Geekiest costume." People seemed confused by my costume until I explained "I'm here representing Red Hat." Then I got thunderous applause and won. About five minutes later, someone walked in dressed as a Rubik's cube with faces that lit up and changed colors, and I passed my prize on to him in deference.

A number of people thought that I was trying to dress up as Carmen Sandiego, since she wore a red fedora and a trenchcoat (though hers was red, and mine was black). In a curious coincidence, Sarah did dress up as Carmen Sandiego. Peas in a pod, I tell ya.

A good-sized crowd came to the party - around 30 or so people at max headcount, though more than that cycled through over the course of the night. We made sangria with lychees stuffed with blueberries, intended to look like eyeballs. The whole event was described by Andrew as "the best departmental party I've ever been to." Pretty awesome. Thanks to the CSGSA for sponsoring, and everyone who came for attending!

I want to carve a pumpkin into a Guy Fawkes face for November 5th. I might actually do this - I think BiD has some leftover pumpkins.

In other news: I went through my inbox and reduced 2600 messages to 79 (most of which I still need to follow up on).

In more other news: I need to do a writeup on this website of the Moussage project. And I need to do a writeup on libtouchmouse, which I've produced over the course of the past week.

2011-10-31 | 0 comments

Friggin' finally: 28C3 tickets preorder information. Still can't buy a ticket until next Sunday, but believe you me, I know where I'll be at 1pm PST on 2011-11-06.

2011-11-04 | 1 comment

First off: happy birthday, Dad! *throws confetti*

Second: happy birthday, Kinect! (Incidentally, it was released one year ago, today.)

Today was a somewhat busy day. I moved the contents of my savings account from BoA to a credit union (because Bank of America steals houses). This caused trouble on both ends.

At BoA there were some complexities:

Somewhat surprisingly, I didn't have to provide any form of ID (although I suppose debit card swipe + PIN counts).

Making the deposit at CUBS was comparatively simpler, but took just as long - the teller had to get an override from her manager or another branch to be able to deposit a check that size. None of the other branches were answering the telephone, but after about 20 minutes her manager came in and took care of the deal.

I'm doing the mandatory IRB training. It's long.

I met with Dave Wagner today, and over the course of two hours, we planned out a research project, came up with some interesting questions, talked to several other students, realized that the questions were not actually interesting, and came up with some other questions. The preliminary results from one of the other students' studies make me disappointed in cell phone users at large, but even more so, at Google for failing to let Android users make more granular security decisions. Permissions should be something you can dynamically grant or revoke at runtime, and app developers shouldn't be taught that they can write code that assumes it can get whatever privileged data it wants at runtime. Blargh.

After that meeting, I met with Ankur, Annelise, and Josiah to plan puzzle hunts. We'll be rerunning the 2011 Berkeley Mystery Hunt this winter for the general public, so there was some discussion of logistics and review of the puzzles to make them more suitable for the anticipated audience. We're also laying the groundwork for what will hopefully become the 2012 Berkeley Mystery Hunt, which is super exciting because one of my life goals is to write and run a puzzle hunt. We have some great ideas, and it's really fun to brainstorm with people who are just as excited about puzzles and twice as skilled. We had three solid hours of creative discourse, and my mind is still brimming with other crazy ideas to try. I love this feeling.

2011-11-06 | 2 comments

Ugh, Daylight Saving Time. I'll just refer you all to my post on why DST is bad from about a year ago.

Oh heck, I'll link you to a couple other articles on the topic.

The first batch of 28c3 tickets sold out 3 minutes after being made available. 800 tickets. 180 seconds. All I was able to do was fail at refreshing the page since their servers got seriously DoSed by all the would-be Congress-goers. For the first two minutes, I couldn't even open a socket to the presale website, and then I got a bunch of 502 Bad Gateway errors after that. When the system finally managed to reply to me, it was clear that there were no tickets available. I was sad.

I went to lunch at a sushi restaurant in downtown Berkeley. They had this absolutely amazing baked salmon roll - it was baked salmon with some sort of mayo-based sauce and masago atop a roll containing crab, cream cheese, avocado and asparagus. It was one of the most delicious things I've eaten in recent times.

When I got back to my apartment, I figured I'd seek more information about what the heck had happened with the 28c3 tickets from more official sources (when I left, their blog was also down, probably due to DoS). The comments confirmed that the batch of tickets was indeed sold out. Then I logged into the 28c3 talk submission page, just for kicks. I hadn't received any email from the organizers, and I'd read that speakers had already been contacted.

But then I saw this:

28c3 talk submission system - Reverse Engineering USB Devices - accepted

And I clicked on it, and saw this:

28c3 talk submission system - Talk starts Day 2 2011-12-28 14:00:00 Duration 00:30:00 Room Saal 2

So, uh, I guess I'm going after all, and I'd better start preparing that talk soon!

2011-11-08 | 1 comment

It's that delightful time of the year again.

Not going off Daylight Savings time. Not when the stores start decorating for the next batch of holidays.

I'm referring to the couple months during which every Wikipedia page is graced with the portrait of Jimbo Wales as the nonprofit Wikimedia foundation runs their annual fundraiser. It's the time during which I'm constantly reminded that I stand on the shoulders of giants, and that which we may think of as "free" is only so available thanks do a great deal of labor and love.

The fact that I assume that Wikipedia will always be there at the tip of my fingers is nothing short of breathtaking. It's funny that I can get far more value out of Wikipedia than I do from the majority of my textbooks. I can read about practically anything that I want to know about. And in the rare case where I find something that I think I could explain better than this wonder of the world already does, I can share my knowledge with the world. What a beautiful thing!

I can't imagine a world without Wikipedia any more, and I hope my donation and yours can make it so that we won't have to.

Support Wikipedia

2011-11-11 | 0 comments

Huh. Apparently our dedi's web server (just Apache, not the machine) went down last night. Maybe I should add service monitoring on localhost.

I saw Twelve Angry Men last night. Good movie.

2011-11-20 | 0 comments

Yesterday I got to help Manas break into his own apartment after he locked his keys inside and himself outside. Fun times!

I went to the local Thai place. I ordered my food at 21:26. My food arrived as my watch ticked 21:30. I was impressed.

Oh, look what we have here. A proposed constitutional amendment to get money out of Congress. Say, weren't those Occupy protesters calling for something like that?

2011-11-26 | 0 comments

Thanksgiving was a blast. After thoroughly wrecking my sleep schedule after the systems take-home midterm (I wound up falling asleep at 20:30 and waking up at 01:30. Oops.) I managed to get back to sleep around the sunrise at 06:00 and slept until something like noon. I baked 8 miniloaves of bread and pineapple bake (recipe!) for a potluck gathering of friends.

There were about 35 RSVPs, and there was food aplenty: three turkeys (two fried in oil, one roasted in the oven), three different kinds of mashed potatoes, two kinds of green beans with cheese, sweet potatoes, sweet potato falafel, several salads, and at least three pumpkin pies.

Giant table of food
Yum.

Lots of people gathered around
This was just the main room; lots of people were in the adjoining rooms.

I had the pleasure of meeting half of the AeroFS team (I met Yuri, Mark, and Allen). I'll get to meet the rest of them on Tuesday when I visit their office in Palo Alto.

Andrew and I hung around until late-o-clock, eating way too much food and chatting/singing/playing guitars with folks. David Moore brought out his fiddle, and he and Shaddi were playing folk songs from the South. Good times.

Friday: I spent the majority of the day learning x86 assembly so that I could do one of the Stripe job-app programming challenges, namely:

This seemed like a good choice because I'd somehow managed to avoid learning x86 assembly up until this point - I can deal with ARM and MIPS and Zilog z80, but I never learned how x86 works. (And boy, is it funky.) Anyhow, knowing x86 assembly could be helpful if I ever want to reverse-engineer object code for that platform.

Someone I know from A&M who goes by the handle Pathore helped me understand the basics of x86 assembly, BIOS calls, string handling routines, and helped me debug code over IRC. For several hours. It was a very intellectually stimulating experience. Pathore, if you're reading this, I owe you dinner or something next time I see you.

Once I'd picked up enough of the basics to be dangerous, I wound up making a stupidly simple game where you move a character ("%") around a grid collecting the letters of the string "STRIPE". It fits (exactly) in the 440-byte code segment allowed in the 512-byte MBR, though if I really wanted I could shorten the printed strings and add more code. It's quite heavily optimized for size, and I'm fairly proud of a couple of the things I thought of to save bytes. It's not something you usually have to think about any more these days.

My submission is here, for those who would find its workings interesting. It's heavily commented to help you (and me) through. Let me know what you think!

2011-12-04 | 0 comments

Today, while walking home from campus, I saw not one, not two, not even three, but four raccoons. The first two were poking about the garbage cans next to a house which had a sounding burgler alarm. I suspect this was the doing of the coons.

The second two were in the yard of a house outside which I often run into a friendly cat. I heard a rustling sound, pulled out my light, and sure enough, two more of those faces staring at the bright thing. Crazy.

I could tell it was that time of the year because there were some 20 people in the BiD Lab today. Yes, on a Sunday. I'm personally trying to finish up:

So, uh, that's why I haven't been updating as often as I'd like.

2011-12-13 | 1 comment

Zeus, let all this madness be over. My sleep schedule is SO hosed right now.

Friday night/Saturday morning was a total lunar eclipse. I woke up at 04:00 and watched part of it from my bed and part of it from my balcony. I tried taking pictures - since I didn't have access to a telescope like I did last year, I instead tried setting my point-and-shoot on stable surfaces and doing long exposures. The results:

The house across the street
The house across the street.

Me watching from my bed
Me watching from the warmth of my bed. This was a 15-second exposure, and my room is actually illuminated by my monitor with the backlight on but all pixels black. I had another picture that was with some of the pixels white, and it looked like daylight. Long exposures are crazy!

The moon itself
The moon itself.

There wasn't really time to sleep much after the eclipse, since Saturday was the rerun of the Spring 2011 Berkeley Mystery Hunt (for a wider Bay Area audience). I packed my dual laptops up and set up shop in our headquarters. Ankur arrived, and then Josiah and Annelise and I fetched a bunch of food (muffins, croissants, bagels, clementines, milk/juice) from Josiah's cubicle for all the attendees.

Kickoff was a little worrisome - we had more interested teams than available rooms to give out. It's troublesome that student groups aren't allowed to reserve rooms on campus during R&R week.

The hunt itself started off slowly, but got more hectic as time went on. Some of the submissions were hilarious, particularly for the Mario Savio puzzle.

When it came time to set up the runaround, things got a little frantic - Ankur went to the start of the runaround to meet the team there and follow them around on the runaround, while Annelise watched from one stop ahead and Josiah ran ahead deploying envelopes at each of the stops. This was fine until a second team reached the runaround and Annelise had to go join them, at which point we had no more margin of safety, should a third team reach the runaround. Since we only had three people left at HQ (myself as coordinator and email-answerer and two people running the answer queue), I became nervous as a third team completed every remaining puzzle in the game. Fortunately, half of their team was driving in from San Francisco, so Josiah was able to finish the deployments in time for us to make it back to the runaround start before the team arrived.

One of the teams figured out the final puzzle minutes before the hunt ended at 10PM, which was perfect. All in all, the hunt ran fairly smoothly, and I had a lot of fun seeing things from the other side. It was great hearing from the puzzlers what they liked and wished was different about the hunt, as well as advice from seasoned puzzle-writers on how to plan such things. Good times.

The hunt itself is archived here, if you want to play along. My favorite puzzle was Cipher. :)

Soon, the Campus League of Puzzlers will flesh out our plans for the Spring 2012 hunt. I am excited!

So that was Saturday. Sunday consisted of going into lab and tooling away for the entire day at our CS262 project - a flexible distributed architecture for computing similarity matrices with fast partial availability of results - with Luke and Pablo. An all-nighter was involved. We produced useful results some time around 7AM on Monday. We finished our poster at 9AM. The poster session started at noon, so we each went home and slept for something like one hour, changed clothes, and came back.

Somewhat surprisingly, the poster session was a bring-your-own-posterboard-and-stand affair. Our presentation to Eric Brewer was something like third-from last, and didn't happen until 14:30 (at which point we'd been manning our poster for two and a half hours). On the upside, that meant we'd gotten a lot of practice at explaining our system. It was well-received by both faculty and grad students alike, and a lot of people had useful ideas to improve our system.

After the session, I went with Luke, Pablo, Shiry, and Shaddi to Barney's Gourmet Hamburgers (which are amazing, for the record). We decided on the location by using the Paxos protocols to reach consensus. If you know what Paxos is (and how complex it is, and the implications of using it in the real world between people), you should be laughing right now. Because we sure were.

After dinner, I went home and slept. My schedule now aligns more closely with those of people living in England. I woke up around 02:00, and then started my take-home IP law final, which was due at 9AM. There was much quoting of the US Code and explaining why various scenarios would probably turn out in particular ways.

That was this morning. I'm grading lots of final papers for CS260. I am very ready for this to all be over.

2011-12-16 | 1 comment

I'm back in Carrollton, visiting my family. Yay.

Virgin America is cool. Also they're in a price war with American for SFO -> DFW, so customers get great prices.

Upon arriving home, my dad pulled out some papers from a box he had recently opened, and we found out that I'm a descendant of Pocahontas. Really:

  1. Pocahontas married John Rolfe and had one son, Thomas (Jan. 30, 1615)
  2. Thomas Rolfe married Jane Poythress and had a single daughter, Jane (1655)
  3. Jane Rolfe married Robert Bolling, and had one son, John (Jan. 27, 1676). She died shortly thereafter.
  4. John Bolling married Mary Kennon, and had six children, the first of which they named John Bolling Jr. (1700)
  5. John Bolling Jr. married Elizabeth Bland Blair and had seven children, including Thomas Bolling (1735)
  6. Thomas Bolling married Elizabeth Gay. Their children included a daughter, also named Elizabeth
  7. Elizabeth Bolling married William Robertson, and their children included a daughter, Sarah Ann
  8. Sarah Ann Robertson married Isaac Mills Robertson (from a different Robertson line) and their children included a son, Archibald (Jan. 29, 1780).
  9. Archibald Robertson married Mary Proctor and begat John Proctor Robertson (Oct. 18, 1806)
  10. John Proctor Robertson married Catherine Fry, and begat George William Robertson (Mar. 1, 1837)
  11. George William Robertson married Margaret Brown ("Aunt Dump"), and had seven children, the third of which was Annie Berry (1866)
  12. Annie B. Robertson married Napoleon Bonaparte Waugh and they begat a daughter Mattie (1906), the youngest of 7 children (5 girls, 2 boys in total)
  13. Mattie Waugh married Vivian Ezra Fisher (June 15, 1926), and they begat an only child, Vernon (1929)
  14. Vernon Fisher married and begat three children, Adrienne, Valerie, and Howard
  15. Howard Fisher married Melissa Marsh, and I am one of their children.

So Pocahontas is my great-great-great-great-great-great-great-great-great-great-great-great-great-grandmother.

2011-12-27 | 1 comment

I have arrived in Berlin and am at 28c3. More to come later.

2011-12-28 | 1 comment

Watch my 28c3 talk. Download my 28c3 slides.

I successfully completed my slides and gave my 28c3 talk titled "Reverse Engineering USB Devices" today. Saal 2 was completely full. I'm going to guess that the room held between 400 and 500 people. The talk went better than expected! bushing and pytey (the lead devs on the OpenVizsla USB sniffer project) came up and introduced themselves after the talk. Another guy gave me a ProgSkeet board, which will be neat to play around with. I imagine this will come in handy when the Wii U comes out. :)

There was a small crowd - 10 or so folks - who came and chatted with me at greater length after the talk. One of them gave me a USB controlled battery charger, accompanied with the story of its existence - apparently the only release of the software that lets you see how far the batteries have charged includes some spyware. In addition, Energizer "resolved" the issue by simply taking down the download from their website. Ha!

Another couple guys told me about their project, netzob, which sounds promising. I'll have to investigate in greater detail, but at a first glance, it seems it implements a lot of the things that I called for when I gave my vision for what better reverse-engineering tools would look like. Awesome.

One last guy chatted with me for quite some time. Turns out he wrote the "forcedeth" Linux Ethernet driver for nForce chipsets.

I spent a good portion of the rest of the day hanging out with the folks at the fail0verflow table. marcan and another guy were tuning a laser projector powered by openlase. bunnie was working on his awesome NeTV. pytey told me about the issues the OpenVizsla boards had had, and gave an update on that timeline. bushing was busily stepping through format string exploits. Such fun!

2011-12-30 | 1 comment

UPDATED: video from c-base added.

Wow. The past four days have been a nonstop high. What a wonderful way to end a calendar year!

The third and fourth days of the CCC were as fantastic as the first two. I met with the lead developers of sigrok and netzob, and introduced them to each other. I finally saw a Beagle 480 in real life (that thing costs 1400USD...thanks, pytey!) I learned more about how NAND and NOR work. I have a lot of talks to catch up on. I did make it to Harald Welte's talk about cellular protocol stacks for the Internet, in which I learned about 60 acronyms in 60 minutes, and that I should start reading all the thousands of documents pertaining to cellular network protocols. I also got to hear Bunnie Huang's talk describing a man-in-the-middle attack on HDCP, and his completely legal, noninfringing, legitimate business application of the HDCP master key. Since conferences are about people, not just talks, I spent the majority of my time outside the presentation rooms, chatting with folks, thinking about open problems, or hacking on stuff together. I believe the general policy I heard from Andy Carle regarding CHI is "if you're going to more than two talks per day, you're doing it wrong." Note to self for next year: don't plan to hang around Europe for 11 days after the Congress again; you need that packing space for electronics, not clothing.

After the Congress ended, we packed up our things and a decent group of us (6) went out for sushi for dinner. The sushi was mediocre, but the fellowship was great. After dinner, we walked to the c-base which was configured as a bar/dance club for the evening. The music reminded me of the parties on 5E. I had a couple of the traditional CCC drink, called a tschunk. I chatted for a good while with many of the folks I'd met, and we exchanged (or updated) contact information.

The c-base also had a multitouch table, on which people collaborated at a game of Untangle, or played 4-player Tron, or multitouch Pong. Reminds me, we should get the BiD multitouch table working again.

As it is the tradition of the console hackers to do something awesome to the bar computer each year, marcan and I took over the bar computer and got to work. The machine in question is this ancient Via C3 Samuel 2 machine (it doesn't even support cmov!) packed inside a C64 case, hooked up to a CRT monitor. The keyboard was replaced with a USB keyboard taken from an iMac G3. It was running some slooooow version of Puppy Linux copied into RAM from a 1GB USB flash drive. It didn't even have python. Nor did it have a functional package manager.

First, we installed Debian on marcan's 8GB flash drive. This was nontrivial. marcan wound up fetching the cdebootstrap .deb (and several dependencies), hexdumping the file and searching for the gzip header for the tar file contained therein (because dpkg didn't work) to do an incredibly hackish install of cdebootstrap. From there, we had to alias gpg to /bin/true, because gpg was using a libcrypto or a libssl that used cmov (which the CPU trapped with Illegal Instruction). Finally, we partitioned the flash drive and (with a couple tangles not worth the space needed to explain them fully) successfully installed and booted Debian.

We'd had a couple of ideas of how we might use the Kinect (that I happened to still have in my backpack) to do interesting hacks, but the bar machine didn't have USB 2.0 (only USB 1.1), so that was strictly impossible. We kinda liked the idea of doing something with microphones, but we didn't have any. Or at least, not what you think of as a microphone. Technically, any permanent magnet speaker and coil of wire can act as a microphone, albeit probably with the wrong impedance and a weak signal. marcan plugged his earbuds into the microphone port on the motherboard, and we tinkered with settings until we could see some difference in the data when you hollered into the earbuds.

We wrote a super-simple oscilloscope that just read in samples from the microphone and drew them on the 80x25 character terminal in real time. It pulsed in time with the music, or whenever anyone spoke, and really fit nicely with the rest of the ambiance of the space station.

I'll link a video of our hack as soon as either bunnie or marcan posts it somewhere on the net. Video below. Thanks, marcan!

Transcript:
Me: "marcan and I installed Debian on marcan's flash drive so that we could write a (um) python script to watch the audio input. But this device doesn't have any audio input so we're using marcan's headphones as a (uh) makeshift microphone. (And, uh, yeah) so we wrote this (uh)..."
marcan: "This OSCILLOSCOPE!"
me: "Awesome."

There was a girl with beautiful, incredibly long straight blonde hair - it went down past her thighs. I asked if I could French braid it, and she let me. Hmm. This sounds much sketchier when I write about it now than it was at the time.

As the night dragged on, friends one by one took their leave. At 0500, marcan and I were the last remaining from our original group, and we set out. The sun will be up soon. (In hindsight, staying up this late is NOT going to help my ongoing jetlag. Oops.)

I have made many friends here, and I look forward to collaborating with them in the future. Until the next Congress, we have the internet. And in the case we find ourselves in nearby regions, we'll meet up again.

The year in review: