A journal of how this site got added features over time, from blog,
to second brain and integration with my book.
The featured map on the right acts as a filter, click on any node to see just that feature's history.
The services page is what I send people to when they ask what I do, and it read like a list. It is now a wide page with a proper hero, a scrolling client carousel, five service cards, the work itself with links to every piece, a Mermaid diagram of how notes turn into reach, two charts computed from the site data, testimonials in the site’s quote style, a timeline from the 2003 apprenticeship onwards, all talks and podcasts, and a “find me on” band at the end. Every list (clients, channels, charts) comes from data files, so it stays current. New: a dedicated Sponsors page with audience, packages, how a banner looks, and past examples.
After moving the callouts into the margin when there’s enough space, I also wanted to beautify them on mobile, or whenever the screen is not wide enough. Same for quotes. I wanted a less boxy style.
Callouts are now beautifully shown to the right, inspired by Ink & Switch. Not only does it look beautiful, but it also compresses the space vertically, making the articles more condensed and leaving more room for the actual text, since callouts are meant to add extra info without breaking the reading flow. These side boxes do that perfectly.
The same design is on the second brain (second slider): callouts and footnotes move next to the card, and the table of contents plus backlinks move to the left gutter, where the backlinks are now collapsible like the TOC.
Brain notes shows now the full RSS feed, not only a summary and previous wikilinks/embeds render as real links and images instead of raw [[...]] syntax. Each item’s guid also changes when a note is edited (I added a ?v=YYYYMMDD), so that updates also show up, instead of only new notes.
If an article got on the front page on Hacker News, it shows a marker on the page. This was always just where the text and article started. I moved that now up to the info just below the title, where we already have reading time or last updated date. It uses less space vertically, and looks nicer, too (IMO 🙂)
Instead of only showing the last couple of changes, some might be interested in what has changed in the last 30 days, or the last 100 entries. This is what I added, so you can browse through changes and use the NEW and UPD badges to choose what you want to see. Also notice the number; this is the number of words changed. If you click the note, you can see Every note’s edit history in the green dot by clicking it. This will help you navigate to what’s new, see what’s changed, and track how a note has changed over time.
A filter added also to just see new or updated notes only.
The page you’re reading this. It shows the journal of everything that changed on ssp.sh and the second brain since 2021, with a feature map for filtering. I added it so you can follow along with the many changes the blog, brain and book got and interconnect is otherwise only discoverable by accident. Not anymore 😉.
Add index.md to any brain note’s URL and you get the raw Markdown behind it. I added this for pasting into another tool, or for an LLM reading the site directly instead of parsing rendered HTML. See “Why I still Blog” or second brain note “Obsidian” as Markdown.
Recent notes on the brain now wear NEW and UPD badges I added — NEW with a word count for a fresh note, UPD with a plus/minus delta for an edited one — so skimming the list tells you how much actually changed, not just that something did.
I replaced tags with a unified exploration page in their place. You can filters every article by year, tag and category at once without needing to switch page (as before with /tags, /categories and /years.
The page it replaced was a flat grid of tag, fine for browsing a single tag, but you couldn’t combine a tag with a category, and there was no year filter at all. I brought the second brain’s top navigation bar in line with the blog too, so browsing works the same on “both” sites (brain and blog) of the site, no more different top nav depending on which page you were.
I added a feature like Obsidian’s block reference and heading embeds — ![[Note#^id]] — which used to show up as a broken image icon on the published site. They render inline now, as intended.
New Memories photo feed now show up as nodes in the interactive graph, right alongside notes, posts and book chapters. A memory tied to a place or topic is now one more thing you can wander into from any related node.
I tightened up Core Web Vitals across the board: cumulative layout shift on the home page dropped from 0.87 to 0.04, and on individual posts from 0.115 to 0.02. Nothing looks different; pages just stop jumping around while images and fonts load.
The search modal grew a permanent home: a dedicated /search page you can link to and bookmark, running the same engine that covers the blog and the second brain together.
I added /memories/, a photo feed of places and moments, imported from my photo library and Instagram archive with their own importers, filterable by year. It’s the most personal corner of the site, and deliberately tucked behind the About page instead of the nav.
Press / or Ctrl+K anywhere on the site and search now covers the blog and the second brain together, with filters for source and time range. I built it so a half-remembered phrase finds the note and the article that quotes it in the same result list.
I gave the front page a new hero built around a draggable, interactive node graph — Brain, Blog, Book, DE Vault, About — replacing the old “Welcome” heading and its categorized link lists. Before, the page was all text: lists of recent posts, popular topics and brain notes, with no picture of how the pieces actually connect. The latest posts and most popular brain notes still live below the graph.
I reworked the second brain’s note theme to match the main blog — the table of contents moved to a persistent sidebar docked on the right, and backlinks got a more visible, better-bordered treatment. Before, a note’s table of contents lived in a collapsed dropdown at the top of a narrower content column — easy to miss, and out of step with the blog next door.
I made hovering any second brain link - works from the blog, from a brain note, or from a chapter of the DEDP book. Shows a pop up a preview of the note itself. No click required to check whether it’s worth following.
For years, the graph only knew about notes. I connected it to blog posts and book chapters too, color-coded in the legend, so a single note now shows everywhere else it’s connected.
Mermaid diagrams in the second brain are often too detailed to read inline. Now a click expands one into a full-screen overlay, and the same expand works on the interactive graph at the bottom of every note — useful once a note’s neighbourhood grows past a handful of links. Close it with the × or by clicking outside. Also works on interactive graph.
I made it so a note that leads with a Mermaid diagram can use that diagram as its own social-preview (OG) image, instead of a generic placeholder when it’s shared on Twitter or Slack.
BASE database views from Obsidian — things like a Coffee Beans log or a Books list — now publish on the site as proper tables. I no longer have to manually rewrite one into a note.
Notes without a hand-written description now get a better auto-extracted one — I also sharpened the automatically generated preview (OG) image, so fewer notes share a generic-looking card when shared elsewhere.
I brought the graph view that had lived on the brain and the homepage onto individual blog posts too, so you can see what an article connects to without leaving it.
Inline links on the blog and in the second brain now use a lighter underline that stays out of the way mid-sentence but still clearly reads as a link — the same treatment on both sites.
I added a stats and social-proof grid to the services page — the sort of concrete numbers a visitor sizing up whether to hire me would want to see, rather than just prose describing the work.
I opened the Writer’s Room, it’s a behind-the-scenes page for my writing, rough and unfinished ideas included, plus what I’m currently reading. Think of it as the workshop next to the showroom.
The wikilink conversion from the year before became dependable: I rewrote how a [[Note]] turns into a URL so special characters and multi-word note names resolve correctly, and [[Note|display text]] aliases now render with their own label.
I replaced the emoji standing in for icons across the blog and the second brain — next to “Second Brain” in the title, in the nav — with custom SVG glyphs, so they finally render the same everywhere instead of depending on each platform’s emoji font.
I added an llms.txt file with a plain-text index that tells an LLM what lives on this site and where. Together with the raw-Markdown twins that came later, the whole site reads as comfortably for machines as for people.
I rearranged the home page’s plain bullet-list sections: Most Recent, Featured Topics, and the rest, visible on the left here, and the the bordered card panels shown on the right.
Instead of manually updating [[ ]] to a href links, the processing pipeline went live, converting [[Note]] syntax in blog posts into links pointing at the second brain.
Super handy, and one manual task less when copying or converting a note into a blog.
I made Patterns of Data Engineering a proper part of ssp.sh’s navigation rather than a separate destination: The nav entry, a cover image, and the merge that brought it all together landed across mid-to-late 2023.
Behind the scenes, I rewrote the note-processing pipeline behind the second brain as a Rust tool (obsidian-quartz), adding tag support and faster generation.
I switched the second brain’s dark theme to the Kanagawa color palette. You get the same muted, low-contrast scheme the rest of the site would later adopt.
I gave both the blog and the second brain a coordinated pass on fonts and colors, on the same day, so the two sides of ssp.sh stopped looking like separate projects.
I shared the second brain publicly for the first time, on Twitter: add publish: true to a note’s frontmatter and it goes live on the site, no separate publishing step. It’s the origin of every brain entry in this changelog since.
This is ssp.sh’s very first commit: a fresh Hugo site running the uBlogger theme. Everything else in this changelog builds on what started that day. Goodbye WordPress.