This site is intentionally opinionated.
I did not want another content system that ships a server stack, an admin runtime, a plugin sprawl, and a page that needs hydration just to render text. I wanted a blog that behaves like infrastructure notes should: direct, fast, and easy to reason about.
The baseline rule
The baseline rule is simple: reading should never depend on the most experimental part of the site.
That is why the homepage can carry a WebGL globe while article pages stay close to static HTML. The globe is an accent and a signal surface. The writing is the product.
Why keep the globe at all
Because it says something about the kind of site this wants to be.
I care about systems that are both useful and expressive. A visitor globe is not necessary, but it is a compact demonstration of several ideas working together:
- static-first rendering
- edge data ingestion
- privacy-aware aggregation
- a visual layer that feels alive without hijacking the whole page
The first bug was embarrassingly small
One early version gave me a perfect fake victory.
You would land on the site, your dot would appear on the globe, and I would feel very pleased with myself for about ten minutes. Then the point would quietly disappear even if you were still standing on the page staring at it.
The cause was not exotic. The live window was fifteen minutes and the browser only sent the beacon once. So the system was technically doing exactly what I told it to do and emotionally doing the opposite of what I meant.
That bug was useful. It forced me to stop treating the globe like a visual toy and start treating it like a product surface with trust implications. If a “live” feature feels fake after fifteen minutes, people notice.
The trade-off that matters
The hard problem is not drawing points on a sphere. The hard problem is coordinating state without accidentally building a surveillance feature or a fragile distributed race.
That is why the first production version will not chase perfect real-time semantics. It will prefer a short-lived snapshot model:
type VisitorPulse = {
lat: number;
lng: number;
observedAt: string;
accuracy: "coarse";
};
That small decision does a lot of work. It keeps the budget predictable, it softens consistency requirements, and it avoids treating a personal blog like an ad-tech dashboard.
What gets built next
The next meaningful milestone is not another visual effect. It is the publishing system itself:
- content collections
- article pages
- feeds and metadata
- a real visitor snapshot contract
Once those are stable, the live globe stops being a mock and becomes a restrained, explainable system.