SIGAVDI #84: Biscoff Edition

Hello friends,

It’s strange to think it’s already the 298th day of April. It seems like only yesterday we were celebrating the 5th aeon of March. There are some people who say that the COVID lockdown is messing with our sense of time, but honestly well pretty coping I’m think I.

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?

A photo of Avdi Grimm

What’s good


What’s new

  • A new episode of my podcast The Cache Flush is up! In this episode I speculate about why the tech industry seems to value mentorship over sponsorship, and how it may be connected to a belief in meritocracy. Also, lots of booknotes!
  • This week I made another classic RubyTapas episode free for all: #008 “Fetch as an Assertion”. Enjoy my 20212-era crappy voiceover and low-quality video ????
  • For RubyTapas subscribers, check out my introduction to the lsof utility and how to use it to answer the age-old question: who’s using my port?!
  • Also on RubyTapas: I realized I’d never done a full episode on Ruby’s #send, #public_send, and #__send__ methods. So I made one, including some guidelines for when to use which.
  • Jess and I have been streaming pairing sessions a lot during lockdown. Some notable recordings from the past couple weeks include:
  • For students of my Master the Object-Oriented Mindset course, I edited and delivered another 45 minutes of pair-programming footage. In it, Betsy Haibel and I explore various ways to generate allowable reminder times, along with various digressions. If you own the course, here’s a direct link to the video. (If you don’t own it, you can get a 10% discount with code SIGAVDI.)

And now, a word from our sponsor: me! Like a lot of people, the global shutdown has affected my employment situation – in my case, an exciting consulting gig fell through just as I was about to get started. If you enjoy SIGAVDI and can spare a buck or two, maybe consider sponsoring me on Patreon! Lately I’ve been scheduling Zoom hangouts for my patrons that have been a lot of fun.

And if you have a team you want to augment with a consultant who likes cultivating the value in big, rich codebases (especially Ruby ones) and loves leveling-up other devs… drop me a line!

Jess & I just finished up our participation in the GOTO Chicago conference. The organizers opted to modify the conference into an online experience rather than cancel it. Here are some disjointed notes…

The organizers went with an “18/18/18” format several parallel tracks, with a Zoom room for each track. 18 attendees, an 18 minute prerecorded video OR live presentation, followed by 18 minutes of Q&A.

Also, each speaker did 3+ iterations of their talk over the course of 3 days, so that more people could get a chance to participate.

The “18 people per room” thing seemed to get dropped pretty fast – I had the Zoom max of 50 in a couple of my sessions. I think they were shooting for an intimate feel with the 18-person max, but in practice with virtual attendees there just weren’t a lot of people actively participating in discussions. Mostly the audience members were just names in silent black boxes on Zoom. Very few people showed their video.

I think encouraging pre-recorded talks was a good call. I also think calling for sub-20-minute videos made sense, even if retooling my talk for an 18-minute video was a huge amount of extra work ????. It’s hard to focus on a prerecorded video longer than that. There’s a reason I shoot for 5 minutes with RubyTapas episodes!

On the other hand, everyone watching the pre-recorded segments together synchronously held little value for me as a speaker. I was just sitting there watching my talk playing, watching a couple of people stare at it, and watching the rest of the audience be blank silent boxes. I guess the hope was that people would raise questions or comments during the playback, but in practice I didn’t see that happening much.

The after-presentation discussions were better. But we need new strategies for engaging an online audience in conversation. It’s hard for folks to NOT be a bit checked-out from a conference that takes place on their computer. I participated in way fewer sessions and conversations than I normally would at an in-person conference.

Jess and I have been talking about this, and we both agree that the discussion shouldn’t be “how do we successfully move a conference online”. It should be: what is the thing that comes after conferences? We’ve been thinking about taking small cohorts of people through some sequence of offline viewing material and online discussion time, over a period of weeks rather than days.

Update from the day after: I’m finishing up this email while watching Deserted Island DevOps, the first tech conference held in Animal Crossing (broadcast via Twitch), and… it’s pretty great. I love how people are iterating on the online conference model now.

I get to talk to a lot of developers working on a lot of different kinds of software. And something that has struck me is how developers live in multiple, parallel universes.

Some developers live in a world where EVERYONE adopted TDD and pair-programming, to the point that there’s even a backlash against those practices now. Other developers live in worlds where those practices are mythical. “Does anyone actually do that?!”

I’m not talking just about what individual organizations are practicing. Rather, the perceptions of what “everyone is doing” vary so widely as to seem to come from separate universes sometimes.

Lately I’ve been thinking about the value of saying “thank you”. Sometimes Jess will ask me if I put the dishes away. And I’ll be like “oh crap, I thought I did, did I forget?” And she’ll be like “oh no, I just noticed that the dishes had been put away and I wanted to make sure to thank you if it was you.” She does this even though putting the dishes away is a basic daily chore, not something novel or above-and-beyond.

Sometimes a friend—old or brand-new—will vent some hard feelings to me. And I’ll struggle with how to respond. Should I dig up a similar experience of mine in order to share their feelings? Should I give them advice? Should I just nod and look/sound sympathetic?

And then I’ll remember: whatever else I have to say, I can always start by saying “thank you”. Thank you for sharing with me. Thank you for trusting me. Thank you for giving yourself the grace to spill.

It’s been more than a week, but let’s see how I did.

Last week

  • ✔ Catch up on my email didn’t get to the personal, but I at least caught up with the professional inbox
  • ✔ Shake some trees for consulting work I sent some emails out. This was one of the more emotionally exhausting things I did recently.
  • ✔ Spend at least four hours paying down WIP I got that MOOM pairing video delivered!
  • ✔ Spend at least four hours adapting a talk for GOTO

Bonus points

  • Jess and I spent a chunk of time mapping out how we want to evolve our respective online presence and offerings
  • I fixed a pernicious website bug that stemmed from some extra whitespace in a .php file ????
  • We also made some plans for a development automation course
  • I learned to do reel turns and butterflies and started on stalls.
  • …honestly, I need to get better at tracking all the bonus stuff I wind up doing.

This week

  • Email, again ????
  • Chew through some more WIP
  • Keep following up on work leads
  • More streams!
  • Host another Patreon hangout

Threat board:

  • GOTO talk prep
  • Becoming revenue-positive.
  • WIP.
  • Fixing my house.


  • Robust Ruby: 25%.
  • MOOM: 92%
  • The Rake Field Manual: 10%.
  • AsyncJS Course: ~50%.
  • Patreon improvements.

That’s it for this week. Thanks for reading, and feel free to write back!