Writing characterization tests interactively
There are many ways to look at unit testing, but one of my favorites is to see it as an attempt to have a REPL in languages that don't have one.
When you have a REPL, you can call a function and learn how it works interactively. You get immediate feedback—you can have a conversation with it. In dynamically-typed languages this . . .
Managing API use across an organization
Access specifiers in programming languages can be frustrating. Superficially, they seem ok. You use public to mark the methods you want to allow anyone to call, and use private to hide the ones that people shouldn’t call. When you’re writing code, it’s easy enough to make that decision, but there are situations where it would be useful to . . .
I’ve been reading quite a few attempts to define Functional Programming recently. It’s hard because we’ve taken so many paths in the industry. There’s some nexus around immutability, referential transparency, and typing. Each language makes its choices, and — if we are looking at those three qualities — it’s clear that you don’t need all of . . .
If you’ve been in software development for a while, you know that small web applications are ill-suited for massive load. I’m writing this a few days after Black Friday in the US. This year, another large retailer had a site outage, losing tens of millions of dollars in expected sales. The retailer definitely didn’t have a small system, but . . .
I can’t recall when I first heard Nick Bostrom’s Simulation Argument, but I know that it was a long time ago. It seems to resurface in the popular consciousness every few years — often when it is tied to the plot of a movie, or when a celebrity or entrepreneur makes reference to it.
The core of the argument can be found in the . . .
Modeling The Dynamics Of Code And Attention
In conversations about software development, I often ask people whether they’ve heard of Conway’s Law. It’s a doorway to a richer conversation. We can talk about the dynamics of design — how our environment affects us as designers and how the things that we design become part of that environment in a broad feedback loop. Without this . . .
Exploring Structural and Behavioral Abstraction
I’m fascinated by correspondence — when we see the same pattern in more than one place, or even a very different domain. A good example is Postel’s Law, sometimes known as The Robustness Principle. It states that when you are designing components in software you should design them so that they are open to accepting many kinds of input yet . . .