







A single HTTP request, traced in real time through DNS, TCP, TLS, the kernel, Node's event loop, and Postgres — then back to the pixel. Scroll distance equals time.

AT Protocol Primer
What is the AT Protocol and why does it matter in the grand scheme of the web

Peak Web Has Passed | datagubbe.se
URL Scanner | Cloudflare Radar
Understand the security, performance, technology, and network details of a URL with a publicly shareable report.


An update on leap seconds – Tony Finch
It has been a couple of years since my previous blog post about leap seconds, though I have been tweeting on the topic fairly frequently: see my page on date, time, and leap seconds for an index of threads. But Twitter now seems a lot less likely to stick around, so I’ll aim to collect more of my thinking-out-loud here on my blog.
Web Design in 4 minutes
Learn the basics of web design in 4 minutes with this interactive tutorial.

Margin - Write in the margins of the web
Margin - Write in the margins of the web. Comment on any URL with AT Protocol.
Margin - Write in the margins of the web
Margin - Write in the margins of the web. Comment on any URL with AT Protocol.

How I Came Up with Margin - Scan's leaflet
Introducing Margin Write on the margins of the internet, powered by the AT Protocol. Coming soon
Dynamic time decay - For You notes
The For You feed has felt a bit too static because older posts (posted 12-24 hours ago) tend to sit at the top as they have more time to accumulate more likes. To make it surface fresher content more often I applied an exponential time decay with a half-life of 6 hours.
firehose.stream — ATProto jetstreams
A lightweight, filterable JSON firehose of real-time ATProto events.

AT Explore
Explore and discover AT Protocol data with our fast, user-friendly browser. Search posts, profiles, and feeds across the decentralized social web — including apps like Bluesky.
Bluesky Post Statisticator
This will generate a CSV spreadsheet of Bluesky post statistics (number of likes, reposts, quotes and replies) from a given timeframe. All processing is done in-browser and no data is stored anywhere. It takes `(total posts / 100) * 0.1 seconds` to pull all your posts after clicking "Login". If it appears nothing to be happening, please be patient and wait a few minutes!