09
Aug 11

Ride to The Coast

I like having guests who bike. So when Brian came over I decided this would be a great opportunity to explore going to the coast and back by bike (velodirt style). The following is a map of our trip (190miles, 2 nights).

The gravel roads were somewhat challenging. It was hard to climb in the heat so at times we had to push our bikes.

Things got more unpleasant when we encountered loose gravel by Tillamook which sent Brian sliding over the edge :(

Amazingly he got off without a single scratch (type-inference will go on!).

Eventually we got to Cape Lookout.

The next day we biked to and spent the night in Nehalem Bay.

Then it was time to head back :(

On the way back we did some more gravel roads, this time they were really nice. The road took us through a berry-laden forest and rewarded us with some pretty awesome views.

(If you squint you can see Brian)

 

The thing to keep in mind about gravel roads is that they like to get out of sync with the maps. We had to reroute due to roads going in a different direction, and due to various kinds of deadends.

In one extreme case a road was clearly on the map, but had a “DEAD END” sign on it. Which got us thinking “is this a dead end for cars or is it for real?”. After some climbing, the gravel road reduced to a nice forest path.

Further on it became obvious that someone tried hard to kill this road. Some road hater put up over a dozen tree pile barriers, with some reaching my height.

Turned out the road did indeed go through. Perhaps some day someone will start a cyclocross race dedicated to bringing this road back :)

The last highlight of the trip was this delicious-looking buffalo herd.

I love cycling in Oregon.


03
Aug 11

Effective Static Analysis

Static analysis can be a very fun pastime. One gets to sift through giant codebases looking for interesting clues, what could be more fun? A couple things qualify: a) static analysis accompanied by cool rewrites b) static analysis accompanied by cool visualizations.

Cool Rewrite

Michael Wu’s boolcheck tool is awesome. He wrote it to check that “typedef int” bools are really being used as booleans and aren’t perversely carrying integer values. The process of writing the tool is cool. As Michael is discovers bugs/disagreements stemming from setting “typedef bool PRBool”, he just adds another pattern to check for to the tool and never has to worry about that pattern again. I hope to see someone apply boolcheck to the linux kernel, GTK projects or anything else with int booleans. Some projects don’t have the luxury of switching to real bools, so they can continue using a static checker to make up for it.

Pretty Code

I’ve blogged about DXR many times. As of this week clang-based DXR is on par with the old Dehydra-based one. Callgraph, inheritance, etc queries now work. Joshua did an outstanding job gutting and rewriting the DXR backend this summer and is now going back to school. I’m extremely impressed with his work this summer. I didn’t think it was possible to get as far as he did.

We are looking for more help with DXR. Please deploy it on your pet project, contribute plugins for various languages, simplify deployment, etc.

Additionally, now that the backed is in a fairly decent shape, we are looking for someone to help us turn DXR into the slickest code browsing tool ever(we have some ideas written down). I’d like interactive graphs, various code visualizations, integration with bugzilla, etc. This needs a JSON-query frontend and a few other bits & pieces to be implemented.

Interns Wanted

We would love to hire more static analysis interns. Are you student who dreams about making large codebases easy to grasp? Do you want to spend a few months making Control Flow Graphs behave? If that sounds like your calling: leave a comment, send me an email.