January 16, 2022

I have replaced the Photos link in the navigation to the new Books. Photos can still be viewed from the Archive page, just by clicking on the photoblogging category link on the top of that page.

This is not a photo blog, though I often post pictures, and I’ve decided that having a whole separate navigation item just to link to an Archive page with only photo posts wasn’t that important.

Instead, reflecting my long hobby of reading (and tracking my reading on various websites that are not my own), I’ve added a Books section. A few bits of note:

  1. I generally only track fiction reading of books I read with my eyes. I’ve already started to change this slightly in 2021, having tracked some non-fiction, but I would not take this as an exhaustive list of all long form things I have read and/or listened to.
  2. I am using a combination of Micro.blog’s bookshelves features and images with Bookshop.org affiliate links. In some cases, this has caused me to use ISBN listings that do not have great images from Micro.blog to try and ensure that all the links take you to a valid place to buy some books.
  3. Because of some limitations in the Micro.blog bookshelves feature, for now, things are not sorted quite how I’d like (with the most recently read books on top). I expect that the sort order will eventually change.

Lastly, for other folks who are using Micro.blog and might want to do something similar, I am considering releasing a plug-in, but won’t do so without considerable interest. I write my blog modifications mostly for myself and am not super interested in making them highly configurable to other theme environments. In this case, I think it’s actually quite simple to extract the functionality as I currently have it. However, if you want a far more flexible book page experience, I recommend Moondeer’s bookshelves plug-in. It’s highly configurable and Moondeer seems motivated to maintain a solid, general purpose book architecture. That said, even if I don’t release this as a plug-in, I’d be happy to share any template code or CSS that might be helpful to others.

Of course, this whole project wouldn’t have happened if I wasn’t procrastinating from doing work or reading my current book, which I admit may have to go into the “did not finish” pile, at least for now.

Elsa made the ground turkey that I thought I’d be eating for dinner. Now I have a dilemma. A house full of food and I don’t want any of it. Plus ordering delivering in the snow is a punk move.

January 15, 2022

Some evidence for partisan sorting of executives into “compatible” companies.

I guess my inclination might be to say that it’s tragic we can’t escape politics. At the same time, the example that Kevin Drum gives in his post is worth considering. Would I want to work at an oil and gas company? While it might be healthy to have boundaries between my occupation and my identity and beliefs, the moral dissonance of my material survival depending on acts I consider deeply wrong would probably cause me to crack.

Maybe the increase in partisanship that is creeping into all parts of American cultural life reflects clearer stakes and clearer boundaries. Maybe corporations, organizations, and governments past lived in less clear moral space that made it easy to be unsure.

Executives are an interesting class to look at when it comes to partisan sorting. These elite have choices on where they work, and their professional and personal reputations are especially tied up in where they work. You will forever be the “ex-CxO at Exxon” or the “former big agriculture executive”. Why wouldn’t they sort so that these identities they carry serve them professionally and personally into the future?

Today’s world may have more partisan sorting, because we have lost the ability to forget. Who you were is always with you, because anyone can find out in a blink of an eye. You will always be that person who cashed in working at a crypto company. You will always be someone who worked in oil and gas during the fracking boom. You will always have been at Facebook during the Trump presidency. Any of these things may be something you’re comfortable with, but it’s easy to see how you may have to face people in the future who will see them as concerning. It’s not much of a leap to see how sorting toward a partisan “agreement” in values proceeds from there.

It’s the path of least resistance dissonance.

January 14, 2022

It’s important to have people you are comfortable being totally wrong with. You have to be able to see how ideas feel in your mouth or what it’s like to wear a new identity. And you need that sharp critique of your ideas that never feels like a rebuke of yourself.

January 13, 2022

January 12, 2022

Reading the same books as someone else is a way of being together. This is the premise of seminars, bookclubs, of so many friendships and conversations. What it is to discover that you’re currently reading the same book as someone else - especially someone you don’t know all that well. The startling, sometimes discomforting, effect of accelerated intimacy, as if that person had gone from standing across the room to all of a sudden holding your hand.

– Kate Briggs in This Little Art

I couldn’t agree more. This year, I want to read more books together. Let me know if you’d like to join me.

Not quite two weeks into the year, but I’m ready for a quick check in on “Fun”.

I built a huge Lego set for the first time since I was a pre-teen.

I signed up for an indoor volleyball league that starts in a few weeks, hopefully post Omicron peak. I haven’t played volleyball since high school.

We book a vacation to Mexico in March. This trip we’ll be going to Puebla, where Elsa’s family is from originally, and Mexico City, two places that have long been our list. Elsa’s mom has to go to Puebla anyway around that time, so we’ll tag along and then do some traveling on our own.

I’ve been working a little on this blog. I’m just about ready to add a Reading section to the top navigation with all the books I’ve read since I started tracking. I’ve also already read three books this year. I am starting book four today. I have been saving up a few graphic novels to read for years, so this weekend I’m going to try and read as much of The Wicked + The Divine as possible 1.

Oh, and I sat down and watched the first couple of episodes of The Book of Boba Fett last night when Elsa needed to work late.

I’ll give myself 4 out of 5. I’m a little heavy on planning and a little light on execution. But my plans are very likely to actually happen, and I have caught myself thinking, “Is there something fun I can do?” almost ever day.

  1. I’ve read half of it already on Comixology and then stopped. The story is complex enough that I knew I’d want to read it all together rather than as it came out. The artwork is also so beautiful, I knew I’d want it in print. I bought the hardcover editions almost a year ago, and I can’t wait to crack them open. ↩︎

January 11, 2022

January 10, 2022

Vicki Boykis is exactly right.

I’m going to steal her post idea and give you my reasons to learn each: git, SQL, and the CLI.


I’m starting with SQL, because if we’re talking data-centric code, we’re talking SQL. Databases talk SQL. Data stores that don’t talk SQL have SQL interfaces. You will interact with databases everywhere you go. And importantly, even if you’re not writing SQL directly, SQL’s impact means that most APIs for interacting with tabular data borrow from SQL.

You will see select, where, group by, and * join everywhere. Sometimes there’s a word substitution (like dplyr using filter for where), but understanding the basics of a SELECT query in SQL will teach you how to access data anywhere.

SQL also teaches you about data organization and design by its very nature. By understanding how joins, filters, and aggregations work, you start to understand principles behind good data ways to structure and store data for analytic tasks.

A day spent writing SQL is almost always a good day.


Do you want to understand your code? Do you want others to understand it? The one computer science class I took taught that the way you accomplished this was writing comments. This was wrong. When you change your code, the comments don’t change. When you write your comments, they may not actually describe what’s happening. Comments have a place, but they are far from your first line of defense.

First, you should strive to write really obvious, clear code. Use descriptive nouns for all of your variables. Name your functions with descriptive verbs. Don’t be clever. It should be obvious what your code is doing simply by reading the code itself.

But your second line1 of defense is git, where true documentation lives. Why do we use git? The main reason folks turn to distributed version control is because it makes it easy to work on the same code in the same files as someone else at the same time and make sure you can recombine that work. But the process of writing commit messages means that git can also serve as the best way to document your code. Think of a commit message as a comment that is specific to a collection of code that can exist throughout multiple files, time stamped, and with author attribution. You can (and should) use a commit message to explain a logical collection of code changes meant to accomplish one goal. The result, combined with cleanly written code, is documentation about who did something, when, and why. Code comments too often simply try and describe an isolated how and end up being some kind of imperative pseudocode that adds very little the code itself doesn’t reveal. The limitation of comments living in-line in a single file strongly encourages the wrong behavior. A commit let’s the code author define a unit of change and what is accomplished by that unit.

Git let’s you travel through time and see past code and changes as they happen, revert back to known good working state, try out new ways of doing things and easily discard that work, and make huge sweeping changes without ever having fear of finding your “last good known state”. Have you every edited a long piece of prose, moving around paragraphs and sentences to get things right? Do you paste sentences after a whole bunch of white space at the end of a document or hit undo frantically to try and get back to before you made things work? Git make all that easy for code.

If you’ve ever found a reproducible regression and written a failing test, then gone ahead and used git-bisect to find out exactly which commit broke the behavior, then found a solid commit message explaining what was done and why, you’ve known true joy.


The CLI, or command-line interface, is a big area. When I say CLI (and I believe Vicki means the same), I’m talking about being proficient with Linux/Unix/POSIX etc style systems. There are two separate reasons I believe in the CLI. The first is Vicki’s reason:

As a data developer, you will spend most of your time SSHing into servers, looking at stuff, and running code. This is especially true for companies that have moved to the cloud, but the pattern of, “your code lives on some remote production server and you need to get to it” is universally true. Command line is your best friend here

As soon as you plan to let computers work with your code while you’re not around rather than requiring you to hit a button to run code on your local machine, you’re going to want to have the basics of the CLI. This is how we interact with machines not in front of us.

But my second reason is even more important and harder to capture: the CLI is magic. When you first learn to write programs, it feels magical to command your computer to solve hard problems. The CLI is filled with battle tested programs that solve a huge class of problems interacting with a computer. They are blazing fast and are easy to combine together. Learning the CLI is learning the programming language of computer operating systems 2.

Do you want to feel powerful? Learn how to setup an SSH tunnel on a local port on your machine, then use psql to connect to a remote database, edit your SQL in vim, and seamlessly read from and write to your local machine while running SQL on a server a thousand miles away without missing a beat. Schedule a cron job that runs a small bash script that coordinates fetching, moving, and renaming files, processing gigabytes of text with awk or sed seemingly instantly and then loading that data into a database of a live application.

Almost all the programs I’ve written that save me so much time it feels like magic are actually just a series of command line tools to process text3, work with the file system, and/or operating system.

If you’re working with data, you’ll need to get it (SQL), you’ll want to process it, move it around, or use computer power somewhere you’re not and while you’re not pushing a button (CLI), and one day, you’ll want to know why you wrote the SQL or CLI script you did, how it works, get that code on another computer, and let someone else help out (git). This will be true literally everywhere you work.

  1. The third line of defense is writing tests. Whenever possible, you should be writing tests. But often tests don’t make sense in the context of a data analytics process. ↩︎

  2. It’s also learning ridiculously powerful text processing tools, which is great for programmers. ↩︎

  3. I spent a really long time writing awk -F ',' '{split($2, a, "."); new2 = ""; for(i=1; i<=9;i++) new2 = new2 "," a[i]; print $1 new2 $3 }' once, but it chewed through 350K lines in less than a second (along with several other sed and awk one liners) and spit out the clean file I needed. ↩︎

I’ve turned into a “get dressed every morning” person (I’ve always been a shower every morning person), but I’ve now also turned into a “rip those clothes off and get into PJs” to signify the end of the work day person.

If you need me, I’ll be wearing my Bombas slippers.

“Daniel Kahneman’s seminal work in behavioral psychology has demonstrated the effectiveness of unconscious priming.”

This is not a line that should appear in a fact-checked article in a major news publication in 2022.

January 9, 2022

It’s really frustrating that eBook editions (or at least Kindle eBooks) don’t have an ISBNs assigned to them. I find it hard to keep my book data clean, no matter what the service, as a result.

In a deliberate attempt to cure my brain from The Feed, I have resubscribed to some high quality news magazines this year. My hope is to spend more time reading material that I learn from and less time reading the Discourse around some set of reported facts.

I had my first magazine delivery this week. Once I flipped past the fancy (positively archaic) brand advertisements, I landed in the first section of most news magazines: Letters to the Editor. 1 The “Why” of blogs was laid out before me. The first batch of letters were in response to a piece that flew around my part of the internet when it was originally published online months ago. The Letters section was banal; blogged responses were insightful.

I think I’ll be exposed to more news journalism with my new habit, but there is a reason the internet quickly came to dominate.

  1. Thus, I immediately found my slow reading of news journalism lead right to the original short form Discourse. ↩︎