Watgo – A WebAssembly Toolkit for Go
I'm happy to announce the general availability of watgo - the W eb A ssembly T oolkit for G o. This project is similar to wabt (C++) or wasm-tools (Rust), but in pure, zero-dependency Go.
The latest blog posts to take off on Hacker News. 4,614 posts.
I'm happy to announce the general availability of watgo - the W eb A ssembly T oolkit for G o. This project is similar to wabt (C++) or wasm-tools (Rust), but in pure, zero-dependency Go.
An enticing social media preview summary.
Dropping Cloudflare and migrating to bunny.net, starting out with my blog.
As someone who prefers using services via their websites, I’ve gotten terribly jaded lately. Almost everyone wants me, and by extension, you, to use their darn apps to consume content and off their web versions.
Like all good nerds, I generate a unique email address for every service I sign up to. This has several advantages - it allows me to see if a message is legitimately from a service, if a service is hacked the hackers can't go credential stuffing, and I instantly know who leaked my address. A few weeks ago I signed up…
I saw a post on LinkedIn the other day from a self-proclaimed 20 year agency veteran of WordPress saying that was it, they’re moving the entire agency off of WordPress and onto AI. Now, because I, too, am a 20 year veteran of WordPress, this kind of story catches my attention. He posted that they […]
How bots used our sign-up and forgot password pages to bomb real people's inboxes, and what we did to stop it. A practical guide to subscription bombing for founders and developers who think CAPTCHA is an "I'll do it later" task.
Here are some of the best techniques for keeping email addresses hidden from spammers—along with the statistics on how likely they are to be broken.
Social media was supposed to connect us, but most of it has turned into ads, division, and loneliness. I'm betting on ATProto as a way to fix that, and not just for developers. Whether you're a scientist, journalist, or just someone who…
… optional, that is. I’ve been working on an NSFW filter for Marginalia Search, as that is something some people have asked for, primarily API consumers. The search engine has had some domain based filtering for a while, based on the UT1 lists, but that isn’t a very comprehensive approach. We’ll land on a single…
A regression in external display support on Apple Silicon M4/M5 generation chips prevents full HiDPI modes on 4K monitors, limiting users to either blurry non-HiDPI or reduced workspace HiDPI.
Edit April 2, 2026: I've been getting inbound interest from researchers wanting to run their own queries. The MCP integration I use for my own research lets you analyze live mobile telemetry continuously collected from real devices in the wild, directly from Claude. To access it reach out at
Every wall, floor, barrel, and imp is a div — DOOM rendered entirely in CSS. Using 3D transforms, CSS math functions, @property, clip-path, anchor positioning, and SVG filters to build a fully playable 3D first-person shooter in the browser without Canvas or WebGL.
Setting up a website using Elixir and Phoenix, leaning on NimblePublisher for the blog posts.
Why you shouldn't share your context window with others
TLDR; get a list of 21,864 domains from the former Yugoslavia’s “.yu” top level domain: download the .CSV
I tried to build a Windows native app using Microsoft's latest technologies. Now I understand why everyone builds Electron apps.
A brief look at the three main causes of bloat in our JavaScript dependency trees, and how we can start to address them.
I really dislike Apple’s choice to clutter macOS Tahoe’s menus with icons. It makes menus hard to scan, and a bunch of the icons Apple has chosen make no sense and are inconsistent between system applications. Steve Troughton-Smith is my hero for finding a Terminal command to disable them: Here’s one for the…
The one where I mourn the best runtime and speculate idly.
An AI assistant that builds reactive UIs mid-conversation — forms, streaming data, callbacks — using markdown code fences and a mount() UI primitive.
The one where I crowdsource an argument winner.
I spent too much time looking at too many colo(u)rs to try and optimise them for csskit. Here are some interesting findings.
The small web is growing, and getting more active. Good news.
The Django community wants to collaborate with you, not a facade of you.
A look at modern news websites. How programmatic ad-tech, huge payloads and hostile architecture destroyed the reading experience.
Traditional Wayland compositors have a monolithic architecture that combines the compositor and window manager into a single program. This has the downside of requiring Wayland window managers to do the significant work of implementing an entire Wayland compositor as well.
Lessons about XML from the open source IRS Tax Withholding Estimator.
I love a good side-project. Like most geeks, I have a tendency to go down rabbit holes when faced with problems - give me a minor inconvenience and I’ll happily spend weeks building something far more elaborate than the situation warrants. There’s joy in having a playground to explore ideas and “what ifs”; Building…