Best David Lee Roth Mid-Song Banter
- “Unchained”
- “Everybody Wants Some”
- “Hot for Teacher”
Television: Severance (Apple TV), Andor (Disney+)
Movie: Everything Everywhere All At Once
Music: deep dives into Carly Simon, Nina Simone, J Dilla
Book: Player Piano by Kurt Vonnegut
Blog: Pain Don’t Hurt (a 365 day series of short essays on Roadhouse)
By my calculations, I managed to write about fifty pages between my blogs this year. That’s about double what I wrote in 2021, so I’m pretty happy with where I ended up here! 💪
My best writing this year, in my opinion:
We live in the most amazing time for ideas. They’re all over the place. It’s never been easier to share them, and indeed they are shared at a phenomenal pace1.
It’s so easy to find ideas that it’s a little difficult to squeeze our ideas into the noise. Plenty of folks will tell you how to “build an audience”, but I want to make it personal.
Build an audience with yourself!
Make room for your thoughts to exist in your head despite all the noise that exists in our modern world.
I’m a morning person. I do my best work early in the day. Look at my calendar, you’ll see this. One giant, defensive block to focus in the morning and get stuff done. Please — do not schedule me in the morning2!
However, I’ve come to think there’s more to a good morning than a clear schedule. Having a clear mind, with stillness and lack of lingering stressors, helps a lot! If I wake up with something bouncing around in my head, seize it or solve it. Write it down to think it through or solve tension3 my brain has dwelled on overnight.
Going deeper into a clear mind reveals the absence of others. A truly spectacular morning of creativity correlates to (almost) exclusively thinking my thoughts. My ideas in my head4 — great! Someone else’s idea, via social media, television, books; promising, but likely not as good.
Among books, television, podcast, radio, etc., ideas via social media are particularly hard to avoid. I have to put a lot of discipline/energy into “don’t open socials, chats, emails, news, etc.” before 11:30am lest another idea trample over my idea.
Modern social media has evolved, in form and function, to bypass the smart part of our brains and go straight for the emotional and often irrational part. It’s the upsetting and frustrating ideas that stick with me when I use social media. Rarely do I open my laptop, read social media for a few minutes until a good idea comes up, and then close the laptop to go think about it.
The doom-scroll demands more scroll.
The upside is, we may also live in a moment where the abundance of ideas surfaced by attention machines comes into balance as alternatives to hyper-scaled social networks come into play. I’m hopeful that to a smaller extent, Robin Sloan’s words on de-leveraging from Twitter will start to ring true as Twitter, in particular, fades from prominence:
The speed with which Twitter recedes in your mind will shock you. Like a demon from a folktale, the kind that only gains power when you invite it into your home, the platform melts like mist when that invitation is rescinded.
The previous is not to imply that attention machines aren’t useful! I don’t want to Waldenpond or go full digital luddite. When I squint at it with optimism, some forms of social media look like a networked/distributed system attempting to reach a consensus5.
There are less intense attention machines that aren’t built around hyper-tuned engagement loops. Basically anything where I have a list of things to watch/read/enjoy is an attention machine: a Netflix watch list, YouTube subscriptions, Substack subscriptions, and the humble/old RSS reader. These don’t demand that I stay in a loop, thinking other people’s thoughts and consuming the surrounding ads. Which is useful because I want to get other people’s thoughts, but only on my terms.
I find that my thoughts are more interesting if I prime them with idea from specific authors via various primary sources, social networks and otherwise. It’s thrilling to discover new scenes, folks self-organizing into web-rings and networks and chats to think about or share the commonality and challenge of their work or hobby. Having that kind of energy bouncing around in my head tends to improve my ideas rather than dilute them like hyper-scaled social networks might.
Bottom line: keep using the web to find fascinating people and scenes, participate in a few of them.
I return to A Precious Hour from Rands in Repose, a lot:
Each day I blocked off a precious hour to build something.
Every day. One hour. No matter what.
Every day? Yup. Including weekends.
An hour? Yup, 60 full minutes. More if I can afford it.
Doing what? The definition of “building a thing” is loose. All I know is that I get rid of my to-do list, I tuck the iPhone safely away, and if there is a door, I close it. Whether it’s an hour of Choose yourownadventure Wikipedia research, an intense writing session, or endlessly tinkering with the typography on the site, it’s an hour well spent.
Make the most of the mornings (afternoons, evenings, whenever it is for you). Work the thoughts I find compelling, not merely upsetting or prevalent. Share it with interesting people. That’s how an exciting life of thinking my own ideas happens6.
Driverless Crocodile, Nostalgia Revisited:
Nostalgia: a kind of homesickness for the past.
Another way of putting it: the longing you will have in future for the places and people around you now.
Time’s arrow is a hell of a thing.
How I work: what might “pairing” with a language model-based assistant (e.g. GPT-3) look like?
How I build: the tension between the web platform being more capable than ever versus the difficulty of standing up many kinds of “basic” applications. e.g. animation is better/more sophisticated than ever, but skipping ahead with building web/database applications requires expertise and a few hours to get something up and running.
How I collaborate: encouraging teams to work in issue threads, thereby improving the quality of thinking (via writing) and building ambient, asynchronous awareness amongst teammates.
Nothing, nothing, nothing makеs me happy
Nothing brings me nothing but joy
So if you haven’t tried nada
I really think you oughta
— C. Fischoeder, Bob’s Burgers
On minor funks, needing a reset, and indeed doing nothing.
The Reset. Occasionally, the things I do stop doing it for me. Games, shows, books, magazines, etc. I pick them up and realize I’m bored with all of them. I require a break from my breaks.
Oddly enough, taking a vacation or extended weekend with too little purpose or purpose too close to routine seems to generate the same response.
The Reset almost always involves going offline, to some extent. Not like Craig Mod hiking through rural Japan1. It sometimes involves catching up on chores, tidying up the house, or extremely low-key home improvement2.
Related: YouTube could use a function for this. “All my subscriptions & recommendations aren’t doing it, we need to go weirder/normal-er”.
Doing absolutely nothing is an option, but ends up feeling a little more hollow than free-ing.
More often, rebelling against my routines and script-following tendencies works. Binge-watching, grinding a game, ignoring diet, etc. sometimes get me clear.
The trickiest bit is when I’m in An Indefinite Funk. Hobbies seem shallow or meant to impress others or not fulfilling anymore or too much like work or too expensive/intensive to maintain.
So far, I don’t have a great antidote for that. Last time it happened to me, I reverted two decades to making music, decided it still wasn’t for me, and went back to enjoying and sometimes studying/pontificating on music.
Going offline is in some ways a luxurious and nice way to reset. We so rarely allow ourselves a moment or location of offline-ness. If you have to book a flight or outfit your Porsche 911 for camping, so be it. It’s fine to just put your online devices in another room, too.
Recommended: do yourself an Ideal Weekend 3:
Any weekend that includes most of those is likely to give me a reset such that any funk that is imminent or currently occurring goes away.
Only Solve One New Problem At A Time, Ben Nadel:
The example he gives in the episode is "learning Golang". Understanding how to use Golang was a new problem for the company. As such, in order to start integrating Golang into their work, they applied it in the context of an already-solved problem: sending emails. This way, Golang was the "one thing" they were solving—the email-sending logic already existed in Ruby; and, they just had to port it over to a new application server.
Good advice for any developer at any experience level1!
The ability to focus on one concern at a time is possibly the mark of a senior developer. It takes experience to ignore other factors as noise. It takes time to learn how to avoid tripping on distractions/side-quests. Distinguishing useful, new information from distraction and noise is the mark of a focused senior developer.
The trick for juniors, is they’re always learning more than one thing at a time, often on accident. They want to build a feature, but it requires a new library, and it requires learning the library. They went to start up my development server, but then something weird happens with Unix. It's the essential challenge of being a junior – they’re just getting started, so they’re always learning a couple of things at a time2.
If I could be so bold as to add a corollary to the rule of "one new problem at a time", I'd suggest that if it can't be done incrementally, don't do it. Over the last 6-years, feature flags have revolutionized the way that I work. And, a majority-stake in that change is the fact that everything I do is now built and integrated incrementally. Until you've worked this way, it's hard to even articulate why this is so powerful. But, I literally can't imagine building anything of any significance without an incremental path forward.
Working incrementally: absolutely, more people should do this. Even seniors. Especially myself!
Now, the tables can turn. I’ve observed juniors who are more adept at working incrementally than seniors. Because they’re tripping over other tasks all the time, the junior has to work in smaller increments to make progress.
Perversely, a senior who can see the whole feature/change in their head is sometimes tempted to push the whole thing through in one (large) change. Developers who have learned3 to avoid pitfalls and gotchas sometimes have to relearn how to work incrementally.
I speak from experience! Working incrementally is something I consciously have to work towards. Conjuring a masterpiece into existence in a fury of git pushes and one pristine pull request feels good. On net, a big bang of development is a detriment to my team. An early pull request, small tactical commits, and a write-up to describe why and how I got there are more useful to align the team and spread ideas.
Previously: one priority is like wind in the sails.
Were I faced with an intelligence not of this earth, but one that shares our understanding of what music is/for, these are the exemplars I would hold up for them to understand our cultures through my favorites:
Dilla Time is a great book for music history enthusiasts. If you’re at all interested in hip-hop, music production, or sample culture, it’s a must-read. The references to lesser-known hip-hop are worth the time investment alone.
I saw a critique of the book saying it is a 200-page book hiding in 400 pages[1]. I think Dilla Time justifies its page count in a pleasingly clever way. The book overlays the biography of James Yancey with the innovations of J Dilla in much the same way. Chapters on Yancey and Dilla alternate, taking turns. A little bit about Yancey’s musical life, a little bit about his nonmusical life. Once I realized Dilla’s music was about overlaying ideas at odds and the book was about overlaying the man and the music, I was a little giddy and a lot jealous that I hadn’t thought of something like that.
The book is basically two story lines: a biography of James Yancey and the story of his musical innovations and influences as J Dilla. The latter is, in a nutshell, a great explanation of how Dilla programmed electronics (drum machines, samplers, etc.) to overlay musical patterns that had not gone together previously.
Let’s assume it’s safe to say that Stravinsky was the master of (riotously) dissonant harmonies. He put notes that should not go together right on top of each other! In the same way, we’d have to say that J Dilla was the master of wielding time in a way that was not previously accepted in musical rhythm. Stravinsky overlaid perfect fifths (good) and tritones (bad!). Dilla overlaid straight (classical) and swung rhythms (jazz) and even moved notes around the beat, to similar effect.
The tricky thing about listening to J Dilla, as a modern listener, is that it doesn’t sound as drastic as it did fifteen years ago. Similarly, Stravinsky doesn’t sound revolutionary to our ears, one hundred years on. They both “just” sound like how music is made these days. Dilla Time does an outstanding job putting his innovations in context and particularly visualizing how his musical constructs stood apart from what came before him.
Obviously, I enjoyed this book a lot. Check it out.
To be fair, most books could stand to lose a third or more of their page count. ↩
The Bird hit another inflection point on Friday. Now, many people, myself included, are looking at alternatives or actively decamping1. It was quite a thing to experience.
Several days before, I read a post about the value one can potentially get out of Twitter. On one hand, it may not age well2. Network-effects will cause Twitter to lose “value” faster than it loses daily/weekly/monthly active users. On the other hand, thinking about how I might get tremendous value out of the next network is a useful thought experiment.
Herein, allow me to riff on how to get a surprising amount of professional value out of publishing to and participating in Twitter-like3 social networks.
The value proposition is two-fold:
On the publishing/write side: note that folks like Patrick, Simon, and Laura are Very Good at Twitter. They’ve been writing there for years, building a reputation. In particular, they form thoughts such that they travel and evolve well on Twitter in particular.
With a lot of practice, I could reach this level of operation. Building the reputation, of course, is about showing up consistently for months and years. A few months of rebuilding my Twitter routine and ‘practice’ and I’m out networking with the best.
In other words, use Twitter as a big professional networking tool4. Instead, the networking happens at the idea level. Contribute and participate in developing ideas and the network comes to you.
On the read side: I'm guessing anyone who enjoyed Twitter in 2022 and gets useful signal out of it is equipped with:
Throughout its history, Twitter was often adversarial. There’s a “main character” of the day. Many folks come solely to build them up or tear them down. Disagreeing parties come to dunk on each other. Occasionally, they directly engage, but social bubbles/fortifications are the norm.
Anyone who gets professional value out of Twitter ignores that aspect. 🤷🏻♂️ In particular, they are using Twitter itself (or well-considered 3rd party applications) to automate filtering out the noise6.
I’ve dabbled in setting up mute-words and curated, high-signal lists. It worked pretty well at various points in Twitter’s history, particularly in combination. Perversely, now that we’re possibly in the waning days of Twitter’s influence, I’ve got a pretty good setup for finding interesting, new-to-me ideas. Sometimes those ideas put my work, or even the world, in a better perspective. That’s valuable!
Bottom line: you get out of Twitter-like networks what you put into it. The better I write, work the network, choose your sources, and manage the flood of information, the more likely interesting/valuable things will come my way.
Listening: Afrobeat, e.g. Fela Kuti
Best musical discovery this week: an excellent Apple Music playlist Shapeshifting, catalogs jazz fusion with indie, hip-hop, electronic; all the modern genres
Watching: Jon Hamm easily steps into the title character of an apparent Fletch reboot in Confess, Fletch; sharp humor, well written, way better than I expected!
Playing: Marvel SNAP - every few years, I end up playing a card game for a few months 🤷🏻♂️
Reading: Rhodes/The Making of the Atomic Bomb + Gleick/Genius + Wellerstein/Restricted Data: The History of Nuclear Secrecy in the United States - I’m trying reading in clusters. It’s slow going, but I’ve wanted to go deeper on the Manhattan Project for years. Now’s the time!
Last Bob’s episode watched: “Full bars”
I’m rapper slash actor Queen Latifah in her U.N.I.T.Y. phase.
– Gene in Halloween costume
Previously: a long time ago, Dwight Eisenhower probably said something to the effect of: “Plans are useless, but planning is essential”.
Today, software development (and knowledge work writ large) are largely about speed in the service of more. Iterate faster, ask more questions, get more feedback, deliver more often. Success is less likely about having a good or well-formed idea from the outset, and more about how the idea evolves in the hands of people/customers.1
Let’s update Eisenhower’s insight on planning to harmonize with speed and quantity of iteration:
Static plans are useless, but dynamic plans, developed and iterated as information arrives, are the essence of leadership.
You have to plan. Stopping to think a multi-week project through isn't Waterfall or a slow, bureaucratic process. It's how you get your head into a project.
Lacking a plan isn’t an option2. If you choose not to have a plan, you’ll likely end up part of someone else’s plan. Their plan may not have the same outcomes or parameters in mind as you do. Better to have a plan.
Planning with your team is how you get everyone aligned and pulling in the same direction. The worst cases for a plan, that it’s tragically incomplete or wholly invalid, have a silver lining wherein the team that plans together pulls together. In the best case, you’ve front-loaded a bunch of coordination and collaboration, allowing teammates can work autonomously and efficiently.
The initial plan you or your team come up with is very much a rough draft. Surely risks will make themselves known and areas of unknown complexity/scope will present themselves. Don't worry about rigorously adhering to the plan once you're a few weeks into the project. Iterate and add to the plan until you’ve done all the useful work, and it's time to start planning the next project.
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:
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 🧠 👴🏻:
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!
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…
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:
And here I am, twenty-five years in, wishing I'd practiced more 🤷🏻♂️😆
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.
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):
And, on books/screencasts/blogs that have influenced him most as a programmer. A few that have influenced me too:
---
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.
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 ↩︎
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.
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.
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!
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!
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. 😆
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.
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”!
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. ↩︎
Spooky dad rock - Trent Reznor
Sad dad rock - the National, LCD Soundsystem
Quirky dad rock - Cake
Over-enthusiastic dad rock - Foo Fighters
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:
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.”
This ended up covering late Davis stuff. He’s basically inventing a new genre of jazz every album or two now.
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.
My current theory of leading software teams and projects has four keywords:
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!
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 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. 🤷🏻♂️
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.
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.
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.
Rabbit-hole-athon - it doesn’t look like an event is scheduled, but I dig the idea:
Tl;dr, we are organizing a weekend long IRL rabbit-hole-athon for technologists: an intimate retreat/hackathon dedicated to reading, thinking deeply about a topic, and sharing your learnings with others.
Like a hackathon or BarCamp, but with the intent to focus an individual’s attention on a topic of their choosing instead of diffusing it. (Which is fine, on balance!)
We believe that being a good builder and problem solver is rooted in being a clear thinker. Intentionally dedicating time to exploring, pursuing your curiosity, and understanding things deeply is an important part of exercising this muscle. We believe this is essential in shaping the next generation of technologists, builders, founders, and researchers.
That’s a snappy manifesto! The notion of taking an afternoon/day/weekend to throw tactics to the wind and go deep on a topic is exciting. I’m already thinking about topics I could go down the rabbit hole on. 🧠
I saw this local band Adam’s Farm (no relation, promise) a few times when I was 15 or so. In the era of mixing bass guitar out of rock music (no thanks, Metallica), these fellows stood out by being having an EP where I could clearly hear all the instruments. It was almost 25 years later that I’d learn that “Girlfriend” in particular is a Modern Lovers cover.
Sidenote: it seemed like this local band was lost to the internet until recently as well. I figured I’d ripped one of the only copies of this CD, but Adam’s Farm music appeared on YouTube recently. Fancy that!
William Shatner’s cover of “Common People” is less difficult to find, but possibly equally obscure. Back in the late ’90s, Shatner did some voice overs on a Ben Folds pre-solo album Fear of Pop. In the mid ‘00s, Folds produced William Shatner’s album of songs with tons of guests doing the singing and Shatner mostly talking about mortality and aging. Again, it was several years before I heard the original of “Common People”.
I rather like these two covers better than the originals. So it goes with a notable cover!
It's tricky to write about leading software teams. Herein, reflections, not complaints, on pursuing higher software leadership truths. Many of which are riffs on 4 Reasons Writing About Software is Hard:
Writing is actually an incredibly relevant skill for engineering leadership (and engineering in general), but it’s still hard. You can have all the insights in the world, and still struggle to convey your message or find the right audience.
First off, writing is hard so writing about software is hard too. Developing our thoughts beyond “that sounded nice in the shower” is hard but rewarding work.
It's difficult to translate "this worked" out of the system of people, circumstances, and goals. As noted above, at one scale everything works, at another basically nothing works.
No advice on software development is universal. From the smallest coding details to how we structure our multi-person/week projects, there are no best practices. There’s only “this worked/failed for us when building this particular project”.
Writing about software leadership ends up being a lot of describing the people and scenarios that led to a successful approach. The trick is that getting down to particulars about people and scenarios is either too personal to share on the internet or too specific/proprietary to make sense outside a specific organization. It’s hard to write high-quality leadership ideas without drowning in setup, hedging, or over-generic characters.
It’s tempting but insufficient to suggest “act as a good person would and most things will work out”. Merely acting as a good person does will not get me out of situations where individual best intentions created bad outcomes. Perhaps specifying what a good person does with enough clarity that another person can apply and/or emulate it is a laudable step.
In practice, it seems better to say “act as a good person 95% of the time but do the minimally jerk-y thing 5% of the time to cut Gordian knots created by good intention”. I’m not happy with that trade-off, but it does seem like a necessary part of leading people. I build context so I can trade accumulated trust for impact when the situation requires it. (Hopefully! I often don’t know if I was spending from a surplus or deficit of trust until much later.)
Benchmark.ms { …the code… }
to size up the performance of Ruby code.Benchmark
, but does all the cold start, iteration, and math for you. It’s great, thanks Evan!Bonus useful tools:
The modern marvel that moves commodities, sub-assemblies, finished product, and people across the planet is largely invisible. Except when I’m bumped from an overbooked flight. Or when I can’t buy your favorite kind of candy because the trucks to move the containers from the ships to the stores are in the wrong place. Or when one can’t build a car in Germany because semiconductor fabrication plants aren’t as elastic as some executive thought they were. Then it becomes all too apparent that the default state of transportation is, absent considerable effort and coordination, for the wheels to fly off constantly.
Hence, A Brief Introduction to Container Logistics is a great primer for understanding the weird state of our world:
The whole shipping process involves dozens of actors, from the exporter, through a long chain of companies who handle the container (incurring costs on behalf of the shipment), all the way to the importer. This creates a trust problem: who is responsible for the problems that arise when one part of this chain goes wrong? Some of these companies are hired by the shipping company, others by the exporter or importer, or even by a logistics company acting as a middle man. This is usually solved by some kind of chain of custody, where any problem with the container must be immediately noted and complained about by the relevant party.
Adjacent: Venkatesh Rao, Remystifying Supply Chains:
Supply chains are a new class of engineered-emergent artifact, one that includes a few other globe-spanning things like the internet, the air travel system, and low earth orbit, that exist at a level of Gaian phenomenology, terraforming, and planet-scale husbandry. We only ever catch local glimpses of these things. The wholes are too big to fit in a single human mind, and the physical embodiments are too vast to capture even on a single map, let alone in a single photograph.
We have to understand these beasts, in all their evolving, learning glory, while living within their bellies. Abstract slicing and dicing of the phenomenology, via aspects like computation, circularity, and situatedness, can only get us so far. To finish the picture, we have to develop a sensitivity to how we inhabit these beasts at a human scale.
This is extremely my jam. Beethoven Symphonies Abstracted:
To accompany the National Symphony Orchestra’s Beethoven & American Masters concert series, author and illustrator Mo Willems presents Beethoven Symphonies Abstracted, an exhibition of nine large-scale, painted abstractions inspired by the music and genius of Beethoven. Each large-scale work is a response to one of Beethoven’s nine symphonies, divided into panels that visually interpret each symphonic movement.
(Via Austin Kleon)
Previously: my affection for symphonies seven and eight, John Coltrane’s “Giant Steps” animated.
Fancy some near-term imagination on the opportunities the re-commercialization of space presents us? Yes, have some! Science upside for Starship:
It is, however, a fun exercise to enumerate all the ways in which Starship and related technologies can help execute bold, ambitious missions of scientific discovery.
Giant, poly-lithic space telescopes? Sure.
Probably the coolest telescope concept enabled by Starship, though, is the giant segmented telescope to end all giant segmented telescopes. An unmodified Starship can deliver perhaps a dozen 8 m monolithic hexagonal free-flying segments per launch to a target location such as L2, where they self assemble, calibrate, and then focus incoming light. Over a few dozen Starship flights, a truly enormous spherical mirror section perhaps 1000 m in diameter and with a focal length of 1000 km or so can be assembled behind a free-flying sun shade, pointed in a direction of general interest.
Heating (low-key terraforming) Mars with constellations of mirrors? Okay.
The second is mass producing light sails on Earth, launching them into LEO, then flying them to Mars where they can lurk near Mars-Sun L2 and reflect light back at the planet, reducing heat loss during the Martian night.
“Flood the zone” of our planetary neighbors with exploratory robots? As you wish.
Why shouldn’t we have a dedicated orbiter, lander, rover, helicopter, and submarine on every discrete body in the solar system over, say, 100 km in diameter? Let’s build a fleet of clockwork automatons for Venus and an armada of submarines for Europa, Enceladus, and Titan. Let’s darken the Martian skies with helicopters. Let’s drive rovers across the frozen nitrogen plains of Pluto.
I’m sure it’s a lot more complicated than it sounds from these pull-quotes. I’ll bet that SpaceX’s starship won’t meet some of these expectations. We will have to hold our nose or plug our ears as Musk bloviates. Despite all that, it’s exciting that folks are thinking, writing, and blogging about this and some of it could come to fruition in my lifetime!
Favorite tracks: “Suck My Kiss”, “Sir Psychosexy”, “Power of Equality”, “The Righteous & the Wicked”.
The essential (in my opinion) Red Hot Chili Peppers album is, for me, a few things:
It’s an album that has aged well for me. It was an excellent album when I first heard it, and is still an excellent album when I listen to it today.
There are other nice qualities too: Rick Rubin’s production work. When it’s not extremely horny, it has some good lyrics. It’s rooted in the RHCP musical predecessors with intelligent awareness, not than blind copying. They are seeing further by standing on the shoulders of George Clinton, not just sitting on his shoulders for a free ride. It’s just good funk.