Add links

This commit is contained in:
David Eisinger
2024-01-30 09:57:37 -05:00
parent 4e04691266
commit fd86fe4bca
9 changed files with 1584 additions and 20 deletions

View File

@@ -0,0 +1,112 @@
[1] ● ● Patrick Dubroy
• [2]About
• [3]Archives
[4]Cold-blooded software
December 28, 2023
Its 2004 and Im sitting in one of the largest lecture halls at my university.
Im a computer science major but Im taking a course on natural history —
plants and animals — as one of my electives.
The professor tells us that hes 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 whats sitting in his palm: a baby painted turtle. Were
learning about cold-blooded animals, and it turns out that painted turtle
hatchlings are pretty special — theyre one of only a few species that can
survive being frozen.
Now, the lecture hall is pretty modern for 2004: theres 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.
Ill never forget that class, because its 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, its around 37 degrees Celsius. A few degrees higher
or lower and were in big trouble. Cold-blooded animals like the painted turtle
can adapt their metabolism to the temperature around them. Theyre active when
its 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 theres
constant motion on the project, generating heat. But put warm-blooded software
in the freezer, and youll pull out a corpse six months later.
Maybe your CI isnt 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
doesnt work with the latest version of the compiler.
Some projects are different. You work alone, make some changes when youre
inspired, and then dont touch it again for another year, or two, or three. You
cant run something like that as a warm-blooded project. Theres 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
dont 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.
Its written in Python (2, not 3). It depends on four third-party modules, and
theyre 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. Ive made a few small
improvements over the years, but otherwise its 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.
© 20062024 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