Hello World
The first post on Ben Ebsworth's blog: a living, personal-wiki space for exploring technologies, capturing learnings, and refining ideas over time.
This is my first post on my new fake blog! How exciting!
This site was originally built on the Gatsby base blog template here, with styling, tuning and components taken from the incredibly impressive blog done by Dan Abramov called overreacted.io. The site has since been rebuilt in Next.js (App Router).
The goals of this medium is to explore ideas in an open format to hopefully act as a mechanism for clean note taking but also encouraging more structured exploration of technologies. I would like to play with different technology and write posts here capturing the learnings for my own future reference. I'd like to continually update/clean blog posts overtime, further refining ideas, almost like a personal wiki.
Try it in the lab
All effects →Black Hole Ray Tracer
cosmologyA general-relativistic ray tracer: per-pixel null geodesics around a Schwarzschild black hole, with a physically-shaded accretion disk, Doppler beaming, and live EHT-scale readouts.
general relativityray tracinggeodesicsGravitational Lensing
cosmologyA foreground mass bends background light into twin arcs and a full Einstein ring.
general relativitylensingeinstein ringSpacetime Curvature
cosmologyA mass curving an embedding sheet, with geodesics and bending light rays.
general relativitygeodesicsgravity
More from the blog
Two Number Sum
Three solutions to Two Number Sum, from O(n^2) brute force to an O(n) hash set to an O(1)-space two-pointer scan — and the memory-vs-compute trade-off behind each.
Astra extra high vs SWE-2: lighthouses and racing cars
GPT-6 Astra at extra-high reasoning and Devin SWE-2 High run the same eleven tasks, including a rotating voxel lighthouse and a car racing game.
The behavioural scorer caught a model lying about its own game
We wired three frontier-class models (Gemini 3.6 Flash, Claude Opus 4.6 thinking, and GPT-OSS 120B) into the same 7-task harness via the Agy CLI, then switched the scorer from HTML structure to Playwright behavioural checks. The headline result: a model that scored a perfect 100 on the platformer task under the old scorer scored 30 under the new one, five iterations in a row, because the Space key never actually jumped.