The kitchen sink: with interrelationship and causal diagrams

Yesterday, I used Ryan Singer’s interrelationship and causal diagrams to remove a water filtering system from under my sink. The diagrams likely saved me hours of work.

Four diagrams. #1 is a photo of a words written around a circle with arrows point from one to another. #2 is a replicate of #1 in softare. #3 is a replicate of #2 where items without entering arrows are place towards the top. #4 is a printed out version of 3 with some handwritten annotations.

First, while sitting in front of the open cabinet, I wrote on paper all the steps I needed to complete the removal (1). When step “A” needed to happen before step “B,” I drew an arrow from “A” to “B.” Then I redrew the whole thing on the computer (2) so I could move the steps around.

I copied the steps to create the causal diagram (3). Steps without requirements “float” to the top, while steps with requirements are placed 1 level below their “most recent” upstream requirement. Thanks to the causal diagram I realized I missed steps. It was much easier to adjust the diagram than to figure it out in the moment!

Finally, I printed the causal diagram and used it as my checklist while doing the work (4).

I should use these tools more often. They’re powerful.

Tools for Shaping

Ryan Singer walks through his process for solving problems and writing up solutions (shaping and pitching). It’s an incredible example of externalized thinking.

The toolset he describes is like an application of the Unix philosophy to thinking tools.

Brik Font

Craig Ward’s Brik Font project gives me a huge smile but also hurts my brain. Am I seeing something that’s near or something that’s rendered to look as if it’s near although it’s far? It’s genius.

(Lowercase letters A, B, C, D, E, and F made of white Lego blocks on grey blocks.

White letter C on a grey background, drawn with Lego blocks.

Via Kottke.

Centre d’Expérimentation Musicale - Gaël Chabot-Leclerc, créateur en résidence - Facebook

My brother, talking about his new music creation centered around cut glass carboys. I’m impressed by how natural he is in front of the camera.

The first credit card was introduced in 1950. Store credit, installment credit, personal loans, payday loans – everything took off. And interest on all debt, including credit cards, was tax deductible at the time.

Morgan Housel in How This All Happened, an overall great read.

Moxie Marlinspike >> My first impressions of web3. Overall, not positive. I knew the “art” of the an NFT was not stored on the blockchain, but I didnt know the data was just a url. There is no hash of what’s at the other end of that url.

San Salvador, the Band

San Salvador is a voice and percussions ensemble who sings in Occitan, or “langue d’oc” in French. They’re my new favorite band. The rhythm and vocal harmonies are right up my alley. The energy they project in the video embedded above is stunning. I hope I get to see them live one day.

Their music reminded my of Barbatuques’ Baianá.

Via Emma Bauchner’s New Sounds 2021 year in review.

Giacometti – Grande femme debout I. MFA, Houston.

2021 Holiday Newsletter

This is installment #5 of the annual holiday newsletter I share with my colleagues at Enthought. (2020, 2019, 2018 and 2017).

Unlike in 2019 and 2020, I didn’t keep track of interesting things as the year went by. Big mistake. Nonetheless, I hope you find one or two interesting things below!

Happy holidays to you all, and happy reading/watching/listening!

Wardley Maps: Seeing the future, maybe?

If you’ve talked to me this year, there’s a good chance I talked about Wardley Maps. It’s a tool for mapping “competitive landscapes.” This means picking a set of users’ needs, breaking them into the value chain of their components, and placing the components on a map based on how far they are from the user’s needs and how evolved they are. One can then make business decisions based on the map. Here’s one Simon Wardley made for the photo-sharing business he ran in the early 2000s.

Wardley Map of a photosharing app.

Image from Simon Wardley’s Finding a path.

Wardley makes a compelling case for using maps to make decisions. In chess, moving a pawn isn’t a good or a bad move in itself, it all depends on the situation. In war, the flanking move is the move in a particular situation and not in others. In both cases, you use a map to make the decision. Why would business be different?

He goes on to overlay many business and management concepts on top of the maps. Here are a few:

  • Picking a different development process based on the evolution of the component: Agile for early stages, Lean for products, Six Sigma for commodity.
  • Building teams around attitudes to work on different states of evolution. That’s the Pioneers, Settlers, and Town Planners idea.
  • “Context-specific gameplays”: moves one can make when the map is in certain state to accelerate changes. For example open sourcing technologies and data to push a product into a commodity.
  • Bundling and unbundling components.

I feel like Wardley stumbled on a Truth of the Universe. Even though it’s likely not to be 100% correct I sure think he’s onto something valuable.

If you’re interested in digging deeper, Wardley wrote a long series of articles that were collated into a book. I’m about a third of the way through and it’s excellent. Hat tip to Rahul for pointing me to Wardley’s talk, Crossing the River by Feeling the Stones.

2,080 Weeks Left

In August, I added Four Thousand Weeks: Time Management for Mortals to my reading list because Adam Grant, Ryan Holidays, and Austin Kleon recommended it. Then I forgot about it. Then I read Too many needles by Oliver Burkeman, which 🤯. Why do I stress about reading everything on my reading list(s) but not about reading everything that’s in the British Library? Then I read What if you never sort your life out? by Burkeman. Then I read How to make writing less hard by Burkeman. Then someone mentioned Four Thousand Weeks by Burkeman and I went Oh. So I read Four Thousand Weeks. If you feel like there’s too much to do and not enough time to do it all, this may be the right book for you (it was for me).


I can’t remember how I ended up on the first time, but every single thing I read was mind opening. The author is Avery Pennarun, co-founder of Tailscale (and author of git-subtree?!). I enjoyed his software engineering simulator series. In SimSWE part 1: Indecisiveness simulator, he makes a strong case for deciding on release goals and then completing them. In SimSWE part 2: The perils of multitasking, he makes an equally strong point that releasing often brings more value to your users, which he explores again in SimSWE 4: Wants, needs, and chasm-crossing. This time the focus is on shipping first what users need instead of what users want. And then there’s the monstrous and fabulous An epic treatise on scheduling, bug tracking, and triage. It’s too big to summarize, but some key points:

  • There are echoes of Shape Up: deciding what to build and building it are two separate tracks with different timelines.
  • Focus on velocity (in the Agile sense), don’t give people deadlines or goals.
  • When writing User Stories “only things that affect the customer are allowed (in the cycle), because things that don’t affect the customer do not deliver value to the customer.”
  • Product managements can totally manage users stories in a spreadsheet.

And finally, in Highlights on “quality,” and Deming’s work as it applies to software development Pennarun sent me back towards W. Edwards Deming’s work, who was Bob Moesta’s mentor (mentioned in the 2020 newsletter). Deming is often considered a father of the Japanese Quality Revolution. Deming is on my 2022 list.

Datasette Redux

After mentioning it last year, I managed to play with Simon Willison’s datasette project. It’s an SQLite-centric tool for “publishing and exploring data”, where you published the data with the code. Simon calls it the “baked data pattern.” In April, I made a code search engine that searches across all ETS repos using the datasette-ripgrep plugin. The hardest part was, by far, pushing the code to Google Cloud Run. It took me only two months. Later in the year, I played with dogsheep-beta to build a “personal search engine” built as a collection of SQLite files with a search index implementing the denormalized query engine pattern. I don’t have code published for that yet, but it’s been a fun project to collect notes, reading and watching lists, listening histories, location data, and bookmarks in a single searchable interface. In a way, I’m competing with Neeva (but I’m not going full-Linus). The next thing I’d like to play with is Git scrapping and git-history.

(Mostly) Shorter Reads

  • Austin Kleon talks about the 13-month International Fixed Calendar. It reminds of the ISO week numbers that the Danes love so much. It always weirded me out when they asked “Are you free week 14?” Thinking back, they might have been onto something.

  • A trio of articles on the relationship between open source maintainers and the people who use their software. Brett Canon writes The Social Contract of Open Source. Rich Hickey writes Open Source is Not About You. And Drew Devault writes Provided “as is”, without warranty of any kind.

  • Dan Lu had many great pieces this year but I particularly liked Some reasons to work on productivity and velocity. What resonated with me was the idea that there are “phase changes” in the nature of the work you can tackle as your velocity increases and your feedback loops shorten. With low velocity and long loops, you plan longer because you don’t want to waste an iteration. With high velocity and short loops, new problems become tractable, it’s easier to stay motivated, to stay in the flow. Nearly all the consulting projects we work on aim to achieve that. Do read the whole thing.

  • Two articles about cybernetics, “the science of communications and automatic control systems in both machines and living things” says Wikipedia. (I realized they were linked as I wrote this.) In Problem-Solving in Music, Art, Science & Software, Jessica Kerr ties together camerata (groups of people working on a common problem) and cybernetics applied to software development. And in Notes are conversations across time, Gordon Brander discusses how note-taking is a cybernetic feedback loop between yourself today and your future self. Another thought that crossed my mind while reading was conversations as gradient descent towards shared understanding.

  • David Wiley is a big wig in the open educational resources movement. And yet, in We Should Pause and Ask the Question he asks: is openness what we should strive for? Does “open” really mean increased access? Instead, he suggests evaluating educational resources in terms of their success, scale, and savings for students. For example: “as of March 1, 2021, 985,081 people have enrolled in Python for Everybody on Coursera and […] no one has stood up the tool chain themselves.” He also has this great quote given to him when he was a Shuttleworth Fellow: “don’t let your principles keep you from accomplishing your mission.”

  • Ryan Singer published 19 short articles on product management, shaping, pattern languages, and usability. They’re all worth a read.

  • A virtuous cycle for analytics by Jon Udell. A series of articles on providing data to users and mixing Postgres with Python.

  • Julia Evans on patterns in confusing explanations.

  • Chelsea Troy on The Art of Documentation.

Books I Read This Year

I read few books, but thankfully they were great.

Good Strategy/Bad Strategy by Richard Rumelt. This one made for a delightful and useful book club. Most strategy is bad. It’s all fluff, goals, and bad objectives. See for example Simon Wardley’s (him again) bad strategy generator. Good strategy has a kernel: a diagnosis, a guiding policy, and coherent actions.

The Art of Gathering: How We Meet and Why It Matters by Priya Parker blew my mind. I got giddy reading it, like when I first read Flour Water Salt Yeast. I felt like I had put my hands on a truth of the universe that I knew existed but didn’t have a word for, or that someone with super powers wrote a guide for how to be a superhero like them. I keep thinking of how it applies to dinner parties, meetings, and classes. I’ll be re-reading this one.

Creative Selection by Ken Kocienda. Kocienda was on the small team of people who developed the original software for the iPhone. He was in charge of the keyboard. What struck me the most was Apple’s prototyping culture. They build a thing and then critique it. There are no wireframes. It reminded me of Basecamp’s Getting Real and more recently, of Jason Fried’s MVP: Minimum Viable Pie.

Watching — Shorts

Most of the videos I end up watching are from the incomparable Jason Kottke.

  • Two Lego-centric videos: In the first, someone builds a car that can climb obstacles, and in the second, the car crosses a gap of increasing length. Watch both until the end for the satisfying bits.

  • More Lego. This time a flexible plane made out of solid blocks.

  • Mesmerizing Matchstick Stop Motion Video: I’m very patient, but not patient enough to make this if it’s indeed pure stop motion.

  • Every Sport a Bowling Ball. Just what it says on the tin.

  • Tom7 creates the uppestcase and lowestcase letters by training two deep learning models: one to create uppercase letters from lowercase ones, and the other to create lowercase letters from uppercase ones. Then he pushes things (beyond) their logical conclusions, such as creating lowercase versions of lowercase letters, and uppercase versions of uppercase letters. The results are fonts you can download and “use.” In the process, he builds a lot of really neat custom UIs to visualize what the models are doing. It’s entertaining and interesting.

  • Designing and Evaluating Reusable Components by Casey Muratori: I find it fascinating when an expert can externalize their knowledge and doesn’t just bask in expert blindness. Not only can Muratori explain why he thinks some API are good and some not, but he can give you a checklist so you can follow the same thought process. (Thanks Scott M. for the recommendation!)

Watching — Longs

Borgen could be considered a Danish The West Wing. But with better home life scenes, less world drama, more personal drama, more media drama, and more awesome Danish furniture. It’s an interesting story with great acting. It came out while I lived in Denmark and was all the rage then, but didn’t watch it until now.

Rita another Danish series. This one, a mostly light-hearted comedy-drama about a teacher who stands ups for the kids, but is terrible to grown ups. Again, awesome Danish furniture.

The General is a 1926 movie by Buster Keaton. One could call it a 100-year-old blockbuster. Action-packed, funny. On Roger Ebert’s top 10 list.

I watched Ford V. Ferrari at my into-cars friend’s recommendation. I knew nothing about it when I started watching it and enjoyed it until the last few minutes, when something so incredible, so preposterous happened that it changed my entire appreciation of the movie. Now I love it.


  • I bought a whetstone years ago but sharpened knives only one or twice a year. This year I read somewhere the story of someone in a similar situation whose brother-in-law (or the likes) said, as he saw him sharpen knives: “Are you planning on becoming a sharpening master or on having your knives in a museum? If not, get a knife sharpener and move on with your life.” So I bought a refurbished knife sharpener from Brod & Taylor. It’s awesome and now we have sharp knives every day.

  • Our house-purchasing process took 7 months and it was traumatic. But thankfully, memory is a faculty that forgets. In the end, I say it was worth it for us.

  • Anna and I went to Big Bend in March (which was great!). About a mile from the parking lot, my “normal” hiking boots started to hurt my ankle so Anna, my hero, dropped her backpack, took my boots and went back to the car to bring back her and my pair of not-made-for hiking Vivobarefoot boots. We went our merry way without pain for the rest of the 3-day hike and both bought a pair of Trackers the day we came back to Austin. They’re amazing.

Quick Hits


I listened to more than 43,400 minutes of music by about 1,460 artists across 161 genres (says Spotify). TOBACCO was the artist I listened to the most. I must have been in a weird groove at the beginning of the year because I listened to the album Hot Wet & Sassy 26 times.

Every album I enjoyed this year is in a playlist, but here’s a short list of outstanding albums:

  • Shire T - London. Paris. Berlin, and Tomorrow’s People (half of Maribou State). Tomorrow’s People may be my favorite album of 2021. It’s so dancey, so happy.
  • Sylvan Esso - Free Love: First post-pandemic concert in September at the new Moody Amphitheater. I had forgotten that people sing along.
  • Alessandro Cortini - SCURO CHIARO: Also a member of Nine Inch Nails, Cortini makes perfectly ambient, loopy, enveloping synthesizer music.
  • Clay and Friends - La Musica Popular of Verdun : A Montréal-based band making music as if they were Manu Chao driving down an L.A. freeway (Verdun is a part of Montréal). Mixes English, French and Spanish.
  • voljum - dayscapes: Most of the songs are like if a big band stepped into the Spider-verse where they first turn into Medeski, Martin & Wood, then into Amon Tobin-as-Two-Fingers for a bit, followed by a brief stint as Jamiroquai before the big band returns to the normal world. I dig it.
  • Arca released 4 albums this year (!), Kick II, Kick III, Kick IIII, and Kick IIIII. Kick III is the only one I’ve had the change to listen to multiple times and it’s… hard to describe. Do use good headphones or a subwoofer.
  • Aufgang - Broad Ways: Another loopy piano trio that mixes electronics with prepared piano. In the same family as Grandbrothers and GoGo Penguin.
  • Cid Rim - Songs of Vienna.
  • Current Value - The All Attracting as well as many singles and EP. When you see me bobbing my head intently at my desk, there’s a good chance I’m listening to this intense drum ‘n bass.
  • Speaking of drum ‘n bass, I had the chance to see Noisia live in Austin November. Gosh, I missed concerts.
  • Rezz - Spiral: Another really heavy bass album. Not good brunch music.
  • Hubert Lenoir - PICTURA DE IPSE: A darling of the Québec indie scene. Of many strange albums on this list, this may be the strangest.
  • Jean Louis Cormier - Le ciel est au planché: A solid 2nd pandemic album, even though I don’t like it as much as last year’s Quand la nuit tombe.
  • Jaga Jazzist - The Tower: The latest album from what may be my all-time favorite band. This 10-piece Norwegian group gives incredible concerts.
  • José James: No beginning no end 2, New York 2020 (Live), and even a Christmas music album, Merry Christmas from José James: R&B meets hip hop meets blues meets crooner meets late night jazz trio. I have a hard time describing his styles but I enjoy his voice.
  • Julien Mier - Industry in the trees: makes glitchy music that cheers me up.
  • LITE - Fraction: An album of remixes of this influential Japanese math rock band. Bandcamp had a great write up of their history and discography. Their whole discography is worth a listen. This is Alex catnip.
  • KUNZITE - VISUALS: Somewhere on the spectrum between Unknown Mortal Orchestra and El Ten Eleven, but with more energy than both.
  • Laura Mvula - Pink Noise.
  • Noname - Telefone: A little like Lauren Hill, with a little bit more electronics and smooth sounds.
  • Mieux - Rulers: Some loopy music, sometimes with electronics, sometimes with guitars. You’ll like it if you like Steve Reich or The Field.
  • Tangents - Timeslip & Chimeras: Mostly acoustic ambient “jazz,” reminiscent of Pantha du Prince and Dawn of Midi.

Empowering users to prototype what they need

Jon Udell, A virtuous cycle for analytics:

We recognize this software pattern in the way application programmers who push a system to its limits induce systems programmers to respond with APIs that expand those limits. I suppose it’s harder to see when the application environment is Metabase and the systems environment is Postgres. But it’s the same pattern, and it is powerful.

See also scientists and engineers who can program well enough to validate that their ideas work and then hand them off to developers to scale them.

I’m making a distinction between using Metabase, in Jon’s post, and learning programming because in many cases, scientific and engineering questions can’t be answered (sadly) with SQL queries and a nice friendly UI like Metabase’s.

Zilker Park parking

Thème de Yoyo

The amazing song Thème de Yoyo is in fact a 1970 piece by the Art Ensemble of Chicago and not by Motorpsycho and Jaga Jazzist, as I’ve thought for years. I realized this today after hearing The Cinematic Orchestra’s version and thinking: This has to be a cover. The nice thing about this discovery is that if there is one cover, there are many!

In a 2016 study, the Harvard economist Raj Chetty and his research team found that the difference in life expectancy between forty-year-olds in the top one per cent of American income distribution and in the bottom one per cent is fifteen years for men and ten years for women.

That’s a lot of years. Via Kottke.

Peddling the Bike Peddler's Pedals

Last night, thieves rammed through the Bike Peddler’s front door with a pick up truck and stole a bunch of bikes. Turns out my bike was (is?) in there for repair.

The Bike Peddler, Austin. A red brick building where the front door has been blown open.

When I shared the news with my colleagues, one almost immediately responded with this. :chef-kiss:

A Western-looking 'Wanted' poster where the criminal's photo is the KoolAid pitcher breaking through a red brick wall.

I wonder if I’ll get my bike back.

The world is a strange and wonderful place. Scott McCloud, of Understanding Comics fame, made a comic about… Kubernetes for Google.

I had a dough ball remaining from last night so I made a carbonara pizza for breakfast. Bake crust with pecorino, bacon, mozzarella, lots of pepper for 4 minutes, then add the two eggs and broil for ~2 min.

Main staircase. Blanton museum, Austin, TX.

From Cloudflare: Humanity wastes about 500 years per day on CAPTCHAs. It’s time to end this madness.

Yes please. One more reason to get a YubiKey.

Austin, TX

The Meatloaf Theory of Jobs

My partner and I love food. On a 0-to-10 scale, all foods have a chance of reaching the highest mark. Pizza? Definitely. Gelato? For sure. Duck? Of course. A simple loaf of bread? Hell yeah. But a meatloaf? Nope. Meatloaf maxes out at 6. Six decades of combined eating made this opinion into a fact.

A few days ago, my partner was talking about her work and how she felt it was impossible for her to do a good job. She could work hard, over communicate, do her best work, and she’d still have, at best, an impact of 6.

And there was born the meatloaf job: a job where it’s impossible to do a great job.

This reminded of David Graeber’s observation in Bullshit Jobs that people want to be the cause of events. He called it “the pleasure of being the cause.” In bullshit jobs, either people’s actions have no effect, or the effects are too far removed to be known.

Currently reading: The Art of Gathering: How We Meet and Why It Matters by Priya Parker 📚

What an odd Big Sur bug. VS Code’s dock icon is minuscule and impossible to click on. It reminds me of when your Badland’s little flappy furry balls becomes tiny.

Deeply Learned Typography

Tom7 creates the uppestcase and lowestcase letters by training two deep learning models: one to create uppercase letters from lowercase ones, and the other to create lowercase letters from uppercase ones. Then he pushes things (beyond) their logical conclusions, such as creating lowercase versions of lowercase letters, and uppercase versions of uppercase letters. The results are fonts you can download and “use.” In the process, he builds a lot of really neat custom UIs to visualize what the models are doing. It’s entertaining and interesting.

Via Macdrifter.

Two loaves of Ken Forkish’s Overnight Country Blonde. After a 15h bulk rise at 23ºC, the dough had almost quadrupled in volume. Much more than usual. The final bread is a tad flat. I think it’s because it ran out of energy, but maybe I could have made deeper cuts.

Publishing datasette to Google Cloud Compute with GitHub Actions

Simon Willison has a fascinating data-publishing and data-management project named datasette. A few months ago, he put together a plugin named datasette-ripgrep that uses ripgrep (you use ripgrep, right?) to search folders of files and display the results using datasette’s machinery.

I thought of creating a datasette-ripgrep instance to search all the packages from the Enthought Tool Suite. Using GitHub to search across this cohesive set of tools, and only this set of tools, doesn’t really work.

Setting datasette-ripgrep up locally turned out to be pretty easy. But publishing it to Google Cloud Compute (GCP) using GitHub Actions so I could automate the daily the content of the indexes repositories turned out to be a multi-month effort.

I started working off the demo deploy action which took me most of the way there. But I kept running into GCP authentication issues. It complained that “No credentials provided, skipping authentication”. That is, until I realized 2 months later (of on-and-off attempts) that I was putting GitHub secrets in Settings > Environment > Secrets, and not in Settings > Secrets. *slaps forehead* I’m sure actions can see secrets in the Environment section somehow, but I don’t know how. Another thing I learned is that when the GCP docs ask you to put the service account key in a GitHub secrets, you can just paste the whole JSON as-is.

The next hurdle was that the datasette publish cloudrun command would fail with the error “You do not appear to have access to project […]“. I tried many things related to IAM, role, service accounts and the likes, but without success. The ah ha! moment came when I realized/remembered that datasette.publish.cloudrun actually talks to GCP using the gcloud command line tool. I identified that it calls the builds and deploy subcommands. Using that information I could make searches to figure out which permissions were required to execute those commands. The one I was missing was Cloud Build Editor (and maybe Viewer).

In the end, the Service Account has the following roles (I’m not 100% sure they’re all necessary):

  • Cloud Build Editor
  • Compute Engine Service Agent
  • Service Account User
  • Cloud Run Admin
  • Storage Admin
  • Viewer

After 100 failed deploys and much reading of mediocre Medium articles and of Google’s (seemingly) incomplete and incorrect READMEs, the 101th deploy succeeded! You can now search the ETS repos at the very unglamorous URL of and see the source on GitHub.