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
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.
- 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.
- 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.
- ✔ 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
- 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
- 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.
- How does this summer even work
- Becoming revenue-positive.
- Fixing my house.
- ⬆ 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!