
Don't Fear Your Competitors
A polished competitor isn't proof of a strong business. Lessons from Deadline, Clara.io, and Threekit on validating demand, assessing real threats, and pricing on value.

This is the personal blog of Ben Houston (bio here), a 3D computer graphics software developer. For a quick overview of the work I am proud of, see my portfolio. I've worked on projects like Web3DSurvey, Three.js, Deadline, Krakatoa, and Exocortex VFX plugins. I'm also an entrepreneur, having founded Land of Assets, Threekit, Clara.io, Exocortex, and Frantic Films Software.

A polished competitor isn't proof of a strong business. Lessons from Deadline, Clara.io, and Threekit on validating demand, assessing real threats, and pricing on value.
An experiment in AI-guided blue noise optimization produced GPU Stratified Annealing. Explore the search, the resulting algorithm, and its measured gains and losses against FAST in filtered rendering.
Houston Stratified Noise (HSN) is a texture-free noise function for real-time rendering. It stratifies each 8×8 tile hierarchically and advances each dimension with its own low-discrepancy step. Here is how it works, what it is built from, where it beats IGN and white noise, and how it improved SSR and VXGI in Three.js.
CliDoc generates an OpenCLI description of your CLI from the command definitions you already wrote, then publishes reference docs to Docusaurus and VitePress, and gives AI agents the same description through a docgen command.
git-dedup is a drop-in replacement for git that shares one copy of Git history across all your clones, worktrees, and submodules. It made my agents start dramatically faster and cut my Git storage by 70%.
I built Vitest and Jest environments that give your tests real, GPU-backed WebGL and WebGPU contexts directly in Node.js. They use the same ANGLE and Dawn implementations as Chrome, so you get the same pixels without the overhead of launching a browser.
How to return a cheap 304 Not Modified response in TanStack Start, with three implementations at three different layers of the stack.
Introducing webgpu-bench, the micro-benchmark suite behind Web3D Survey’s GPU benchmark, with measurements of shader operations and code patterns available through a webpage and CLI.
How to use Three.js's native Gaussian Splatting support (GaussianSplat, SPZLoader). Load .spz/.ksplat/.splat/glTF splats, pick a file format, and run a capture-to-render workflow with Polycam, Luma AI, Scaniverse, and SuperSplat.
Communicating swarms of small LLM agents will become as omnipresent in our digital environment as ants are in our biological one.
A tour of how language models generate text, how GPT-2 and newer Phi and Qwen architectures differ, and how Three-LLM implements their inference graphs with Three.js TSL compute shaders.
How I develop a seven-service TypeScript SaaS with local Node processes, isolated GCP infrastructure, fast Postgres tests, and shared contracts.