Marching Cubes: From Voxels to Smooth Meshes
Cubic voxels are easy; smooth terrain is not. How Marching Cubes turns a density field into a triangle mesh, why interpolation is the whole trick, and what breaks when you add chunks and LOD.
Exploring the development of projects, applications, and video games. Reflections on design, productivity, and life as a developer.

Cubic voxels are easy; smooth terrain is not. How Marching Cubes turns a density field into a triangle mesh, why interpolation is the whole trick, and what breaks when you add chunks and LOD.

An error crosses four layers before it reaches the user: the HTTP interceptor, the mapping to domain errors, the default behavior policy, and the render safety net. Three implementations (TypeScript, Kotlin and Swift) of the same pattern.

In Darkest Dungeon heroes are consumables and the hamlet is the real protagonist. A breakdown of roster management, opportunity cost, and an economy designed so you never have enough.

Stress is Darkest Dungeon's second health bar, and the one that actually matters. How a resource running parallel to HP turns every expedition into attrition management, and why the game is designed for you to lose.

The strangler fig grows around its host tree until it replaces it completely. The same trick works for migrating a legacy system: feature by feature, with no big bang and nothing switched off.

Acceleration, friction, and curves that make movement feel good.

If your dark mode is a chain of ternaries, you've already lost. How a theme provider and semantic tokens make theming almost free and erase if (isDark) from your code.

How to give game AI its senses: vision cones, sound events, and a memory that remembers what the NPC has perceived.

Bumping up the FPS blindly is a waste of time. How to use the Unity Profiler to find the real bottleneck (CPU, GPU, draw calls or GC) before touching a single line of code.

An interface that hides whether data comes from the network, cache, or disk. How to swap the source without touching a single screen.