Today, I learned about Java reflection, and got to actually write a patch for one of the Extreme Blue projects. Yay!
UI design for the schedule planner begins. Matt and Kyle and I met on IRC to present mockups (although Kyle was the only one with things actually mocked up) and to analyze what we liked and didn't like about them. More to come later.
My family got home from their vacation to Canada.
I've started writing this shortlog thing. A mini-blog of sorts. I'll probably just put occurances or interesting things here.
I took Nicole out to Distant Worlds - the San Francisco Symphony played music from Final Fantasy. Nobuo Uematsu, the composer of almost all the Final Fantasy music, was there, and had the most delightful smile the whole evening. The performance was amazing, inspiring goosebumps and evoking tears.
I started reading Aldous Huxley's Island. I still haven't figured out which side of the book's argument the author is on.
I set up a Mumble server again. This time around I knew about qdbus, which made life much easier. And even without qdbus, now I have a python script that mimics a good deal of the introspection functionality, and I know enough python that I'd be able to work through configuring it again.
My laptop (phoenix) now has a defunct graphics card, or at least that's my diagnosis. It powers on and boots, and the backlight works, but there's no video, neither on the internal monitor nor the external VGA or DVI (on docking station) ports. Ordinarily, this would be a major downer, but since I'm not exactly using phoenix at the moment, and my Dell Complete Care expires in less than a month, I'd consider this to be a well-timed failure. Dell Support was great, and the man I talked to ("Michael") was very helpful and recognized that I had already adequately diagnosed the issue, so we didn't go through the "do-exactly-as-I-say" flowchart, which was particularly awesome. Somehow I was in a very pleasant mood when I hung up the phone, which is an impressive feat for a support agent. Job well done, Dell.
Chisanbop is interesting.
Today is laundry day.
I've completed the first quick-hack implementation of shortlog, my super-low-time-investment blogging engine. It uses mod-python and a folder of text files. Fancy features like HTML entity replacement, auto-hyperlinking, and in fact, anything other than paragraphs of text will be yet to come.
The primary purposes of this exercise are twofold. First, I wanted to make myself get more comfortable with actually putting ideas into code, rather than overthinking them and never getting around to implementing them. Second, as my life circumstances are changing, I've decided that it might be worthwhile to write a blog. Since previous blog attempts have failed, due to my lack of keeping up with them, I wanted something really low-barrier-to-writing. I figured something where I'd just write text files in Vim would be appealing, since I'm almost always ssh'd into this server. We'll see how successful this attempt turns out.
Since everyone has been ranting and raving about Inception, Nicole and I went to see it.
I got the box from Dell to ship my laptop off for service today. It should go out tomorrow. Yay!
WARNING: SPOILERS FOLLOW. Inception is a thinker of a movie, but I have some complaints with it. I can accept suspension of disbelief, but self-inconsistency doesn't work for me. I also didn't like how the supposed recursive timing was inconsistent (not to mention wildly imprecise). The whole concept of the "kick" was ill-defined - rolling the van wouldn't awaken them, but somehow backing off the bridge would? And then the fact that none of the characters are particularly interesting. Nonetheless, despite the mindless action, I did enjoy the movie. Possibly because I was more interested in the technical mechanics of such a world than the people inside it. SPOILERS END HERE.
I've had some seemingly random lower back pain lately, and I have no good place to decompress my spine. This annoys me.
And the nVidia binary drivers on Linux suck - kraken has locked up twice in the past two days when OpenGL compositing is enabled. The nouveau stack is getting more promising, despite its poor performance.
Ginger ice cream is amazing.
I'm trying out a wide variety of monospace fonts, to see what I like best for coding and use in the terminal.
Today I went to an event at the Computer History Museum in Mountain View. NPR's Guy Raz interviewed Facebook CEO Mark Zuckerberg and The Facebook Effect's author David Kirkpatrick. The discussion was preceded by a reception with lots of small tasty foods.
The discussion itself was interesting. Zuckerberg speaks at great length in response to questions - it's quite clear that he's passionate about what he's building. Guy Raz asked a good deal of questions pertaining to data security, responsibility, and privacy, most of which were answered in a politically-correct fashion. The thing that struck me as most interesting was that Zuckerberg comes off as having no respect for people behaving differently in different social groups - he described such behavior as lacking integrity. In some sense, yes, behaving two opposite ways would be without integrity; however, he seemed to fail to grasp the concept that in different groups you would highlight different subsets of who you are. Perhaps he is wholly the same person to everyone, but his users are not. This all hot on the heels of the presentation Julia Grace gave yesterday morning, in which she described the largest problem people have with Facebook being the fact that it's difficult to separate your membership in different social groups from each other. Perhaps his seeming misunderstanding explains this issue - Facebook is the social network platform that Zuckerberg would want to use, just as the iPhone is the phone that Steve Jobs wants to use.
Making a product that's exactly what you yourself want provides a lot of motivation, but it seems it can blind you to the desires of other users.
I really need to find housing soon.
One medium pizza with everything and extra cheese.
Today, Nicole and I went to the local nickel arcade and played hours of DDR until we were both utterly exhausted. It was fantastic - neither of us had played DDR in quite a while. I am going to be SO sore tomorrow.
I am now the proud owner of three new fitted dress shirts. Hooray, blue!
Today Nicole baked Tuscan bread and white chocolate chip + cashew cookies. Very tasty. And now I can honestly say that I've used a hair dryer on a loaf of bread.
I'm still reading Island and searching for a suitable apartment.
Oh dear, I've started playing Chrono Trigger. And I've clocked three and a half hours on it already.
Reasons I am frustrated today:
I'm better today. So far. I'll be checking out apartments this evening in Berkeley - hopefully I'll have a place to live next year by the end of the week.
I'm thinking about writing tools to help in editing this blog - in particular, a search tool, so I can find an entry based on content. But that might be a little silly and fancy, and it's probably not exactly a common use-case for me. It might be cool to have a search function in the site, though. We'll see how things turn out. In any event, it's good programming practice, which is how this blog started out - a fun attempt to create a blog from scratch (well, with liberal tool reuse) in thirty minutes.
Well, I've submitted a rental application. Here's hoping that Andrew and I get the place - it's in really good condition.
My laptop has had its mobo and touchpad assembly replaced, and is en route back to California.
Nicole and I played DDR at the arcade again after work. I'm getting better, though I still get tired too quickly. That arcade needs a fan by the DDR machine.
Our rental application was (tentatively) approved. I will have a place to live for another year. Excellent!
My legs are stiff. I need to stretch.
Today I got a package in the mail from Sarah Hodde (with regards from Sarah Luna) containing a book of piano music and what must have been a full pount and a half of brownies. The packaging had suffered some damage, so there were brownie crumbs EVERYWHERE, but they were still delicious. Yay! I ate a few with some leftover frosting. AMAZING. Thank you, Sarah and Sarah. You totally made my day. :)
Today I'm filing the official paperwork for my new apartment. I'll probably not move my stuff up for another week and a half, but it'll be nice having everything squared away.
Homemade Philidelphia cheesesteak sandwiches are WONDERFUL. YAY!
I sliced my thumb on my Leatherman today. My thoughts in order:
I'm only mildly broken.
Nicole went back to Texas. SADFACE.
I'm in New York City. This deserves a good deal of writeup that I will get around to when I'm less tired.
UPDATE: I've recapped everything but August 6th, which will be done after more sleep.
NYC, day 2: Today was great. Amazing, even. I slept in until 11 or so, then waited for other interns to get up and dressed and ready to go places until a little past noon. We wanted to visit the financial district, possibly see the Statue of Liberty, possibly visit SoHo, and wanted to see some museums (particularly since IBM employees have free entry (yay, corporate sponsorship!)). We opted to head to museums first, since the museums have a firm closing time, and none of the other targets did (it was Saturday, so there was no trading on Wall Street). So, we took the MTA north up to 79th street and went to the American Museum of Natural History, where I remained until the museum closed (about 5 hours later).
The exhibits were nothing short of fantastic. We started in the Gottesman Hall of Planet Earth, an exhibit about the formation of the Earth, and thus, about different kinds of rock/rock formations (remember igneous, sedimentary, and metamorphic?). There was a cool half-sphere display, which we kinda mocked since one of the intern teams has a full sphere display that they are working on. I spent a little longer looking at the exhibits than the other five interns, so I started to fall behind. Once we got to the Hall of Biodiversity, I was completely left behind, which was totally okay, because there was a STUFFED TIGER and a bunch of cool stuff on African wildlife. I visted the Milstein Hall of Ocean Life, a huge two-story room with evolutionary trees of all sorts of sea creatures, pictures of various bioluminescent creatures, a full-scale model of a sperm whale, and numerous other breathtaking sea life forms. I skimmed through the North American Forests exhibit, along with the Warburg Hall of New York State Environment, pausing to note the cool display on how farming was done through different time periods. It's interesting to note how a smaller and smaller percentage of the population farms as time goes on, despite having many more people to feed. This reminded me of the sad fact that our population eats so poorly and is growing unsustainably. But that's a talk for another time. Go watch Jamie Oliver's TED Talk, it's worth your time.
This accounts for about the first 90 minutes of my time in the AMNH. My next stop was the Spitzer Hall of Human Origins, which talked about human evolutionary ancestry - so a good deal of background information on DNA, evolution, etc. was involved. I particularly liked the display about the differences between human and ape hands, noting our comparably large opposable thumbs. There was also a bit explaining the fossil record, how few humanoid fossils we've found, and the different brain sizes of various creatures. After the Hall of Human Origins, I continued to the Ross Hall of Meteorites, which was mostly boring since I knew most of the content there (stuff like meteorites are usually named after where their pieces strike the ground). The real value of the Hall of Meteorites was that it was the only entrance to the Guggenheim Hall of Minerals, which was the COOLEST EXHIBIT I'VE SEEN IN A MUSEUM EVER.
I'd guess that I entered the darkened hall at around 15:00. I was greeted on my left by a lovely display of different types of gold crystals. But that wasn't the part that really got me excited. No, I was most impressed by the series of glass cases on the left wall of the room, which contained a HUGE assortment of minerals, impeccably organized - each glass case contained minerals with a particular anion (say, halides, carbonates, oxides, or sulfides). Within each case, the samples were grouped with a number, and each number refered to the group in the periodic table that the primary cation was in. Then, each individual specimen was named, and at the bottom of the case, its chemical formula was provided. The organization of the collection awed me, along with the sheer number of minerals that I'd never heard of, as well as the fun of seeing ones that I did recognize. Random: I saw a guy wearing a Debian shirt. On the back, it said "apt-get into it!" which I thought was hilarious.
And that was only the half of it! Huge crystals of the most beautiful colors, explanations of how minerals are classified (hardness, streak, fracture, color, luster, etc.), a case of the most common minerals (I knew most of those!), infomation on the various crystal structures, and some gorgeous geodes. Mix in a display of radioactive ores, minerals that glowed under ultraviolet light, and the various properties of quartz, and then just for kicks, add a whole exhibition on gemstones. Countless beautiful cuts of sapphire, opal, garnet, diamond, quartz...they were breathtakingly lovely. You might not get that excited about rocks, but I loved the exhibit. I left the minerals exhibit two hours after entering after seeing my fill. It's a good thing the other interns left me behind - there's no way they would have wanted to stay that long.
My next stop was a quick trip up to the fourth floor, so I could visit the three dinosaur exhibits upstairs (I skipped floors 2 and 3, since I find dinos cooler than most other animals, and the other exhibits were mostly about lesser animals or peoples). There were two exhibits - one on Saurischian Dinosaurs ("lizard-hipped") and one on Ornithischian Dinosaurs ("bird-hipped," despite birds actually being descended from the Saurischain line). The former was home to Apatosaurus and a big Tyrannosaurus rex, while the latter featured Edmontosaurus and others. There was much visualization on similar bone structures, and how birds are descended from dinosaurs, but obviously the best part was the GIANT dinosaur skeletons. Those things were terrifyingly huge, back in their day. I want to ride one.
And then the museum closed, and I went back to the hotel, recharged (both myself and my phone), and then I located the Nintendo World, because that store is awesome. I got a picture of myself next to a stuffed KingSlime (yay, Dragon Warrior series!). There were all sorts of Kirbys - last year, I only saw the cutter and parasol Kirbys. This year, there were also Chef Kirbys, Sword Kirbys, Ninja Kirbys, DeDeDes (with hammers!), and ADORABLE Waddle Dees. I eventually left and got dinner at a nearby sushi restaurant, which concluded my exciting events for the day.
NYC, day 3: We checked out of the teensy hotel around 10am, in time to make it to Grand Central Station (our prearranged meeting point) by 10:15. We did all manage to make it on the same train, and we even all got off at the same (correct) stop, so I declare the train ride to have been a success.
Armonk Expo, day 0 (because there weren't really any important expo activities today, mostly just arrival): people practiced presentations. Some sites were better-prepared to give their presentations than others. Foosball was played after dinner, and I pretty consistently tore apart everyone I played. Good times.
Armonk Expo, day 1: Started with an early breakfast (delicious sausage and made-to-order omelettes). Our keynote speaker talked a good deal about the importance of innovation, ending with the memorable line "If you shoved radios up the birds asses, we'd have music in the sky." He kinda reminded me of Dr. Rodney Hill from TAMU.
The presentations were all decent, though I found Almaden's to be the most entertaining. The projects on the whole were mostly good, with the exception of the one that was supposed to be an improved recruiting tool for universities - the team explained things poorly, had no data to support their (broad) claims of improved efficiency, and all in all were entirely unconvincing. The worst part was the bit where they tried to show a graph of number of grad students vs. terms remaining. Heck, the grad students don't know when they're going to finish - don't pretend to have accurate data when you don't have any real data. RANT RANT RANT.
The rest of the projects, however, were pretty cool. The guys who implemented hot-data migration to SSD for btrfs worked all summer on GPL'd code that will hopefully get reviewed and merged into btrfs by 2.6.37, which is awesome (and so were their benchmarks). The project on Java runtime sharing (share JIT'd libraries! share JVM! decrease memory footprint and load times!) was also neat, and their mentor mentioned that he'd be going to Finland soon to pitch the IBM JVM for use on Nokia's MeeGo devices, which is cool. Clever hackers have already ported the IcedTea OpenJDK to the N900, but an open-source IBM Java stack probably wouldn't be bad either (Android uses the IBM class libraries with the Dalvik VM, and Nokia uses IBM Java on all their S60 line, so this is precedented).
Sam Palmisano (IBM's CEO) came to the demo showcase and visited five project teams. I took some HDR photos of Sam with the team that worked on a spherical display on my phone with FCamera. I need to composite them now. After Sam visited the five chosen projects, he gave a brief talk on how IBM has always been about tackling hard problems for the enterprise, bringing really smart people together, and integrity. After a few more photos, he was on his way out...but he stopped as he was leaving to shake my hand. Jeanie, the woman who was escorting him around the various project booths, introduced us and mentioned that I was an Extreme Blue intern last year, and that I'm starting my PhD program in the fall. He asked where, and I replied Berkeley, with a focus on HCI. He mentioned that he visited California recently, to which I replied "It's a beautiful place." Then he noted that he was right on the coast, in which case it was slightly more chilly. But it was super neat that he took a minute out of his day to talk to me, the random intern.
Later, Jeanie informed me that she told Sam the following as they walked away: "He's crazy smart, you know." I'm honored - the CEO of IBM might just think that I'm crazy smart.
Armonk expo, day 2: the interns have a career fair; I have packing responsibilities. I managed to hit the snooze button about 6 times this morning.
Flight back: uneventful. I finished reading Island and am now halfway through Watchmen.
Happy birthday, Andrew Wang!
I'm packing my belongings in preparation for moving to Berkeley.
After work today, I made a trip to Berkeley to drop off the majority of my electronics. I'll be taking the rest of my stuff up tomorrow.
Today was the last day of Extreme Blue. One of the teams gave me an adorable pixel-art pin of Link (from the Zelda series). I believe I have completed all of the thousand or so things that I needed to finish before I left.
Now, to pack up the rest of my belongings for my second trip up to Berkeley...
Moved the rest of my stuff up to Berkeley today. Andrew and I are busily trying to recover keys for wireless networks nearby.
After moving in and ordering Internet and a cable modem, I packed up and drove down to Carpinteria, to visit Sarah Luna and her family. I was glad that my surprise was indeed a surprise. I was greeted by the (usual) line: "Ahhh! What are you doing here!" I wish I'd been awake and witty enough to reply "surprising you," but I can't remember what I said.
I obtained some dinner and went to bed (and by bed I mean couch, since all the beds were taken).
I awoke at 7 this morning when Sam gave Sarah a wet willy. The three of us ran up and down the beach, then did an abdominal workout. I had a tasty bagel with lox and an egg burrito for breakfast, then finished reading Watchmen. I also worked a decent bit on a 750 piece jigsaw puzzle.
Later, I did battle with a family-size can of baked beans. When the hand-operated can opener proved that it was noy up to the task, I brought out my trusty leatherman (Nicole, that thing has come in handy so man times. Heart!) and proceeded to stab the lid around the edge until enough of it was movable to empty the can. This happened in an awesome splash of baked bean juice that wound up on my arms, shirt, face, and all over the counter. The beans were fine, and I declared it a victory.
Hopefully I'll get to kayak later tonight.
UPDATE: Sarah and I went kayaking. Heading north on the beach, we saw a pod of dolphins (about 6) feeding/playing. They were jumping out of the water, and we were about 50 meters away. They were swimming in our general direction right up until a couple on a jetski flew by. "Did you see the dolphins?!" they asked as they scared them off. Yes, we were watching them until YOU GUYS SCARED THEM OFF. Blah. We also paddled over to the kelp beds, which were cool, and saw some schools of fish jumping about. Fun stuff. I got completely dumped into the ocean as I came back in, though, losing my sunglasses in the process.
Today was a much less active day than yesterday. I spent a good deal of the day indoors, reading Daemon by Daniel Suarez. Since Suarez is an IT consultant, his hacking and systems information is spot on, which made the book a very enjoyable read. He mentions and demonstrates such things as NetStumbler, SQL injection, and all sorts of identity theft.
This evening, I introduced Sarah's family to the card game Set. Like everyone I've ever shown the game to, they were slightly confused at first as to what constituted a valid set, but unlike most groups, once they figured it out, they didn't brush it off as too difficult or not fun. No, they got competitive. By the end of the evening, I was pulling out all stops and had to really focus to keep ahead of my new competition. I was particularly impressed by Sam Luna - he kept me on my toes. As a whole, the evening was wonderfully fun, and by the end, I was mentally exhausted. It's a delightful feeling.
This morning was absolutely beautiful. I walked up and down the beach for a while, looking for shells and enjoying the sound of the ocean. Sarah and I talked about life goals and where we currently stand on them - I think we're both on the right track. We said our goodbyes, and then drove back up to Berkeley. Sarah's family reminded me that I'm always welcome to visit them, even if Sarah's not around. I'm amused.
I've returned from my fun trip to Carpinteria! I spent my late afternoon/evening unpacking further, finally organizing my closet and making enough floor space to lay down the air mattress that I'll be sleeping on until I get a real bed.
Orientation is tomorrow. Hope I learn a lot.
Today was the Berkeley EECS orientation. I ended the day much less confused than I started out - I even have a dependency tree of things that I need to do! Things I accomplished today:
Tomorrow I plan to get access and keys to the EECS buildings, figure out my registration/funding specifics, work out how I plan to get residency, and probably get a California driver's license.
Also, after all the business events of today, there was a dinner and game night for all the new grad students. A group of us played Set intermingled with Fluxx for quite some time.
Also also, I met two people today who had also competed in ARML back in their days. This is the first time that more than one person in a room other than me has heard of ARML. Good times!
It becomes clear to me that I will be waking up at 7am from this day forward whether I want to or not, unless I get some nice blackout drapes.
Billmonk is a cool service that lets you track, shuffle, and settle debts between you and your friends. My roommate and I are using it to stay square on rent and other living expenses.
This morning, I was in need of a mattress and a desk, as both items are crucial to my effective living in my apartment. So, to attend to this desire, I went to IKEA. I've never been to one of the stores, but visiting is an interesting experience. The fact that the store is a one-way (well, supposed to be one-way) path is neat. I wondered if they used a space-filling curve, or just winged it. The food sold at very good prices is a fine way to keep patrons in the store for longer, as well as get those with low blood sugar into a sufficiently pleasant mood to close sales.
I purchased a fairly soft queen-size mattress (I'm pretty skinny, and I tend to sleep on my side or my stomach). It fit (with some effort, compression, and adjustment of seat locations) in the back seat of my car, thanks to the fact that it was rolled up and sealed in plastic. The thing reeks of freshly-constructed mattress, which gave me a headache this afternoon. Hopefully I'll be able to sleep okay tonight; otherwise, I'm going back to the air mattress until this thing airs out.
My other significant purchase of the day was my desk. I really wanted a LARGE (gotta put my 30" monitor on something), very stable desk with as little around my feet as possible. Basically, I wanted a nice table. I found a roughly three by five foot desk with narrow legs and no other nonsense. Initially, I wanted the one with black glass, but they were out of stock. I almost opted not to get that desk, but convinced myself that if I got the white-glass one instead, I could also use the surface as a whiteboard. So I got the glass desk and four legs (they make an A-frame, sorta).
My car is a large sedan, but neither the trunk nor the cabin can accomodate a solid three by five chunk of glass. Thus, I hung it out the back of my trunk with the trunk open, and secured the box with twine tied to two anchor points in the car's chassis. When I got on the highway and finally broke 30 MPH, the wind slammed the trunk door shut-ish on the desk box. I feared that it had broken the glass, but it turned out just fine. Andrew and I took several trips upstairs, dropping off our newly acquired wares. Then, I set out to assemble my desk. It was at this time that I discovered that I also needed to purchase a frame for the desk.
So, I said I went to IKEA today. In actuality, I went to IKEA...twice. On the bright side, I got to use the coupon that I got on the first trip to save some seven dollars on the second trip, so that's a plus. After retrieving the appropriate frame, assembly went sensibly, and I set up my desktop and a good deal of my electronics. My room is much neater now that I have a horizontal surface other than the floor to put things on.
Andrew had found someone on Craigslist who was moving out, so we dropped by to see what stuff he might have for sale/free. I really wanted to get the piano, but I realize that I have no good way to move it, and our apartment complex doesn't like people playing musical instruments, in any event. The guy also had an IBM Thinkpad T40, minus hard disk and broken backlight for free. I grabbed it - maybe I'll put a disk in it, or make it netboot with NFS root. Both would be fun. I also bought some shelves from the guy, and Andrew got a couple of mugs.
I'm excited to have my desktop up and running again. I'll probably write more on this blog now that I have a proper keyboard to work with.
My shower is broken. In particular, the cold water faucet is defunct - the knob spins freely, but no water actually flows. I'll note that while taking a shower with only cold water is unpleasant, taking a shower with only hot water IS NOT DONE.
Back to fooling around with computers.
I spent a good while this afternoon doing some usability testing for Kontact Mobile (see this blog post). Currently, it's so slow that I can't be bothered to test it again until performance improves. It kinda worked, which was kinda cool, but was so overshadowed by frustration at the poor performance (we're talking over 5 minutes between pressing the on screen button and anything happening) that I wouldn't even dogfood test it. Maybe when it gets faster...
I felt almost bad sending tough feedback to the developers, but they asked for it. And ultimately, if I were a developer, that's what I'd want - to improve my product, at the expense of my ego. I look forward to my Usability/Design class.
The more I learn about Dan Ariely's works (I'm currently reading The Upside of Irrationality; you should watch his TED Talk as well as Dan Pink's TED talk), the more I wonder if my past academic successes are in fact largely attributable to my nonchalance toward them, simply learning by myself as much as I'm interested. Ariely's studies show that for intellectual work, high incentives worsen performance. I also wonder how much of said nonchalance I possessed as a child, and if I've grown more productive or less productive. Hard things to gauge.
Our shower is now fixed. I am clean!
Random fascinating observation: a year ago, I used to switch back to my email tab way more than I do now. Why? Because a year ago, I didn't have a smartphone. My phone makes noise when I have a new message in my inbox, and I can see in about two seconds whether it's something that I ought to read now or something that can be put off until I go through emails in batch.
A funny thing, considering that most people spend more time on email once they obtain a smartphone. I seem to have done the inverse.
Today, my room was 94.5°F. That was unpleasant. In addition to it being a record-setting hot day in Berkeley, our heater decided to turn on. I suppose the giant window not having proper curtains and all of my electronics didn't help either.
I obtained a mattress cover and sheets today. Yay.
Today I washed my new blue sheets along with the rest of my dirty clothes. Now, I'm pretty sure all my shirts are a slightly darker shade of blue.
According to the thermometer on my desk, it is now 102.5° in my room. What the hell, California.
I now realize that that means that by being in my room, my 98.6° body is, in fact, cooling the room.
I used the word "that" three times in the space of four words in the previous sentence. I should be more creative.
I had my vehicle smog check done today, and on the forms I put down my previous license plate number. Whoops.
The radio is playing Michael McDonald's "Ain't no Mountain High Enough," which reminded me of my mom, who loves that artist/track.
The trip to the DMV was mostly uneventful, although both people who helped me commented on how many Berkeley students they had coming through recently (side note: it's a prerequisite for getting in-state tuition). I am now licensed to drive in California, registered to vote in California, and possess California license plates. I did forget to get HAM radio operator plates, unfortunately, so I'll have to see what I can do about that later.
Pleasant surprises: checking your bank account's balance and finding that your checking account has an extra digit in it.
I now have a safe deposit box. Also, the bank has different systems for California and Texas accounts, so apparently they have to ship off all transactions to Texas before processing them. Also their website is down.
I finished reading Eoin Colfer's Artemis Fowl: The Atlantis Complex. It was decent, but not quite up to his usual genius, in my opinion. The twists were not quite as shocking as they usually turn out (though that might be a side effect of my becoming accustomed to them), and frankly, the whole plot did little to develop anything other than Artemis' mental disorders. As for the action: the main cast was in very little convincing danger for the majority of the time, perhaps a result of Artemis' obsessive nonchalance. It's not so bad that is spoils the series, in my mind, but I'd rather go back and reread the bits with time travel and goblins and awesome support from Foaly behind the scenes.
Today, I spent way too much time catching up on the past month of /. articles (yay, RSS feeds). I feel much more up-to-date.
I thought my GPS had been recalled, but found out that my serial number was safe. Hooray, my battery isn't going to explode.
My homework for CS260 has me reading "one of the most far-sighted articles published in our field." Far-sighted doesn't say the half of it:
"Wholly new forms of encyclopedias will appear, ready-made with a mesh of associative trails running through them..." - Bush, Vannevar. "As We May Think." The Atlantic Monthly, July 1945.
Holy crap, that's Wikipedia. Foretold in 1945. My mind has been blown. Remember, that's just one quote from a series of very accurate predictions about machines of the future.
I found info about piano practice rooms, so I'm going to go practice my hands off some time this week. I seriously missed playing piano.
I am extremely frustrated at the EECS department for not knowing how to set up IT infrastructure cleanly. They have Kerberos, but don't use it. The default shell is some broken variant of csh that won't let you logout with ^D. But the best part of all this is the Unix password policy, which I quote:
"Please follow the instructions to change your password. When you are done, you will be logged off. Currently your password must be 8 characters in length; characters beyond the 8th character will be ignored."
THIS IS A BOX WITH PORT 22 OPEN TO THE INTERNET. This cannot possibly be secure. I have half a mind to run a dictionary attack on my own account to see what happens.
Oh, and the best part? SSHD supports Kerberos (it's even enabled!) but the box doesn't have a keytab, so it doesn't work. Homedirs are mounted over NFS (and not until authentication has been done (not that NFS mounts are actually authenticated (which could totally be done with the Kerberos setup they already have via Active Directory))), so publickeys don't work either. No, the ONLY way to log into that box...is with an insecure, exactly 8-character password.
At least my classes are interesting (read: going to be a lot of reading). But they'll be fun, make no mistake.
I went to the nearby Thai restaurant (which only takes cash, interestingly) for lunch with a couple of my labmates. It turns out Anuj also has an N900, which was awesome (he worked at Nokia this summer). A pleasant lunch came to a painful end when I put my dishes in the bin to be washed and stood up into a metal box on the side of the building.
My day continued to be frustrating when I got out of my second class and found the lab empty. Since I STILL don't have key card access (it's been over a week now since I requested it), I can't get in to retrieve my laptop.
Since I had a great/terrible day, I went to the practice rooms (my laptop was locked away, after all) and played piano (despite not having my music) for a good 40 minutes. I think I should leave my books in the lab - it's (roughly) on the way to the practice rooms, and my memory is a little on the flaky side (hey, it's been nearly four months). As I left, I heard someone else playing Jon Schmidt's "All of Me," so I went over and told her that I knew it as well. It was nice and helped improve my fading morale.
PhD students read a lot of papers. I need to learn to read papers more efficiently.
Today, I played 2½ hours of volleyball after class. I will be sore tomorrow, but it was a lot of fun, and I need the exercise anyway.
Congratulations, sharpobject, you've gotten me started working on Project Euler Problems again. Today's successes:
How about that.
I signed up to help with the CS Graduate Student Association (CSGSA, henceforth) social event this week, which was a barbecue. I successfully lit grills without burning down the entire state of California. YAY. The event was a success - probably 30 or so people came and ate and drank and socialized. Good times.
ALSO my cable modem arrived today. Comcast is set to come out Monday. I will have fast internet soon.
Interesting things today:
Interesting thoughts on the equal-odds rule. Yet another reason for me to force myself to get around to creating things as often as possible. Like any of the things on my TODO list.
I got my California driver's license and title in the mail today. I wonder what I'm supposed to do with my old (invalidated) Texas license.
Andrew and I played a bunch of DDR today, which was a good workout. It was a lot of fun going back through all my favorite songs (and getting A after A on heavy :D). I wonder if I'll be sore tomorrow.
Tonight I went to a house party where we watched The Empire Strikes Back and Return of the Jedi. A couple members of our group of 10 CS majors had never seen the movies before - WHAT? HOW? I did my best not to recite every single line, lest I be slain before Luke makes it off Hoth.
Andrew and I went to Berkeley Bowl, which has an incredible amount of varied produce. Speaking of which: wow, produce is super cheap compared to meat/cheese. I should eat more fruit and veggies.
Some time I'm going to tabulate exactly how much I spend on things, so I can get a baseline for my current monthly expenses. Then I can do all sorts of fancy analyses on the data.
Learn about computer memory hierarchy speeds with a nice kitchen analogy:
This is actually not quite accurate for orders of magnitude, but hopefully the suffering that is disk access time comes across.
I have now changed all of my website over to HTML5. This consisted of deleting some text inside the <!DOCTYPE> tag for each HTML file. That was easy.
Yay, no class on Labor Day. This means I have only two days of classes this week. It also meant that I could be home at 10am for the Comcast guy to come out and phone up Comcast HQ to have them activate my line and tell them my cable modem's hardware address. Now I have 15/2 Mbps internet, instead of tethering my phone. Life is good. I set up my internal network on my gigabit switch, and I'll be doing Kerberos/NFS when I get a chance. I can hit my desktop directly on port 22 and 80. So much win - now I can run Kerberos/NFS from kraken, my dekstop.
Before I go to bed, I need to have read three more papers. I should not have put them off this long. Oh well, how bad could it be? Deadlines aren't actually until Wednesday.
Today was awesome. Why, you ask? Because the class I'm auditing titled "User Interface Prototyping Design Clinics" is amazing. Storytime:
During the first hour, we discussed the design process, and exactly what we (and other big thinkers in the industry) thought "prototyping" was. We noted that it could demonstrate a piece of interaction, how something looked, or how something functioned. It's easiest to make a prototype that does just one of the three, and hardests to create one that does all three. We also brainstormed random things for this year's CHI Student Design Competition (CHI is the ACM Special Interest Group (SIG) on Computer-Human Interaction, my field's largest and most prestigious conference). In what could almost be considered unfair, the design problem this year is "...to design an object, interface, system, or service intended to help us appreciate our differences." OH THAT SOUNDS RIGHT UP BERKELEY'S ALLEY! We thought about differences between people, contexts in which people people would benefit from appreciating each other's differences, and what sort of users would value such a system. In what would probably have insulted one of my friends who truly loves diversity, one of the students noted that we should be careful to avoid overemphasizing differences, as they can carry a certain amount of stigma.
I'll also note that I successfully ordered lunch for the lab from SF Soup Co. during the first hour of lecture via my phone, saving us from having a foodless lunch seminar. But that's offtopic.
The second hour was where the class got really awesome. Lora, the graduate student instructor for the class (also one of the senior members of the BiD lab, where I currently sit), is getting her PhD studying what she refers to as "Design Doodling." Basically, the quick sketches to show off an idea that are guaranteed not to get any better after 3 minutes. And we spent the rest of the period getting everyone brought up to speed at the super-basic art skills that would help us draw up our ideas more clearly.
We started with points on opposite ends of a sheet of paper, and practiced drawing straight lines. Suggested: place pen(cil) on point one. Keep eyes on point two. Connect in a single swift stroke.
Next was concentric circles. Toy around with which direction you prefer to move your arm, and where you prefer to start and stop the motion. You'll get a feel for how you have to move your arm for circles of various sizes. If I took the time to compare with a circle drawn with a compass, my circles are probably skinnier at the ordinal directions than the cardinal ones. But I'm working on it.
Stick figures: Drawing people (or parts thereof) gives an intuitive sense of scale to pictures that doesn't hit home the same if you merely label them with dimensions. Traditional xkcd style stick figures are unfortunately very inflexible. It's hard to make them look at things, bend their bodies, sit, or demonstrate anything to do with clothing. As a result, Lora suggested "star people:" draw the head, place pencil on neck, and add limbs until you have four. These you can at least put pockets on. For even better poses, the "tunic + pants" approach can be deformed and shown in many orientations.
Hands tend to show up a lot in user interface mockups, since a lot of interactions involve *gasp* manually manipulating something. As a result, it's a good idea to learn how to draw hands. They don't have to be photorealistic - just squint and draw the big blobs. Best quote of the day: "In the worst case, you have a template for a hand attached to you!" I cracked up.
Faces: you will learn to draw 12 different emotions. Draw three rows of four circles each. Add dot eyes in roughly the center of each face. Top row gets mouths with edges pointing up, middle row gets flat horizontal line mouths, and bottom row gets frowny curves. First column gets regular horizontal eyebrows (like ‾ ‾), second column gets up-pointing eyebrows (/ \), third column gets down-pointing eyebrows (\ /), and fourth column gets one eyebrow raised and one regular (‾ \). Congratulations! You now have:
Sounds: how do you visualize sounds? You can use ♫ ♩ ♪ ♪ for music. You can draw vibration as wiggle lines. You can draw speech bubbles around things, even Onomatopoeia. We were tasked with drawing a cell phone ringing with a call. I also thought to add rays of majesty where the display was illuminated.
Practice: draw a picture of a person jumping on a trampoline. And you know what? Using all the advice given over the past hour, it was quite clear that there was a person, and he was having a good time jumping on a trampoline. The anime exclamation point over his head makes you aware of his alertness. No one else in the class was familiar with the concept. WHAT? ‾(°_o)/‾
So. I can't draw. I have never considered myself a good artist or even to have good handwriting. But thanks to one hour, I'm comfortable enough to draw design doodles.
I can't help but hope that all the seminars I go to will be this good.
My classes are hitting stride, and while it's a vigorous pace, it's an enjoyable one. In HCI we discussed Ubiquitous Computing - basically, the idea that use of technology becomes so widespread and intuitive that we no longer think about it when we use it, the same way we no longer think about reading text - we just gain information by doing so.
Texas A&M had a power outage today; I noticed when IRC went down and I could no longer whine to my friend Matt about how NFS keeps dropping on mirror.cs.tamu.edu. Apparently it took out a large chunk of campus. My heart goes out to you, system administrators who had (or still have?) to make sure everything came back up. To quote the LUG: "power failures kill uptime - boycott them."
In Operating Systems we discussed filesystems. Holy cow, they're just putting trees on disk in a fast manner. And now I *actually understand* journaled filesystems. They're pretty cool. Maybe I should start reading more of the Linux source; I might actually understand a good chunk of it.
Tomorrow I get to play around on rooftops.
Today, I had the fun opportunity to enjoy the view from the roof of a University building. In particular, I was atop the Space Sciences Laboratory installing a dish antenna for an access point that will operate on the 5GHz band. Some assembly required. I particularly enjoyed climbing the wall upon which the pole upon which we mounted the dish. It reminded me of the days when I used to do Parkour, back at TAMS. I took amazing pictures with a view of the whole bay.
Today was a day of errands. I went to the bank, the grocery store, CVS, and the post office. I also finished up my homework, wherein I implemented the Bubble Cursor (pdf) as described by Grossman and Balakrishnan.
The next project is to implement a multitouch input device. I want to get a projector.
I'd really like a hug right now.
Random: I got my amateur radio operator license two years ago today.
Today, Andrew and I invented the bubble-wrap beanbag: noisy and one-time-use.
I updated my resumé today. This week will play host to infosessions from IBM, National Instruments, Microsoft, and D.E. Shaw. I have t-shirts that associate me with three of those four companies. This will be fun.
As I write this, I hear Lora playing electric guitar in the BiD lab. My colleagues rock.
Today is day 1 of industry recruitment^Winfosession week, and the company of the day is...IBM. Wonder if I'll see anyone I know from Almaden.
Answer: yes, I will see Regina, my manager. I gave her my updated resumé to take back to folks at Almaden. I also got to speak briefly about what the Extreme Blue project teams did this summer, which was fun. Met a junior named Austin who sounded interested in Extreme Blue. I hope he applies - he seemed nice.
I got my bill from Comcast today, so I signed up for automated billing. It was in the process of going through my account information that I discovered that:
So we'll be cutting back on the ol' internet usage just a tad.
I got full credit on my first HCI assignment. Yay.
Today, on my way to the lab, I was passed going down a staircase...by a guy riding a bike. He then proceeded to hope the bike up a foot-tall curb. I was impressed.
Björn has loaned me a PS3 Eye modified to only see infrared for the purposes of building a multitouch table. I pulled out my code from whitepages v2 (one version the predecessor to what I have published on this site), adjusted the framerate that I capture video at, fired up the program, and adjusted the lens until I got a fairly crisp image of myself in infrared. I was quite pleased that my (and KDE's, since I had originally taken pieces of code from Kopete for video handling) two-year-old code was still useful and effective.
Knowing me, that same old code is going to wind up getting used in our final project.
I just got to use 80/20 aluminum for the first time. Cool stuff.
Today, after a minor panic attack last night/this morning, I went to see a counselor at the Tang Center. As I left, I saw a coffeetable on the side of the road labeled "FREE." So I carried it the mile or so back to my house. Now my shoulders hurt.
My new laptop battery arrived (a day early, I might add), so I took the extra wireless card out of the battery compartment and the battery is charging now. I look forward to having decent battery life once again.
My PG&E bill also arrived, addressed to Andrew Fischer. GUYS, I SPELLED MY LAST NAME OVER THE PHONE WHEN I SIGNED UP. You have no excuse. On the upside, the call to get that corrected took about two minutes total, and the first 90 seconds of that was going through the automated receptionist.
Today, I met Ted Selker, IBM Fellow and inventor of the TrackPoint. He had lots of ideas regarding innovation. Most of them reminded me of what other things I'd heard about innovation in the past - come up with tons and tons of ideas, even though most are crap (Equal-Odds principle); only further develop the good ones; focus on real problems that human beings have.
Today was an excellent day. Important events:
Luke and I discussed our architecture for our multitouch table for CS260, and came up with our desired layers and implementation ideas. Luke will be responsible for getting data from the camera into our TouchEvent protocol. Note that I discovered the Qt Multitouch framework after we discussed all this - perhaps I should just be leveraging that.
Nicole and I worked out most of a contract of understanding which defines clearly (for the first time) exactly what we consider acceptable behavior from each other. It took discussion (that probably should have taken place something like a year ago, but better late than never) over the course of three and a half hours. The outcome was both of us feeling much, much better, and a somewhat-joking, somewhat-serious contract, with lots of amusing fake legalese. It was fun.
I took a three-hour nap.
Also, both of my hips are bruised from carrying back that coffee table that I found yesterday. Bah.
The more I read of The Upside of Irrationality, the more I appreciate it. Nicole, Sarah L.: I think you would both enjoy reading this book.
Never did I expect it would be both cheaper and easier for me to purchase a replacement motherboard battery online and have it shipped to me than it would be to buy it in a store. This is what Amazon Prime does to me.
Today, I spent most of the day working on my HCI project - a multitouch table. Luke and I obtained acrylic, wood, wood glue, and angle brackets, and assembled most of the stuff. The camera we have has some dead spots on the CCD, which makes me sad.
Now, it's 21:30 and my next-door-and-down-half-a-story neighbors have lit up their grill, and the wind is blowing all of their smoke into my house. Grr.
Today, someone on one of the mailing lists I'm subscribed to wrote an email that misspelled the term referring to a computer disk as "hard driver." I cracked up, remembering the guys from TAMS who did a prank call to Fry's, pretending to be fresh-off-boat and looking for a "hard driver."
Also, I'm getting sick. Need to buy more citrus fruit.
Today, on my walk home, I was passed by an elderly man on an electric scooter. His helmet flashed white lights in front and red in the rear. I watched him carve wide esses in the sidewalk and street as I made my way home. Berkeley is home to interesting people.
Today was pretty great. Of interest:
I did wind up spending over 12 hours on campus today, though, which was tiring.
UPDATE: bonus cool thing of the day: Jofish wrote a paper that includes a graphic (Figure 7) that I saw as a 7-foot tall poster on Julia Grace's door when working at IBM this summer. You too can have such a poster.
In other news, I'd like to get around to writing an Atom/RSS feed for my blog. Spec-reading is in progress, and I'm limiting the features I'm implementing to things I can do that require no server state information that is not provided by either the text file backend or the filesystem upon which it sits. This may make proper UUIDs impossible, since the only way I can think of to generate the same UUID for an entry is to hash it, which has the problem of changing in value should the contents change. And just hashing the file timestamp or something also is a bad idea, in my opinion - too easy to wind up with a collision somewhere if someone else does the same. An interesting problem.
Quote from today's class: "Stack Overflow is like World of Warcraft, only more productive."
I'd feel sorry for myself and the lack of sleep I'm getting, except that I know my advisor is burning the candle even more than I am. I'm quite impressed.
I wonder if there's data on people who can live successfully on unusually small amounts of sleep, and whether nurses and grad students have a higher concentration.
I crashed overnight in the lab. It wasn't the most comfortable thing ever, but I was tired and frustrated.
The sun will be up soon.
I love it when I find a bug in a piece of software, and then I find the bugreport on the project's bugtracker, and it turns out that it's a recent but, it's been reported, there's a fix, and a package was released in the last three hours.
I'm consistently scoring free food this week. This is awesome. My only concern is that all my produce at home will go bad.
So my code isn't working. Why? I dove into the Qt sources and found: "// Note: TouchUpdate and TouchEnd events are never propagated" WELL THEN, I HAVE TO ROUTE THEM MYSELF. CURSES.
Lora is teaching about Myers-Briggs type identification in the BiD lab to her group of "wondergrads" and explained she's an INTP. I'm pretty sure all of my readers at the time of this writing know that I'm an INTJ. And now you do too!
I'm really looking forward to sleeping in my bed tonight, since I haven't the past two.
It is possible, when working on a project, to throw away the entirety of your codebase, start from scratch with off-the-shelf open-source components, and have a working demo within 12 hours. Luke and I did just that for our multitouch table. We learned an awful lot trying to do everything the hard way, though.
Today I got up early and remoted in to the Berkeley Programming Contest (which is like the pre-ICPC Regionals competition). It lasted for five long hours, during which I hastily relearned the C++ STL. I don't know exactly how I did (scores aren't posted yet) but it was in the top three, based on the number of problems I solved, so I'll probably be going to Regionals. If I do super well there, maybe I can finally land a trip to World Finals.
It was also super hot today. Berkeley, it's fall. You're not supposed to hit the nineties in my room again.
Apparently, I use over a gigabyte and a half of data on my phone per month. Nice.
Per RFC4287, the Atom Syndication Format, section 4.1.2:
"o atom:entry elements MUST contain exactly one atom:id element."
This atom:id is a UUID that stays with the particular entry, persisting through time and remaining through edits.
I haven't been able to come up with a good way to uniquely associate a persistant hash with a file, short of putting it inside each file, or making a database of them. I'm trying to see just how far I can stretch the filesystem...if you have any ideas, let me know.
According to my CS 262A prof, there is a great divide between the "systems" folks and the "database" folks in computer science. I fall quite clearly in the first category.
Random: I want one of these. And a group of people to play it properly.
I really like the Droid Sans and Droid Serif typefaces. They have very slender letters and narrow kerning, which I assume is ideal for reading text on handsets. Droid Sans Mono doesn't quite strike my fancy - for one, the zeroes aren't slashed, so it's hard to distinguish them from capital Os. And it just plain doesn't look as good as Liberation Mono or Inconsolata for my terminal. I'll totally use the Droid typefaces for everything else, though - I like tightly-packed text.
I accidently opened World Without End, and wound up reading the last 150 pages or so again. That book is still incredible, and I urge anyone who wants to enjoy a thrilling, mentally stimulating, emotionally wrenching tale to read it. Just make sure you have a good chunk of time stored away for it.
What do you get when you take a dating site and hand all the data over to people who like doing data analyses? OkTrends, the OkCupid blog. I found the most recent article (at time of this writing, of course) fascinating. It's really cool to look at what people of different backgrounds say about themselves.
This is kinda turning into a linkdump, but I consistently love reading Dan Ariely's work on how people are predictably irrational (watch his TED talk, and how to work around said limitation. I found this article particularly illuminating on what brings close friends together, and how such relationships are maintained. It's not by talking about the obvious or casual or easy things that we make our deep friendships - it's by making ourselves vulnerable, finding points of likely disagreement, and then seeing that maybe we're not so different after all. Or if we are, then we may at least come to appreciate and respect each other's views. I may write more on this at some future point, since I consider it important.
Also, I'm apparently a nitwit - atom:id is supposed to be an IRI. Like, oh, say, http://zarvox.org/shortlog/2010/09/27. I'll hyperlink that as soon as it can become valid. (UPDATE: Successfully implemented on 2010-10-07.)
I now have car and renter's insurance. Which is good, because the policy my parents have for me expires with the month.
I am rather concerned by this article. Granted, it's from Salon, which is about as left-leaning a reporting outlet as they come, but the facts appear to be accurate: an American citizen believed to be a terrorist is placed on an assassination list by the US government. The problem is that this prevents due process, explicitly provided to US citizens by the Constitution (and found in common law all the way back to the Magna Carta). On top of that, the Constitution explicitly states in Article 3, Section 3, that "No Person shall be convicted of Treason unless on the Testimony of two Witnesses to the same overt Act, or on Confession in open Court." I don't like the recent erosion of civil liberties in the United States.
I got a $50 Amazon gift card for having the best feedback for one of the studies I participated in. Strangely, all I can think of is why you shouldn't incentivize intellectual work much.
AUGH I CAN'T GET NFSROOT WORKING AHHH.
On the upside, I can get Ubuntu installed on Sarah's old HP a1520n, despite it showing a black screen on boot. The magic? Hit F6 on the CD boot menu, select "nomodeset", and remove "quiet splash" from the boot options. Apparently the GeForce 6150LE doesn't get along usplash nor nouveau KMS.
Oh, and then after the install, set those GRUB options, and make them permanent by updating the line in /etc/default/grub
I discovered recently that I'm in the PGP strong set. This means that I could (if I found the time) become a packager for open-source projects. That would be neat.
Today I donated to the ACLU. It's interesting to see how many people with strong technical backgrounds support the work of the ACLU. I have the greatest respect for their stance.
Items meriting more of a writeup:
Yesterday, Björn and I took a trip to Willow Garage, the company that makes the PR2 robots that I'll be working with. We were hoping to find out more about how demonstration and teleoperation of the robots are currently done, and what deficiencies existed in current options, and where we might come up with new methods that would be more effective.
Willow Garage as a whole is awesome. There was neat hardware EVERYWHERE - numerous PRs, and these 5 foot tall robots called Texai with a screen, webcam, and speakers. People use the Texai to telecommute from all over the place, and it's totally ordinary to see them just driving around the lab. Lunch was amazing as well - quinoa salad, green beans, build-your-own salad with lettuce, strawberries, cheeses, cucumbers, soybeans, pear, and glazed walnuts, brown rice, and these delicious mini sandwiches with mayo, tomato, and portabella mushroom. Lunch was also amazing because we got to sit down and chat with some really brilliant folks about what we were looking to do, and what's been done so far. I love how at Willow Garage, it's practically assumed that you can get access to whatever fancy hardware you want. After lunch, we grabbed coffee (I had a cup of Earl Grey), talked to different folks for another couple whiles, and then Leila (our host) gave us adorable shirts and PR2 chocolate bars with HILARIOUS nutrition facts (example: Warning! May contain nuts. And bolts...). If I had support for images in this blogging engine, I'd embed them here.
Around 2pm, Björn and I said our goodbyes to that awesome lab in order to make it back to SF before the massive traffic hit (which we did successfully). He dropped me off at the BART station, and I rode back to Berkeley. On the way there, two people sat across from me - one was a young black man reading the book of Isaiah from the Bible, and the other was a slightly-older black man reading the Qur'an in Arabic.
Later that evening, Facebook hosted a technical discussion/recruitment session, which was interesting. The speaker went into great detail about the various languages that Facebook uses (basically: whatever you're most comfortable with, we'll do it), their RPC platform (Thrift) that allows them to do so, a decent bit about the ridiculous scale that their system has to run at, a block model of the ads subsystem that Facebook uses, and details on how the People You May Know functionality was first implemented, adapted to scale up, and made smarter with machine learning algorithms to provide good results. It was quite in-depth, ran 10 minutes long, and was a delight to listen to. The speaker was animated and entertaining, which was nice.
Today, I spent a good deal of time reading papers for HCI, learning about WSGI, reading papers not relevant to my field but still interesting like (pdf warning) The Chronic Dependence of Popular Religiosity upon Dysfunctional Psychosociological Conditions, and watching The Last Lecture. I think that last item was the most impactful.
For those who are unfamiliar: CMU professor Randy Pausch was diagnosed with untreatable pancreatic cancer and was given four to six months to live. On September 18, 2007, he gave his penultimate last lecture, titled "Really Achieving Your Childhood Dreams" to a crowd of 400 people.
It's not often that I'm brought to tears by a lecture, so let me simply repost some of the quotes that I found most noteworthy:
While I won't write them down, there are names in my head next to each of these quotes. You know who you are. If you haven't seen it before, go watch The Last Lecture. There are few ways to better spend an hour than being reminded of what's important in your life.
I just baked a batch of brownies. I forgot to set a timer, but I calculated in my head what time they should be done based on when I put them in. When I suddenly smelled the brownies in the midst of my coding, it was precisely that time. Baked goods are awesome because they tell you when they're done.
I have ported the backend of the shortlog to web.py. Everything works great on a machine with somewhat recent python libraries. Note that as this does NOT include our dedi, you, dear reader, are still seeing the old, feature-lacking version. Oh, Debian stable, I love you, but you make me cry.
I shaved today for the first time in weeks. It took quite a while. I can't shave more than every three days or so without my face breaking out angrily, and then when taken with late nights and early classes, I often don't have time to shave in the morning. In any case, now my face is cold, but smooth.
I have also discovered that I don't dislike brown rice! I just tend to dislike dry rice, and people don't tend to prepare brown rice in a sticky fashion.
I wish I knew how to lead a conversation that other people would find interesting. Lately it seems that I'm failing at that. :-/
HCI class today discussed fieldwork, and more importantly, ethnography. Interesting snippets (which may or may not have anything to do with ethnography):
There were many more things that we talked about that I've already forgotten.
I love the CS grad lounge in the mornings. The great big windows fill the room with light, it's quiet, and I seem to read papers with an unusual efficiency when I'm located there.
I've been on campus for 14 hours today. :/
Looking at the code I wrote yesterday: I produced way more code than I usually do in a day. The numbers:
(00:24:31) zarvox@kraken ~/git/shareboard $ cat *.cpp *.h | wc -l 646
Compare that to whitepages v3, which I designed and wrote over the course of a summer:
(00:25:47) zarvox@kraken ~/git/wp3 $ cat *.py | wc -l 1383
Not bad for a day's work, even given the verbosity of C++ as compared to Python.
To make this entry display correctly, I added proper support for the <pre> tag to my old blog engine.
Today, our lab cleaned out some of the cabinets. Long story short, I now own a projector and an HP printer/scanner. I love it when labs get rid of cruft.
I think I've finally hit stride with my paper-reading. The solution is to be in the grad lounge at 10:30 am with lots of sunlight and a hardcopy printout of the paper I'm to read.
Now, I just have to get into the habit of doing this one day earlier. And then one more day earlier...
I figured out why web.py wasn't working: turns out in web.py 0.2 and earlier, you were expected to print the output to stdout instead of returning a string. A few lines of s/return/print/ later, and you have what you see here.
Yes, it doesn't look very much different. You may notice the permalinks. I'm considering adding breadcrumbs, since now I can support those too with urls like http://zarvox.org/shortlog/2010/10. Maybe I'll just add those for permalinks.
Note that the backend shift and new features were not without purpose - permalink support is a prerequisite for implementing Atom feeds, as previously discussed. However, implementing Atom is going to wait until I finish my HCI project due Friday.
This project is exhausting. I don't think I ever had to code so much in such a short time during my entire undergrad experience, and I tended to put off my projects until the last minute, so that's saying something.
That said, this project may become something of a showcase piece. It performs beautifully, and shouldn't be too tough to polish into something that I'd actually enjoy using.
My labmate informs me that the volume and state of my hair speak volumes to how much sleep I've had recently. Yeah...
Rock climbing tonight, which should be fun. I'd be more excited if I weren't so tired.
I slept for six hours, then was awake for three, then slept for another seven. I lack the words to describe how much better I feel now than I did 24 hours ago.
Toward the end of my second sleep block, I remember several dreams. The last one involved me pushing a shopping cart (which I think I was using as a luggage cart) around what looked kinda like a hotel courtyard. I got in the elevator after first watching six people pack in to the right half of the elevator like sardines in a comical fashion. Then the elevator started moving laterally, and I realized that it was in fact a train. The six people and my luggage were now gone, and there were seats on the sides (like a subway train, only the car was still the same size as the elevator), and we were passing by large multilevel parking structures. In retrospect, it seems a lot like an airport monorail with very small cars. Then there were two women sitting across from me. One of them offered me a token for my return trip (for some reason, I knew that the trip there cost 3 tokens' worth), which I accepted, mentioning that I might still have a token on my Charlie Card (apparently, my subconscious decided that this elevator-turned-train was owned and operated by the Massachusetts Bay Transportation Authority). The same woman asked me if I'd been talking to anyone lately, to which I replied that, no, I'd been spending a huge majority of my time on campus working toward my PhD, which was the first thing that's proving to be really difficult for me. Apparently my subconscious is also mildly bitter about this. And then I woke up.
As I ate a sandwich and some yogurt with fruit, I realized that I still pulled about the same number of all-nighters (or at least late-nighters) per semester in undergrad than I'm currently scheduled to for this semester. The difference in my mind is that those I chose to do by putting off my work, whereas here I feel I haven't been putting off my work. This suggests that while I feel that I've been procrastinating less, perhaps I'm just playing the game with the same skill level, except the difficulty just rose. In turn, I shouldn't worry about feeling exhausted all the time - I just need to get more proactive about the use of my time and be more intentional about my downtime, so I feel like I'm getting more out of it. Then I'll feel like the late nights are justified, since I chose to go do $FUN_THING instead of working.
I find it amusing that I'm consciously plotting to subvert my subconscious. I should finish reading Dan Ariely's book.
Why I'm frustrated right now:
--- 126.96.36.199 ping statistics --- 255 packets transmitted, 139 received, 45% packet loss, time 254798ms rtt min/avg/max/mdev = 6.171/22.678/85.815/13.199 ms (19:25:34) zarvox@kraken ~ $ ip route 188.8.131.52/22 dev eth0 proto kernel scope link src 184.108.40.206 default via 220.127.116.11 dev eth0
Comcast is coming out tomorrow to investigate (and hopefully, fix) this issue. I only hope that the problem remains long enough for their tech to diagnose properly.
I have finished implementing an Atom feed for this blog. I'll get around to modifying the site template to link it later; for now, if you want to add my blog to a feed reader, use this link.
The internet is back to normal, and the Comcast guy hasn't made it out here yet. This, too, frustrates me, since it means I'll probably get charged $40 for a service call.
I cancelled the service call. No sense having the company examine my working cable when it's functioning.
My feed generator had a bug where it would also generate feed entries for the vim swapfiles that get created when I'm editing entries. Whoops. It's fixed now. I'll probably break it in other delightful ways in the future - who knows what might happen!
Time to read papers and make slides for my presentation tomorrow.
Today's reading for HCI includes a paper coauthored by Ed H. Chi. In searching for background on the authors to better understand their places in the field, I found his autobiography. What I found interesting was this section:
"College was a breeze, but I worked hard to finish early. I had set my goals, and nothing was going to stop me from becoming a famous computer scientist. Little did I know how hard it is to do that. It was the fortune of a young punk who didn't know the limit, and tried anyhow. This drive, which I still carry to this day, was the major reason of being where I am now."
Heh, sounds somewhat familiar. And then this one:
"There is nothing more shocking than the realization of becoming someone who needed change, because of the single-track focus I had. Toward the end of my Ph. D. in early 1998, I started to change my life philosophy and went through a personal metamorphosis. Before this period, I had rejected the possibility of ever becoming a true Renaissance man, because I had thought that, given all the knowledge in the world, it was impossible to be a good and true Renaissance man. But I gradually realized that it wasn't the END GOAL of being a Renaissance man that mattered, but that the PROCESS of trying is what really mattered."
Most people who know me well know that it is (and has long been) one of my goals is to be a Renaissance man (or at least, as close as I can get). I can't remember exactly who first described me as one, but I remember the glowingly happy feeling I get every time I hear the phrase. Granted, I realized a while ago that being a true Renaissance man now is impossible (as my father put it, "You're a couple hundred years too late to be a Renaissance man"), but in my mind I still see that as the impossibly high goal that I want to strive toward. It may be impossible to get there, but as Chi writes, it's the process of trying that matters.
So, Renaissance man or no, I shall continue to strive for greatness, for knowledge, and for what it is to be a Renaissance man.
I know Sarah will remind me that Renaissance men had impeccable physiques, so I will need to start a more strenuous exercise regimen.
I love Felix von Leitner's slides on what optimizations compilers do. The question "how much does a cache miss cost" was raised in OS today, and in about 20 seconds I re-found slide 47. The whole talk basically says "the compiler is smarter than you are" and gives all sorts of evidence. GCC produces very good code in most of von Leitner's tests, and consistently outperformed icc/sunc/msvc. Impressive stuff, though I'd love to see the content updated for 2010.
Matt Might, an assistant professor at University of Utah, writes on successful PhD students. I found this posting (and others) particularly interesting, so I'm going to do my best to avoid reposting the entire page and just quote the particularly noteworthy paragraphs:
"Smart" qualities like brilliance and quick-thinking are irrelevant in Ph.D. school. Students that have made it through so far on brilliance and quick-thinking alone wash out of Ph.D. programs with nagging predictability. Let there be no doubt: brilliance and quick-thinking are valuable in other pursuits. But, they're neither sufficient nor necessary in science.
(aside: I need to come up with some CSS and support in my blog engine for indented blocks, so it's clear what's original and what's quoted.)
This matches everything I've heard so far, and it remains scary to me, because I have gotten this far on brilliance and quick-thinking. The questions I have for myself are:
Second quote from the article:
For students that excelled as undergraduates, the sudden and constant barrage of rejection and failure is jarring. If you have an ego problem, Ph.D. school will fix it. With a vengeance. (Some egos seem to recover afterward.)
Hehehehe, I've mostly learned how to not have such an ego that I put others off, but inside I'm still probably a bit on the cocky side. Thus, any future frustration I express here can possibly be attributed to my ego being deflated. I do appreciate the relevant practice certain people have given me over the past few years - I'm getting better, really!
Final quote from the article (emphasis mine, and apologies for quoting four paragraphs without having indent block functionality (I really need to implement that, I see)):
"Generally, grad students don't arrive with the ability to communicate well. This is a skill that they forge in grad school. The sooner acquired, the better.
Unfortunately, the only way to get better at writing is to do a lot of it. 10,000 hours is the magical number folks throw around to become an expert at something. You'll never even get close to 10,000 hours of writing by writing papers.
Assuming negligible practice writing for public consumption before graduate school, if you take six years to get through grad school, you can hit 10,000 hours by writing about 5 hours a day. (Toward the end of a Ph.D., it's not uncommon to break 12 hours of writing in a day.)
That's why I recommend that new students start a blog. Even if no one else reads it, start one. You don't even have to write about your research. Practicing the act of writing is all that matters."
Another excellent reason for me to continue writing (and at possibly greater length) in my blog. Even better - now my blogging can be described in terms of benefit to the larger goal of my PhD and communication in general; thus, blogging is no longer procrastination. Messing around writing code to support it might be, but now I have an (if only in hindsight) adequate rationale for continuing to spend time writing.
That's it for my musings of the day, so now I'll briefly mention a couple events:
Ordering food for lab lunch: this is a rant. I wanted to order food for 15-20 people from Viet Nam Village. I called a day in advance, trying to explain what I was after and place the order in advance, so they'd have time to fill it. I was asked to "call back tomorrow." I thought this odd, but thought "hey, they probably know what they're doing," so at 9am this morning I dutifully called back. No one answered. I continued to call back at 30 minute intervals until 10:30, when a man who sounded like the same man I'd talked to the night before picked up. As I tried to place the order, he informed me that it was "too much!" I explained that, expecting this, I had tried to call last night, and had been told to call back in the morning. He apologized, but there was nothing more he could do. So, note to self: don't try to order lunch for the lab from Viet Nam Village. In a state of mild panic, I SMSed Luke, who is also half-responsible for lab lunch, and he came through with the suggestion of La Val's pizza, which delivered and was delicious. Second note to self: don't bother ordering plain cheese pizza; just get another BBQ chicken.
Microsoft Tech Fest: MS set up five booths for tech talks in the Woz lounge, got burritos, and brought cupcakes frosted in the red, green, yellow, and blue hues that match their windows branding (I need to implement photos for my blog too, it seems). I enjoyed talking to the Kinect guy in particular. It seems that it's still probably a bit early to try using the Kinect skeleton-capture as a video input for my research - currently, the SDK only supports running on the Xbox360, and the PR2 is strictly x86, so it's not likely that I could share a codebase, which is important to me. Further, the resolution is only 320x240, which may not be precise enough for tracking fine movements. I guess I could run some back-of-the-envelope calculations to guess at precision, but I doubt it's anywhere near the millimeter accuracy I'm going to get with the motion capture system that I now have access to.
OH YEAH. I HAVE ACCESS TO A MOTION CAPTURE RIG. Apparently there's one in my building, in the Teleimmersion lab. It's almost directly above the lab I sit in. Björn got permission for me to use it. It tracks up to 32 points at millimeter accuracy in 3D at 480Hz. That is quite impressive, for those of you not familiar with motion capture. I'm excited.
BONUS: From the PhaseSpace (the vendor of the motion capture system I'll be using) website: "PhaseSpace also includes a full C++ and Python API to allow you to write your own custom software. All of our software runs on both LINUX and WINDOWS." Also cool: their appliance that does the processing also runs Linux. I can't wait.
Today I saw a random person who I didn't recognize wearing an EC shirt. Small world.
I also went to a talk on full-duplex radio, which was absolutely fantastic. Incredibly cool stuff - basically, in analog circuitry before they hit the ADC, they feed in an inverted copy of the TX output wave. There's some fancy adjustments necessary to get it to line up and cancel just right, but properly calibrated, the team has gotten 55dB S/N ratio. Very impressive work.
Apparently, I burned my left index finger a while back, because the whole tip is peeling.
I am not (yet) very adept at statistics. It's a subject I spent one semester on my first year of undergrad, and it hasn't exactly come up again until now. Hopefully I can produce accurate plots and correctly determine statistical significance.
I also seem to have issues with noticing when my blood sugar is too low. I was really grumpy and depressing this evening, and I felt worlds better after I made myself a steak and some veggies.
By necessity, I've learned the basics of using matplotlib, a Python library for industrial-strength plotting. I have to say, it's pretty neat. I would not mind getting to be more proficient with it, since I never really learned how to use Mathematica, Matlab, Maple, and R.
I have a team for College Puzzle Challenge. I'm excited - I had a ton of fun participating in (and winning, at the TAMU site) the competition the past two years, and I feel like after joining Death From Above for the MIT Mystery Hunt this last winter, I'm even better prepared.
It's a goal of mine to write a puzzle hunt of my own at some point. It would be an intense intellectual venture to write that many puzzles with varying mechanics, and have the whole thing fit together under a unified theme (which I'm having terrible difficulty coming up with, by the way). This is the sort of thing that inevitably gets put off until a long break period occurs, since writing so many puzzles is not an overnight task for a single man. As described by puzzle hunt writers over many years, one writes the hunt backwards, starting with the meta-meta puzzle, then writing the meta puzzles (each of which belongs to a particular round with a different subtheme), and then writing the individual puzzles themselves.
I wonder if there's a way to tie puzzle hunts into my research. THAT would be an awesome motivator.
I made this quiche for dinner tonight. Well, minus the ingredients that I didn't have on hand, which happened to be the onions, thyme, and nutmeg. Also the sour cream. Nonetheless, it was a great success and quite filling, to boot.
Today was notably colder than most days this fall have been. I enjoyed wearing a long-sleeved shirt and my green corduroy pants (that are way too short for me to wear anywhere except home) and having my feet get cold. It pleasantly reminded me of my time in Massachusetts, so I called my aunt who lives there and touched base. Then I called my mom and dad and chatted for a bit. The best part of today was wearing my black trenchcoat. I hope it's cold enough tomorrow for me to wear it again. I love winter.
I went to a ramen place for dinner. Actually, I meant to go to a ramen place for dinner, but got distracted by the street fair that was going on and had three blocks of the street blocked off and tons of tents set up. There were booths with all sorts of foods, scents, textiles, clothing, and jewelry. I particularly like the booth with jewelry that looked like tiny foods - earrings with slices of cake, bell peppers, cupcakes, and so forth. I walked up and down the blocks, trying to see as much as I could before the fair ended. I stopped and listened to the Berkeley High School Jazz band, which made me think of Steven Schrag and his awesome jazz piano skills. And then it was 6pm and the fair started closing up, so I made my way to my original destination, the ramen restaurant. The food was pretty tasty, and the water was flavored with sesame.
I ran some numbers, and since moving to Berkeley, I've spent almost exactly an average of six dollars a day on foodstuffs. This includes eating out on occasion. I'm not sure if this number is high, low, or average. It will probably go up as the number of industry-sponsored free dinners drops off.
In a curious instance of software misbehavior, my desktop now thinks the "Media Stop" button on my Saitek Eclipse II is, in fact, another "Volume Down" key. The two keys are different keycodes (174 and 122, respectively), but apparently are both getting mapped to keysym 0x1008ff11.
I was going to put off investigating this until I realized that I still have an old (and broken!) ~/.Xmodmap. Mystery solved.
I got spam in the mail today from the "church" of scientology. Weird.
Also arriving in the mail today was something very much not spam: my ACLU membership card. Yay!
I know I'm nearly a month behind on the Not So Humble Pie blog, but oh my goodness, that is a lot of cupcakes. A periodic tableful. And ones with Feynman diagrams. And a benzene resonance cake. So many adorable delicious-looking sweets. This makes me want to bake cookies. I need to go to the grocery store.
A brief discussion with Sarah today led to me thinking about professional tools. In particular, I got to thinking about whether or not professional tools for a specialized task should be intuitive. Background: Sarah is planning to get a DSLR and get more professional at photography. I suggested that she play around with digiKam, KDE's (notably powerful) open-source tool for professional photographers. She replied "I tried digikam previously...it's not intuitive." My first thought was to protest, since I love the tool. After a moment more thought, I realized that her statement was valid - digiKam is NOT as intuitive as other tools for super simple editing. Then I thought: "And it shouldn't be."
Back to the interesting and more generalizable question: should professional tools be intuitive? A tool's level of intuitiveness is a reflection of how well the user's mental model aligns with the tool's presented model [1, 2]. I suspect that for professional tools, the user's natural mental model is less efficient in the long run than adopting the superior model used by the tool. This means that at some point, the user is going to have to suck it up and deal with learning a nonintuitive system for a greater long-term benefit. Example: compare the efficiency of a master programmer using Vim against someone using Notepad. The model of the former is anything but intuitive to a first-time user, but you'd be hard-pressed to find a master programmer who didn't accept that Vim is a far more effective tool for writing software than notepad. The same applies to professional photography - there's a reason the pros choose Lightroom over MS Paint - despite being a pain now, it's less of an accumulated pain in the long run.
The second interesting question is thus: how do you know when to force a superior model on the user? When is "good enough" good enough? Or, put in another way, how should a user know when it's a good idea to take a temporary performance hit for a long-term benefit as a result of switching tools? People tend to be bad at making short-term sacrifices for long-term goals (see Dan Ariely's introduction to The Upside of Irrationality), so I suspect that this irrationality keeps people from using effective tools.
I should note that tool "professionality" isn't an excuse for poor design - even the non-intuitive tool model should be well-thought-out and optimized for the user's long-term benefit. It just need not match the novice user's initial mental model. I wonder what other papers I can find on this topic.
Since I am a technology enthusiast, I tend to be an early adopter and thus, I hit on bugs that other people may or may not see. Since I already write about the random bugs I hit, I'm going to give such postings a name: the Computers Are Magic series.
Computers Are Magic, part 1: audio whine. On Ubuntu 10.10, it seems that when I play a single stream of audio, there is this high-pitched whine that I hear over whatever it is I'm supposed to hear. The addition of a second playing audio stream makes the whine go away, even if the second stream is completely silent. I believe this to be a Pulseaudio bug - no such whine is present when I play straight to the ALSA device. The upshot of this is that I can add or remove whine to my audio playback by pausing or unpausing a muted audio stream. This should have you thinking "Wait, WHAT?"
Sidenote: I finally figured out what the title of Lennart Poettering's blog means. TBFKAYIBYNYAANB = The Blog Formerly Known As "Yes, I Broke Your Network, Your Audio, And Your Boot." Why? Lennart wrote Avahi, PulseAudio, and systemd.
You know you're on Berkeley Time when you arrive in the classroom one minute after your class's official starting time and find one other student and zero professors. Good times.
It would appear the bug that I hit yesterday has already been reported. Given more time, I may help the reporter/assignee track down exactly what went wrong.
Oh goodie, the ACLU has finally taken a (rather strong) stance in support of Net Neutrality. I was wondering when they'd get involved - I see net neutrality as one of the issues that will define the future of the internet.
Kirby's Epic Yarn looks...epic. I haven't thought about video games in a while, but this one looks awesome. Aside: that's one of the more awesome domain names I've encountered in a while.
I went to the Oracle infosession today, hosted by Larry Lynn, Oracle's VP of Recruiting. I left with an unusually large amount of loot and two particular salient thoughts:
There was food, but it had so much pepper flake that my mouth stopped tasting and just started hurting. My lips were on fire, and NOTHING HELPED. I sought milk, but found none. After a while, the pain subsided and I returned to my normal state of rational thought. Some might debate that last adjective.
Today I learned that T-Mobile has an IPv6 beta. I'm considering signing up, but I don't really have anything else with an IPv6 address. I can't get on the Comcast IPv6 trial any more, and I don't think my dedi will be handing out v6 addresses any time soon. All that said, I definitely DO get globally routable addresses while on campus at Berkeley, so perhaps I can do testing there.
Augh. I'm way behind on blogging. Things that will get written up later:
Nokia released firmware PR 1.3 for the N900. No big UI changes, as far as I see, but syncing with Google Calendar works properly now. I'm pleased.
I do believe I am getting sick. Pity.
I threw up this morning, so I stayed home today. Which is a shame, since BiD hosted social hour today for the CS Graduate Student Association.
I have slept 16 of the past 24 hours. I'm going to go see if I can get a mononucleosis test done tomorrow.
Update: no longer nauseated. Still super tired. Slept in until it was too late to reasonably wait in triage for a mono test.
Today I went to the Tang Medical Center. The staff at the Urgent Care office were super nice and friendly, and the atmosphere was jovial. Their chipper attitudes put me in a good mood. While I didn't show any notable symptoms of mononucleosis (except, of course, the constant sleepyness), Dr. Hope noted that they've had a spate of mostly asymptomatic mono recently. Another possible cause that popped into my head as I was describing my situation to the nurse was that I might have hypothyroidism - my mom does, after all, but I've typically had a high metabolism. Dr. Hope found nothing indicative of worrisome problems, so we decided that if I don't feel better by Thursday, I should come in and have blood drawn for a mono test and a thyroid test.
After visiting the Tang Center, I walked to my favorite sushi restaurant, since I was already on the south side of campus. I had a delicious lunch, and by the end, it was raining lightly outside. I walked home in my trenchcoat, which kept me, my papers, and my book dry.
I beat Kirby's Epic Yarn, with the exception of all the apartment-dweller minigames. Those things feel more like a chore than a game.
I have finally reached 0 unread items on my RSS feeds. This is more of an accomplishment than you would probably guess, considering that I follow 42 blogs, several of which are agregators of a collection of sources. I believe this is the first time in several months that I have reached the equivalent of "inbox zero" for my feeds. It'd be interesting to see how much time I spend reading each one of my feeds to analyze what I find the most interesting or what I derive the most value from. It'd be fairly accurate, since if an article is utterly boring, I'll skip to the next one.
I'm interested to know what other people think about the use of focus-enhancing drugs, like Modafinil (aka Provigil) or Methylphenidate (aka Ritalin, Concerta). I came across this article, which prompted several thoughts. Friends and family: don't freak out, I'm not going to go illegally obtain and consume these medications.
Really neat compounds, but a stickerbrush of ethical issues.
Reader, if any of this interests you, I'd love to hear your views on this matter.
Random sidenote: I really shouldn't look up diseases on Wikipedia before I go to bed, because the images of afflicted people will inevitably be stuck in my mind as I try to fall asleep, and that generally doesn't help me relax.
I talked to the EECS department today about why I have a four-digit bill for tuition that they said they would pay for. Apparently, there was a data entry error, and whereas in-state students pay fees but no tuition, out-of-state students pay both. Thus, the department somehow managed to miss that I was out-of-state in one of the various spreadsheets and has not yet paid for my tuition bill.
This will be resolved by the end of the week, and I will have my registration block removed.
I am actually getting things done with respect to my research projects. This is a welcome change.
My throat is starting to get sore. This is not a welcome change. This lends evidence to the mono theory.
I've swapped my desktop colorscheme to dark colors, in the hopes that it'll make things easier to read when it gets dark outside.
Now, time to see what the rest of the State of California thinks about our opportunity for direct democracy, as the precincts report in.
I am trying VERY HARD not to write a very passive-aggressive post right now. I think it's working.
I've had a major headache since I woke up this morning, so that colored my day slightly darker than usual. I was somewhat detached from the world all day - had a hard time tracking discussions and thinking critically.
I had an interesting idea in HCI today - a tool that helps automate dialogue replacement for movie producers by logically binding speech tracks to audio channels (or combinations thereof) based on video and voice recognition. About ADR: most of the audio from the original shots can't actually be used due to noise on the set, wind, and so forth. As a result, the actors have to come back in, sometimes six months after they originally acted that scene, and rerecord the dialogue in a studio at exactly the same rate of speech and with the same emotion. This is a pain for all parties involved, so tools that can help speed along the process would be quite useful for the movie industry.
Since Picasa and other photo software can auto-tag faces in pictures not only as faces, but also with (correct!) names learned from past taggings, I don't see this idea being too difficult on the computer vision side if one throws some object tracking in as well. I'm not sure how effective computers are at distinguishing and recognizing different people by their voices - this comes across as a much less-easily-solved problem (probably because audio interfaces are the unloved child in HCI). Heck, if the algorithms are crazy good, perhaps it's possible to extract the voices from the background, reducing the amount of ADR needed for a movie. I should see if these ideas already exist in products or patents.
I'm kinda surprised that I came up with this in the midst of being unable to hear/process what my brainstorming small group was saying. It feels strange that one of the few marketable ideas I've had recently came to me when I was mentally falling apart. Brains are weird.
I went to the Amazon tech talk, which was all about computing of the future. The takeaway: computing used to be hard to use. Now it's gotten fairly usable. In the future, it needs to be fun, because everyone likes having fun. It was an interesting talk. I missed the pizza at the end, but that prompted me to go home to make dinner, which turned into the beginning of today's Epic Adventure™!
Well, perhaps I'm being a tad melodramatic. I took my normal route home, and on the way I passed a rather long green couch on the sidewalk that appeared to be in decent shape. It had a sign that read "FREE COUCH - GOOD CONDITION." I walked by it, but when I reached the end of the block, I couldn't continue. I SMSed my housemate, Andrew, noting the couch's status and location, and that we might want to pick it up. We agreed to claim it, and I sat down on the couch to establish and fiercely defend my new territory until Andrew arrived. In the meantime, I broke out my laptop and tethered with my Nokia N900 (I love that phone) to read a few emails and grab a paper. As the sun went down, I got more nervous about having my laptop out with me on the street, so I packed things up. Andrew arrived shortly thereafter, and we carried the couch the few blocks home, taking breaks along the way. The couch wasn't terribly heavy, but hauling a couch around town is no mean feat. We successfully got the couch back to the apartment complex, but it was too long to fit in the elevator, so we let the hydraulics take the cushions up and we toughed it out to get the couch up the three flights of stairs. Turns out the stairwell was quite crowded with that couch. We finally got it up to our floor and through the stairwell door, only to discover that we couldn't get it into our apartment from the hallway - the hallway was too short, and the couch so invitingly long. At this point, Andrew and I are both exhausted and our arms and hands are shaking something fierce, so every new angle attempt is punctuated by a minute or two of rest. We tried to partially back the couch into the room across the hallway, which has a better angle from the stairwell, but that too proved unsucessful. On the upside, we met our neighbor Peter! A slight feeling of panic and despair began to set in, as we realized that we would have to take the couch back downstairs and out, since we couldn't get it into our space. Knowing my arms would give out catastrophically at this point if I tried to carry the couch downstairs, I opted to take a two-minute break and get a glass of water and think about the situation again. And when I finished that glass of water, I came up with the winning solution.
We tilted the couch on end in the hallway by lifting one end straight up and swinging the other underneath, moving by the wide dimension of the base, and carefully avoiding the ceiling lamp that obstructed the path that normally tilting the couch on end would have taken. With the couch now standing in the hallway right in front of our doorway, we were able to lift the couch enough to move the end-turned-base in through our doorway, rotating the couch back down. Victory.
So! Now Andrew and I have a free couch to join our free coffeetable, and can entertain guests. This was a good end to a long day.
I have my airfare for visiting Texas and Massachusetts over the winter break. I am SUPER excited for MIT Mystery Hunt 2011!
I got my blood drawn today for mono and thyroid stimulating hormone tests. I warned the nurse that I've had vasovagal episodes in the past when I've had flu shots, so she asked me to tell her about my life. It's hard to give someone your life story when they're poking about the inside of your left forearm, but it threw me for enough of a loop that I didn't have any adverse response this time. Perhaps the fact that my blood was drawn within about two minutes of my entering the lab was also helpful - no waiting time to let the anxiety build. Yay!
Update on financial aid: everything has come through properly, and I don't owe a cent. Glad that's neatly resolved now.
Today is the Microsoft College Puzzle Challenge. I will be competing, and thus will be completely unreachable all day.
I love puzzle hunts so much!
Results: We got 2nd place for the Berkeley site and 43rd overall (just outside the 90th percentile). Our team solved all but one puzzle (which happened to be the least-solved puzzle in the hunt). Food was plentiful, but space was a challenge. We didn't have any rooms reserved, so we got booted from the room we'd set up shop in...twice. Still, we all had a ton of fun, solved the meta-puzzle, and won $50 Amazon gift cards. A nice warm-up for Mystery Hunt.
Daylight Saving Time is about to end. Prepare for your second 1am. I do wish that the US would get rid of the whole Daylight Savings Time nonsense, but I suspect that kinda falls into the same realm of likelihood as getting people to use ISO8601 timestamps and [SI units] (http://en.wikipedia.org/wiki/International_System_of_Units).
Why am I against Daylight Saving Time existing at all?
The more you know.
Bruce Schneier on TSA absurdity: "A terrorist attack cannot possibly destroy our contry's way of life; it's only our reaction to that attack that can do that kind of damage." I have the utmost respect for Schneier, one of the most eminent security experts in the world. I think he's completely right.
Schneier hits on a very interesting problem: that when something negative happens, everyone wants something do be done about it. They want to see responsive action being taken. I'd like to make a case for the argument that that's not always the right response to the problem. (I'm not going to try to defend it for the specific case of terrorism; Schneier does a fine job of that.)
Why not? The existence of a problem means that something should have been handled differently, right? Perhaps, for a given case, something could have been done differently to avoid the mistake. The question is: at what cost? The concept of diminishing returns (as well as the impossibility of perfection) applies to a great many fields. The most correct or efficient action could be to take no action at all. While a great many failures would benefit from corrective action, I think people too often get so caught up in the iterative refinement process that they stop thinking about the efficacy of continued effort. In the end, some things are going to break. Accidents will happen. Deal.
An analogy to computer science is the concept of system reliability through component failure. Redundant components can reduce the risk of losing system operability, but everything is expressed in terms of Mean Time To Failure and Mean Time To Data Loss. We know that eventually, redundancy efforts be damned, stuff is going to break. We can extend that time to an acceptable level. And then we operate with that accepted risk. Another parallel is the concept of servicability - rather than trying to completely prevent failure (which is extraordinarily costly), we design systems that can cope with failure, and have failed components replaced even while the system remains online. It's not perfect, but it's more efficient than trying to solve the problem in the wrong manner.
Another important point is that due to our human irrationality, we are extraordinarily poor at gauging when we should be taking such action. (Can you tell that I can't get enough of Dan Ariely's work?) When people suffer the consequences of a failure, they lose trust in a system that they assumed would protect them from such failures. Perhaps this is an issue of how we present these systems to the public - it's a great marketing ploy to show off some technology as "risk-free," or "guaranteeing safety." It's wildly comforting to our ears, and readily opens our wallets, but these terms come back to haunt us when the claims in question are shown to be false. People lose the faith they had in a system they were convinced was perfect - and then they want to see that system modified so that it is perfect, so they can have that faith back. The problem is the premise: the expectation that a system or service or product will be without fault is flawed, but our society has come to accept it as fact. False advertising has long effects.
In summary: yes, many failures deserve action to prevent future failures of the same type, but we seek such action more often than is wise.
I'm depressed again. I slept throught my HCI class today. Not because I was sleepy - because I didn't care anymore. I know this is not healthy, so I'm going to see a counselor tomorrow morning.
I have neither mono nor hypothyroidism. These are both good things. I went to see a counselor today. It wasn't the best thing in the world, but it helped a little.
Far more effective were the collection of caring and supportive emails, SMSes, IMs, and real-world talks with people who checked in on me and asked how I was feeling. Lora and I went and played piano for a couple hours, and that was a fantastic way to destress. I've missed playing piano. I should probably start making time for it in my week - I really enjoy it, and it's helping me get out of my mental rut.
To everyone who showed me today that I am loved: thanks. You made a difference.
Having Facebook tell me that I aced their interviews probably didn't hurt my self-esteem, either.
Today, I'm going to write briefly about someone who impresses and inspires me: Hector Martin. Why do I find Hector (hereafter referred to by his online handle, marcan) so cool, even though I've never met him?
He's a very skilled hacker and reverse engineer. Yes, there are surely a large number of talented hackers out there. That said, he's got an impressive portfolio:
But the thing that really strikes me is the fact that marcan uses his powers for good. He's been consistently outspoken against piracy. He donated the prize from the Kinect hacking bounty to buy more hardware for skilled folks to hack so they can continue empowering the world to use hardware in exciting, interesting ways. Giving people the freedom to tinker. That is something deserving of respect.
Hector Martin, you are my hero for today.
I made fresh bread today and took it into the lab. Mark had a jar of Nutella lying around (don't ask me why). This was a fantastic combination.
By the glow of my monitor, I work...
Sarah writes on the role of scientists in influencing policy makers. This sparked Opinions and Thoughts™, which I felt were Too Long To Properly Fit In A Comment, so here they are in a post. At the risk of appearing to miss the forest for the trees:
I disagree with this use of the term "rationalities" when referring to how people make decisions. It carries too much of an implication of intent and consciousness. There's enough experimental record on the books to show that humans are not solely rational creatures, and I see no argument to convince me that a group of humans trying to make decisions will be any more or less self-affected than their bretheren. Perhaps a more suitable word would have been "interests" or "motivations," either of which would reflect the humanity of the policymakers. Moving on, though:
Yes, you can look at a problem in different ways, and depending on the person, you might feel that a particular aspect of a situation is more important than another. I think these are similar to the aforementioned "lenses" with a key difference: they are all bent into a different form by the people who view them. There is, in general, no objective, closed-form answer to "how would $ROLE act in this situation?" Even your scientific lens and my scientific lens may show a different picture. When it comes down to it, it's how individuals see things that actually matters. Aggregating people isn't perfect, but it does scale better than trying to understand each person.
"Politicians can be utilitarian and focus on the outcome or they can be ontological and focus on the process."
Oh, sure, politicians can be utilitarian, provided the utility function represents their personal interests. Snarky comments aside, politicians have to face tons of different interest groups on a regular basis. They're doing their best to satisfy whoever will get them good press and reelection - it's "rational" for them to do so. How can they get reelected? Right now, it's done through extensive (and expensive) advertising, which gets funded primarily by donations from industry groups that are looking to buy policies favorable to them. Systematically, we get precisely the legislation industries want to buy.
Except that again, there's that unpredictable human element, and the fact that industries are run by people. So we wind up getting the legislation that industry leaders want, because it serves their self-interest.
"As scientists, we need to create a demand for evidence and play off of the policy-makers' need for legitimacy to advance our own research." Wow, Sarah, I didn't know you could actually say something that manipulative and evil. Spot on, though - as scientists who want to influence politics, we have to play their game. Industry gets this, and flexes as much power as they can. Structurally, academia doesn't reward sociopaths the way industry does. Time to step up our manipulation...
"(As evidence providers, we cannot be our own advocates but must remain unbiased.)"
...well, that ruins that idea. The fact that we lose credibilty if we try to be remotely prescriptive puts us at a distinct disadvantage when competing with industry for influence. We have to go at the problem indirectly, but industry doesn't. So industry wins, unless we beat them at their own game, by convincing policymakers of the following:
We can only really directly affect point 1. Point 2's truth value is the indirect change that we'd like to effect (+1 word reuse). It's interesting to note that we have little to no influence over point 3, and that in fact, point 3 can't hold if the two-party system doesn't disagree on the issue. The system is not designed to allow us influence.
So, after a bit of deciphering, I think we've divined the key point - that we scientists need to present the knowledge we create in ways suitable for consumption by our particular audience. An audience of policy makers is much different from that of scientific researchers. I think this is in no way different from what one should learn from any technical writing class. As has always been the case with rhetoric, the burden lies on the speaker (or writer) to create a compelling and convincing fact-based argument.
tl;dr Know your audience, and manipulate them by playing off their motives, 'cause industry sure will.
Arg, this all sounds incoherant. That's what I get for trying to write critiques at 4am.
(Note: due to backlog, this was written a few days later and then post-dated.)
Today was the ICPC programming contest.
Last night we (1 prof and 9 students) drove (in 2 cars, including mine) to Stockton. We were a few minutes ahead of the other car, and we hadn't had dinner, so at 9pm, we find a Super Buffet. This was a major win, and I and one of the other guys ate so much sushi and fried seafood and other delicious Americanized Chinese food that we could barely move. But then, we went on an Adventure™!
We arrived at the hotel shortly thereafter. It was kinda hard to find, on account of the fact that the adjacent city block had no electricity whatsoever, and thus, no lights illuminating any of the signs. You know what else they didn't have? An estimated time of repair from PG&E. Further, since the hotel's power was out, they couldn't pull up our reservations, and give us card keys, so we couldn't check in. And to top it all off, we couldn't break out our laptops for long without power. FAIL.
We drove to University of the Pacific (which did have power) and went on a brief nighttime tour of the campus, led by our faculty sponsor for the trip. This was mostly uneventful, but somewhat cold.
After we got back to the hotel, they had power restored to the main building, but none of the rooms. Good enough to check in and go up to the rooms by phone flashlight. Yes, with the flash LEDs constantly on. Good times.
One rather poor night's sleep later, we gathered for breakfast, headed out to the University as rehearsed the previous night, and waited around for a couple hours. One fun surprise: Regina Zaliznyak (my supervisor from IBM) was there recruiting for IBM (since IBM is the primary sponsor of the programming contest). I jokingly told her she had to give her presentation in four minutes. She shortened it from IBM LONG to 10, likely doubling its positive impact. I was pleased.
Then competition. My team solved 5 of 11 problems, placing 13th out of 75 teams. I was particularly proud of my solution to one problem, which consisted of a wildly inefficient precomputation step in which I prepared every single possible response to the problem statement (a 15 minute task). I wrote this out to a second C source file, and sent that one off for judging. Very fast, correct results.
After the drive back, Andrew and I went to Greg's birthday party, which was fun, and good decompression. I brought yogurt-covered pretzels, which were well-received. Andrew and I are now referred to as the "guys that always bring awesome stuff." Definitely not a bad thing.
Today was the first time I've actually been listening to music on my phone and had it automagically suspend the media player while a call came in, then resume it when the call ended. Even though I knew about the feature, it caught me off-guard and pleasantly surprised me.
Github went down today, hard. It was a rather dumb error - a testing script which drops the entire database was run against the production servers. That's an awful big "oops." I'm more concerned with their restoration procedure - they allowed read-write access to the data from the site while they were still recovering data. This is very bad, since you can break history, orphan data, and basically make a lot more work for everybody in the meantime. And in fact, that happened - they had to take the site back down and restore again.
I noticed this because the OpenKinect project was (until today) hosted on github. Hopefully we'll have our own hosting and wiki up at openkinect.org soon.
I spent the night in the lab again last night. Oops.
I've been doing some analysis of the data I get out of the Kinect depth camera for research. My preliminary findings indicate that over 97% of the pixels have a standard deviation of less than 1% of the device's dynamic range. This is really good data, folks. It also appears to do the spherical -> rectilinear coordinate transformation for you, so you can just use the data as (x, y, z) tuples directly.
Well, almost. The depth camera and the RGB camera don't actually have the same field of view, so you'll have to transform one camera's coordinate space into that of the other.
Also, I've done some exploration of what happens when we send only some of the init messages to the Kinect. Later, I'll probably mess around more along this line.
I've been on campus for 31 hours. Now, I need to get home before I wind up sleeping in the lab two nights in a row.
I should totally find more things to reverse engineer. I'm having more fun reversing the Kinect for hours upon hours than...well, most things I've done for hours on end lately.
Things I will forgo when presented with a really interesting puzzle:
Today, I went to Target. I found all the things I was looking for (except a good cheap floor lamp), and a bunch more. I found:
Now I am baking bread and reading papers for HCI, and then I shall do as much of a register dump of my new Kinect as I can, since I have an opportunity to see what one looks like fresh from the factory.
Discovery of the day: Macs are utterly unusable without a mouse. There's no notion of keyboard-selected focus, anywhere. After trying out random keystrokes for the better portion of 5 minutes, I think that every web browser on OSX is completely missing this functionality. This is particularly bad for dialogs, since OSX also decided to skip the whole underline-the-shortcut-key in dialog boxes. Your only discoverable options are to accept the default, or hit escape. That's not really empowering the user. :(
This came out of an attempt to update an unpatched Mac Mini that (at the time of my arrival on the scene) had no mouse. Logging in was easy enough, as was launching applications (yay, spotlight!), but then I needed to authenticate with the wireless so the Mac Mini could actually download the updates in question. And I couldn't find a way to click the darned "Log In" button without a mouse. Eventually I stole the one from the computer next to me, but I was frustrated on principle. After all the talk of how "easy-to-use" Macs are, I throw one quirky setup at it and it fails miserably.
Then as soon as Software Update had run, I saw why the system wasn't patched: it had 2GB of disk free, and needed some 7GB free to apply the patch. A little du(1)-fu discovered that the entire disk was full of a former grad student's video editing clips. Since I didn't know if it was safe to delete the lot, I opted instead to gzip all the giant files up (bzip2 would take waaaay too long) and then see if I could do the patches one at a time. This seems to be working.
(Note: I need to get better about finishing posts that I start in a timely manner.)
Observation: I need to stop freezing up and thinking about ideas so much, because every time I do, I wind up not getting around to implementing them.
I also need to prioritize activities better. And that means facing the hardest task I have each day first. Even if it's only for an hour. Just so long as I'm making some forward motion. Once I start moving, the inertia isn't so brutal.
The more I learn about developing software on other platforms, the more I realize that Linux really is the best platform to go with, if you ever want to use anyone else's code, or if you want anyone else to use your source. While there may be a plethora of versions and libraries to deal with, the open-source community has learned to face these problems and try to solve them. I think back to my Political Science class, in which we noted that perhaps the reason that homogeneous groups have higher social capital is because they haven't had to deal with the problems that come with wide integration of cultures, social groups, and approaches to problems. I wondered if this might also apply to the production of better code-sharing ecologies in the open-source world. I'm as of yet uncertain how to measure such a thing, but I certainly have a strong gut feeling about it.
As I shared my revelation with my labmate Anuj, he remarked "productive day." At first, I was confused - this wasn't productive, this was just my abstract musing. He explained "if you came up with an answer to an interesting question, why wouldn't it be a productive day?" We then discussed how this actually rather relates to the topic of HCI, and it was fascinating.
I went to see a counselor this morning. Psychologists make a business out of catching all the small hints that you drop, and saying plainly the things that you don't want to admit to yourself. I was pleasantly surprised.
Afterwards, on the way to my advisor meeting, I saw a truck from a local microbrewery with Facebook and Twitter logos emblazoned on the back. I wondered: why do people follow businesses on Twitter? Businesses have long had email; why don't people use that? (Other than, of course, the fact that people rarely use the best technological tool for a task.) What's the benefit to the follower in using tweets over email?
First, Twitter may allow for conversations, but tweets are generally a broadcast communication, whereas email is typically intended as a conversation in which one expects an eventual reply. The fact that a tweet need not receive any attention makes it less of a mental burden on the subscriber than an equivalent email: we can ignore tweets if we want, but if we stop trying to process our email inboxes, eventually someone's going to notice. Since company-to-people advertising follows this broadcast pattern more closely, perhaps we like it better because it's a better fit for the content.
Second, following a company on Twitter may be a more privacy-preserving act than offering your email address to a company. Since email basically supports anonymous senders, once someone has your address, they (and their affiliates) can spam you as much as they want, and there's little you can do in retribution. Yes, there are such things as filters and the like, but I'll venture a guess that the average person doesn't use them. But on Twitter, (assuming no security holes (which is admittedly generous)) a company can't autosubscribe you to affiliate sites: the follower is in control. And if the company in question is making excessive or annoying tweets, the follower can stop following them. The end user is more in control of this relationship, so perhaps end users are more comfortable following the company.
I should also note that it could turn out that, in fact, none of this matters, and Twitter exists solely as a result of being the biggest player in the market and hype.
While I am dropping CS262A, I think I'm going to keep going to lectures. I enjoy them, Dr. Brewer enjoys having me, and I really do love the learning that I get out of them. Today's 262A lecture discussed the classic Turing Award presentation by Ken Thompson "Reflections on Trusting Trust," which I've read before and absolutely love. The discussion prompted a number of ideas for things that I may implement, either as class projects, or general proofs of concept.
I attended a rather large gathering. I brought a baker's dozen little loaves of fresh bread and a 9x13 pan of pineapple bake. Here's the recipe for the latter:
Butter 9x13 pan. Mix first four ingredients in bowl, pour into prepared pan. Saute bread cubes in melted butter until lightly browned. Spread evenly over pineapple mixture. Bake at 350°F for 40 minutes.
At maximum headcount, I saw 28 people at this gathering, many of whom were new faces, since they were visiting other friends. There was a sister visiting from LA, students from MIT, Carnegie Mellon, and UVA, among others. There was also a huge amount of food. We fried three turkeys, which is a slightly nerve-wracking endeavor, since if anything caught fire we'd wind up burning down the entire state of California.
Fun things that happened:
But after all that socialization, I definitely needed my alone time.
Ugh. Today has not gone well, and it's only noon. The past few days were decent, though; hopefully I'll make time to write about them today.
This made my day:
19:58 <+marcan> oh, btw, segher is looking at the primesense blob 19:59 <+marcan> he has a thing for reverse engineering unknown ISAs by staring at them (seriously) :P
We will figure out the Kinect audio. :)
Dear Willow Garage folks: we should talk about working smoothly with upstream. While we absolutely appreciate your efforts in figuring out things like direct access to the IR camera, mixing the code that provides that functionality into a 1600-line patch that also reformats tons of whitespace is generally frowned upon. Not only do developers not like huge invasive commits that don't actually change much, but when you break the code style of the parent project, they don't care much for that either. It's funny that the ROS Style Guide actually addresses this, in section 1:
"Above all else, be consistent. Follow this guide whenever possible, but if you are editing a package written by someone else, follow the existing stylistic conventions in that package (unless you are retrofitting the whole package to follow this guide, for which you deserve an award)."
Also, (probably for the reasons mentioned above), I haven't seen a pull request for the IR cam functionality. I understand that you're quite busy around Thanksgiving, so I won't complain yet. But...I can't help but get the feeling that you don't care to work with upstream any more, which makes me sad. We could make some great stuff together. If you have a chance, could you maybe read the project's Code Integration HOWTO? Thanks.
Random thought of the day: Cirque du Soleil should back an intensely technical section of one of their acts with the track Vicious Delicious by Infected Mushroom.
Today, I met qDot, the code integrator for the OpenKinect project, for dinner. We talked about lots of highly nerdy things, and agreed that the OpenKinect community is moving at an impressive pace. Good times, and I'm sure we'll see each other again. :)
Link dump (yeah, most are outdated, but nonetheless interesting):
Aww, man, I just found out 27C3 is over winter break, but at this point, airfare to Germany would be excessively expensive.
Note to self: make arrangements far, far in advance to attend 28C3. Anyone want to join me?
I've been following the news coverage on Wikileaks with a good deal of interest over the past few days, and I think it's an important thing to re-share with the world. If you somehow haven't heard what's going on: a few days ago, WikiLeaks released a few hundred US embassy cables from a collection of over 200 thousand cables to various media outlets. They give a very detailed, transparent view of the state of government corruption the world over.
An article from Forbes (and the associated interview) pretty solidly explains the ideas behind WikiLeaks. The most important quote, in my opinion (ahh, I need to implement quote blocks for my blog ahhh):
Julian Assange: "[Wikileaks] just means that it's easier for honest CEOs to run an honest business, if the dishonest businesses are more effected(sic) negatively by leaks than honest businesses. That's the whole idea. In the struggle between open and honest companies and dishonest and closed companies, we're creating a tremendous reputational tax on the unethical companies."
The same is true of government, but at a larger scale. I completely believe that a government should fear its people, rather than its people fearing the government. The fact is that people are much more vulnerable to temptations when they're free from oversight than when they're held accountable for their actions. When you're employed by the public, you should be accountable to the public, and secrecy in government tempts civil servants to take actions that wouldn't fly if everyone knew what was going on. Obviously, most government heads are against this, since it reduces their personal freedoms to what they should have been when they became civil servants. This opinion piece pretty accurately summarize why I support the mission of Wikileaks.
As a result, I am appalled by many of the public statements made against Assange and Wikileaks. For instance:
If you have differing opinions, I'd love to hear why. Which means I really ought to implement some form of comments on my blog. Sadly, that won't happen for at least another week; it's project crunch time at Berkeley.
Oh, here's a link to the Guardian's reposting of the leaked cables, if you'd like to read them at length.
Sarah sends in this article with contrasting views on the motivations behind secrets and lies, as they pertain to Wikileaks. "In place of candid assessments and provocative analysis, many important decisions will now be based on oral briefings and meetings that are not recorded in minutes. Decision-makers will be wary of openness even with their closest staff." Perhaps, but secret undocumented conversations have always been the norm. Such a change just means that said corruption is harder to orchestrate in today's quick-moving world of internet communication - passing around the message of the details of the unsavory deeds to be done is now more difficult for those that would do so. This comes across to me as a good thing - it turns an evil government into a slower-moving government, unable to keep up with the transparent, honest one.
Today I slept a lot, which was much needed. Unfortunately, it also meant that I slept through the first several hours of ARDevCamp. Oops. I'm on the train over now; hopefully there will still be interesting people and demos there when I arrive.
My router/NAT device is currently being DoS'd. I am not amused.
UPDATE: as far as we can tell, a distributed hash table got REALLY huge and managed to push enough traffic at us to overwhelm the crappy router. Hopefully, the load will fall off as we refuse more and more connections over time, and the DHT figures out we've left.
UPDATE2: Network conditions are back to normal.
For the caffeine addicts in my life: you should drop the coffee, tea, and fizzy beverages permanently, and here's why.
Ugh. I spent over two hours searching for bug that turned out to be a misdeclaration: I put ints as parameters in the declaration, but meant floats. The compiler happily and silently cast the floats that I passed as arguments in the implementation. Since all of my 3D models were normalized, this means that every single point in the model wound up getting floored to (0, 0, 0). SO! Don't say int when you mean float.
I have to give a practice presentation tomorrow, and my system is still not fully operational. I don't have my slides together yet, and I'm getting rather concerned. Give me a hug if you see me.
Observation: when I'm more stressed, the number of virtual desktops I use increases as I try to keep everything quickly accessible.
Postdated, because I was instructed by my labmates to "go home and sleep until you are done."
Today was perhaps the most stressful day of the year for me: the CS260 final presentations. Over the past 48 hours, I'd failed to get my system running, created my presentation and poster sans meaningful results, and fought sleep deprivation and lack of focus as I prepared for Presentation Day. Fourteen teams gave four-and-a-half-minute presentations. Many ran overtime (mine did not), which resulted in Bjoern's laptop buzzing and Lora grinning widely as she rang a tinkly bell.
In retrospect, I shouldn't have worried so much about today. Turns out that I wasn't alone in not having results (or a working system) yet. Despite this, my presentation was decent (if a bit targeted at the UIST audience more so than the CHI audience). The audience seemed to like it, while the judges critiqued it as amounting to "depth cameras: what do we do with them?" They gave me lots of constructive criticism on how I should clarify and present my core research question, as well as how to present my work as a novel and valuable contribrution to the scientific community.
The following poster session was uneventful. I couldn't show my (as of yet non-working) demo because there was no power outlet within 20 feet, and the Kinect requires 12VDC. OH DARN. I did get an email (during the talks, no less) from another professor who saw my poster and thought it interesting, so I'll follow up on that.
I'll finish up my project/paper this weekend, and hopefully catch up on sleep. When I'm done, obviously I'll add a subfolder to the root of my website, detailing this project and its findings.
I've slept 24 out of the past 48 hours. Goodness, it's good to rest. I vacuumed and cleaned up my room, which was surprisingly therapeutic.
I finished reading The Upside of Irrationality. I recommend it widely, as it gave me many new insights into the way people think and interact.
There will be a total lunar eclipse on December 20th/21st. I have a telescope. Yay!
I wish I could see the next total solar eclipse, but full umbra will only be visible from the middle of the ocean. It won't be until August, 2017 that a total solar eclipse is viewable from the US. I'm going to go ahead and block that day out on my calendar.
I wonder how the Internet will change between now and then. Is it a far cry to hope that link will still be valid in another 6 and a half years?
I want a pair of Vibram Five Fingers, but they're kinda expensive. Also, I need to measure my feet precisely.
Recently, OpenKinect banned a user from the mailinglist for repeatedly hijacking threads with condescending and vitriolic political commentary. There was a minor outcry against what was seen as censorship, and one suggestion was "just don't feed the trolls." I felt compelled to share this blog entry to the list, explaining why simply ignoring trolls isn't good enough, when trying to build a healthy, vibrant community.
Now, this may appear to be in conflict with my views on Wikileaks and the associated censorship, to which I offer the following defense:
Thus, I find my views to be consistent.
Coder's rant: my project uses three libraries (Qt, OpenCV, and libfreenect), and all of them have their own eventloop. This is somewhat annoying. Rather than give each its own thread and deal with all the locking issues that are bound to occur, I made my own mainloop and call the equivalent processEvents() function for each library.
It'd be cool if the libraries let you plug in other eventloops, or at least call the event-processing functions that power other eventloops. Actually, I wouldn't be surprised if you could with Qt and glib, but OpenCV has a single function that processes events (cvWaitKey(), which actually burns CPU time waiting for more events, which is annoying).
It is questionable whether my system is actually going to work, particularly in time to do a user study to write up by Monday morning.
I think this goes down as the most emotional thing I've written here.
The semester in review (or, "the first step is admitting you have a problem"):
This has not been a good semester for me. I've fought depression. I've failed to accomplish anything of value in my classes. I haven't met people outside my lab or classes. I haven't gotten involved in extracurriculars. I've spent more nights in the lab than I can count on one hand, and I've got little to show for it.
I have, however, learned a lot about what being a grad student is like. It's a long series of trial and failure. I've never felt this inadequate in my life. Right now, I'd say I'm about 80% less excited about being a grad student now than before the semester began. I recognize that my ego has never had to deal with failure before. I'm probably better for having to face it now, but I have to say: I hate the feeling. This probably annoys the crap out of the people who have felt like this their whole life. Forgive me, I never understood before.
Here's something that bothers me: in academia, everything you do is basically toward the goal of getting published. And every paper starts with an idea. In fact, every paper consists entirely of an idea. That's the only contribution that's really expected of a paper - an idea, and a little experimental evidence in its favor. And now, having seen these experiments run, these tests devised, I can't help but wonder if everyone is just aiming for the minimum proof needed for publication.
Another problem: you can come up with a ton of neat ideas. And in all likelihood, they won't change much between when you first conceive them and when you put your results into a paper, weeks, months, or years later. Brewer's advice was "know what your graphs should look like before you implement anything." It hurts me that the investigation is basically limited to proving things that were correctly intuited many months earlier. And at such high cost - the systems built to make the proof needed for publication are rarely used outside of academia. This is the price of testing hypotheses, and while I fully respect the need for objective testing of these hypotheses, I can't shake the feeling that it's so damned inefficient.
I'm wondering if academia is the right place for me. Maybe I'm just incurably an engineer, and I belong in the workplace, hacking things together for fun and profit. All I know is this: I feel like I don't belong here. I know (and care) too much about how real things work. I derive little joy out of my work, despite learning much from it. How did this happen? I used to live to learn.
I feel like I've let a bunch of people down, lately.
You all believed in me, and I spent the past five months failing you. No more. I'm getting help. I'm making changes. If I can't make this work, I'll make something work.
Aaaaand it's about now that I prescribe myself sleep and a healthy dose of perspective.
UPDATE: OR I WOULD IF I HADN'T JUST LOST MY WHOLE TERM PAPER. What a shitty way to end a semester.
UPDATE2: Once the panic subsided, I got crafty. I have /home and / on separate partitions. Ran PhotoRec on /home, recovering to a folder in /, set to save .zip files (since .odts are really just a memory dump with angle brackets, zipped up with some metadata), and let it run for a few hours while I slept. When I got back, I scripted opening every .odt file found to see if any of them were my paper. There were probably 40 old versions. Most of them were hopelessly behind, but one such file held my paper in an only-a-little stale state. I finished my paper and submitted; now I'm sleeping for real.
I got a number of email replies to my most recent blog entry. This tells me that I need to implement comments on my blog in fairly short order. My housemate gave me a lengthy explanation of how I have NIH syndrome and really ought to suck it up and use a proven blogging engine/service. I came up with approximately a million excuses, and he rebutted every one of them. Darn. Now I both have NIH syndrome AND I'm in denial.
Also on my TODO list:
Today I opted out of the nudie scanners at SFO. The TSA staff were very professional, and I received a normal pat-down (not to be confused with the "enhanced" heavily invasive ones that led to an Indian ambassador vowing never to return to the USA).
Things I have seen at the airport today so far include a kid playing WoW on the airport wifi and a guy watching C-SPAN on his iPod Touch. And you thought I was unusual.
11:59 - flight boarded successfully.
17:08 - flight landed, a half-hour early
Today was a day of rest. I slept in past noon, talked with my mom for a good while, and did a bunch of random chord improvization on the piano. I also took my trenchcoat to the Korean tailor, since I managed to rip a hole in it right where one of the important buttons goes while going up a set of stairs. That woman pays incredible attention to detail.
I wrote a 16-line python script to play N random songs from my music library. I'm rather pleased with the results - it's a very low-overhead replacement for amarok or anything else, since I usually leave the latter in "all random" mode anyway. I may also look at MPD to see if it suits my needs. It's sad that amarok is no longer stable enough for me to rely on it as my media player.
Now I'm going to go set up ownCloud and see if it's usable or not. I would really love to have my own open-source dropbox equivalent, seeing as I have this dedicated server sitting here that does little besides host my website and a screen for IRC. Particularly after that instance of not having a working copy of my paper. That was very uncool.
I should also push out a quick-hack implementation of comments, because if I keep thinking about it too much, I'll never get it done. I'll make it a one-hour project tomorrow.
I rather like the concept of the one-hour project. About a week ago, I was listening to some folks in #tamulug (on irc.tamu.edu) talk about how they had a bunch of projects that they never got around to doing. I thought of the concept behind my blog, in which I decided I would have a working blog engine in an hour's time. I then decided to do an experiment, to see if the one-hour project was something realistic to repeat or not.
I told them "I give you an hour. Go implement [one of the projects they'd been putting off]." And at the end of the hour, they had each made decent progress toward the project, if not completed it. It's not that I really expected everyone to finish a standing project in an hour (although you can certainly get a lot done in that time if you opt to satisfice rather than go for perfection). The point was to force the transition from planning to implementation. Based on initial results, I'd say the first trial suggests that people can accomplish a decent amount in an hour, if they start prototyping. I should follow up on that initial test and see if people have continued working on the projects they prototyped, or if they stopped after that hour. I know I've kept up with my blog since; I wonder if the same will hold true in general - that once you've invested time and effort into creating something, you're less likely to abandon it than if you left it as an idea. I wonder if I can turn this into a hypothesis and test to suggest to Dan Ariely.
Summary: perfect is the enemy of good, and real artists ship.
Sarah wrote an interesting short essay on why she's going to wean herself off Facebook. I've long thought that people spend way too much time on unproductive things on the internet (I'm guilty of reading way too many RSS feeds, myself), and I've also historically expressed (rather verbosely) my concerns regarding privacy and civil rights (exempli gratia the whole rest of this blog). It's wonderful to see one of my friends taking this to heart and acting to change her life accordingly. It makes me feel validated and trusted.
In a similar thread, I asked my little sister what goals she had for the future. She shared, and I suggested that she write them down on a large sheet of paper that she'd see every day, as a reminder for her to focus on the things that are valuable toward accomplishing her goals.
Which brings me to the fact that I need to set some more specific goals for myself. TODO.
Today I realized that my ideal home directory system (network mounted homedir, but with offline access) is in fact, impossible to implement. Provably so, thanks to the CAP theorem aka Brewer's theorem.
So: I have to choose to lose one of: Consistency, Availability, or Partition-tolerance. Let's review the options:
Conclusion: the best of all worlds is impossible. If you can guarantee network stability, then by all means, give up partition-tolerance, and use a pure network filesystem with a single authoritative copy of the data. If you expect network outages, or need access to the data before network is up, give up consistency, and use something like Dropbox that keeps a local cache and syncs that with the remote "authoritative" copy.
It's interesting to note that the best possible solutions to this problem already exist (and see wide deployment). Thus, I claim that network-based storage and synchronization is, for all intents and purposes, a solved problem.
I have made a first crude implementation of comments. They appear to work so far. We'll see how long it takes for me to break them.
They are currently only shown in the single-day view, for the record.
I eagerly await email notifications of new comments on my blog posts! I've worked to make my blog something interesting for (some) people to read, and based on some of the feedback I've gotten from said readers, some things I write have been comment-worthy, so that's exciting for me. I hope that the addition of comments will enable more two-way communication through my blog, since until now it has served strictly as a broadcast mechanism.
Of note: I've written just enough code to actually support submitting comments and showing approved comments. The glue in between is currently manual; I plan to automate this.
Also, for a one-hour project, this took way more than 60 minutes. At least I finished enough of it to show. Another benefit to forcing myself to do these projects: over time, I'll get a better sense for how long it will take to do something.
Future comments work:
Yesterday I went to see Tron: Legacy with Nick and Eric, a couple of my old friends from Texas A&M who were in the area. It was SO SO SHINY, and I think the plot that it had was decently executed, but it didn't evoke anything terribly deep within me. Also, Olivia Wilde (who played Quorra as well as Thirteen in House) FTW.
Last night marked both the winter solstice and a total lunar eclipse. I set up my telescope. The best part was seeing that the shadow on the moon was curved; a fact used by ancient scientists to show that the earth is at least circular in profile, and the moon spherical (suggesting that the same would be true of the earth).
During the first half of the eclipse, the sky was fairly clear, and I was able to take some (somewhat) decent pictures with my camera looking through the telescope. As the evening progressed, clouds came in, which made it much harder to get any decent shots.
Click on each picture to view the linked full-resolution versions.
Today was...long. I went over to Nicole's and had gingerbread pancakes and a Talk. I wish I knew a better way to tell my friends when I think they need to face and be proactive about their issues. I don't like making my points so painful, but my experience has been that I didn't heed my friends' advice and warnings until they said something that got me angry and made me really consider their point of view. Those of you who've helped me grow: I thank you.
We had a whole ham, pineapple bake, and asparagus for dinner, which was absolutely delicious.
The family went to see The Tourist, which I came away from with no strong opinions whatsoever. I was sleepy the entire movie, though, so maybe that's part of it.
After arriving home, I improvised on the themes of a variety of video game songs on the piano. Favorite songs of the evening included Terra's theme from Final Fantasy 6, and Guardia's Millenial Fair from Chrono Trigger.
Then I made some science cookies, inspired by Not So Humble Pie">Not So Humble Pie:
Two days ago: Danny and his girlfriend Amanda came and visited me. We went to Cafe Brazil for noms (I had a spinach-feta cheese omelette), the movie theater to see True Grit (good movie), and back to my house where we played Parcheesi with my dad. The game with four players takes quite a while. I should have won, but I managed to blow 12 turns at the end where I simply could not roll a 2 to advance my last pawn home, and my dad brought his last pawn out of the nest, all the way around the board, and home during my stagnation. It's a great game - it can feature very interesting twists, depending on both luck and strategy.
Yesterday: I went to REI and got a pair of Vibram FiveFingers KSO (black/black colourscheme, for the record). I rather like the feel of them, and hope that they will help change my gait to something softer on my feet, as well as encourage me to be more active. Another plus: my friends can't give me grief about my socks when I'm wearing my Vibrams. HA.
Yesterday evening: A group of a dozen or so TAMSters got together for a potluck dinner. There were gyoza, egg drop soup, pork tamales, thai noodles, stuffed mushrooms, cookies, pumpkin bread, and a gingerbread house. I made pineapple bake (recipe posted in this entry) and took my science cookies to share. We ate delicious foods, caught up on the stories of each others' lives, watched random videos, played piano and Go, and had a good time together.
Today: my dear friend Sarah is flying to the area to visit me for a couple days before heading down to central Texas to visit additional friends from A&M! I am very excited to see her in person again. Our lives seem to be unlikely to cross paths unless we make concerted efforts for them to do so, so we live with the expectation that we'll probably never see each other in person again. As a result, when we do, such times are particularly joyful.