

SIGAVDI #92: Breakfast Smoothie Edition
source link: https://avdi.codes/sigavdi-92-breakfast-smoothie-edition/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Hello friends,
It’s been a hectic couple of weeks. I’ve been doing a lot of RSpec test suite maintenance. I have lots of Big Opinions about how to do spec suites well, but the truth is the combination of Ruby, Rails, RSpec and FactoryBot furnish so many opportunities to grow thickets of impenetrable test code that I can’t fault anyone who finds themselves with a flaky, slow-running, hard-to-update mess on their hands. Test suites are best when they are boring, and these tools offer many, many opportunities to make them… interesting.
I'll Trade Ya!
Hey there! Archived SIGAVDI letters are for newsletter subscribers only. All it costs to join (and unlock this post) is an email address! I'll write to you weekly-ish with a few interesting links, some updates, and some reflections on the intersection of software and life. And I'll respond to your replies! Whattya say?

What’s good
- Richard Schneeman on setting up CI for a Ruby library project on CircleCI. This is a great walkthrough, and I can vouch for CircleCI being a superior product. The ability to SSH into a troublesome pipeline to experiment with solutions is killer.
- GeePaw Hill on the winding path to learning to use test-driven development skillfully.
- I believe that the transition from object to process metaphysics is one of the most important paradigm shifts for working with complex systems. Here’s Carlos Perez on how the the debate between nature vs. nurture is the debate between understanding the world in terms of nouns vs. verbs. One quibble: he says “mysticism” derogatively at one point. But I’m increasingly convinced that the human mystical sense is their systems-thinking sense.
- DAMP vs DRY (and why your tests should be DAMP)
What’s New
- New on RubyTapas: continuing our series on containers for development, we create our first Dockerfile and then learn about layers!
What’s in my head
Recently I saw reference to an AI paper that asserted that algorithms don’t make poor decisions due to fatigue. As opposed to those sketchy, unreliable humans. This amused me.
A long time ago I worked on hard realtime ATC radar software for multi-runway airports. A lot of the work that went into that system involved graceful degradation as the system became overwhelmed. What do you do when there are more “targets” (aircraft with transponders) than the system was specced to handle? Do you fail in a surprising way? Do you handle it in a way that just silently loses radar tracks? Or do you fail predictably?
The thing is, computers make poor decisions, full stop. They make poorer decisions at the limits of their capacity. In the best case someone manages to predict and plan for likely types of exhaustion (memory, thread count, I/O, etc etc), and structure the degradation. In the worst case their response to overwhelm is nondeterministic.
And computers absolutely become fatigued too. Anyone who has ever rebooted their PC because it was getting slow and acting weird knows this. Fatigue is an artifact of complex systems, not some uniquely biological thing.
Fatigue can happen on very small timescales (garbage collection) or larger (oops, we leaked file a few file descriptors a day until we ran out). The more complex a system, the more unavoidable fatigue is. Evolution has had four billion years to work on this problem and its latest and most successful model spends eight hours out of every twenty-four rebooting. Apparently the flexibility has more utility than the availability.
The field of hard realtime programming is, in one sense, an attempt to minimize the possibility of that kind of fatigue by locking down sources of complexity. If your program never allocates it can never become GC-bound. But that also limits the flexibility of such systems.
In fact it limits them to making “decisions” in only the most trivial sense of the word. The more human-like the judgment required in terms of richness of input and context, the more complexity required, and the more potential for systems operating at their limits to screw up.
That’s all for today. As always, I welcome replies… or come chatter with me on the Tensegrity Discord, a perk of all Patreon subscriptions
Thanks for reading!
January 25, 2021
Recommend
-
51
vim-smoothie: Smooth scrolling for Vim done right This (neo)vim plugin makes scrolli...
-
12
Apple Pie Funnel Cake Edition – avdi.codesThere’s a shiny red convertible in my garage. Some mornings I look out the window and it’s sunny and bright and I think, what a perfect day to go for a drive. Then I discover that since the last time...
-
6
I have also been adopted by a local anole lizard, who presu...
-
14
What’s good Somehow despite my best efforts to abstain I got sucked into gift-giving this holiday season. And in a few cases, I even managed to avoid the usual e-commerce leviathans. Some highlights, in case they inspire:
-
8
milloSmart cordless & portable smoothie blender
-
6
Hello friends, I know it’s been a long time even by SIGAVDI standards. I’ve been busy. Let’s do bullet points, and then if you want you can stick around for some catching-up. What’s good Amy Newell:
-
5
Posted on March 6, 202...
-
9
Posted on January 12, 2022Janu...
-
12
Hello friends, I have a summer cold courtesy of my children and I’m not sure if it is making me more depressed, or providing a distraction from the depression. Either way, I got that
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK