Hello friends,
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?

First off, a special invitation: Iโm throwing an experimental two-evening pop-up workshop on Investigative Debugging next week. The Big Idea is to stop hypothesizing about how code is working (or not-working), and instead leverage surveillance tools like strace, mitmproxy and docker diff to understand software behavior with hard data. Iโm not an expert in these tools, but Iโve used them enough to get to the bottom of some mysteries. Youโre invited to come explore them with me!
Iโve never done something like this before; it could be amazing, or it could be a flop! Iโm capping it at 12 participants, and if 6 or more sign up by Saturday Iโll go ahead with it. The cost is $100, both to cover my time and to make sure everyone involved is committed to participating. If this sounds interesting to you, thereโs more info here.
And now…
Whatโs good
- Soham Kamani: How to write good documentation.
- The Deserted Island Devops online conference had a fantastic slate of talks. Some favorites:
- No dev is an island: how to do serverless together, by Noฤnica Fee
- Mob programming from home, by Tori Chu
- Ellen Chisa of the Dark project on shortcutting a standard library.
Whatโs new
- Jessica Kerr: One Secret to Quality Software. Not my publication, but I directed and produced the video version ???? (Also keep a look out for my VERY PROFESSIONAL prop construction ????)
- Jess and I have been bootstrapping a Rails app using a Docker development environment. In the process I did a deep dive into Rails System Tests. Out of which came:
- On leverage, building software, and driving fenceposts, adapted from my #NOCODE talk.
- Large drawers full of small, sharp tools can cut you.
- New for RubyTapas subscribers: an episode on using
straceto peer into a programโs inner workings. - After some public moaning about the state of Ruby on Rails for first-time users, I wound up involved in an official Rails project to document and address Rails WTFs.
One reason Iโm able to do all this research & blogging is because of my very much appreciated Patreon supporters! I try to say thanks with some stuff thatโs just for them as well. Recently Patron-only publications include:
- A GOTO 2020 talk blooper reel!
- For higher-level patrons, some behind-the-scenes video with upcoming RubyTapas guest chef Josh Justice.
Iโm also really excited about the new private Discord server that weโve been kicking the tires on! If youโd like to get in on some of that action, you can support me on Patreon here.
I often say I am my code. I donโt believe in โego-less codeโ. I donโt think thatโs a fair expectation to put on people. And I think that too often, the concept of โego-less codeโ is used as an excuse to criticize people under the guise of critiquing their code.
As a programmer Iโve sunk an enormous percentage of my life code. Iโve eschewed other creative outlets in order to code.
Some of my code will outlast me. It will be one of the durable impacts I have on the world. It will continue to reflect my decisions, my tastes, my intentions long after Iโm gone.
I am my code as much as an artist is their work; as much as a writer is their novels; as much as a carpenter is in their woodwork. And I try to remember that other programmers are their code as well.
Which is why yesterday morning I started my day by writing an apology to members of the Rails core team.
Because over a very frustrating weekend of trying to get an experienced-dev-but-first-time-Rails-user up and running with her first Rails 6 project, I went on Twitter and said some nasty thing about the Rails code. I used words like โtrain wreckโ.
By my own logic, that means I was saying the same thing about the Rails maintainers. Hence, the apology.
Hereโs what Iโm stuck on and mulling over, now:
When I, Avdi Grimm, with 20k followers and a lot of Ruby community cred, went on Twitter to rant about Rails 6, it got a lot of traction. People recognized my frustration. They felt validated and vindicated, and they joined in and said โyes! I have had the same kinds of frustration! And I felt like it was just me!โ
Or โI felt dismissed for โusing it wrongโโ.
Enough people piped up like this that the Rails maintainers took notice. To his great credit, instead of getting defensive, DHH did the โego-lessโ thing, reached out to me and a few others, and said โletโs do something about this.โ
(Iโm not saying we shouldnโt be ego-less about our code! Iโm just saying itโs an unfair expectation of others.)
Whatโs bothering me is the sense that I canโt imagine a scenario that would have achieved this positive outcome that doesnโt start with someone prominently and loudly bashing the 2020 Rails experience. I donโt know how this could have happened without someone being an asshole.
Donโt get me wrong: the fact that things came out this constructively owes far more to DHHโs gentle reaction than to my instigation. But it feels like the instigation, while insufficient, was necessary.
Because the Rails community had become complacent and content with saying โyouโre just using it wrongโ. And developers were steadily, quietly draining off to other software ecosystems. The community needed a large number of people to say โThis REALLY SUCKS NOWโ in order to prompt a reconsideration of what kind of Rails DevX is considered Good Enough.
And based on my experience with how people react to different kinds of wordingโฆ Iโm not convinced that patiently, even-handedly saying โour experience has been very frustratingโ would have had the same effect.
I donโt like this conclusion. I donโt want this incentive. I donโt want to learn that being the asshole gets results.
I hope Iโm wrong. I hope I just have insufficient imagination.
Last week
- โ Email, again I kept up with itโฆ for a few days! ????
- โ Chew through some more WIP Yes! I delivered another big chunk of Robust Ruby
- โ Keep following up on work leads
- โ More streams! Jess and I felt like taking a step back from streaming these past couple weeks.
- โ Host another Patreon hangout I dropped the ball on that one
Bonus points
- Some work on consolidating how I sell stuff online, not yet complete
- A whole lot of coding and a whole lot of learning and a whole lot of writing about it
- I got re-started on some very old WIP, whichโฆ Iโm not going to talk about yet, because I donโt want to jinx my momentum.
- Got my new patron Discord server up and running, and started transitioning from Slack
This week
- More online presence re-org and consolidation, while I have the time for it
- This Investigative Debugging workshop thing
- More WIP
- More cost-cutting & streamlining
- Iโm not usually this vague with goals, but Iโm doing a pretty good job of figuring out what to do next and doing it on a daily basis, so Iโm gonna give myself a pass.
Threat board:
- How does this summer even work
- Becoming revenue-positive.
- WIP.
- Fixing my house.
WIP:
- โฌ Robust Ruby: 45%. woooooo progress!
- MOOM: 92%
- The Rake Field Manual: 10%.
- AsyncJS Course: ~50%.
- Patreon improvements.
Thatโs it for this week. Thanks for reading!
Cheers,
Avdi