Matthias Endler

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 »