… YAML Be There? … James Ingram? … Get it? If you don’t have an earworm now, you didn’t get it. Sorry, too obscure, you’re losing ’em, man.
Once upon a time, programming was an art form. I used to write code with the kind of pride reserved for medieval scribes. Every semicolon mattered. Every function had meaning. If you were lucky enough to grow up with Pascal or C++, you knew the world as a place of rules, logic, and discipline.
Now, they’ve given me Terraform.
For those who haven’t had the pleasure, Terraform is supposed to be “Infrastructure as Code.” It lets you build servers and networks using text files written in something called HCL — the HashiCorp Configuration Language. Except that “language” feels generous, it’s just a config file. This isn’t programming, it’s suggesting to Azure that you’d like a virtual machine, please, if it’s not too much trouble.
You don’t program with Terraform; you declare intentions. You say things like, “I desire a Dv5 instance,” and Terraform, like every wish-granting genie in a Warner Brothers cartoon, decides to mess with you. “Okay, here’s your Dv5 and three subnets, a gateway, and a bucket you didn’t ask for.”
I’m not saying it’s bad. I’m saying this behavior is a bit cheeky for a text file.
The kids at work love to tell me it’s a declarative language, not a procedural one. “You just have to write the end state,” they say. Yeah, I tried that with my teenage daughter once. I declared that her room should be clean. The result, as you can imagine, was roughly the same as running “terraform apply.”
Oh, but Terraform pales in comparison to its pimp: YAML, which a tech buddy of mine pointed out was initially released with Microsoft Silverlight. Why couldn’t it have died with it, too?! Whenever I think of YAML, I think of my old project manager, Mike. He was an old-school waterfall/mainframe guy who hated anything modern and would argue until he was quite literally red-faced when I baited him about how RAD and RUP methodologies were superior. He would have had an aneurysm the minute I told him YAML stands for “YAML Ain’t Markup Language.” The name itself is already recursively arguing with you. It’s the hipster of file formats: defined what it’s not.
At a high level, YAML sounds simple enough. There are no brackets, no curly braces, just indents. That’s the trap, though: miss one indent, and your entire deployment is toast. I thought COBOL was evil for throwing an error on every single line of my program because I misspelled “Environment Division,” until I spent Tuesday afternoon trying to figure out why Terraform refused to deploy one of my modules. Eventually, I realized I had a tab in my YAML file instead of two spaces. You’re kidding me with this, right? Worse, in every other language, if your code has an error, you get a message, a description of what you did wrong, and a line number. YAML just gave me “Error parsing near line 54,” only there wasn’t anything on line 54, because YAML doesn’t count blank lines you put in for cosmetic purposes as real. Line 54 was actually line 87. Terraform, on the other hand, just kept going, “Oh, I bet you meant to do this…” and chugged along with its own incorrect educated guess about my intentions.
“Human-readable code?” Only, if you’re some kind of Yogi guru who seeks meaning in nothingness … I mean, whitespace.
Now, maybe I’m biased. I have a degree in computer science, I’ve survived Fortran, COBOL, RPGII, Pascal, Modula-2, Lisp, Scheme, MC6800 Assembly, Rex, C, C++, Visual C++, C#, and C+C Music Factory. I was programming for dot-com startups in 1992, when speed and results mattered more than feelings, and the “one true brace style” was optional as long as your code worked. Once, I even wrote an entire C program on a single line just so nobody else would touch it, and I alone would know its secrets.
If someone wanted a new server back then, it meant I got to take a day off from coding and spend it screwing a box into a rack, running ten cables up to peripherals, swapping 25 floppy disks just to get the OS and drivers in place, and a couple of hours connecting everyone’s PC up to it. No state files. No YAML. Just blood, sweat, and @$%*ing IRQ conflicts everywhere.
I printed the source code for my best tricks, hacks, and routines into a three-inch binder I later compiled into a single library called grimoire.dll, because it really did feel like spellcraft back then. I still keep binders of my collective output to this today. I love binders, though now it’s business processes, design templates, and a couple of PowerShell scripts. Terraform may live in the cloud, but I still believe in hard copies of my magic. Point being, I’ve seen some shit, and YAML’s “indentation with an ego” still makes me want to cry.
There’s something deeply ironic about calling this “Infrastructure as Code.” I used to build things with code. I built compilers, parsers, and applications that interacted with my buddy Max’s custom DTMF analog audio hardware. These were systems that did things. Now I write configurations that I hope will do things. Terraform feels less like programming and more like cashing in one of your three wishes with that guy from the lamp. YAML feels like someone said, “Hey, let’s write programs in haiku, THAT would be new,” and called it technological advancement.
I once tried to explain to a junior engineer why I found this all absurd. He smiled patiently and said, “Well, Terraform is infrastructure for people who don’t want to code.” I nearly spat out my coffee. That’s like saying “frozen pizza is for people who don’t want to cook” and then charging me enterprise licensing fees for the pizza.
Maybe I’m too harsh. Twenty-year-old me, who became Marvin the Paranoid Android when he had to waste a half-day assembling a physical server (“Here I am, brain the size of a planet and they tell me to plug this box in…”) would find it magical that a “server” has been reduced seven lines of code and a progress bar that spins for about ten minutes. Still, I spent too much time losing sleep over semicolons and nested parentheses because we didn’t have color screens back then, much less context highlighting. I’m not going to have too much sympathy for a language that collapses over a tab character instead of two spaces.
If YAML were a person, it would show up at your house uninvited, rearrange your furniture, and then insist it looks “cleaner” this way. Terraform would be its friend who swears they’ll help you move it back, shows up late, and then rearranges your neighbor’s furniture instead.
I’ve been at this for more than 30 years, and I’ve held just about every position in the industry at one time or another. I’ve gone from telling computers what to do, to describing what they should be, to arguing with Copilot that the code example in the book doesn’t do what the description says it does. Meanwhile, I have a security and CMMC compliance team asking if what I’ve written is safe. I just shrug. “I don’t know,” I tell them. “I made a wish. How the genie interprets it is completely out of my hands.”
So, this is day three of my vacation. Rather than go fetal and start talking to semicolons and curly braces about how much I miss them, I’ve secretly spent most of it taking remedial Terraform/YAML courses, even though I already have a “certification” in them from LinkedIn University or whatever they call that. This is what passes for self-care in 2025.
