Humble writing

I’m trying to change up my blogging style: write without telling people what to do. Show, don’t tell. It’s a stronger writing position to take. It’s the difference between writing social media “content” and writing from a place of earnestness/honesty.

  • Advocate by telling a compelling story.
  • Motivate by strength of logic alone.
  • Change minds by revealing an obvious truth that was once obscured.
  • No shortcuts.

The way I read him, Kurt Vonnegut (might) want it that way. Who knows, he can’t tell us now!


Try smarter, not harder

“Try harder” is the worst kind of plan. It’s basically not a plan, a small resistance to planning. An anti-plan that signals virtue but instead reflects shallow thinking.

Don’t say “try harder”.

“Try harder” implies that folks haven’t been working hard enough. It leaves the door open to come up short again, for all the same reasons, with little to show for it.

It assumes folks can throw themselves at a project/problem/task even harder without consequences, like exhaustion, burnout, diminished performance, letting important part of their lives suffer, etc. Not only that, but it’s a terminating thought, the kind of thing you can say, and few people will say “well no, we can do better than that” and end up not solving any underlying issues.

“Try harder” is trying to avoid a tough question: why did I/we come up short last time? “Try harder” is resignation to learning nothing and plowing head-down anyway.

Try harder is literally working harder, not smarter. I highly recommend the latter.


The leisure/disconnection/creation circuit

Two prolific, internet-known travelers:

  • Craig Mod: writer, walker, photographer, software-adjacent
  • Brock Keen: photographer, car camper, road-tripper, Porsche-enthusiast

These gentlemen are particularly good at two things that I am not: getting outside and unplugged, and photography. (Also: walking and camping.) From the outside, their projected life/identity seems like a vacation1. In particular, they take quite different sort of vacations than I do: not Disneyland nor dog agility-adjacent.

They go out into the world, force a little disconnection. Setting aside this is part of their thing, they are separate from whatever knowledge work they might do.

I often want to better disconnect from my knowledge work, even for a couple of hours each night. And, it occurs to me that I can achieve that on any particular kind of vacation. A trip to a Disney resort is a fine opportunity to shift my mind to the present and to my intellectual/reading/writing interests2.

Disengagement en route to thinking

Mod and Keen generate a desire to think by converting walking/driving mileage into boredom and then, alchemy!, better thoughts.

Maybe our generally less-stimulated existences, before pervasive computing and social media, correlate with thinking better thoughts. i.e., does it require some kind of disengagement to be a Great Thinker in the age of pervasive networking and computing?

Keen is not specifically about thinking, whereas Mod is thinking adjacent. Possibly, more about disengagement. Yet, something about it makes me think I could do better thoughts in something like that existence.

Disengagement as precondition to creativity

What if some degree of disengagement is already table stakes? Not disengagement like Waldenponding. More like returning to a clear mind and thinking one’s own thoughts. Like, you have to say no to all the distractions that you said yes to in the first place (whether accidentally over optimistically) to do a great thing/thought. Jenny O’Dell has written the book on this, recommended.

Vacation is a tool for disconnection and disengagement adjacency

I wrote A Vacation is a Tool For Disconnecting amidst a few weeks wherein we vacationed in Disneyland and stayed in a friend’s RV at a public park while Courtney did dog agility. Despite this not being the most disconnected (I was, in fact, very connected) or disengaged (Disneyland is quite stimulating), my mind reached a good place.

I wasn’t dwelling on things. I could stop thinking about work once as soon as it snuck into my thoughts. I enjoyed quiet moments and didn’t rush to fill them with distractions. I photographed and journaled and jotted down ideas on the spot and posted photos to blogs. It was pretty dang good.

But I still found myself sitting there, half-writing and half-journaling, sort of feeling like I’m not prolific enough, even on vacation/disconnection. So maybe disconnection/disengagement isn’t the central thing. Or, ambition and aspiration are orthogonal to personal/work life splits and balances and how they manifest as some degree of “going offline”.

Possibly, if I were on a road trip or walking or in nature or disengaged or whatever, I would find this feeling/vibe anyway. Is that the disengagement or disconnection talking?


  1. Of course, it is not. It’s a lot of work to put that many photos and words on the internet. ↩︎

  2. Assuming Disney parks don’t become my work. 🤞🏻 ↩︎


Show up every-dang day

Anne-Laure Le Cunff, 4 science-backed ways to build your own mental gym:

Building mental strength is not too different from building physical strength. It’s all about consistency. The same way you would take a few minutes to do a few push ups, you can incorporate mental pushups in your daily routine.

Be curious:

The last one is extremely powerful. Multiple research studies show the positive impact teaching someone else has on the comprehension and recall of any material.

Get creative:

There is evidence that practicing activities such as music, drawing, arts and crafts stimulate our brain in a way that enhances our health and well-being. These activities also have a positive impact on our emotional resilience.

Be mindful:

Choose a topic. It should be personal, emotional, and important to you. Write for yourself. Do not imagine your writing being read by other people. Let go. Don’t worry about style, spelling, punctuation, or grammar.

Get some rest:

A great way to combine short breaks and sleep are, of course… Naps! If you’re fortunate enough to work in an environment where taking a nap during the day is possible, do take that opportunity.

I can’t overstate how good naps are. Second only to easy access to comfort from a dog, naps are the best of work-from-home benefits.


Personal websites are corner stores and neighborhood garages

Is a personal blog or general-purpose more like a small shop or your local garage?


They’re a bit of a calm business.

A corner store with a friendly owner/operator. Never grows beyond its means. Operates at relatively-human scale. Greet every customer, have a nice conversation, send them away with something interesting. Aims for an infinite game, not limitless growth. It may not ever turn a profit, but that’s okay; neither do most restaurants or start-ups.

A good neighborhood store might make me think, “I wonder if Sam has anything interest in stock this week?” A good blog should make me hope Sam has new posts, with confidence that they’re probably pretty good.


But, a personal web space is a bit of a sports car in a workshop too.

It’s meant to enjoy, for driving. But also for nostalgia, for looking and remembering. Showing it off is important! It’s not quite as good as what you could go out and buy new, but that’s most of the charm. Working on it is part of the fun, but often a source of frustration and expense.

An interesting garage might make me think, “Hey I wonder what car Hank is working on this week?” A good blog makes me think, Hank’s site is so fascinating, I should go talk to him about it or make my own.


A lovely thing, personal websites are!


A big bucket of text

Matt Stein, How I Use Obsidian:

It’s also just a heap of Markdown I’ve carried around and put Obsidian in charge of sometime late in 2021. Those plain text files are mine and they don’t need Obsidian to be useful; I can open the same folder with iA Writer or Sublime Text and get right to work.

This is The Way to think about notes apps. Not a principle or lifestyle, but a layer of leverage over a big bucket of text.

Don’t fret if it starts off as an unimpressive pile of ideas or an overwhelming and unorganized collection of disconnected ideas. Use tools to organize and resurface the ideas, but don’t let that be the end goal. The end goal is to think better thoughts!


Recently in pair programming with AI

My recent experience with GitHub Copilot Chat (non-autocomplete assistance) and Raycast’s ChatGPT-3.5 integrations lead me to think that prompting will be a crucial skill for most knowledge workers. (I’m hardly the first person to this observation!) Not quite so obtusely as using a Unix shell and command-line programs is for programmers. But, still a thing one will want to know how to get the most out of.

A few examples:

  • Talking/prompting a model into doing permutations and set math. This one is still blowing my mind a little. How does a word predictor do symbolic math? Not so much a stochastic parrot in this case!
  • Coaching a model to write like me, provide useful feedback, and not use the boring/hype-y voice of Twitter or whatever a model was trained on. Hitting “regenerate” a few times to get options on different prose to include. Using the model as an always-available writing partner. In particular for “help me keep going/writing here…”.
  • Building up programs from scratch with the assistance of a Copilot. Incrementally improving. Asking it for references on how to understand the library in question. Asking it for ideas on how to troubleshoot the program. I’ve used this to generate the boilerplate to get started with CodeMirror, with some success.

Elsewhere

Simon Willison, Building and testing C extensions for SQLite with ChatGPT Code Interpreter:

One of the infuriating things about working with ChatGPT Code Interpreter is that it often denies abilities that you know it has.

A non-trivial share of the prompting here is to remind ChatGPT “this is C and gcc, you know this”. I am not sure whether to eye-roll or laugh. Maybe part of the system prompt is “occasionally, you’ll require a little extra encouragement, just like a less-experienced human.” Simon did manage to give ChatGPT enough courage to build the extension, though!

Despite needing to encourage the thing, this bit is promising:

Here’s the thing I enjoy most about using Code Interpreter for these kinds of prototypes: since the prompts are short, and there’s usually a delay of 30s+ between each prompt while it does its thing, I can do the whole thing on my phone while doing other things.

In this particular case I started out in bed, then got up, fed the dog, made coffee and pottered around the house for a bit—occasionally glancing back at my screen and poking it in a new direction with another prompt.

This almost doesn’t count as a project at all. It began as mild curiosity, and I only started taking it seriously when it became apparent that it was likely to produce a working result.

I only switched to my laptop right at the end, to try out the macOS compilation steps.

Ilia Choly, Semgrep: AutoFixes using LLMs:

Although the built-in autofix feature is powerful, it’s limited to simple AST transforms. I’m currently exploring the idea of fixing semgrep matches using a Large Language Model (LLM). More specifically, each match is individually fed into the LLM and replaced with the response. To make this possible, I’ve created a tool called semgrepx, which can be thought of as xargs for semgrep. I then use semgrepx to rewrite the matches using the fantastic llm tool.

I’ve yet to land a big automated refactoring generated solely by abstract syntax tree-powered refactoring tools. By extension, I definitely haven’t tried marrying AST-based mass refactoring with an LLM. But it sounds neat!


Juniors/seniors and incremental/vision development

The ability to focus on one concern at a time is 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 and side-quests.

Ben Nadel, Only Solve One Problem at a Time:

This lesson hits me hard in the feels because when I reflect on my own work history, some of the biggest mistakes that I’ve made in my career revolve around trying to solve multiple problems at the same time. Perhaps one of the most embarrassing examples of this is when I was attempting to learn OOP (Object Oriented Programming) on a new project. This was two problems: I had to build a new application; and, I tried to do it in a new programming paradigm.

Needless to say, the project ended up coming in months late and was a horrible mess of hard-to-maintain code. Trying to solve two problems at the same time ended in disaster.

Nearly universal advice for developers of all experience levels!

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 a 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 time.

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. They’re tempted to make the entire thing happen in one outburst of crisp thinking.

Developers who have learned to avoid pitfalls and gotchas sometimes have to relearn how to work incrementally. Juniors (frequently) don’t have this problem. If they don’t work incrementally, they won’t make progress at all! (Caution: juniors that try to work like the seniors they see around them will fall into this trap.)

That said, juniors and seniors both tend to struggle with:

  • deciding when to focus vs. when to jump out of a rabbit hole
  • building their own feedback loops with tests/compilers, jigs/scaffolding
  • imagining and applying constraints
  • using first-principle thinking to reduce the overwhelming possibility space of programming

These skills don’t come with simple experience. One has to decide to apply them and then build up experience using them to keep development on-track, focused, and effective.


Trim the attention sails

In America, the 2024 election cycle is unlikely to amuse anyone. Maybe this is a rallying point for “unifying” the country: a near-universal loathing of our politicians, how they get themselves elected, and the outcomes they deliver to us. Let alone the new media that reports on them.

Ahead of the inevitable hell-cycle, I’ve trimmed my attention sails a bit. The general idea is to remove feeds and notifications from my daily routine which are monetized primarily by writing doom-y, grab-y headlines. I’m looking at you in particular, New York Times. But it applies to just about everything with headlines. I’ve disabled all notifications from The Economist and Apple News. I read them once a week. That’s plenty.

Unrelated to the election, I deleted the Twitter and Instagram apps. The web app is mostly equivalent in Twitter’s case, no loss there. Instagram’s mobile web app is surprisingly mediocre. The point, in both cases, is to put a few more steps, a bit more friction, between me and randomly scrolling an algorithmic, attention-hungry feed. I’ve since found that the friction of loading these two as web apps is great. I do indeed look at them far, far less. On the other hand, their web apps are intentionally just-okay. It seems to me that any organization that can put together an excellent iOS app should be able to do the same on mobile web. Reader, let me tell you, they don’t.

I found the settings in Lyft and DoorDash that prevent them from sending advertisements-as-push-notifications. They do exist! Highly recommended.

Mute lists, they’re also fantastic. All the names and teams and keywords that tend to mean “here’s a post about the political horse-race” are scrubbed from my timeline. Even better, I can see when they’re scrubbed and dip in to see if things are as unproductive as I remember. (Thanks for that little detail, Ivory.)

Previously: Think Your Thoughts.


Detroit’s airport (DTW) is…kinda decent? It’s got a monorail and a light show set to songs of Motown. At the very least, it’s not a bad coffee shop? 🙃