Skip to content

I Rebuilt My Site From Scratch

A tour of the new foggymtndrifter.com: an Apple inspired design, a search box that answers questions, comments that look like text messages, and a few other things I picked up along the way.

September 20, 2026 6 min read
AstroTailwindWeb DevelopmentDesign
Contents

If you have been here before, things look a little different. I pulled the whole site down and built it again from the ground up. Here’s what changed and why.

Making it feel like an app

The thing I kept coming back to was that I wanted the site to feel like an app, not a web page. On a phone it should feel like an iPhone app. On a laptop it should feel like a Mac app.

A screenshot of the homepage on a desktop device.

So I went and read Apple’s actual design guidelines instead of guessing, and the most useful thing I found was a rule about their new Liquid Glass material. Apple is pretty direct about it: glass belongs on the stuff you navigate with, and not on the stuff you read.

That one sentence shaped the whole site. The toolbar at the top, the tab bar at the bottom of your phone, the search panel, the main buttons: those are all glass. Everything you actually read sits on solid cards. My first pass had glass on everything, which looked neat for about five minutes and then just made it hard to tell what was what.

Moving between pages is part of it too. Nothing reloads any more. The toolbar and the tab bar stay exactly where they are, the page underneath cross fades, and when you open a post the title lifts out of the row you tapped and lands at the top of the article. It is the same move an app makes when a list row opens into a screen, and it is the thing that finally made the site stop feeling like a website to me.

A few other Apple things made it in:

  • The tab bar icons fill in when you are on that page, like they do in iOS
  • Rounded corners are sized to sit inside each other properly instead of all being the same
  • Everything responds to the accessibility settings for reduced transparency, higher contrast, and reduced motion

That last one is not decoration. If you turn on Reduce Transparency, the glass actually turns solid. Apple calls those settings out specifically, so they are worth doing properly.

There is an honest gap there though, and I would rather say it than let you find it. A page can only react to Reduce Transparency if the browser is willing to tell it, and Safari has never shipped that. Chrome will tell you. Firefox keeps it behind a flag. So on an iPhone or a Mac, which is exactly where this site is trying hardest to look at home, the glass stays glass no matter what you have turned on. That one bothers me.

Search, and an assistant you can talk to

There are two separate things here, and they used to be tabs of the same panel. Splitting them up was the right call.

Search is search. Hit the search button, or press Command K, and type. It runs entirely in your browser, so there is no waiting on a server between keystrokes.

A screenshot of the search modal on desktop.

The assistant is a conversation. It opens as its own thread, styled like Messages, and you can keep going: ask a question, then ask a follow up, then another. It remembers what you were talking about, so “what did he do before that” works without you repeating yourself. The thread sticks around while you move between pages.

A screenshot of the assistant modal on desktop devices.

It also knows what you are looking at. Open it on a post and ask it to summarize this page, and it will.

The important bit is that it only knows what is on this site. It reads my posts, my CV, the pages, and the comment threads underneath the posts, finds the parts that match your question, and answers from those. If you ask it something the site does not cover, it tells you so instead of making something up. I tested that specifically, because an assistant that invents answers about me is worse than no assistant at all.

The comments are in there because I end up answering things in a thread that never make it into a post. If it uses something you wrote, it tells you that you wrote it rather than putting your words in my mouth.

One small thing I like: when the answer points somewhere, you get a button rather than a page name to go hunt for. Ask how to get in touch and there is a Send a message button sitting right there.

It is still AI though, so it can get things wrong. The panel says as much.

Every post gets a TLDR

There are three bullets at the top of each post now, summarizing it.

Those are written by AI, but not when you load the page. They are generated once when I write or edit a post, cached against a hash of the text, and committed with the post. So the site never calls a model to show you one, and re-running it costs nothing until a post actually changes. Serving a post is as cheap as it was before.

A screenshot of a blog post, showcasing the TLDR AI written summary feature.

Comments no longer use GitHub

Comments run entirely locally in the site’s database. Replies tuck in underneath the comment they are replying to with a little thread line, the way a reply thread looks in Messages.

You can also optionally provide an email address to receive email notifications when you receive a reply from me or someone else visiting the site. An email, if provided, is never used by me for marketing or unsolicited emails.

A screenshot of a blog post, specifically showcasing the comments section.

My email is off the site

I took my email address off entirely. It is not in the page text, not in a mailto link, not buried in the metadata.

There is a contact form instead. When you send something it goes straight to my email. Spam protection is layered: a hidden field bots fill in and people never see, a check that you did not submit the form faster than a human could type, a limit on how often one person can send, and Cloudflare Turnstile on top of all that.

A screenshot of the contact page, showcasing the contact form.

Coffee money, without Stripe

The old site had a Buy Me a Coffee button wired up to Stripe. Stripe was more hassle than it was worth for what amounts to pocket change, so that is gone.

It uses Cash App or PayPal now. You pick an amount, it opens Cash App or PayPal with that amount already filled in, and the payment happens over there. No card details ever touch my site, no keys to rotate, nothing for me to maintain.

A screenshot of the “Buy Me a Coffee” modal.

What I’m listening to

There is a little capsule near the bottom of the screen that shows what I have playing, styled after the mini player in Apple Music. If I am not listening to anything, it is not there at all.

A screenshot of the “Now Playing” widget on the website.

It used to sit there the entire time you were reading, which got old fast. Now it only comes forward for about six seconds when the track actually changes, then folds down into a small bubble with just the sound bars on it, holding still so it is not twitching away in the corner of every page. Tap the bubble and it opens back up. On a laptop it stays open for as long as your pointer is resting on it. If you want it gone, swipe it off the side on a phone or hit the X on a laptop and it stays gone for an hour. It also remembers the last track you saw, so it is not introducing the same song to you on every page you open.

This one took some digging. I use Apple Music, and Apple has no way to ask what someone is playing right now. None. The closest thing they offer is a recently played list, and getting at even that needs a paid developer account and tokens that expire on you.

So it goes through Last.fm instead. I already run a scrobbler app that reports what I play, and Last.fm marks the track you are currently on with a flag that means “this is playing right now.” The site reads that flag. It updates on its own every twenty seconds, so you do not need to refresh anything.

The boring details

The site runs on Next.js and Tailwind, and it is hosted on Vercel.

The old posts all came over, so nothing you may have read here before is gone.

If you find something broken, the comments are right below. Or use the contact form, which now goes somewhere I will actually see it.

Loading comments…

Your email is never shown. Leave it to hear when someone replies.