113 lines
4.8 KiB
Plaintext
113 lines
4.8 KiB
Plaintext
[1] ● ● Patrick Dubroy
|
||
|
||
• [2]About
|
||
• [3]Archives
|
||
|
||
[4]Cold-blooded software
|
||
|
||
December 28, 2023
|
||
|
||
It’s 2004 and I’m sitting in one of the largest lecture halls at my university.
|
||
I’m a computer science major but I’m taking a course on natural history —
|
||
plants and animals — as one of my electives.
|
||
|
||
The professor tells us that he’s brought something from home, something he
|
||
found in his freezer. He reaches down behind his desk, and then holds his arm
|
||
out to show us what’s sitting in his palm: a baby painted turtle. We’re
|
||
learning about cold-blooded animals, and it turns out that painted turtle
|
||
hatchlings are pretty special — they’re one of only a few species that can
|
||
survive being frozen.
|
||
|
||
Now, the lecture hall is pretty modern for 2004: there’s an overhead camera at
|
||
the podium, where the professor can write notes that are displayed on screens
|
||
around the hall. But instead of writing notes, he puts the turtle under the
|
||
camera and starts his lecture.
|
||
|
||
Over the next hour, we watch this little reptile slowly come to life as the
|
||
professor lectures. The first movements were nearly imperceptible. An eyelid
|
||
cracking open, a leg inching forward. By the end of the lecture, the turtle has
|
||
moved about halfway across our screens.
|
||
|
||
I’ll never forget that class, because it’s where I really understood what it
|
||
means for an animal to be cold blooded. You see, warm-blooded animals — like
|
||
humans or mice — have a stable body temperature that stays within a pretty
|
||
narrow range. For humans, it’s around 37 degrees Celsius. A few degrees higher
|
||
or lower and we’re in big trouble. Cold-blooded animals like the painted turtle
|
||
can adapt their metabolism to the temperature around them. They’re active when
|
||
it’s warm out, and as the environment (and their bodies) get cooler, they move
|
||
more slowly. Very few of them can survive being frozen like the baby painted
|
||
turtle can.
|
||
|
||
I see a similar dichotomy with software projects. Certain technology decisions
|
||
lead to projects that are warm-blooded: everything is great when there’s
|
||
constant motion on the project, generating heat. But put warm-blooded software
|
||
in the freezer, and you’ll pull out a corpse six months later.
|
||
|
||
Maybe your CI isn’t working because one of the services you depend on got
|
||
bought or ran out of money. You add a new dependency and find yourself needing
|
||
to upgrade your compiler. Another package you depend on is deprecated, and
|
||
doesn’t work with the latest version of the compiler.
|
||
|
||
Some projects are different. You work alone, make some changes when you’re
|
||
inspired, and then don’t touch it again for another year, or two, or three. You
|
||
can’t run something like that as a warm-blooded project. There’s not enough
|
||
activity to keep the temperature up.
|
||
|
||
A cold-blooded project is like the baby painted turtle. You can freeze it for a
|
||
year and then pick it back up right where you left off.
|
||
|
||
A cold-blooded project uses [5]boring technology. The build and test scripts
|
||
don’t depend on external services that might change, break, or disappear
|
||
entirely. It uses [6]vendored dependencies.
|
||
|
||
The software that powers this blog is cold-blooded. The first commit was nearly
|
||
twelve years ago — a simple little static site generator to replace my
|
||
out-of-date Wordpress installation:
|
||
|
||
commit 68949229ad426c1e8795ee640808db9987ab30ab
|
||
Author: Patrick Dubroy <[7][email protected]>
|
||
Date: Sun Jan 8 19:10:24 2012 +0100
|
||
|
||
Add templates and site-building script.
|
||
|
||
It’s written in Python (2, not 3). It depends on four third-party modules, and
|
||
they’re all committed to the project repository. Everything runs locally, and I
|
||
deploy the result with rsync over ssh.
|
||
|
||
And boy am I glad I decided to do it that way. I’ve made a few small
|
||
improvements over the years, but otherwise it’s continued to work without
|
||
modification. And I fully expect that it will still be working in another
|
||
twelve years.
|
||
|
||
🐢
|
||
|
||
👉 You might also want to check out [8]the discussion on Hacker News.
|
||
|
||
Thanks to Thorsten Ball for helpful suggestions on this post.
|
||
|
||
Pssst! I'm working on a book called [9]WebAssembly from the Ground Up. It takes
|
||
you from hand crafting bytecodes to writing a real compiler for a simple
|
||
programming language. If you're interested in WebAssembly, you should
|
||
definitely check it out.
|
||
|
||
© 2006–2024 Patrick Dubroy · Powered by [10]Butterbrezn and [11]Augustiner.
|
||
|
||
Subscribe: [12]RSS · [13]email
|
||
|
||
|
||
References:
|
||
|
||
[1] https://dubroy.com/blog
|
||
[2] https://dubroy.com/blog/about
|
||
[3] https://dubroy.com/blog/archives
|
||
[4] https://dubroy.com/blog/cold-blooded-software
|
||
[5] https://mcfunley.com/choose-boring-technology
|
||
[6] https://go.dev/ref/mod#vendoring
|
||
[7] https://dubroy.com/cdn-cgi/l/email-protection
|
||
[8] https://news.ycombinator.com/item?id=38793206
|
||
[9] https://wasmgroundup.com/
|
||
[10] http://www.butterbreze.de/zutaten.html
|
||
[11] http://www.augustiner-braeu.de/
|
||
[12] https://dubroy.com/blog/rss.xml
|
||
[13] https://buttondown.email/pdubroy
|