Site history
Changelog
A running log of what's changed on this site.
-
- Notes: the Vidoumo note is now set like a Japanese newspaper. A green nameplate with the wordmark centred and its katakana reading hung beside it, between two ruled vertical boxes, under a double rule; the article in dense justified columns divided by hairlines, with a reversed section tag and a heavy rule over each headline, pull quotes and figures cutting across the columns, a plain green Vidoumo notice closing the last column, and 終 at the end. It follows the site’s light and dark colours and drops to one column on a phone. The demo and popup images are redrawn from the current landing page (tabs, the kanji card), the YouTube and Vidoumo comparison is now two live captions, and there is a line on the Costa work that informed the landing page.
- Vidoumo 1.5.0: the dictionary card now shows each kanji in the word, with its radical, meaning and stroke count, and opens with the reading in hiragana and romaji. New release notes, and a Kanji section on /vidoumo (the other sections renumbered). The demo’s card on /vidoumo is the extension’s new card, a little taller, and on a phone-sized stage it covers the picture and scrolls.
- Vidoumo demo: the card now shrinks further when the stage is too short for it, so it fits above or below the caption without scrolling on a laptop-sized window. The caption shrinks with the stage too.
-
- Home: the featured Vidoumo banner now shows the demo’s browser window, with its YouTube and Netflix tabs and a caption over a film still, in place of the caption alone. It scales as one rectangle at every width and sits vertically centred.
- Projects: the Vidoumo image now shows the two-tab demo, with the Netflix controls, the caption and the popup.
- Vidoumo: the demo on /vidoumo is now a browser window with two tabs, YouTube and Netflix. Switching tabs puts the same clip in YouTube’s controls or Netflix’s, and the active tab shows whether the sound is on. The clip now starts muted.
- Vidoumo 1.4.0: it now works on Netflix. The Japanese subtitle you pick in the player gets furigana, English underneath and the dictionary card, saved words link back to the moment, and the level pill sits in front of the title. New release notes, and Netflix added to /vidoumo, the privacy policy, /vidoumo/levels, the note and the home banner.
-
- Guestbook and Library: the launch screens now scale up with the window, so the wordmark, text and start button fill a big screen instead of sitting small in the middle of it.
- Notes: Recall versus inference is now public, with the video of the talk at the top and the script beneath it. The page is dressed as the talk's own opening slide: the oxblood field, the red frame, heavy white Inter with a blinking red caret, and each section of the script marked like the next slide. The title is filled white into red like the slides, with a blinking caret, the palette shifts from red to indigo as you scroll, and the video floats into the corner when you scroll away mid-play. The script sits centred on a wider measure, with each chapter marker hung in the left margin.
- Dark mode: rebuilt as a near-black with only a trace of green, in place of the deep forest green. Borders and hairlines are quiet greys that hold the layout without glowing, text is a soft off-white, and the accent green is a notch gentler. The big masthead bands (MRFRISBY, PROJECTS, NOTES) sit under a veil in dark mode that takes some of the saturation and brightness out of the colour but leaves the lettering crisp.
- Notes: The Aestheticisation of Commerce now has a dark version of its typed letter: charcoal paper on a near-black desk, pale ink, a lighter blue biro, and the highlighter marks flipped to dark text on yellow.
- Navigation: pages now load normally, with the browser doing the fade between them, in place of the router that swapped pages in place. The router ran each page script only once per visit, which is why /notes would sometimes come up without its stamp and diamonds until a refresh, and the same would have happened on other pages. Browsers without the transition just skip the fade.
-
- Projects: added Notes (the tiled /notes page, with its masthead, terminal search and a tile cut from each note). It sits with the other pages from this site on /projects.
- Notes: the diamonds now run all the way round the grid. Where a rule meets the edge there is a half diamond, a quarter at each corner, and the large tile’s own inner rules end in half diamonds on the edge too.
- Notes: /notes is now a grid of tiles instead of a list. The newest note is a large tile and the rest sit in equal cells, divided by thin rules with a small diamond where they cross. Each tile takes its look from its note: the typed letter, the house’s parchment and map, the Vidoumo banner, the homepage hero, a /coach terminal window. The page has a full-width NOTES masthead, with the note count as a postage stamp and the RSS feed as a postmark beneath it. Search is a terminal row; as you type, matching notes (by title, description and text) drop down in place, and the grid underneath never moves. Press / to jump to it.
- New note: The Aestheticisation of Commerce, on corporate PR and org mechanics becoming cultural output. It’s set as a typed letter on a clean sheet, with a big condensed display title and hand-drawn highlighter marks.
- Home: a new intro in the Profile section, in place of the old job-title paragraphs.
- Projects: added Coach (my design leadership thinking as an MCP server, with a link to the note) and Design Leadership Memos (the newsletter). They show on /projects only, with a Newsletter type and an AI experiment type in the filter.
- Home: the “All projects” link now sits at the right of the Projects header, as “All →”, instead of taking a row of its own. On /projects, the live /now frame is centred in its box.
- Projects: /projects now shows six more projects from this site as their own entries, at the bottom of the list: Library, Music, Guestbook, /now, Nakasendo and Morning Observations of the Sea. The morning.video entry is folded into Morning Observations, which is being turned into that app. Music links to the note on how it is built; the guestbook and library show their inside screens; /now is the live page in a frame; Nakasendo scrolls and Morning Observations plays, as short silent videos that start when they come into view.
- Projects: a row of type pills under the header filters the list (Chrome extension, Web app, Photo essay and so on). Each type has its own colour, shared by its pill and its projects. The row scrolls sideways with no visible controls, “All” stays pinned, and the page keeps its height so nothing jumps when you filter. Heavy media on the page loads only when it is near the screen.
- Vidoumo: the featured banner on the homepage now shows the release number, and its caption sample stays in the corner, behind the copy, when the banner is narrow.
- Vidoumo: removed the intro lines under the heading on /vidoumo/levels and in the /vidoumo hero, since the banner further down the page links to the working. The levels page now has a “Back to Vidoumo” link in its header, fits a phone screen, and its word-share chart reads clearly at narrow widths. The Vidoumo note has a new section on how the level is estimated, linking to the explainer, and the note drops its zip history and the review-mode aside. The two example video titles in the level section now stay on one line and fade out at the edge. The banner linking to the levels page is now headed “How Vidoumo estimates JLPT levels using Vocabulary, Kanji, Grammar & Speed”, with no line beneath it.
-
- Vidoumo 1.3.0: the JLPT level estimate now counts grammar as well as words, kanji and speed, reads easy videos as easy, and says “unrated” when a video has too little speech. New release notes, credits and a line in the privacy policy on /vidoumo.
- New: /vidoumo/levels, how the Vidoumo level estimate works: the four signals, where every number comes from, and how far to trust it.
- Vidoumo: the level section on /vidoumo now shows its two example videos side by side, with the new Grammar row, and the demo player’s pill reads “JLPT ~N3”.
-
- Projects: the mrfrisby.com slideshow now also shows the guestbook, the Nakasendo photo essay and the tools page.
- Projects: replaced the V Clarke Therapy screenshot, which was a crop of about half the page width, with a full-width capture like the others.
- Vidoumo: removed the folded "Install from the zip instead" steps from /vidoumo. The zip is still one link away in the intro, for anyone who wants it.
- Vidoumo: the release notes on /vidoumo now say how to update. Installs from the Chrome Web Store update themselves; installs from the zip are replaced by hand.
- Vidoumo: removed the three-step install row from /vidoumo, since adding it from the Chrome Web Store explains itself. The "Install from the zip instead" steps stay, folded away, for browsers that will not use the store.
- Vidoumo: the /vidoumo page now has a section for the JLPT level estimate, "How hard is this video?", with the pill and its tooltip (word levels, kanji, speed of speech) and a switch between a slow cooking lesson and a news report. The other feature sections are renumbered, and the intro mentions the level. The demo player's control bar also carries the pill, before the play button, with the same tooltip on hover.
- Vidoumo 1.2.4: a JLPT level estimate now sits in front of the video title on YouTube, such as "JLPT N3–N4". It is worked out in the browser from the words, the kanji and the speed of speech in the Japanese captions, and hovering it shows the breakdown. Also: automatic-caption lines with no timing of their own stay up for as long as their words suggest, and a stray one-word tail of English no longer flashes up. New release notes, credits and a line in the privacy policy on /vidoumo.
- Vidoumo is on the Chrome Web Store. The /vidoumo page now leads with "Add to your browser", which says "Not available for Safari" (or Firefox, or "Open on a desktop browser" on a phone) where it cannot be installed. The install steps are the store's, and the zip is a secondary option with its own steps for a browser that will not use the store. The homepage banner now says "Get Vidoumo", and /now and the Vidoumo note say it is on the store.
-
- Vidoumo 1.2.2: removed the unused end-of-video quiz code from the extension and added a licences file covering kuromoji, its IPADIC dictionary and the other bundled code. Nothing changes on screen. New release notes on /vidoumo.
- Vidoumo: added a privacy policy at /vidoumo/privacy, linked quietly from the page's "What leaves your browser" notes. It sets out what the extension stores on your device, what it sends to Jisho and, only as a last resort, Google Translate, and what it never collects. The page itself is kept out of search results and the sitemap.
-
- New: /vidoumo, the landing page and direct download for Vidoumo, a Chromium extension I built that adds furigana, English translation and word lookups to Japanese YouTube captions. The page runs a real YouTube clip with the extension's captions playing over it in step with the video — clickable words, a dictionary card that pauses the video, saved words with a link back to the moment, and the toolbar popup with its switches. Furigana and translation get their own before-and-after spreads over stills from the clip, and the page ends on the install steps a plain account of what leaves your browser (subtitle lines go to Google Translate, clicked words go to Jisho), and credits for the dictionary data (Jisho and JMdict) and the tokenizer (kuromoji and IPADIC) it relies on.
- Vidoumo: gave the page a big wordmark built the way the homepage hero is — fitted edge to edge with a small bleed — with ビドウモウ set vertically inside the I, and put the demo's browser window on a mesh-gradient backdrop. Added Fathom events for downloads and the demo's interactions, documented in docs/fathom-events.md.
- Homepage: added Vidoumo as the top featured project, with COSTA second. Its banner has its own look rather than a recolour of COSTA's — the same mesh gradient as its landing page, fading to near-black on the right behind a small piece of the extension's caption UI, which hides itself when the banner is too narrow to hold it clear of the text. The banner component can now take its own call to action, so this one says "Download Vidoumo" instead of "Visit".
- Homepage: the changelog block in the left column was one truncated line floating in a lot of empty space. It is now a feed of the latest few changes, grouped by date and clipped to two lines each, that fills whatever height the column has and fades out where the space ends.
- Homepage: removed the Speaking entry and the house-history note from Updates. The talk is over, and the house project has its own featured banner, so neither needs a line in the list as well. The live "latest note" entry now skips the house note.
- Updated /now: added Vidoumo to what I'm working on.
- Vidoumo 1.1.1: captions no longer type out. The extension used to redraw its overlay every time YouTube added a word to an automatic caption, so the box resized and flickered as lines arrived. It now reads the whole caption track the player downloads and shows each phrase complete at its time, translating and splitting the next few lines into words ahead of time so they appear finished. Automatic captions are rebuilt from YouTube's short rows into proper phrases, paced to a normal speaking rate, and sound notes like [音楽] show on their own. Also fixed the "Extension context invalidated" errors you got after updating the extension with a YouTube tab open. Live streams and anything not captured still use the old method of reading the screen.
- Added a release notes section to /vidoumo, starting with what changed in 1.1.1 and how to update.
- Notes: published "Vidoumo," on what the extension does, how it reads Japanese subtitles and ranks dictionary results, and the design decisions behind it — with a wide hero shot of the extension running over a real video, a before-and-after of YouTube's caption against Vidoumo's, and the toolbar popup.
- Notes: section headings (##) now have their own style — the same serif as the note's title, with room above and a tight gap below. They had none, so a heading sat flush on the paragraph under it. Also, drafts can now be previewed on the local dev server while staying out of every build, so a note can be read before it is published.
- Vidoumo: fixed the page on phones. The before-and-after caption frames were wider than the screen and clipped their captions; they now fit, with the stills behind them. Also fixed the download banner wrapping its arrow onto a second line, made the video's play, speaker and toolbar buttons big enough to tap, and moved the dictionary card on small screens so it no longer covers the caption's English translation.
- Vidoumo 1.2.1: the English under each line now comes from the best source available. If the uploader added English subtitles, those are used; if not, YouTube's own English translation of the Japanese, rebuilt into whole sentences and shown as the sentence being spoken; and only if neither works does a line go to Google, as before. Nothing is sent to Google when the English comes from YouTube. To get at the second track the extension replays the player's own request, token included, because YouTube returns an empty track to anyone who asks without it. The English stays with its Japanese line rather than arriving after it. Updated /vidoumo with the release notes and the privacy wording.
-
- Trimmed the AI paragraph in /now's "what I'm thinking about" down to the actual point — the long-term viability of a career in tech — without the specifics.
- Turned the /now wallpaper up a bit — opacity from 0.6 to 0.8, so the sunset reads more clearly behind the windows.
- Switched the /now saved-video embed to youtube-nocookie.com — same player, but it skips YouTube's regular tracking cookies and cuts down on the ad/analytics beacon noise a content blocker would otherwise flag in the console.
- New note: "The Kitchen Project" — the six-month renovation diary I posted as a Bluesky thread in 2025, from the first demolition day to the finishing touches, now up as a proper note with all 82 photos. Backdated to when it actually happened. Also added a couple of new figure layouts for notes generally — a full-bleed single image and a 2-up row, for photo-heavy posts like this one.
-
- Music: the currently-playing track is now marked inside an album's tracklist, not just on the album itself — a pulsing dot and highlighted name on the matching track, wherever the tracklist appears (the Now Playing panel, or opening the same album from the grid). Matches on a normalised track name, since Last.fm's "now playing" name and its own tracklist for the same album aren't always byte-identical.
- Fixed a real data bug in the music library: two entirely unrelated real bands are both named Placebo (UK alt-rock, and a 70s Belgian jazz-fusion group), each with a self-titled album — the original library build matched the wrong one, showing the jazz record's cover, year and genre for what is actually a Placebo (rock) album. Corrected against the right MusicBrainz release. Last.fm's own album page for this exact title pair has the same two-bands-conflated bug baked in on their side (right bio, wrong tracklist) with no query parameter to work around it, so the tracklist for this one album is now sourced from MusicBrainz directly rather than Last.fm — every other album is unaffected.
- Updated /now — what I'm working on and what I'm thinking about, both a bit stale.
- New /now wallpaper — a Devon sunset. Dropped the grayscale filter that every previous wallpaper photo had run through, and swapped the dot-matrix overlay for a plain vignette; this one's all about the colour, so it stays punchy and mostly full-brightness, just darkened toward the edges to stay out of the windows' way.
-
- Homepage: fixed a structural hover/click bug in the Projects grid — a block-level link only sized to its own content, so on rows where one column's copy ran longer than the other, the shorter link's hover and click area fell short of the grid cell it visually filled. Now stretches to match, regardless of future content-length mismatches.
- Notes: published "A house, recorded," introducing the private house-history project — a full-width hero masthead, a few real numbers on the scale of the research, and a password field for anyone who already has access, alongside the usual ask-for-it-by-email route.
- Extracted the homepage's featured-project banner (the full-bleed branded card, including its password-gated variant) into a shared component, and reused it to close out the house-history note — same lockup as the homepage's /house entry, rather than a bespoke password form. Also fixed a real bug this surfaced: a couple of full-bleed elements were breaking out to the true browser viewport width instead of the site's own page-frame, bleeding past its border on wide windows.
- Notes: published "Rebuilding the shelf," on why /music is a full jewel-case simulation rather than a plain list.
- Notes: added a heroFit: "natural" masthead option — the full hero image at its own aspect ratio with no cropping and no scrim, title/description overlaid on real dead space in the image rather than object-fit: cover gambling on where a forced-height crop lands. Used on "Rebuilding the shelf"; the existing cropped-and-scrimmed masthead (used on the house-history note) is unaffected.
- Fixed the wrong description on /notes and its RSS feed — was calling the notes section "design leadership, software, and practice," which was never really what it's about.
-
- Homepage: added Come to Art Club (cometoartclub.com) to the Projects section, and turned the non-featured projects into a 2×2 grid instead of a single-column list, so the section doesn't keep growing taller as more sites get added below the featured banner.
- Homepage: Projects can now feature more than one banner at once — added a second, password-gated entry (an OS-map-styled card with a password field and a View button in place of the usual link) for a private research project I'm sharing with specific people rather than publishing openly.
- Added a small Netlify Edge Function that password-gates a page ahead of the static file itself, so a direct hit on the URL with no referrer still shows a password prompt, not the content — reusable for other pages down the line, not just this one.
-
- Homepage: rebuilt the Projects section into a mini-portfolio — COSTA is now the featured project, shown as a full-bleed branded banner, with the other sites I've designed and built listed below it as plain colour-coded type (title over one-line description, each set in its own project's accent colour). Replaces the old full-width "Featured Project" band that pulled a random shop title from Etsy on every page load. Dropped morning.video from the list; added Outpost and a client therapy-practice site.
- Homepage: pulled the changelog activity widget out of the Updates block into its own component and moved it under Writing in the left column, so the two columns stay roughly balanced now that the Projects column is shorter. The recent-updates list stays on the right.
- Homepage: the changelog widget now grows to fill the left column, so its hover highlight reaches the column edge instead of stopping short; removed a doubled hairline under the projects list.
-
- Homepage: fixed the Featured Project random pick flashing the static fallback title/photo before the real pick replaced it — the section now stays hidden until the script has actually populated it, whether with the random pick or (on fetch failure) the static fallback.
- Homepage: fixed the Featured Project block's black background/border only appearing once content loaded — the card itself now renders immediately, and only the image/text fades in once populated. Also added "Satirical Notebooks for the Politically Resentful" to the block so the joke reads clearly rather than as genuine political nonfiction.
- Homepage: fixed the Featured Project block occasionally taking seconds to appear — it was calling the same endpoint /shop uses, which fetches Etsy data for every live title (~25, with 429 retries) to serve a full catalog the homepage never needed; now a random pick is made first and only that one title's data is fetched. Also added a pulsing skeleton placeholder so the wait (however short now) doesn't read as broken, crossfading into the real content once it's ready.
- Homepage: added a skeleton CTA button to the Featured Project loading state — without it, the button popping in on top of the already-settled skeleton text read as a jarring second flash.
-
- Homepage: Featured Project now picks a random live title from the catalog on every visit (including client-side navigation back to home) instead of always showing the same fixed one, shown as a background photo blending into black via a gradient scrim, with the title/CTA overlaid.
- Homepage: added a Featured Project band introducing Covert Stories, with a live featured product from the shop.
- Covert Stories: new title, "Manufacturing Jobs" — a notebook on Andy Burnham's manufactured route to No. 10 (a resigned seat, two by-elections, no public vote on the actual leadership).
- Homepage: rebuilt the Featured Project band as a photo hero (aspect-locked image + flexible text column) rather than two half-width blocks, picking a random live title on every visit.
- Homepage: moved the Featured Project band up above the Work/Writing/Projects/Updates grid — a feature belongs higher on the page.
-
- Published new note: Can personal context servers improve AI outputs? — a blind-judged test suite pitting the coach MCP server against unaugmented LLMs.
- Coach MCP: added get_talk_transcripts tool — full transcripts of three conference talks, widening the corpus beyond DLM writing.
- Coach MCP: folded the old "Running a Design Team" blog post into the get_dlm_writing corpus.
- Added /files for unlisted static asset hosting — first file is a PDF report shared via direct link only.
-
- Published new note: Mute Mover — Python scripts to migrate Bluesky mutes and muted words to Mastodon.
- Notes: inline code styled to exactly match /coach — salmon with border, dark mode aware.
- /colophon: fix mobile layout — prose and diagram no longer overflow viewport.
- 404 page: animated black hole — lost content spirals into the event horizon.
- Notes: GitHub repo widget — fetched at build time, shown when repoUrl is set in frontmatter.
-
- /now: merged NOTES.LOG into NOW window — NOTES field links to latest note, SITE field shows 30-day changelog strip and link.
- /now: BUILD now shows live git commit hash; UPDATED shows date of latest commit.
- /tools: added Riese & Müller Multicharger2 eBike, Dia browser; updated MacBook Pro to M4; added UHF link; Software note updated.
-
- Added /zine — Nakasendo newspaper and print pages.
- /tools: 2-column layout; expanded with new hardware (TRMNL, Stream Deck Neo, Lofree Touch mouse, KAP MV Classic Dark, DJI Mic 2, AirPods Pro), instruments (Roland Kiyola, Fender Telecaster, Art & Lutherie, OP-1, Yamaha THR5), Antler/Cubitts/Tom's Studio analog items; links added throughout; Home Server renamed Software; Development merged into Software.
- Homepage: added changelog activity widget to Updates section — shows latest entry and a 30-day commit-graph style strip.
-
- Homepage: Writing section moved into the left column alongside Work. Booking.com's two roles now listed under a single header. Updates feed now auto-includes the latest note from /notes at build time.
- Homepage: project, writing, and update list items are now full-block links with a bg-surface hover highlight and smooth transition.
-
- Added 66 new photos to the south Devon sea essay, spanning August 2022 to June 2026. Total now 180 photographs. Sun position and Brixham tide data backfilled for all entries.
- Fixed data quality issues from the Roon export: normalised artist names with inconsistent "The" prefix (Beach Boys, Smashing Pumpkins, Avett Brothers, Enemy), fixed diacritics (Bjork → Björk), normalised & vs and (Belle and Sebastian, Tegan and Sara), fixed punctuation (Fontaines DC), stripped raw rip filenames from album titles, and fixed a Beatles typo. 2 duplicate entries merged.
- Further music data cleaning (pass 3): artist name fixes (Alanis → Morissette, Sara and Tegan → Tegan & Sara, The Charlatans UK, Sigur Ros, The XX, Ólafur Arnalds collab, boygenius casing). Deduplication of SACD-R variants (Björk Medúlla, Vespertine), Nirvana anniversary editions (x3→x1), The xx bonus disc, combined releases (James Laid/Wah Wah, RATM Battle/Renegades), Sigur Rós ( ) / [Untitled], Wish You Were Here 50. 1444 → 1433 albums.
- Further music data cleaning (pass 2): edition deduplication (Rubber Soul x4, Homogenic (1997), Every Kingdom Deluxe, Bon Iver Limited Edition collapsed to single entries), corrected IDLES casing, FKA twigs casing, and Daryl Hall & John Oates separator variant. Fixed a class of self-titled album corruption where Roon appended a format tag with an em-dash (e.g. "ULTRA MONO – FLAC"). 1450 → 1444 albums.
- Improved album artwork coverage on /music — the iTunes matching script now handles artist name variations (The X vs X, & vs and), strips more edition/format suffixes, uses a two-pass search strategy, and falls back to Last.fm for albums not in the iTunes catalog. Roughly 140 additional albums gained cover art.
- Removed the album name/artist hover overlay from CD covers — the label below already shows this information.
- Music: open CD case spine now aligns to the panel center line. Dynamic panel text contrast now computed from actual album color luminance rather than a fixed dark/light override — prevents dark text on dark panels and white text on bright covers.
- /colophon: added Data section covering the four build-time pipelines (music via Roon/iTunes/Last.fm, library via shelf photos/OCR/Hardcover, photo essays via EXIF+bank tx+drafts, DLM RSS). Stack section prose tightened; architecture diagram trimmed to remove empty right-hand space.
-
- Fixed key presses (h, j, k, l) being swallowed on /ask after visiting a photo essay — navigation handlers now clean up properly when leaving the page.
- Fixed the MRFRISBY hero not appearing when navigating back to the home page.
- Fixed a wide empty column gap on the library page on mobile.
- Opening a CD on /music now centers it in the view — other CDs from the row animate to stack underneath it, their titles fading out. The inside sleeve shows the actual cover art. Track listing moved from the sleeve to the album detail panel. Fixed a bug where clicking a peer CD from the same row produced a broken visual state.
- The homepage now pulls the latest DLM post automatically at build time from the RSS feed — no manual update needed.
- Added /colophon — a short technical essay on the stack, type system, colour system, semantic layer, infrastructure, and interface philosophy. Includes a wiring diagram showing how data sources connect to pages at build and runtime.
- Added /changelog page (this one), linked from the footer. Entries link to the pages they describe.
- Widened the home (/) link's click target to reach the left edge of the page.
-
- Added "The advocate's trap" to the homepage and to the /ask knowledge base.
- Switched the colour system to OKLCH — a perceptually uniform colour space where equal lightness steps look equal. Hue rotates subtly from warmer (dark) to cooler (light). A hidden /colours reference page documents the full system.
- Fixed light mode accent colour — the previous value was almost invisible on the mint background.
- Added smooth page transitions: outgoing pages fade out, incoming pages slide up.
- Fixed dark mode on /ask — the panel and dock now use the site's dark green palette rather than a fixed cream.
- Added structured data (JSON-LD), theme-colour meta tags that match the palette in both modes, and a WebMentions inbox.
- Typography improvements: hanging punctuation, optical font sizing, tighter tracking on the large heading, and animated underlines on inline links.
- Fonts and hashed assets now get long-lived cache headers for faster repeat visits.
- Added humans.txt and a security contact at /.well-known/security.txt.
- /music page colours now track the site palette automatically rather than using their own hardcoded values.
- /ask gains smooth answer fade-ins, respects reduced-motion preferences, and the ring gradient now uses the OKLCH colour values.
-
- /now page redesigned as a BIOS-style desktop with draggable windows. Seven panels covering what I'm working on, thinking about, where I am, and live feeds from Bluesky, Last.fm, Hardcover, and Trakt.
- Homepage: work history expanded with earlier career entries. Writing section moved to a full-width strip at the bottom.
-
- Site rebuilt from scratch in Astro. New editorial design with the pistachio palette, dark and light modes, self-hosted fonts, and the MRFRISBY hero letterform that fills the full page width.
- Halftone photo treatment on the profile portrait — blended into the page background using mix-blend-mode.
- /now page draws live data at build time from Last.fm, Hardcover, and Trakt.