Mastodon & Me, 2nd Edition
A few years ago, I set up a Mastodon account on a now-defunct instance. It didn’t scare me away, is kinda neat in some ways, the Bird has gone chaotic, and so I’m at it again. Like many folks the past few days, I’m setting up a Mastodon presence mostly from scratch.
If you’re on the fence about Mastodon, here’s how to speed-run it:
- skim Simon Willison’s post and follow as many links as you like
- find an instance (i.e. a community/home-room) that suits you and join it
- use Debirdify to find and follow folks who have advertised a Mastodon presence
- start posting to Mastodon; ideally, get as weird as your web presence was before global social networks were a thing
This brings my web presence to at least four interesting locales. Which raises the question, “hey Adam, why do you have so many websites”. Herein, I will answer that with the question they’re intended to answer 🧠 👴🏻:
- My original-ish blog (RSS), answering “hey Adam, what are you thinking about or building?”
- This blog (RSS, @adam@short.therealadam.com), answering “hey Adam, what’s currently intriguing you?”
- Mastodon (RSS, @therealadam@ruby.social), answering “hey Adam, tell me your best one-liners and weirdest hot-takes?”
- Twitter, answering “hey Adam, what are you thinking about, but in a punchier format?”
Sketching yields quantity yields quality
The Art of Sketching: Strategies for Getting Started:
Edouard Manet, the French modernist painter, once gave a still-life painting lesson to another French impressionist, Eva Gonzales. His directions for capturing the moment could be taken as instruction for sketching in any creative discipline; “Get it down quickly. Don’t worry about the background. Just go for the tonal values. See?”
It’s about making music (ostensibly with Ableton), but applies to any creative endeavor. Coding, writing, whatever!
Sketching with regularity can help you let go of the pressure of perfectionism, and arrive at a place of more casual creativity. Simply start, then sift through your sketches to find the gems later. Raúl Sotomayor has found that aiming for quantity tends to result in quality ideas to build from; “I used to make a beat every morning, spending 10 minutes to an hour, and then go on with my day. That was really helpful, because at the end of a week, I’ll have seven beats and most of the time, at least one of them would be useful.”
As a creative principle, “quantity creates quality” has served me well over the past several years. You can’t create quality if you don’t have 1) a starting point and 2) freedom to throw away the lowest quality 90% of the work!
Certified Jams
- “Rhythm Nation”, Janet Jackson
- “Holding Out For a Hero”, Bonnie Tyler
- “Footloose”, Kenny Loggins
- “Partyman”, Prince
Top of Mind No. 1
Delegating: supporting teammates, delivering the right context, setting good outcomes/goals.
Not delegating: managing/mitigating risk, resolving unknowns. “Delegate downhill work, tackle uphill work.”
🤔 Compilers are at once magic and the closest thing to mechanical tools in a software developer’s experience.
✍🏻 Reflecting on using Shape Up for the past few years…
Programming excellence: a small matter of practice
The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music.
Peter Norvig, Teach Yourself Programming in Ten Years
Norvig's recipe, paraphrased:
- get interested and program because it's fun and continues to be fun
- learn by doing
- talk with other programmers, read other programs ("This is more important than any book or training course")
- work with other programmers and after other programmers
- learn several languages with diverse capabilities and philosophies
- learn the "computer" in "computer science"
And here I am, twenty-five years in, wishing I'd practiced more 🤷🏻♂️😆
Currently digging
Obsession: Ferraris - they’re at a whole other level.
Listening: Ramsey Lewis, “Japanese ambient”
Watching: Andor, She-Hulk
Reading: Welcome to the Monkey House - Vonnegut short stories.
I wonder now what Ernest Hemingway’s dictionary looked like, since he got along so well with dinky words that everyone can spell and truly understand.
Last episode of Bob’s Burgers watched (again): “Bad Tina”.
Mommy doesn’t get drunk, she just has fun.
Write more, coder inspiration, queryable coding environments
Simon Willison on writing about one's work:
A tip for writing more: expand your definition of completing a project (any project, no matter how small) to include writing a blog post (or README or similar) that explains that project
Without this you're skipping a relatively small step that unlocks a huge chunk of the value in the work that you have just completed!
This advice goes for internal company work too
I set up an internal blog at a previous employer using Confluence (because it was already available and has a good-enough blogging feature), but even something as simple as a dedicated Slack channel can work well for this purpose
And, writing more by lowering standards 😮
And as always: one big secret to writing more is to lower your standards
Published but "could have been better" is massively more valuable than something that eternally sits in your drafts
One of the biggest productivity improvements I ever made to my blogging was when I gave up on my desire to finish everything with a sparkling conclusion that ties together the whole post
Now I embrace abruptly ending when I've run out of things to say instead
Spoiler: I’m following this advice right now! 📈
---
Thorsten Ball collects greatest hits by Steve Yegge (who coincidentally just joined Sourcegraph):
- Rich Programmer Food, on compilers
- Notes from the Mystery Machine Bus, on the political philosophy of software engineering
- The Google Platforms Rant
- Execution in the Kingdom of Nouns, on the ills of typical mid-2000s Java/OO design trends
- Bonus: I had no idea Steve Yegge has an active YouTube channel.
And, on books/screencasts/blogs that have influenced him most as a programmer. A few that have influenced me too:
- Destroy All Software
- PeepCode Play by Play
- Pragmatic Progammer
- Practical Object-Oriented Design in Ruby
- Agile Web Dev with Rails
- Rands in Repose
- Code Complete
- 37signals' books
---
Codebase as Database: Turning the IDE Inside Out with Datalog:
I’ve been wondering: what if this codebase model was as queryable as a database is? What new questions would we ask of our codebases, and what new ways would we find to visualize them? Furthermore, what if the language semantics themselves — types, completions, errors, etc — were specified as queries, which were also introspectable?
I believe that the design of languages and programming environments should not just be the province of a small priesthood of elite developers. Everyone should be able to look under the hood of their IDE, and be free to push its boundaries: embed it in a different context, create a domain-specific language with rich editor support, fork an existing language to play with its semantics, etc.
The opacity of the IDE’s inner model — and the rules by which that inner model is updated — are barriers to this being a reality. For IDEs to be introspectable and hackable, we must first expose this model and these rules: we must turn the IDE inside out.
Sign me up for queryable, malleable IDEs. I like RubyMine and JetBrains' development products a lot. But, I often pine for the speed and low-ceremony extensibility of Sublime Text (or TextMate, back in the day). So let's through "as easily queried as a database" on the pile while we're at it. 😆
See also: Sourcegraph, language servers. (Someone in the back is yelling Lisp, the "Freebird!" of software development.) Furthermore, I wish Jetbrains' MPS was less Java-centric and more tractable.
Peak Aerosmith
Permanent Vacation, Pump, Get a Grip, Nine Lives. That’s an excellent run of albums. It was considered a renaissance at the time. IMO, it’s their best stuff1.
Moreover, the peak of their MTV-generated fame. Source material for the videos that put Alicia Silverstone and Liv Tyler on the map.
I’m feeling very 90’s kid right now 😆
Anti-favorite: “Jamie’s Got a Gun” – I’ve heard it too many times.
Favorites: “F.I.N.E”, “Hangman Jury”, “Shut up and Dance”, “Pink”.
-
Caveat: nostalgia ↩︎
The Flipping Table(s)
This is a story about a tiny toy table. Well, a couple of them.
Courtney and I play pub quiz, a lot. We play with a regular group of people at a couple of venues across town. We aim to take a “podium place” home. We come up with a fresh, topical team name every week. We are a bit competitive. It’s a thing.
One of our team rules is: avoid second-guessing ourselves1. The first reasonably confident person to provide the answer to our “quiz scribe” holds sway. Typically, they’re right or confident enough that no further discussion is needed and the answer is scribed to the answer sheet. A terrible way to run a company or government, but an okay way to run a quiz team.
Occasionally, it happens, during a quiz, that two folks will feel that the answer to a question must or must not be something. For instance, there are very frequently questions on the numerically outstanding planets in our solar system. It’s almost always Jupiter or Saturn, but it’s hard to say which. “It’s Jupiter because it has a ton of moons” or “it can’t be Jupiter because Saturn has even more moons”! Well, given the no-second-guessing rule, now we have a pickle. Two conflicting answers, or a non-answer, and what to do about it?
Regardless of how we arrive at it, we can only write one answer. This leaves the door open for us to have the right answer, but write down the wrong answer. Little indignations in jest. We are a bit competitive.
Enter the flipping table
Possibly, you’ve seen the table-flip “emoji”: (┛◉Д◉)┛彡┻━┻. It’s a shorthand for “this makes me have a big, not-good feeling” in online conversation. If not, here’s the late, great Alan Rickman “performing it”:
That’s how it feels when you suggested the right answer and your quiz team went with the wrong answer anyway. Actually flipping tables would get us kicked out and banned from the venues we frequent, so that’s not an option. However, it happens, tables come in all sizes. Including, very tiny simulacrum of tables.
So one night after quiz, I scoured the internet for tiny tables that we could flip. Once I dialed in the search (there are many ways to search for “toy table” on Amazon that will not yield tables that are toys or tables that are flippable amongst polite company), a table was ordered. A few days later, thanks to the magic of just-in-time supply chain logistics2, we had a toy table. So it came that every night, as we were preparing for the quiz, we set out our little (toy) table on top of the (actual) table in case there was a moment of indignation.
Our reputation precedes us
Turns out, flipping a tiny table with your finger is pretty cathartic. The tiny table got a lot of use. We really liked our tiny table.
Even better, a table of adults with a tiny toy table in the center of them is a curious thing. Other teams and quiz hosts inquired about our table. We explained it, let them flip the table. People liked it.
Word of our flipping table spread amongst the Austin pub-quiz community. When new hosts would fill in for our normal quiz host, they would introduce themselves and ask to see our flipping table.
Our reputation for flipping tables preceded us. One could have a worse reputation!
Epilogue for a tiny toy table
As is common of tiny toys delivered by a logistics machine optimized for low cost, the flipping table was not particularly strong. Eventually, we lost or broke it, I don’t remember which.
In any case, a second, slightly larger and fancier flipping table was provisioned. This one even had place settings. Fast-forward a few months, it too broke. One of our quiz teammates took it upon themselves to repair said table. At this point, we had a very robust flipping table, and some of its place settings remaining.
Sadly, our regular quizzing was curtailed by the pandemic, shutting down basically all bars wherein one would play pub quiz. I’m not sure where the flipping table ended up; we haven’t used it in the year since we started quizzing again.
But those months we had a flipping table; glory days!
Onboarding when you don't have access to the team
Mitchell Hashimoto, Contributing to Complex Projects:
The first step to understanding the internals of any project is to become a user of the project. You do not have to become an expert user, but my personal graduation criteria for this step is to try to build something real using the project, even if it is small or simple.
Analog: here's a functional area. Set it up for yourself or on your localhost. Now, make a small, well-contained change.
Learn how to build the project and get a working binary (or equivalent). Don’t bother with understanding the build system, the dependencies, etc. Just cargo cult guides, websites, whatever you need to reliably and repeatedly go from source code to runnable binary on your system.
Analog: get to the point you can run the app, run (focused) tests, and see changes in the app. Then start trying to make functional changes.
To learn the internals, I like to use an approach I call “trace down, learn up.”
Analog: for your first several changes, read from the top of the call stack down as far as you can. Don't try to make changes, but do try to note all the landmarks (files) you visit and how they relate to each other. Note “side quests” to investigate later as you go.
Don’t be afraid of complexity. I think too many engineers look at stereotypically complex projects such as programming languages, browsers, databases, etc. as magic or as destined for higher-beings. I like to remember that all projects were started by other humans. If they could do it, I can do it too. And so can you.
You, too, can gain enough understanding of an eight-year-old system to work on it as though you were around when some of it was written. In fact, your effort will compound: the longer you're around, the more you will find curious code that, it turns out, you added in the first place. 😆
Great Albums: Little Rock
Or: Texas, the Good Parts. (Despite the title!)
Or: it sounds like Texas, to me. (Again, despite the title.)
Hayes Carll is my favorite under-the-radar, “this is what country music should sound like” musician. Wit, remorse, nostalgia. Storytelling, quirky characters, relatable characters. Little bit of rock, little bit of western. An ideal Americana mix. It’s all there.
Plus, at 40 minutes, it’s a perfect road trip selection. Always moving forward, but never long-winded.
An un-conference appears
I jumped into a short un-conference organized/hosted by Andy Matuschak last weekend. Within this humble Gather, I came across lots of intriguing people and energizing ideas. Some notes and a few follow-up ideas:
Napkin is space for ideas and not, it seems, about note capture as an end. Rather, it’s about throwing ideas or quotes at the (metaphorical) wall and letting the system organize them into clusters or connections. If you like some of those idea, you organize the ideas into a linear outline and export that to whatever you like to write with.
Nutshell is about adding an extra dimension to documents on the web. The creator, Nicky Case, described it as a “tool for expandable explanation”. Those explanations take the form of popovers that may contain a bit of text (like a footnote/annotation), a scraped reference to another page (transclusion), or a fully interactive gizmo to explore an idea in a more tactile manner.
Excitement about applying language models (e.g. GPT-3 or DALL-E) to generative creativity came up a few times. Some of the applications demoed were already using language models to augment insight or obviate manual human organization. Using models to ‘read between the lines’ of captured notes/human input and generate new ideas came up as well.
Dissatisfaction with some current PKM tools came up a couple times. In particular, seeking note capture or memory recall as a (customer) engagement end rather than as a means to thinking more/better thoughts. I think I heard a couple criticisms that some tool was “too IT”, but I’m not sure I even heard it correctly or what that would even mean! 😆
Overall: highly recommend seeking folks using computers to augment their ability to create and remember instead of stopping at “finally got my notes app just the way I like it”!
Very handsome task tracking, offline and online
About a year ago, I added a curiously pretentious object to my repertoire of productivity hacks. Analog is a) a paper productivity notation not unlike Bullet Journaling b) printed on pleasantly thick index cards and c) a bit of desk furniture to prop up the cards and store the last couple dozen of them.
The idea is you write your tasks down for today/later/someday. Those tasks sit right in front of you, taunting you. You cross them off as you get stuff done. Now you’ve done a productivity!
Reductionist jokes aside, it’s a fine system. The cards are printed with “Today”, “Next”, or “Someday” at the top and lines to encourage writing down several, but not too many, tasks. It’s a good way to think about organizing what you need/want to get done. As productivity systems go, it’s clear and non-invasive1.
Dave Rupert uses/tried Analog too and has a good take on it.
Tactility is Analog’s leg up. It’s nice to start the day writing out some tasks, looking over the previous day’s cards, shuffling the cards from previous days. Even Things, the best task software, can’t provide the tactile “ahhhh”-moment of crossing an item off your list. Tasteful animation, design, and haptics get close, but touching glass isn’t as good as pen and paper.
That said, I’m not tempted to discard Things. It’s literally one of the best applications I’ve used, ever. That said, it’s charming to have a redundant, back-up scheme for reminding myself of the most important things to accomplish today. Analog is like having a (very handsome) back-up alarm clock to the alarm clock one intends to wake up to. It’s always pleasant to look at, and every so often it is the difference between an energetic day and a day played catching up.
-
Many productivity schemes feel like they want to take over your life to realize their benefits. IOW, they fantastically fail the “is this sufficiently distinguishable from a cult?” test. ↩︎
Dad rock is a beautiful tapestry
Spooky dad rock - Trent Reznor
Sad dad rock - the National, LCD Soundsystem
Quirky dad rock - Cake
Over-enthusiastic dad rock - Foo Fighters
Perspective, you want it
Perspective is the lens we view our world, work, relationships, etc. All the luck, resources, or knowledge in the world are wasted without good perspective. If we’re talking about life like it’s a role playing game character sheet, you want to have a good perspective stat/multiplier.
Some clever tricks:
- keep the mind open and flexible to other perspectives; seek them out
- practice at holding many perspectives simultaneously
- know the limitations and strengths of a perspective as you navigate the world
- know when your default perspective makes a scenario more difficult and how to fall back to a perspective you still believe in
- get out of routines periodically and see if it changes how you see things
- more so, get out of your bubble; see people of a different background live their lives, reflect on what factors brought them there and how factors are different/similar for your life
- even more so, travel outside your city/state/country; axiomatically the people most different from you live in a place far away
It’s often tough to gain perspective. Most of the defaults in life steer us away from insight. School, cliques, work, even typical travel nudge us toward seeing familiar things with similar people who live similar lives. I’m by no means an expert at breaking out of these ruts. I’m pretty enamored with my routines. Unfortunately, I don’t have a clever trick to offer here.
Julian Shapiro, What you should be working on:
What is admirable is periodically killing your momentum to ask, Should I still be doing this?
Michael Lopp, The Art of Leadership: Small Things, Done Well:
Let others change your mind. There are more of them than you. The size of your team’s network is collectively larger than yours, so it stands to reason they have more information. Listen to that information and let others change your perspective and your decisions. Augment your obvious and non-obvious weaknesses by building a diverse team. It’s choosing the path of least resistance to build a team full of humans who agree with you. Ideas don’t get better with agreement. Ideas gather their strength with healthy discord, and that means finding and hiring humans who represent the widest possible spread of perspective and experience. Delegate more than is comfortable. The complete delegation of work to someone else on the team is a vote of confidence in their ability, which is one essential way that trust forms within a team. Letting go of doing the work is tricky, but the manager’s job isn’t doing quality work, it’s building a healthy team that does quality work at scale.
Former president Obama perfectly explains why he was so committed to reading during his presidency in a recent New York Times interview (paywall): “At a time when events move so quickly and so much information is transmitted,” he said, reading gave him the ability to occasionally “slow down and get perspective” and “the ability to get in somebody else’s shoes.” These two things, he added, “have been invaluable to me. Whether they’ve made me a better president I can’t say. But what I can say is that they have allowed me to sort of maintain my balance during the course of eight years, because this is a place that comes at you hard and fast and doesn’t let up.”
Notes from the Miles-verse Part 3 and final thoughts
This ended up covering late Davis stuff. He’s basically inventing a new genre of jazz every album or two now.
- On the Corner: Davis invents funk/soul jazz.
- A Tribute to Jack Johnson: Davis invents rock/jazz fusion.
- Tutu: Davis invents synth-jazz/the thing that would get distilled and warped down to New Age/Kenny G jazz in the 90s.
There are numerous live albums! I didn’t go down the rabbit hole on this part. Miles and Quincy Live at Montreux features Quincy Jones and is a pretty great end-of-career retrospective.
“Willie Nelson” on Directions is surprisingly funky.
Overall, I could have gone for less Birth of the Cool-esque and more Bitches Brew. 🤷I like bop, but funk and fusion are more legible to my modest jazz-harmony ear.
Highlights: On the Corner, Jack Johnson, Tutu. The last was originally planned as a Miles Davis/Prince collaboration (❗ ❗ ❗) which fell through. Still pretty good.
What I’d hoped to get out of this, and indeed did, was hearing the invention of large swaths of the jazz landscape over time, album by album. In this way, Miles Davis was a singular influence on the course of music, a lot like Beethoven was.
Hopefully, in my lifetime, we’ll realize another musician has come around and broadly invented entire genres of music every few albums. (I’m assuming we’ll still have albums!)
Previously: Notes from the Miles-verse Parts 1 and 2, Into the Miles-verse.
Leadership keywords
My current theory of leading software teams and projects has four keywords:
- Trust: I assume everyone is working to get the job done. They assume I will help them get the job done. This starts off more like faith and grows into trust as teams coalesce.
- Autonomy: each person on the team is independently productive for a significant chunk of their day. When they make assumptions to stay unblocked, they are adept at collaborating asynchronously to verify them or correct course.
- Agency: each person solves the task they’re working on in a way they see fit, within the conventions shared by the team. If an interesting idea comes up outside of the those norms, anyone can pursue it such that they maintain the trust/faith of their colleagues.
- Support: each person knows that the team, particularly yours truly, is there to help each other. This most often manifests as pairing on troubleshooting, designing, coding, etc. Most importantly, sometimes it is sharing the load when one person is feeling overwhelmed.
Support is a recent addition. I had previously thought that autonomy and agency were the things enabled by trust. But I’m starting to think1 support is a crucial part of the equation too.
Without support, you’re just throwing people into the pool and telling them they can stay a-float however they like. It omits the “get good enough to swim” part, which is pretty crucial!
This kind of support is most obvious when you’re bringing someone new onto a team. But you need it throughout an individual’s tenure on your team. The people with years of deep experience and history in their head need support of a different variety.
Teaser: I’m on the fence about adding 2-3 more words to my repertoire. There’s a lot of moving parts to leadership!
- Largely due to onboarding people to a team/system/organization with a long history. This doesn’t happen without a larger-than-normal support effort. Perhaps that effort is amortizable over time (i.e. writing docs), but it’s still a big lift. ↩
Managers can code on whatever keeps them off the critical path
Should engineering managers write code?:
Spending time in meetings and working through complex team relationship issues leaves you feeling more drained than energized most days. You look longingly at your team and feel a slight tinge of envy. You want to code again.The good news is that you can! The bad news is that you shouldn’t. At least not directly on your team’s codebase and not on any critical path work.
Good ideas therein! Let me emphasize one I’m particularly fond of.
In my first engineering management role, I had the opportunity to go completely hands off. For a while, I found it a little off-putting. I really like solving problems with code! (I later realized leadership and management are solving problems with people, but that’s for another time.)
I felt a lot better about engineering management once I figured out it gave me license to code on impractical things. When you’re an EM (the hands-off variety, not the sitting-on-the-fence variety), you have the opportunity to code on whatever draws your interest, knowing it won’t block your team.
That’s a pretty rad opportunity for someone like me who’s a bit of an esoteric tinkerer.
If you’re less of a tinkerer and more of a shipper or solver, even the highest functioning teams have some pile of ambitions and ideas they aren’t actively pursuing. An engineering manager can explore the frontiers on these ideas. Maybe a plan is made, research is noted, or its found the idea isn’t all that great after all. Still a win!
As long as your code doesn’t create challenges or blockers for your organization: dive into it, have fun, explore the space!
The paradox of producing process
The agency to create the system or process you want to work in (axiomatically?) implies you’ll rarely get to work in the system because you’re spending a lot of time working on the system by communicating/iterating/supporting it. 🤷🏻♂️
Notes from the Miles-verse Parts 1 and 2
Wherein I’m listening to Miles Davis’ studio albums in chronological order. Priors: I have listened to Kind of Blue and Bitches Brew a lot. I’m mostly familiar with “earl years” sort of stuff.
Basically bop
- Collector’s Item: this album starts to sound “Idiomatically Miles Davis”. Which I guess means “rather abstract bop-vibe”.
- Bag’s Groove: this is very hip.
- Cookin’ with the Miles Davis Quintet: I’ll take basically any version of “My Funny Valentine”, same as I will listen to any version of “Caravan”.
The albums Davis made with Gil Evans are my early new-favorites. Miles Ahead, Porgy and Bess, and Sketches of Spain all sound more lofty, less improvised than the earlier stuff. Almost composed, classical music, not unlike some of Mingus’ work.
Very much not bop
Getting into Davis’ fusion era (1968–1991) is my big discovery. I know Bitches Brew is a thing, but where it fits chronologically is the missing piece. Davis entirely switching gears from bop to an entirely different vibe must have been as jarring as Rite of Spring was to Parisans. Favorites so far: Filles De Kilimanjaro, A Tribute to Jack Johnson, On the Corner. In a Silent Way is entirely different from the albums around it in this era, but I like how it’s basically a long song.
Currently listening: Circle in the Round.
Previously: Into the Miles-verse.