Notes
Macro-microblogging, as it were. Things too long for (or extracted from threads on) traditional “micro-blog” social media. Subscribe via Atom or JSON feed (what’s a feed?).
-
2025
-
Oct
-
11
-
Robin Sloan’s “Aspire” Zine
…is sold out, but I’m writing about it anyway.
-
-
04
-
Reversion to the Mean
A problem with using LLMs as editors.
-
-
-
Sep
-
25
-
Write Good Commit Messages
It doesn’t take long and you never know when it will pay massive dividends.
-
-
21
-
Writing and Revision Time
More than you think, probably, for most writing worth reading!
-
Naming Policy: ‘Large Language Models’, Not ‘Artificial Intelligence’
Because I am pretty well persuaded at this point that “AI” obscures far more than it illuminates.
-
-
05
-
Software, change, stability, imperfect markets…
Some reflections on 1Password.
-
-
-
Aug
-
02
-
Who Wants an Oxide Rack?
This guy! And at least one other guy!
-
-
01
-
isolatedDeclarations
and ZodOne strategy for using TypeScript’s
isolatedDeclarations
flag with inference-driven libraries like Zod.
-
-
-
Jul
-
27
-
jj workshop↩︎—❈
A tutorial you can follow to build your skills.
-
-
22
-
CleanShotX: Another Example of a Good ‘Subscription’ Model
I will celebrate every piece of software I use that gets this right.
-
Kobo and Instapaper Integration
Exactly what I have been hoping for since Mozilla announced the Pocket shutdown.
-
-
11
-
the way we use language
Quoting Ben Makuh on how we talk about LLMs and the language of slavery,
-
-
10
-
06
-
Five is the Floor
And other hilarities about Garmin’s Body Battery feature.
-
No Really, That Lens Is Huge
I mentioned this in my last photo post, and had to share.
-
-
05
-
Subscriptions That Respect Users
A decade on, no one has done better than JetBrains on this.
-
-
-
Jun
-
29
-
Torn
Two excellent choices is sometimes worse than just one. As here.
-
-
23
-
Using
light-dark()
Instead of a Sass Mixin for Color SchemesOne fewer reason to use anything besides native CSS
-
Platform Reality↩︎—❈
Riffing on Robin Sloan on Substack and the open web.
-
-
11
-
06
-
git commit headers (not log headers)
Something I learned because of a neat new jj feature!
-
History and Disposition
I have spent my career on large, legacy systems, and that informs an awful lot about me—including my views on LLMs.
-
-
-
May
-
03
-
Tip: Apple Music Hides Deleted Albums
Here’s how to get them back.
-
-
-
Apr
-
28
-
The Git “Invalid username or password” error
Spoilers: If you’re me, it’s probably your personal access token.
-
-
27
-
Using mise-en-place for dotfiles
Lots of ways to do this; this is mine for now.
-
-
17
-
Your Real Assumed Audience
There’s who you think it is, and who it actually is.
-
-
16
-
Quoting Dan Moren on Apple’s Software
-
Claude as a Better Grammarly?
Results are mixed. Perhaps unsurprisingly.
-
-
14
-
Miyazaki Cyberpunk↩︎—❈
Read Robin Sloan on Hayao Miyazaki—not Studio Ghibli, just Miyazaki.
-
-
04
-
Userscripts for macOS and iOS
A handy little app for customizing JavaScript and CSS.
-
NodeWalker in JavaScript
For tasks like “transform every text node”.
-
-
-
Mar
-
27
-
Downie + Overcast
Turning video into podcasts.
-
-
15
-
Show Up!
A lesson I have been more thoroughly internalizing recently.
-
-
11
-
Quoting Jane Scharl on Poetry Magazine↩︎—❈
Art is not a mere tool for other things.
-
TypeScript Native Port: Some Questions
Faster is good! The rest of this announcement is… strange.
-
-
05
-
04
-
Yes, Hallucinations are the “Least Dangerous”—Exactly
A rejoinder to Simon Willison’s rant last week.
-
-
-
Feb
-
28
-
Cloudflare Worker Responses Require Manual Caching
This was not intuitive or obvious, but at least it isn’t hard, either.
-
-
25
-
Why Hover for Domain Registration?
Because unlike most other registrars, they genuinely don’t suck.
-
-
24
-
Separation of Concerns
…for web domain management.
-
-
20
-
fish tip: Launching
$EDITOR
to Edit the Current Terminal CommandSomething I end up doing surprisingnly often!
-
-
17
-
Axum Handler Errors Need to Implement
IntoResponse
This has some interesting implications for
Result
.
-
-
14
-
Indurate
A lovely, too-little-used word.
-
-
13
-
11
-
Robin Sloan—“Is It Okay?”↩︎—❈
(Betteridge cannot cheat on this one.)
-
-
10
-
Options for
libc
with RustSummarizing a bunch of good social media responses in one place.
-
-
09
-
Authoring This Site in Obsidian etc.?
Why I don’t, and what I do instead (at least at present).
-
-
05
-
Today I Learned: Redirect Emails
Available in Mac Mail.app and a few other clients.
-
-
04
-
Big Packages or Many Dependencies
Pick which you prefer, but you cannot be mad about both!
-
-
03
-
The
twitter:label
andtwitter:data
meta tagsI have never seen these documented, but they are useful!
-
-
-
Jan
-
30
-
minijinja tip: Template Values Must Round Trip
A general lesson about de/serialization applied in this specific context.
-
-
29
-
minijinja tip: What That Custom Function’s Type Error Means
If the error message involves
Function
, the problem is reallyViaDeserialize
. -
TypeScript 5.8 Checks Runtime Code for Conditional Types!
One of those “if you know, you know” releases.
-
Re-packaging Existing Content, Transformation, or Both?
Some technical notes for thinking about the legal and ethical questions around “generative” AI systems.
-
-
28
-
One Reason Job Hunting is Exhausting
The mismatch between time and effort put in and results out.
-
Snuggle Your Kids
Especially (but of course not only!) on hard days.
-
-
27
-
How I Use Freedom to Focus
Some work is boring, and blocking distractions helps.
-
-
25
-
The Curse of Knowledge and True Myth’s Documentation
Writing good introductory documentation and teaching materials is hard.
-
Recovery Time as an Indicator of Fitness
An experience report “from the field” as it were.
-
-
24
-
A Reasonable Error Printing Utility in TypeScript
Something I want all the time in JS/TS now that I am used to it in Rust—thanks to anyhow!
-
-
22
-
mdBook tip: Redirects and the
SUMMARY.md
fileThe “helpful” creation of files named in
SUMMARY.md
might trip you up. -
jj tip: describe multiple revisions at once
Revsets and filesets remain mind-blowing.
-
-
20
-
Two Quotes and a Question on Software Engineering and AI
What should we make of generative AI systems in software engineering?
-
-
18
-
Improving
jj-gcp
with JSON Schema and schemarsI don’t use this tool that often, but it’s good for it to work correctly when I do!
-
-
17
-
A Little Soulver Coffee Calculator
One of the many ways I use a great app in day-to-day life!
-
-
16
-
What Distinguishes Newsletters from Blogs?
Genre, medium, content… delivery mechanism?
-
-
15
-
JavaScript’s
Promise.race
andPromise.all
Are Not “Fair”Just like life! And just like life, you just have to deal with it.
-
-
14
-
Resilience, Robustness, and Competence Envelopes
Some great additions to my systems thinking vocabulary, courtesy of Lorin Hochstein.
-
-
13
-
Against Hard-Wrapping Text Documents
Let your text editor do the work for you instead. Please.
-
-
11
-
Momentum
On the potential positive power of inertia.
-
-
08
-
jj tip: Squash Changes From Across a Revset
Another quick and easy way to split up changes “after the fact”.
-
-
06
-
Big Picture Planning Makes Little Picture Planning Easier
Year, month, week, day, hour—and probably not further.
-
-
04
-
Inspiration and the Subconscious
A little musical experience report from earlier today.
-
-
02
-
A Year of Shipping
…details to be determined as I go.
-
“Working Effectively” Instead of “Productivity”
A subtle distinction that has come to mean a great deal to me.
-
-
01
-
A Structure for Personal Reviews
Part of a habit I have been working on building for the past year.
-
-
-
-
2024
-
Dec
-
27
-
TrainingPeaks Virtual and Garmin TacX NEO Bike
This combo works but it’s easy to set it up wrong today.
-
-
25
-
Why the Jujutsu posts are all about differences from Git
After all, it can do all the normal Git workflows, too…
-
-
24
-
macOS tip: Spell Check with ⌘: and ⌘;
The built-in functionality is great, actually.
-
-
21
-
Mental State and Perceived Exertion
Taking a run when stressed was fascinating.
-
-
20
-
rust-analyzer version via rust-toolchain.toml
If you use an older toolchain, this will make for a better developer (and contributor!) experience.
-
fish shell v4 beta 1
A bunch of small nice improvements… and a rewrite in Rust!
-
-
19
-
Noteblogging
We needed a word for this thing that various folks are doing.
-
Publishing to GitHub Pages via GitHub Actions
Including two tips for bits that were very much not obvious about the project settings!
-
Byword
Still a really great Markdown editor after all these years.
-
Shellcheck
Your best friend if you have to write shell scripts.
-
-
18
-
Configure Zed to Use the Project’s rust-analyzer
Because it is not nice for your editor tooling to stop working!
-
-
17
-
Corrections: Using Drop Safely, Not For Safety
My note about using
Drop
in Rust last week had a serious error!
-
-
16
-
Fast Forward “Merges” on GitHub
This should be built in, but it isn’t, so this is of limited use. But not none!
-
To Throw or Not to Throw in TypeScript?
Taking a bit of inspiration from Rust and ending up with much more reliable TypeScript.
-
jj tip: ignore
gh-pages
by defaultI want my log to show me only useful information. Revsets let me do that!
-
-
14
-
Buttondown’s Alternatives Page
Would that all software companies acted this way.
-
Runtime or Types?
A false dichotomy! They always go together.
-
-
13
-
12
-
Mac App of the Year is… Lightroom?
Okay, Apple.
-
-
11
-
jj Tip: Rebase All Branches Matching a Revset
-
cargo-semver-checks v0.38.0↩︎—❈
More lints for the sake of fewer SemVer issues in Rust libraries!
-
-
09
-
Ghost (Instead of Substack)
Own your turf! Including, if you have one, a newsletter!
-
Implications of Plateauing LLMs
They may not be what you think.
-
Is Organic Social Media Dead?
If you know Betteridge’s Law, you know.
-
-
06
-
2024 State of Rust Survey↩︎—❈
An opportunity to provide real and actionable information to the Rust project leadership. Take it!
-
The Blue Oak Model License
If you’re looking for a permissive license, this is a good one!
-
-
05
-
jj v0.24
My daily-driver version control tool keeps getting better.
-
-
04
-
On
cargo install
Not Defaulting to--locked
A few details, as I best I know them, because a friend asked after reading my last post!
-
PSA: Default to
cargo install --locked
There are reasons this is not the default, but you can make it your default.
-
-
03
-
No AI on This Site
A statement and a pledge.
-
dprint
A very fast auto-formatter!
-
-
02
-
The DefinitelyTyped dprint Setup
Much, much simpler than I expected!
-
brew services uses launchctl or systemctl
-
-
-
Nov
-
30
-
Apple Photos Shared Albums and JPEG XL
-
React Hooks Are Indeed Not “Functional”
That is not a value judgment (I’ll save that for another time), but a statement of how they work.
-
-
27
-
-