Wrong Ways To Create Strings
I’m on my way back from RustLab 2026, where I gave a lightning talk about all the ways to create a String in Rust that don’t involve String::new.
The talks were not recorded, so I decided to write it up as a blog post.
Collect Some Characters
One of the most obvious ways…
More »
Why I Still Believe in Mentorship
One of the best tips I ever got was from my table tennis coach.
He watched me play and said, “You are leaning forward with the wrong foot!”
I’d been playing for years and thought I had a good stance.
I’m left-handed, and no one had told me that I should put my right foot forward.
I had copied the st…
More »
Advice to Young Developers
Someone recently asked me what advice I’d give to a young developer today.
My answer had surprisingly little to do with code. Here’s what I’d focus on:
Learn How to Build Products
Even if LLMs write most of the code, there is still a need for problem solvers who can unde…
More »
GitHub Was Never about the Source Code
With GitHub down once again, I decided to write this long-overdue blog post.
This was the top comment on Hacker News when I started writing this:
For a variety of reasons, we had a centralized place where everyone of a
particular set of persuasions could connect, and this …
More »
How Other Link Checkers Do Recursion
After I published Five Years of Trying to Add Recursion to lychee, one reply I got was a very fair question:
If recursion is so hard, how do other link checkers do it? Plenty of them already crawl websites!
This sent me down a rabbit hole of reading the code of other link checkers.
The key takeawa…
More »
Five Years of Trying to Add Recursion to lychee
Recursion has been lychee’s longest-standing open issue.
It’s been sitting there, unresolved, for over five years now.
If you haven’t come across it before, lychee is a fast, async link checker written in Rust (BTW).
You point it at your website, your docs, your README, your Markdown files.
I starte…
More »
Hosting My Own Newsletter
I had a newsletter on this blog for years, but I didn’t send a single email for a long time.
This is the story of how I finally got it back up and running, and what I learned along the way.
A quick note up front, because this caused some confusion: by “hosting my own” I mean I don’t use a newsletter…
More »
On Taste
I’ve been refining this blog’s design for two decades now.
With each new version, I get a little better at knowing what I want.
Turns out, my designs tend to get simpler with time.
At this point, it’s all typography and negative space.
I got better at knowing what I value and what I can take away.
U…
More »
Now's the Time to Start That Blog
I was listening to a podcast recently where someone pointed out something curious: machines have been better at playing chess than humans for three decades now, and nobody cares.
People still watch human chess players.
If anything, chess is experiencing a renaissance.
I don’t know anyone who wants t…
More »
Building Up and Sanding Down
Over the years, I’ve gravitated toward two complementary ways to build robust software systems: building up and sanding down.
Building up means starting with a tiny core and gradually adding functionality.
Sanding down means starting with a very rough idea and refining it over time.
Neither approach…
More »