Blog

A Soul in the Machine
Is it wrong to find solace in a machine, and grow attached to it? Do we give them life, purpose, a soul by doing it? On Turing animism and psychosis.
You Can Build Tools Yourself
Many free online tools want your email first. Most of what they do can happen in the browser instead, and this is how.

The Semiotics of Fear
A field guide to how symbols get used for belonging, or as a threat, and who holds the strings.

AI is the Poisoned Apple of the SaaS Ecosystem
Companies replaced people with AI and are now quietly rehiring them. On why the last 20% of the work still needs humans, and what "good enough" is doing to SaaS.

Understanding List Virtualization
Virtual scrolling for huge grids: render only the visible rows, tune overscan, and see how React and Vue each skip re-rendering the rows that haven't changed.

Antimemetics and the God that Eats Itself
What if the oldest trick in humanity isn’t faith? What if it is something far more forlorn, humanity’s decision to forget what came before?
Text Fragment URL Generator
A generator for text fragment URLs, and the encoding bug I shipped with it. Any hyphen in the highlighted text silently breaks the link.
Markdown/WYSIWYG Converter!
Converts between Markdown and WYSIWYG text in the browser.
Word Cloud Generator
An interactive word cloud generator built with JavaScript. Type or paste any text to visualise word frequency as a cloud, then export it as an image.
Skeuomorphic Boombox
Tape player interface that plays Chopin music with interactive controls.
Colour Palette Generator
Generates random color palettes interactively using HTML, CSS, and JavaScript.
Rock Paper Scissors
Rock Paper Scissors (Lizard Spock) Battle Simulator
Spider parser
Spider is a powerful web article parser that transforms cluttered web pages into clean, readable content.
Meme Generator
Canvas meme generator built with Vite and React, on a hand-corrected copy of the imgflip.com API.
Reader - PDF Viewer with Text-to-Speech
PDF viewer with text-to-speech capability. Built with Svelte.
Daemon
Front-end to send and receive requests with a GPT-2 Cloud Run server.

Steam Library Hover Effect in CSS
How the Steam library card effect works in CSS. A perspective tilt on hover, a gradient sheen that sweeps across the cover, and the stacking rule that stops a scaled card hiding behind the next one.

Tartarus
Cold. Damp. Dark. Two guards on each side hold me. I am weak. My feet dragged on the floor.

Purgatory
They are gambling away their rights for eternal bliss, maybe to avoid being judged from actions they did in their past life. Little do they know it's a fool's quest. They fall perfectly in the trap with their human nature. And the house always wins.

The traveler's dilemma
Two fifty-seven, points the Kit Cat Klock. Her office is deliberately designed so that it can bring a sense of comfort and trust. This piece is her magnus opus.

How to train your giant scorpion
Disclaimer: This is not an actual guide on how to train your giant scorpion.

In Nihilum
There is something lovely with the feeling you have while walking over wet soil, full of brown leaves and greenery and roots we try to avoid. It moves with our weight.

In the land of good samaritans
Along the derelict pier, people from all walks of life could be seen, all wandering aimlessly.
Bamf
Browser based Comic Book file reader!
Skifree
Skifree clone built in Javascript
Minesweeper
Minesweeper game written in javascript for training purposes.