Research
Research & notes
Deep research I have done with Claude while building my projects, from rendering and netcode to horror craft and AI film, shared here so anyone working on the same problems can use it.
-
Buy me tokens: tips priced from the cloud bill
Tip tiers set at 1%, 3% and 10% of the last 30 days' cloud bill, gathered daily from five billing sources and repriced weekly with no hand in the loop.
-
Unlimited email aliases that scale to zero
Every address at a domain receives mail through SES and one Lambda, about $0.0003 a message and $0 idle. Why Google Cloud cannot, what Cloudflare costs.
-
Cloud rigs for graphics work: fan out, not a cheaper cloud
AWS, Azure and GCP price a T4 GPU within 3%. Fanning out shader recording and tests, not switching clouds, cuts a 4.5-hour graphics change to about 30 minutes.
-
How Codex embeds its browser, and what a Rust IDE can copy
Codex's browser pane is an Electron webview guest of its own Chromium, driven over CDP by a plugin; a Rust IDE gets there with WKWebView, not by docking Chrome.
-
How Horror Directors Make Sound Carry the Fear
How horror directors use score, noise, voice, silence and the needle drop to make you afraid. Startle and roughness are measured; dread is lore.
-
Five Ways Horror Directors Steer the Eye
Horror inverts five framing rules: space behind the face, threat in the dark, focus on nothing, lines to nowhere. The eye is measured; the dread is lore.
-
How Horror Directors Build Dread Shot by Shot
How Hitchcock, Kubrick, Carpenter, Nakata, Aster and Eggers build dread: the three levers, a feeling-to-technique table, 30 director profiles, 168 sources.
-
23 Horror Sequences Broken Down Shot by Shot
Shot-by-shot breakdowns of 23 horror sequences, from the Psycho shower to Weapons: sizes, moves, durations, cut points, and what each one teaches.
-
Parallel GPU browser rigs: AWS, GCP and Modal
Ten stopped AWS Windows GPU machines run a round of browser GPU benchmarks in under two hours; GCP allows one GPU, and Modal's Chrome falls back to software.
-
A painted look over a photoreal render: WebGPU against WebGL2
A painterly post chain on WebGPU and WebGL2: the same look on both, but a stroke filter written with sector arrays cost 12.5 ms on WebGPU against 2.1 ms.
-
Scene depth for a post process: WebGPU against WebGL2
Scene depth for a post process on WebGPU and WebGL2: one prepass works on both, six API differences bite, and a 6 s frame, not the depth, lost the GPU.
-
A full far field: how games fill the distance
How shipped open-world games keep the distance looking full, from far terrain and vegetation to the camera-side tricks that hide the seams, for a browser frame.
-
Privacy-first telemetry without user IDs
A privacy-first telemetry design for a desktop IDE: counters and coarse dimensions, no IDs, opt-in consent, crash reports, and legal baselines.
-
Visits without cookies, and the path they took
What a cookieless counter can know, what more a page says without fingerprinting, where the journey hides, and a 3 KB client with a Rust collector.
-
Bring the agents back after a reboot
After a restart nothing survives, but the layout, scrollback and each agent's conversation can come back on their own; how Claude Code and Codex differ.
-
Update the IDE, keep the shells
Why an IDE update kills the shells and Claude Code agents inside it, which tools keep them, what execve preserves, and how a daemon can swap itself in place.
-
A zero-cost analytics dashboard without cookies
Whether a personal site is gaining traction, with no cookies and no monthly bill: the metrics, free sources, one API per app, a daily ledger, and the gotchas.
-
Dark mode and headaches: check your eyes first
What the evidence says about dark mode, contrast, line spacing, font size, blue light, flicker, breaks and the eye exam for a developer's screen headaches.
-
Soft shade, bark and moss for browser forests
How AAA games soften and lighten forest shade, texture and shade bark so it stops looking shiny, and grow moss on trunks, sized for a browser frame.
-
Rock on steep terrain: shape it, cover it, or skin it
Three ways to put rock on a height field's steep faces, measured in a browser game: paint and cliff kits, relief in the height field, or a finer displaced skin.
-
A full far ground without drawing it
Cheap GPU tricks that make a game's far ground read as full of grass and cover without drawing blades there: fitted colour, sun-shaded clumps, sparse cards.
-
Rock formations of the Olympic Peninsula, and how games build them
How the Olympic Peninsula's crags, talus, cirques and sea stacks formed and what they look like, and how AAA games build rock formations that convince.
-
Olympic Peninsula lakes for game worlds
How the lakes of Washington's Olympic Peninsula formed, their measured shapes and perched cirque basins, and numeric rules for generating them in a game world.
-
Volumetric ground fog without the sprite wall
How AAA engines draw ground fog as a frustum-aligned volume instead of sprites, what it costs, where it ghosts, and which of it a browser game can run.
-
How Alan Wake introduces its darkness
How Alan Wake and Alan Wake 2 introduce their evil, voice it in whispers and haunt the player with shadows, and what a game can borrow from each.
-
Building dread toward a late reveal in horror games
How horror games make a late monster reveal feel earned, with traces, sound and pacing, and what to do with a mechanic that punishes looking at the monster.
-
Olympic Peninsula vegetation for game worlds
What grows where on Washington's Olympic Peninsula, from drift logs to heather, and how to turn it into placement rules and models for a game world.
-
Photorealistic rain for browser games
A survey of how AAA games render rain, from streaks to wet ground, splashes, canopy drip and lens drops, and how to build it on a browser frame budget.
-
Opening a game like a film: sixty seconds of drive, radio and dread
How films open on a drive, a call and a wrong note; what makes sixty rendered seconds read as cinema; and what a game must load behind its first minute.
-
Photorealistic water rendering: lakes and oceans
Water reads as real through light more than waves: a mirror past 20 m, FFT seas at 0.1 to 2 ms, baked breakers, and what WebGPU and WebGL2 can afford.
-
Synthetic voices for a radio call
Text-to-speech for a game's radio call in 2026: the models that take direction, what gives them away, the radio chain, licences, cost, cloning your own voice.
-
WebGPU vs WebGL2: what changes and what does not
WebGPU vs WebGL2, measured in a Babylon.js game: 1.3 to 1.5 ms faster per frame at native resolution, 9.9 ms at 4x the pixels, for 2.7 MB of shader translators.
-
Grass fullness without thinning the field
Why near grass reads bare from a first-person eye, what fixing it cost in a Babylon.js game, and the GPU techniques that win the frame back without thinning.
-
Reverse engineering an AI horror short
A viral AI horror short, taken apart from its pixels: five image-to-video clips on one character reference, slowed and grained in an editor; a $14.10 recipe.
-
Why a voice profile didn't get Claude past Substack's AI check
A Claude draft written to its author's voice profile scored 100% AI on Substack's Pangram check. Why, and the workflow that replaced it.
-
Git LFS on a cloud bucket, not GitHub's storage
Git LFS is not tied to GitHub. How its endpoint is discovered, three ways to put a cloud bucket behind it, and when to skip LFS entirely.
-
AI short films: consistent characters and sets
2026 AI video can make one convincing short, but no model locks an actor and a room across a series. Where each tool fails, and the 3D-first build that holds.
-
Atmosphere and dread shaders for horror games
Atmospheric games stack height fog, a neutral tone map and grade, and a film finish on photoreal light; Babylon.js does nearly all of it at 60 fps.
-
Grass, wind and trails in a browser meadow
Flat game grass is a grounding failure, not a triangle count: ground tint, clumping, one wind field and a banded trail fix it in Babylon.js at 60 Hz.
-
Stylized shader looks: how games build a visual identity
Memorable game looks come from one or two strong shader rules applied everywhere: ink outlines, cel bands, dithering, gradient fog or VHS.
-
No visible pop-in: dissolving a streamed forest
Keeping a streamed browser forest from visibly spawning: pixel-size arithmetic, screen-space dissolve bands, and what discard costs in opaque shaders.
-
Why props float on procedural terrain
Why trees float on slopes and distant ridges in a procedural world, measured, and the shader and clipmap fixes that grounded them in Babylon.js.
-
Pointer lock fails after Esc: an 8-byte fix
Chromium refuses pointer lock for 1.25 s after Esc. What failed in the browser, and how an 8-byte patch to prebuilt Electron removed the cooldown.
-
Babylon.js material plugins: hooks and traps
Babylon.js 9.18 splices plugin GLSL in after #include expansion, before #if: what each PBR hook sees, and the silent preprocessor, comment and bake traps.
-
An endless world as a pure function
Unbounded mountains, a warped coastline, a highway and cliff bands built as pure C² functions with exact derivatives, so every peer builds one world.
-
Hosting WebRTC signaling on Cloud Run
Hosting a WebRTC signaling server on Google Cloud Run for a browser co-op game, the platform behaviours that broke it, and what a running match survives.
-
Host-authoritative co-op netcode in the browser
How Day Hike's browser co-op stays responsive: a 60 Hz fixed step, redundant inputs, quantized snapshots, prediction, and host-created lobbies.