Visual Changelog

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.

Changelog

Services page rebuilt as a company page, plus a dedicated Sponsors page

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.
services page after: hero with proof tiles, logo carousel, service cards services page before: plain text intro and stats tiles

Quotes and callouts got a new, less boxy design

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 new: one tinted block with an uppercase type label callouts before, more boxy

Callouts are now showing as beautiful side panel (margin notes)

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.

callouts new callouts before
second brain: callouts as margin notes, TOC and backlinks in the left gutter second brain: callouts inline, TOC and backlinks inside the card on the right

RSS feeds now render full content, and shows all updates

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.
RSS item showing rendered links and image RSS item showing raw [[wikilinks]] and no image

Hacker News Badge less intrusive

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 🙂)
HN badge change on blog HN badge change on brain see it live →

See up to 100 recently changed notes (expandable)

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.

recent change notes expanded list of the last 100 changed notes with NEW/UPD badges see it live →

This page: News visual Changelog

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 😉.
This changelog page is an interactive feature graph beside an illustrated timeline of changes see it live →

Recent notes now wear NEW and UPD badges

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.
"Recent Notes" index on the Second Brain, with NEW/UPD badges and word-count deltas on each entry

Every note's edit history, one click away

Every note now has a “recently updated” mark, added to show you via popup each revision by date, with the words added and removed in that pass.
A Second Brain note's "recently updated" indicator, expanded to show a per-date word-change history

New unified Explore page for Posts (replaces Tags)

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.

New Blogs explore page with combined tag/category filters and a year filter, replacing the old Tags page The old Tags page — a grid of tag pills with article counts
see it live →

Partial note embeds render instead of breaking

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.
Block references like Obsidian

A faster page load

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.

Dedicated Search Page

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.
Dedicated Search Page see it live →

Memories: a photo feed joins the site

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.
New Instagram, Flickr like memory page see it live →

One search box for the blog and the brain

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.
Full-text search modal covering both the blog and Second Brain, with source and time-range filters see it live →

A landing page you can drag around

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.
New sspaeti.com landing page with a draggable interactive node graph linking the blog, brain, book, and vault The old sspaeti.com landing page with categorized link lists for the blog and Second Brain
see it live →

Brain notes picked up the blog's layout

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.
Second Brain note page after the theme update — table of contents docked to the right, backlinks styled to match the blog Second Brain note page before the theme update — collapsed table of contents, narrower layout

Hover a Second Brain Link will show a preview

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.
hover feature preview

The graph learned about posts and chapters

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.
Second Brain interactive graph now linking notes to blog posts and book chapters, with a color-coded legend

Mermaid and interactive graph can be opened full screen

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.
Mermaid can be full-screen

A Mermaid diagram as a note's preview card

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.
Mermaid can be full-screen

Smarter auto-generated descriptions and previews

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.

Softer link underlines, on both sites

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.
Before/after comparison of inline link underline styling on a Second Brain note

A stats grid on the services page

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.
Stats of all social media see it live →

Tags got easier to scan

I redesigned the Tags page around pill-shaped tags with counts, grouped into Popular Topics and All Topics instead of one long undifferentiated list.
Redesigned tags on the Tags page, compared side by side between local dev and the live site see it live →

Wikilinks grow up: reliable URLs and aliases

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.

Emoji icons became custom SVGs

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.
Second Brain home page with emoji icons replaced by custom SVG icons in the title and navigation

llms.txt: a site map for language models

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.

Second Brain wikilinks inside the Blog gets rendered as in link

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.

The book joined the site's navigation

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.
see it live →

Brain's publishing engine rewritten in Rust

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.

Brain analytics switched to GoatCounter

I moved the second brain’s visitor analytics off Google Analytics and onto GoatCounter, the same privacy-friendlier tool the blog already used.

Brain's dark mode switched to Kanagawa

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.

The Second Brain goes public

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.
see it live →

ssp.sh launches on Hugo

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.
see it live →