million lines of code (typically Linux),
count the bugs, and write everything
up. Like other early static-tool researchers, we benefited from what seems an
empirical law: Assuming you have a reasonable tool, if you run it over a large,
previously unchecked system, you
will always find bugs. If you don’t, the
immediate knee-jerk reaction is that
something must be wrong. Misconfigu-ration? Mistake with macros? Wrong
compilation target? If programmers
must obey a rule hundreds of times,
then without an automatic safety net
they cannot avoid mistakes. Thus, even
our initial effort with primitive analysis
found hundreds of errors.
This is the research context. We now
describe the commercial context. Our
rough view of the technical challenges of
commercialization was that given that
the tool would regularly handle “large
amounts” of “real” code, we needed
only a pretty box; the rest was a business
issue. This view was naïve. While we include many examples of unexpected obstacles here, they devolve mainly from
consequences of two main dynamics:
“coDEProFiLES” by W. braDForD PaLEy, httP://DiDi.coM
First, in the research lab a few people check a few code bases; in reality
many check many. The problems that
show up when thousands of programmers use a tool to check hundreds (or
even thousands) of code bases do not
show up when you and your co-authors
check only a few. The result of summing many independent random variables? A Gaussian distribution, most
of it not on the points you saw and
adapted to in the lab. Furthermore,
Gaussian distributions have tails. As
the number of samples grows, so, too,
does the absolute number of points
several standard deviations from the
mean. The unusual starts to occur with
increasing frequency.
W. Bradford Paley’s codeProfiles was
originally commissioned for the Whitney
museum of American Art’s “coDeDoc”
exhibition and later included in momA’s
“Design and the elastic mind” exhibition.
codeProfiles explores the space of code
itself; the program reads its source into
memory, traces three points as they once
moved through that space, then prints itself
on the page.