Writers Talk About Writing
This Is Not the CRUD You're Looking For: Odd Programming Jargon
I was reading a document at work once and ran across this statement: "Core contracts within the product are interface-based and are easily mockable."
My programmer-to-English translation filter was momentarily confused, and for a brief but amusing moment I thought, "You mean, we can laugh at them?" But no. The intended, albeit far less interesting, meaning was that it was easy to create mocked-up versions of the contracts, which is something that for technical reasons is useful for programmers.
Many terms in the world of programming are kind of odd if you read them as normal English words. Here's another: CRUD. Every editor who first encounters this term circles it and asks "Really?!" But programmers are not referring to the stuff you find behind your refrigerator. CRUD is an initialism for the four basic operations that you do with databases: Create, Read, Update, and Delete, and the term certainly isn't going away, no matter how queasy it makes editors.
Speaking of databases, did you know that they often contain BLOBs? You might have some doubts about storing blobs in your database, but it's actually just a binary large object. It's the format in which databases store photos, audio files, and other large collections of unstructured data, and so of course is quite useful.
In the world of web programming, programmers used to talk a lot about SOAP services. That's nothing to do with cleanliness, though—SOAP stands for Simple Object Access protocol. In spite of the first element in the name, SOAP was anything but simple. So a more modern protocol has emerged that goes by an equally great name: REST. Unfortunately, knowing what this stands for (REpresentational State Transfer) doesn't tell you anything. Suffice to say that REST is the protocol of choice these days for creating web-based services. And the real benefit is that it gives us the opportunity to talk about RESTful services, which I find hilarious no matter how many times I see that term.
You might not know that your browser has a sandbox. Those cool effects that happen in your browser—animations, popups, and so on—they're all created using programming code. But you don't want to download a web page and let the page's code run amok on your computer. So the browser runs code in a "sandbox" that's supposed to restrict what the code can do. More generally, sandbox refers to any (virtual) place where it's safe to play; for example, at work we have a sandboxed server where we can test code without fear that we'll break things.
A sort of opposite word is jailbreak—not a prison escape, but a way of working around built-in restrictions on the Apple iPhone. This term originated because on some systems, the equivalent of a sandbox is referred to as a jail. Curiously, in this context, jailbreak is primarily used as a verb: jailbreaking your phone.
Even people who don't work in computers probably know the term firewall. In its original sense, a firewall isolates areas that are subject to fire. There's a firewall between you and your car's motor, for example. In computer terms, a firewall acts as a barrier between you and unsafe places, such as the Internet at large. In a computer firewall, you can selectively open ports. In normal English, a port is a small opening, and that same general meaning carries over to computer firewalls. However, if you really want to protect yourself from the Internet, you need an air gap—an air-gapped computer is one that has no connection to the Internet at all.
Programmers sometimes talk about hydrating an object. It's impossible for me not to think "just add water" when I encounter this term. And that's not that far off—to hydrate an object is to add data to it. Alternatively (programmers love to argue about things) it can mean to reconstitute an object after it's been read from a database, passed from another process, etc.
You probably know the term black box from reading about airline crashes. In contrast, programmers talk about black box as any process whose internal workings are not visible. I might buy a library of code functions from you and use them without knowing or caring exactly how they work internally; they would be a "black box" to me. Quality-assurance engineers often create black-box tests that exercise a component without any knowledge of the component's internal workings. This can be a good practice because it helps prevent the tester from making assumptions about how the component should work.
You probably preheat your oven before you bake a cake. Programmers use a similar term, prewarming, although they're not talking about heat. One way to speed up computer processes is to store—or cache—data that's requested frequently, so that the computer doesn't have to look it up each time someone asks for the data. However, if you restart a process, the process's cache starts off empty, and the first few requests can therefore be slow. So programmers "prewarm" a cache after a restart by loading data into it immediately, before users start requesting data.
I'll leave you with one final term: dongle. This is one of those words that just sounds funny. It's a perfectly legitimate term that originally referred to a hardware device that you attach to your computer to unlock software. Dongle is used more generally now to refer to any small piece of hardware that you attach to your computer, like a memory stick or a device to enable Bluetooth or connect to a video display. But the humorous potential of the term is almost irresistible, and a few years ago two engineers lost their jobs by making "dongle"-related jokes. It just goes to show that while computer terms can have surprisingly different meanings in real English, there are times when bridging that divide can have unexpected consequences.