Sam Rose
banner
samwho.dev
Sam Rose
@samwho.dev
That guy who makes visual essays about software at https://samwho.dev.

Developer Educator @ ngrok.com. Want to pair on something ngrok related? Let's do it! https://cal.com/samwho/workhours

He/him.
3/3
January 10, 2026 at 11:09 AM
2/3
January 10, 2026 at 11:09 AM
Having too much fun, so here’s the rest of my work from the last few years. 1/3
January 10, 2026 at 11:09 AM
Ran my ngrok.com/blog/prompt-... post through Pangram to test first hand and it correctly says it’s 100% human written. Hilariously the plagiarism check says I have plagiarised myself 72 times 🫠
January 10, 2026 at 10:24 AM
AI writing detection is getting _really_ good these days. I hadn’t been paying attention to this part of the industry and I’m surprised (in a good way) to see how good it has gotten!

papers.ssrn.com/sol3/papers....
January 10, 2026 at 10:18 AM
Wow.
January 7, 2026 at 11:48 AM
I’ve seen papers with a lot of authors before but this is the first time I’ve seen a single citation span multiple pages.
January 7, 2026 at 11:45 AM
Wordle 1,662 5/6*

⬛🟩⬛⬛⬛
🟨🟩⬛⬛⬛
⬛🟩🟨⬛⬛
🟨🟩⬛🟩🟩
🟩🟩🟩🟩🟩

Thanks, I hated it.
January 6, 2026 at 8:34 PM
talonvoice.com

Learning curve is steep but worth it.
January 6, 2026 at 7:13 PM
Holy shit.
January 3, 2026 at 11:09 PM
This was made in a rush 2 days before publishing because I got feedback that the end of the post was abrupt and lacklustre. I don’t like animations that are on rails like this with no way for the user to control them, but I was doing what I could with the time I had. I like it other than that.
December 28, 2025 at 9:14 AM
The goal here was to give a sense that inference gets more expensive the more tokens in the prompt, and also that attention scores don’t change when you add a new token and recalculate them. I think it’s pretty weak at showing that, and am sure there’s a better way.
December 28, 2025 at 9:14 AM
The position of this border is wrong and I know exactly why but didn’t get around to fixing it before publish.

I didn’t find a way using CSS grid to do border collapsing so it’s hacked in by adding bottom and right borders to each cell as an inner div. Tables didn’t work due to the labels.
December 28, 2025 at 9:14 AM
The whole attention section of this post is weak. Way too much math. There’s definitely better ways to explain this but I’d painted myself into a corner wanting to show the reader exactly what it is that gets cached, so I felt like I needed to show how the K and V matrices got constructed.
December 28, 2025 at 9:14 AM
The z-fighting on some of these shapes is really annoying but I’m a complete 3d noob so didn’t know what to do about it.
December 28, 2025 at 9:14 AM
The little grey blocks look so bad I can’t believe I left them in. The idea was some extra visual indication that each of the 4 entries in this array was itself an array of length 3. There’s absolutely a better way to do this.
December 28, 2025 at 9:14 AM
God I spent too long on this component. By far the most complex one in the post. The way I’m scrolling the page a second or two after you hit send to make sure it’s fully in the viewport is really ick but I didn’t have any better ideas. I do like this one visually, but that forced scroll haunts me.
December 28, 2025 at 9:14 AM
This animation exists only to look good and doesn’t really add anything to the explanation. I spent too much time on it for the purpose it serves. It also animates in when it enters the viewport then it’s not obvious you can click on it to play it again. All round very meh.
December 28, 2025 at 9:14 AM
I really dislike these SVGs. I wanted something to help ground the reader throughout the post, help them understand where we’re up to. I thought of it as a map. I made this quickly very early in the post’s life and never really got around to making it better.
December 28, 2025 at 9:14 AM
Starting with ngrok.com/blog/prompt-....

The scales on these axes is very different and some folks called this a crime against data visualisation, and I get it. But when they have the same scale it’s harder to see that they follow very similar trends. There was probably a better way to do this.
December 28, 2025 at 9:14 AM
🫶
December 27, 2025 at 10:47 PM
You’re going to do well in life, whoever you are.
December 27, 2025 at 8:40 PM
For example, it’s very common now for frontier models to be good at knowing when they need to go and retrieve more information. Here’s a very simple example.

For higher stakes questions, you definitely want to be clicking through to the sources to make sure you’re getting good information.
December 27, 2025 at 10:17 AM
I wonder what Richard Hamming would make of the industry today if he could see it.
December 26, 2025 at 3:26 PM
Hi 👋 I’m Sam, I create visual essays about programming.

My posts from 2025:

- samwho.dev/reservoir-sa...
- samwho.dev/big-o/
- ngrok.com/blog/prompt-...

I also appeared on other folks’ websites:

- simonwillison.net/2025/Dec/19/...
- writethatblog.substack.com/p/sam-rose-o...
December 26, 2025 at 11:16 AM