Before I get into this
week fortnight’s newsletter, a quick note: I have immediate availability to take on a new consulting client! I’m particularly good with gnarly gnarly Ruby/Rails codebases, as well as coaching/mentoring junior and midlevel engineers, helping to evolve technical architecture, and facilitating the spread of healthy practices within your organization. More info here!
I also remain available for one-off Rubber Duck Sessions. These sessions are half price if I can stream and/or record them for other devs to watch and benefit from!
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?
I switched to a different system for keeping track of links I wanted to share here, so apologies if any of these are duplicates.
- Charity Majors: Observability – a 3-year retrospective
- Domain-Driven Design for Rails Developers (part 1), by Victor Savkin
- Dawn Parzych on The Fallacy of “Move Fast and Break Things”.
- Henrik Nyh recounts how his team implemented some commonsense limits on auto-deploy.
- It’s far too easy to make pull request reviews frustrating and antagonistic. Chelsea Troy explains how to do the hard work to make code review not suck.
- I adapted some thoughts from old SIGAVDIs into articles about a perennially useful metaphor and about why flat organizations aren’t a such good idea.
- New on RubyTapas! Guest chef Claudio Baccigalupo shows how to clean up RSpec boilerplate and leave only the code that’s relevant to the test.
- Also: I’ve been learning a lot about serverless architecture lately, and I used what I’ve learned to make an episode about using AWS SAM to build Ruby Lambda functions that are locally testable and easily deployed.
- Not a RubyTapas subscriber? I’ve just freed up another episode from the deep archives! Episode #006 will show you how to use the Forwardable standard library for easy object composition.
- I’ve begun adapting my talk The Soul of Software into a series of blog posts. The first is up here: What is the Ruby Legacy?
- I decided to start holding casual Zoom hangouts for my Patreon supporters, and I’m so glad I did. The recording of the first hangout is available to patrons here. My special guest/quarantine partner Jessica Kerr showed up, along with around a half-dozen others. We talked remote work, knowledge organization systems, what it means to write quality code, and a lot more.
- And here’s the second hangout recording!
- Speaking of Jess, she and I paired for a couple hours on some Dark code the other day, and here’s a recording.
What I’m reading
(Shameless Amazon affiliate links ahead…)
- Domain-Driven Design, by Eric Evans
- Reactive Design Patterns, by Dr. Roland Kuhn, Brian Hanafee, & Jamie Allen
- Microservice Patterns, by Chris Richardson
- The Closed World: Computers and the Politics of Discourse in Cold War America, by Paul Edwards
- The Lathe of Heaven, by Ursula K. Le Guin (just finished this one, actually)
Where to find me
- GOTO Chicago is doing some awesome work re-imagining what it means for a conference to be online. I’ll be speaking “there” at the end of the month!
I was oddly reticent to write this issue, and I’m still not sure why. I’m not sure what to write about this time around.
I spend a lot of time thinking about the problem of disembodiment in the software development industry. I worry these days that the COVID-19 lockdowns will only make this worse. Suddenly we’re all brains in jars, whether we like it or not.
Or maybe, just maybe, we can use this moment to get better at acknowledging our own embodied selves despite physical separation. I’ve been posting a lot of selfies; I’m not sure what else I can do.
For the sake of centering in my own body, I bought myself a set of poi and I’ve been practicing with them. Something I notice about spinning poi is that while instructional videos can give you all kinds of useful mental models to understand tricks (“think of moving the poi from two tracks to a single track”), the models are really just a temporary bridge.
Once you accomplish the trick a couple of times, you can feel the rightness of the movements. You don’t need the mental model anymore. The knowledge moves into your fingers and your body.
Something that makes programming hard is that there is very little feel to rightness. We talk about a design feeling right sometimes, but it’s a very rarified and abstract kind of feeling. And coarse-grained too: you might not get that sense of rightness until weeks into a design when a refinement seems to come naturally.
I used to have a sense for what my computer was up to, back when it had a spinning hard drive. Those subliminal grumblings worked their way into my psyche below the level of consciousness. I knew instantly and innately when a lack of response was because the machine was working hard, and when it meant something had gone badly wrong. A few moments later that bodily understanding, based on the presence or absence of a quiet background murmur, would work its way to the conscious, rational level.
Occasionally someone has chutzpah to try to shift what it means to program in a way that exploits natural human cognitive proclivities. For instance, Dark hooks into our highly-developed sense of placement by positioning code on a scrollable virtual canvas. Mostly, though, we just insist that humans serve the machine.
OK, let’s do the rituals…
I neglected to set any goals in the last SIGAVDI, but some of the things I accomplished include:
- ✔ Finish $client_video_project (!)
- ✔ RubyTapas episodes
- ✔ Learn a ton about about automatable serverless deployment using AWS SAM
- ✔ Stream with Jess
- ✔ Start serializing one of my old talks in blog article form
- ✔ Act as interviewer for Jess’ PhillyETE talk
- Catch up on my email
- Shake some trees for consulting work
- Spend at least four hours paying down WIP
- Spend at least four hours adapting a talk for GOTO
- GOTO talk prep
- Becoming revenue-positive.
- Fixing my house.
Client Video Project: ~90% .
- Robust Ruby: 25%.
- MOOM: 91%
- The Rake Field Manual: 10%.
- AsyncJS Course: ~50%.
- Patreon improvements.
Thanks for reading. Feel free to practice some virtual social close-ening and reply!