Markdown fatigue

My relationship with Markdown has traversed the following arc: Contempt, Acceptance, Sadness

Contempt

In 2009, I thought "Markdown sucks". There was a burgeoning assortment of markup languages, having been driven by (and driving) the rising tide of the blogosphere, and Markdown seemed to be decidedly inferior. I knew about "Worse is better" back then, but I didn't have the acumen to realize I was seeing it in action.

Acceptance

By 2015, I recognized that Markdown had won, and in choosing Wikitext I had been "Betting on the wrong horse". I eventually moved all my content to Markdown, and found myself relishing its simplicity and ubiquity. GitHub continued the trend started in the blogosphere, inducting wave upon wave of developer into the Church of Markdown. Many of the rough edges and ambiguities were smoothed over by efforts such as CommonMark.

Sadness

In 2025, with the rise of agentic AI, I found myself wearying of Markdown.

First, I was annoyed and frustrated to see deterministic configuration and code replaced by non-deterministic natural language suggestions (in Markdown, of course). Skill files started to pile up in repos like so much cruft, only to be deleted as we were forced to admit that the agents were often better off without them.

But worse than that, has been the rising flood of AI-generated Markdown text written — purportedly — for human consumption. As it stands right now, there is something difficult to stomach about LLM-generated text. Many of us are developing an "allergy" to it. And now it's everywhere: in commit messages, PR descriptions, project READMEs, wiki pages, and so on. For the unwary, the near constant exposure to this homogenous slop may slowly infect them: the human, imitating the machine, which was trained to imitate the human.

The LLM's literal raison d'etre is to generate text, tirelessly, one token after another, until the requester's API credits have run out. So, we now have wall-of-text PR descriptions densely peppered with Markdown backticks and other formatting, producing a tiring assault on the senses that no human developer would have the patience to construct by hand. I used to take pride in my detailed and well-formatted PR descriptions, but now every PR is a pantomime of a carefully crafted message: exhaustively formatted and spelled out by the practically unbounded patience of the next-token-predictor machinery.

My heart sinks when I read one of these PRs, and when I write my own PR descriptions, I have the sinking feeling that any care I take in wrapping symbol names in backticks or inserting expository asides between em dashes are only going to risk miscuing my readers and leading them to think that I, too, might be a bot.

But, who am I kidding, anyway? The slop economy is training us all to barely skim or not even read these artifacts any more.

Signed, Yours truly, in Markdown.

Arq restore notes

About a month ago, my personal laptop died, requiring the logic board to be replaced. All the data on the previous incarnation of the machine was irrecoverably lost, requiring me to restore from backup. Unless my memory deceives me, this was the second time I've restored a backup made with Arq1.

This time, things didn't go quite as smoothly, but overall, it still worked out ok. I'm going to put some notes here about the road bumps that I ran into while restoring, for reference by my Future Self™. Given that "past road bumps are no guarantee of future road bumps", I'm dumping this in a blog article rather than a wiki post, as I consider these to be more "moment in time" observations than an enduring record of what to do in the future.

A SuperDuper! backup is a full disk copy, and pretty close to being something that you can just restore and then run with. Arq, on the other hand, only backs up my home folder, which means I need to reinstall a bunch of apps after doing the restore. Additionally, there appear to be quite a few settings (particularly permission-related settings) that don't survive across a backup/restore cycle, and these need to be set up manually afterwards.

First steps:

  • Install Arq, so I can initiate the restore.
  • Install 1Password, so I can get the credentials necessary for the restore.
  • Actually start the restore; after many hours, Arq used all the memory on the system, requiring me to start again2.
  • Sign in to iCloud, because apparently thanks to Apple "magic" none of my photos were actually on my device, or at least, the couldn't be restored by Arq; after signing in, photos start syncing and I eventually got access to them all again.

Next up, set the hostname, because otherwise Fig won't know what machine it is running on, and my machine will only get a lowest-common-denominator set-up as opposed to the specific one I want for this machine:

scutil --set HostName latina
scutil --set ComputerName 'MacBook Pro'
scutil --set LocalHostName latina

We then try running git in terminal, which triggers a command line tools download and install, and can finally at that point run install under ~/code/wincent/. That died with:

$HOME/code/wincent/vendor/n/bin/n: fork: Resource temporarily unavailable

A bin/n --cleanup should supposedly delete all versions, but I ended up having to rm -r vendor/node/n/versions to actually get n working, at which point I could run install again.

You have to run vendor/homebrew/install.sh in order for this to work, and additionally you have to open a new window after installing in order to have the Homebrew directory appear in your $PATH (merely running hash -r isn't going to cut it).

Homebrew helpfully points out the following:

stderr: 'Error: homebrew/bundle was deprecated. This tap is now empty and all its contents were either deleted or migrated.\n',

So I deleted than, and it then says:

'Error: No available formula with the name "bun". Did you mean bup, buf or run?\n'

Turns out that you need fully-qualified (tap + brew) formula and cask names, as noted in Homebrew/brew#21416, so I fixed that.

There are a number of apps that you have to open or twiddle in order to get things working, even though Homebrew installs them:

  • Karabiner-Elements (have to open it and grant privileges).
  • Hammerspoon (have to open once, let it prompt for permission, set to load at login, hit Ctrl-Opt-Command-F2 to set two-monitor layout and F4 to set horizontal display arrangement).
  • Raycast (somehow it couldn't read its settings, so I had to import a backup, set Command-Space in the System Settings to not open Spotlight, grant accessibility access for snippets to work, and the same for 1Password while I was at it, and set it to launch at login).
  • Before using tmux, had to go to System Settings -> Keyboard -> Shortcuts -> Input Sources and turn off these trouble-makers:
    • Select the previous input source (ctrl-space)
    • Select next source in input menu (ctrl-option-space)
  • Kitty (have to open it and set it to stay in the Dock)
  • Godspeed (open it, set it to stay in dock, launch at login)
  • terminal-notifier: run a command like terminal-notifier -title hi -message there so it appears in System Settings; then you can allow notifications from it.
  • Resilio Sync (set to launch at login)
  • Orion (installed via cask, but have to open and set to default browser in System Settings)
  • CleanShot X (open and set to start at login, grant accessibility settings, turn off conflicting shortcuts in System Settings)
  • iStatMenus (launch and grant permissions)

And general house-keeping:

  • Remove cruft from dock.
  • Dock settings: turn hiding on (I thought I had a default for that; maybe all I needed was to log out and in again for it to take effect)
  • System settings: under the lock screen settings, require password immediately.

For some reason, I couldn't get Screenflow to make use of my microphone (it would claim I needed to grant it access to the microphone, but it didn't actually ask for access and there was no way to force it in the System Settings). In the end, I blew away the settings and data and it eventually prompted:

rm -rf \
  ~/Library/Preferences/net.telestream.screenflow10.plist \
  ~/Library/Preferences/WSG985FR47.net.telestream.screenflowhelper.plist \
  ~/Library/Containers/net.telestream.screenflow10 \
  "~/Library/Group Containers/WSG985FR47.net.telestream.screenflow10" \
  "~/Library/Application Support/ScreenFlow*"

The above is what I've discovered so far over the course of several days. Hopefully that's the end of it!

  1. The other backup tool that has saved my hide in the past is SuperDuper!, but on this occasion I didn't have access to my physical (SuperDuper!) backup, so restoring from the cloud (Arq) was my only option.

  2. Restarting is a bit annoying, because I use Glacier storage for my backups, meaning that you can't just start downloading the data from the cloud; instead, you request for it to be made available and then wait 5 hours before actually beginning the download. Downloading from Glacier also hurts the wallet a bit, to the tune of about a hundred bucks for all the retrieval costs associated with the repeated attempts.

Dreamscape

tl;dr:

  • The bizarre otherworldliness of dreams makes them seem foreign, almost as though they came from some weird place "out there", not of our own making.
  • This in turn makes recurring dreams puzzling, especially when they are separated by long intervals (sometimes years); if dreams come from "out there", where the heck is that and why can it store these recurring patterns and places stably over time?
  • These false intuitions are dispelled once we realize that our brains are all about storing patterns, and the same mechanisms that allow us to form waking memories and mental models are the ones that provide us with a stable pool of patterns from which we build recurring dreams.
  • This simple fact is occluded and obscured by the apparent forgetting that happens on waking.
  • This all seems bleedingly obvious in retrospect, and it makes one wonder why I even needed to write it down.

Over a period of many years now I've had a series of recurring dreams, or at least, recurring themes within dreams. When you're in the dream world, it seems detailed and real, yet at the same time unreal or surreal because of the way in which improbable or impossible things occur. You find places and people morphing from one into another in a way that seems to simultaneously escape your notice while also registering in way that causes you to remark on it later on. The laws of physics are defied. Rules of causality are suspended. Events are reordered and incompatible facts are juxtaposed. These bizarre ensembles of characters, interactions, and locations are so unexpected, so novel — even if they are stitched out of a patchwork of people and things you know or can imagine — that it is almost like they're being delivered to you from the outside, by a Christopher Nolan-esque cinematic auteur of unbounded and inimitable creativity.

The thing that has struck me about these recurrences is just how complicated the dream world seems to be. Your brain appears to synthesize these fantastical locations, not just randomly — like a procedural generator would create terrain in an open-world video game — but in a way that has permanence, because you can find yourself back in those same places months or years later.

At first this ability to recall these impossible, intricate places puzzled me, but I have a theory now about what makes them come back. I'm not going to get into how dreams get put together, because I honestly have no idea, but I want to explain how it is that these recurring patterns are more or less durably stored and made available for reuse over long periods.

So, let's start from the basics. How do brains work? Let me give you my horribly imprecise understanding of this, hopefully one that is just vague enough to be compatible with how things actually work in there. Brains are massive networks of interconnected neurons. Synapses fire. Signals are transmitted between neurons. There are activation thresholds that dictate whether signals get through. Importantly for the purposes of this discussion, brains are not merely deciding machines that control the systems and actions in the organism that they inhabit; they are dynamic, evolving, self-modifying receptors and recorders of information and patterns. That's how memories are made: the act of "recording" a memory is in some sense a rewiring of the brain in such a way as to capture a pattern and make it available for latter retrieval.

There is a curious difference between memory and memorization. We form memories effortlessly all the time as experiences wash over us. In contrast, memorization is an intentional, effortful act aimed at creating a memory for later recall. Perhaps frustratingly, this latter activity can be quite hard. But the automatic formation of memories is as easy as breathing; in fact, it's something we can't help but do. This is not to say that our memory is infalible. Details may escape us, memories may fade (become harder or imposible to access), facts may be switched. But in the absence of dementia or other pathologies, the brain is a marvelously flexible, capacious, and impressively reliable self-updating reservoir of information.

A particular kind of memory is the "mental model". We typically use that word to describe things that are a little more abstract that a vanilla memory. For example, we might refer to a mental model of "how the economy works", or "what Alice thinks about Bob". But we also have spatial models of the environment around us — the neighborhood we live in, for example — and these are much more akin to memories, in the sense that we acquire them and build them up automatically, without even intending to, by the mere fact of experiencing the environment around us.

And this memory formation, this rewiring of the brain, it becomes more and more accurate, detailed and durable as we repeatedly move through that environment, in a sense "wearing in" the connections in a way that makes them stronger and more complete. (As an aside, this is the power of positive thinking too — and the harm of negative thought patterns — because when we repeatedly activate the same neural pathways we "burn in" in a way that makes it all the more likely that we'll fall into following the same pathways again in the future.) After a while, your mental model of the area you live in becomes so detailed and comprehensive that you can name and visualize countless details about it, large and small, involving distances, textures, smells, relationships, and all manner of patterns and symbols.

I think that it's this that's happening when you visit places in dreams. Your brain is conjuring up these fantastic places, making a pastiche of experiences, patterns, places, and symbols — both lived or perhaps experienced in fictional worlds of movies, TV shows, video games, comics, magazines — by some mechanism that I haven't even begun to understand. But regardless of the source for this material and its combinations, it winds up leaving an impression on your brain. It leaves a mark, not quite the same as a waking memory, but a nearby cousin to it. Something is recorded in your brain somewhere. Neurons are rewired. Patterns are inscribed. Symbols are persisted.

The fact that we usually have trouble remembering our dreams when we wake up obscures all the pattern-recording that's actually going on behind the scenes. I don't know the mechanism for this amnesia-on-waking either, but I feel sure that it is only a surface-level illusion. The reason why we revisit places and relive patterns in recurring dreams is because we accumulate a corpus of stored material, a set of "mental models", in our brains that's very close to the kinds of structures we use to store other memories. The dreamscape only seems otherworldly; actually, it's made of the same stuff from which we build our internal representations of the real world. And now that I've written all that out, I'm rather embarrassed that it took me this long to figure out.

Thoughts on AI — 2026 edition →

All blog posts