Test Driven Development, as it is now called, is something I have advocated for a large part of my career. My more recent experience, however, has brought more nuance to my view of the proper level and kind of software testing, which now feels... Read more
Consider the Cheeseburger
Advertising. People in my social circle are used to thinking of it as being an awful institution: greedy, faceless, unscrupulous corporations brainwashing the susceptible masses into wasting their hard-earned money on cheap, low quality, superfluous devices for solving problems no one actually has and... Read more
How to Take CSS to the Next Level
Computationally generating the semantics of a web page—the HTML—has become the standard modus operandi on the web. No serious web developer writes by hand the HTML that their server sends to the browser anymore; invariably, some template engine or other generator intermediates, removing tedium... Read more
On the Cleverness of Compilers
The “Sufficiently Clever Compiler” has become something of a trope in the Lisp community: the mythical beast that promises language and interface designers near-unlimited freedom, and leaves their output in a performance lurch by its non-appearance. A few years ago, I was young enough... Read more
Introduction to Automatic Differentiation
Automatic differentiation may be one of the best scientific computing techniques you’ve never heard of. If you work with computers and real numbers at the same time, I think you stand to benefit from at least a basic understanding of AD, which I hope... Read more
Digital Foxes
The successful fox must know more than the sum of what the hedgehogs know, for it must know the connections from one thing to another. This fact is key to the design of computer systems for solving certain kinds of problems. I keep coming... Read more