Friday, December 28, 2007

+-

This year I fixed a lot of bugs after looking at diffs, but to get diffs you have to make changes (or have non-determinism).  I guess this post is a review of changes and diffs from the year.

Changes that seem good:
  • drinking tea for caffeine instead of coke
  • objects instead of modules + functors in my ocaml code (even though lots of people seem to hate objects in ocaml -- I still hate objects for certain things)
  • turn during snowboarding w/out swinging arms
  • first stay on the East coast
  • first trip to Europe
  • first internship (even though it was still a research environment)
  • played cricket for the first time
  • bought a digital camera
  • bought a mouse for my laptop
  • more vim (in addition to emacs)
  • read some decent books
Changes that aren't as good:
  • even less contact with old friends (at least we're on facebook?)
  • less cooking
  • less movie watching? maybe that's not true
  • less math
Changes that go both ways:
  • new office
  • more time in the office
  • started this blog, and filled it with crap that I probably feel differently about now
  • new template for this blog
  • started using other web-apps like recommendation-based web radio
  • testing Safari for windows
Changes I'd like to see:
  • reverse some of the negative changes
  • waste less time online
  • waste less time offline, testing different applications (like Safari)
  • start working on things earlier
  • be more responsive with email
  • have more interesting things to put in this blog (i.e., live a more interesting life)
  • more importantly, have more interesting things to talk about
  • draw more
  • write more
  • learn a music instrument
  • do more math
  • do anything to work more of the brain
So after I see the diff I'm supposed to do some kind of analysis, decide what's worth fixing, and end up fixing a fraction of the things that are worth fixing.

Sunday, November 11, 2007

Another instance of 0xDEADBEEF

I've been doing a lot of debugging lately. There are probably many explanations for each of the different bugs, but "naming" problems seem to be the cause or symptom of most of the bugs. Here's one example :

Out of thin air

I start with a callgraph where each node represents a function. Each of the graph nodes have an integer ID. Sometimes the wrong node would be summoned, namely, the node representing a function called "pthread_mutex_lock".

Explaination: To determine what to summon, I refer to mutable variable "current function" (yes, ugh... mutation). In some cases that variable wasn't being set, so it referenced a "dummy" function. When the "current function" was dereferenced, it would summon "pthread_mutex_lock". The function "pthread_mutex_lock" was the first function analyzed, so it was assigned ID #0. The dummy function comes from CIL (which my analysis uses), and CIL assigns the dummy function ID #0 as well.

Fix: set the "current function" variable at the right times. To reduce the headache next time, use dummy IDs that are more unique like 0xDEADBEEF.

Wednesday, August 29, 2007

Be healthy. Be tremendo-meatatarian.

I was thinking of one of mom's soup when I saw this. Photographic evidence that you should probably eat a steak instead of soy products. Soybeans will confuse your system with mystery fat.

Monday, August 6, 2007

Points-to analysis quote

Ran into a quote on points-to analysis recently (for me):

Current points-to analysis is like dissecting an animal by cutting it on a grid pattern into 1-cm cubes. I want to cut it at the joints.

Tuesday, July 17, 2007

Cheaper, Low Quality Transportation

Given the "power" of the internet, we should be able to schedule ad-hoc rides on the cheap.

Paxis - Taxis that run on a public on-demand schedule? Pack those cars up with people who have similar sources and destinations to be more efficient. I guess these are actually the same as Shuttles. Oops!

Practus - "Buses" that use Drivers-Ed students. The students get practice by actually driving people around. The person riding shotgun should know two things. (1) Directions. (2) How to drive. Finally, the car may be one of those cars with a passenger-side brake.

Come on!