Field Notes
Navigation for the End Times
SamNav is a tiny independent index for Sam Altman’s blog, built because the posts are worth reading but the navigation is almost comically minimal. It adds search, topics, reading paths, related posts, and an admittedly dry Navigation Severity Score without republishing the original writing. It’s part joke, part web repair: a small Dockerized map for a corner of the internet that needed one.
It started, as many personal projects begin, by clicking or tapping around a website and muttering at my screen.
Sam Altman's blog is not obscure. It is not some forgotten Movable Type installation from 2006 with three broken permalinks and a comment section full of spam. It is the personal blog of one of the most watched people in technology. There are useful posts there. Posts people cite. Posts that, for better or worse, reside within the intellectual bellwether of the AI era.
And yet the site itself has roughly the navigational affordances of a filing cabinet with the labels removed.
There is an archive, technically (not on mobile though, tsk, tsk). There are posts. You can read them. But moving through the thing feels less like browsing a body of writing and more like being handed a stack of loose paper by someone important who assumes that you will figure it out. No meaningful topic structure. No reading paths. No real sense of "start here" or "this relates to that." Just a minimalist surface and the quiet implication that perhaps navigation is for people with insufficient conviction.
Maybe this bothered me more than it should have.
I should say this plainly: I am a Sam Altman fan. A Sam Fan, so to speak. He catches an extraordinary amount of criticism, some of it fair, some of it lazy, and some of it deranged in the way only the internet can make derangement feel civic. The threats and violence directed at him and his family are abhorrent. Whatever one thinks about OpenAI, AI risk, capitalism, governance, model releases, or the whole strange machinery of this moment, he is still a person who found himself in an impossible historical position and appears to be doing what everyone is doing: making the best decisions he can with incomplete information while the ground moves under him.
This is part of why I read his blog. I do not read it because I think it contains tablets from the mountain. I read it because it is interesting to watch someone in that position think in public. Which is also why I found the site funny. Here is one of the most consequential technology executives in the world, a person who could almost certainly use Codex to build a fully featured, searchable, cross-referenced personal archive before lunch, and instead the blog remains stubbornly minimal. Maybe that is a choice. Maybe he is busy. I have heard running the future is time-consuming.
Partly, though, this bothered me because I am old enough to remember when the web was, at its best, a system of paths. Not engagement funnels. Not an algorithmic slot machine. Blogrolls. Archives. Tags. Categories. Previous and next links. Ugly sidebars full of human intention. The old web was not always beautiful, but it was often legible. You could tell when someone cared enough to leave a trail.
So, naturally, I did the only sensible thing and built a tiny independent navigation layer for Sam Altman's blog.
I called it SamNav, because naming things is hard.
SamNav does not republish the posts. That felt important from the beginning. This is not a clone, not a mirror, and not some SEO mulch farm. The site indexes public posts, extracts public-safe metadata, organizes them, summarizes them lightly, and links readers back to the original source. Full text is used locally during indexing and enrichment, then stripped out of the public data file. The point is not to steal the writing. The point is to build the map I wanted while reading it.
This is a small distinction, but it matters. A lot of the modern web has turned "make something easier to find" into "copy it, surround it with garbage, and monetize the remains." I do not want that. I want the opposite: less extraction, more orientation.
The first version sounded simple enough. Crawl the archive. Extract the posts. Generate pages. Add search.
Then the archive page rendered its links client-side. Of course it did.
The static HTML did not simply hand over a nice list of post URLs like a civilized document. So the crawler had to use the public Atom feed as a discovery fallback, then fetch each post page politely from there. This is the kind of small technical detail that perfectly captures the state of the web: the machine-readable feed, that old sturdy mule, still quietly doing the job while the shiny front end waves its hands around.
Once the crawler worked, the rest became a small systems exercise. The raw crawl data goes into a local file. An enrichment script turns it into public metadata: title, date, URL, excerpt, summary, word count, reading time, topics, related posts, previous and next links. The final public index contains 121 posts across 14 publication years. I started with 13 controlled topics, because I did not want the tag system to become a junk drawer. There are 8 curated reading paths, because sometimes chronology is not the most humane way through a body of writing.
Search is powered by Pagefind, which is a small miracle for projects like this. It gives you static search without standing up a database, paying for a hosted search service, or pretending that a personal project needs infrastructure suitable for a regional hospital. The site itself is built with Astro, TypeScript, and Tailwind. It is static, fast, and boring in the best way.
Then there is the Navigation Severity Score.
This began as a joke and immediately became the conceptual center of the project. Each post gets a score from 0 to 5 estimating how annoying it is to find through the original site's native navigation. The labels include things like "Cartographic Incident," "Cave Inscription," and "Lost Scroll." It is not scientific. It is barely methodology. But it is consistent, and it points at something real.
Discoverability is not decoration. Navigation is not garnish. Archives are not just where content goes to die. They are part of the meaning of a site.
When writing becomes difficult to move through, it becomes easier to misremember, misquote, flatten, or ignore. This is true for institutional websites, personal blogs, newsrooms, government pages, and all the other digital basements where useful things go to become technically available and practically lost.
The joke of SamNav is that I built a navigation layer for Sam Altman's blog.
The less funny part is that I could build versions of this for half the web.
The final irony is that this dumb little project became one of my first real cloud deployments. I have been comfortable with Docker locally for a while. I like containers. They make sense to me. They are little boxes with rules, and this appeals to me.
But hosting the thing for real meant pushing bast the local terrarium. The production site became a Dockerized Astro static build served by Nginx. GitHub Actions handles scheduled indexing. DigitalOcean App runs the container. There were the usual cloud tax moments: pricing tiers trying to drift upward when no one was looking, port settings, enterprise software hiding behind a friendly dashboard.
But it works.
There is a particular satisfaction in seeing a small thing become publicly reachable. Not because it is important in the grand sense. It is a small index for one blog. It has search. It has topics. The reading paths are cool. It has a scoring system that judges the navigational consequences of minimalism.
It's fun to notice a missing piece of the web and build it. Not form a company. Not create a platform. Not develop a growth strategy. Just build the missing thing.