WGSL Linter

When writing WebGPU shaders, you usually learn about mistakes only when the browser compiles them: createShaderModule logs an error to the console, or the pipeline creation fails after everything else is already set up. I wasn’t happy with the existing...

React Focus Trap

Working on a React app I had to implement a behaviour where tab navigation would loop between focusable elements inside a container. By default, web browsers switch the focus between all the interactable elements on page (such as <a>, <input>...