Latest Articles

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...

Variable Font Subset

Fonts tend to affect UX when loading web pages quite a bit: they’re usually loaded asynchronously with the rest of HTML and applied after the initial render, resulting in unpleasant text “twitching” after applied; alternatively, it’s possible to delay the...

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>...

Visual Novel Engine for Unity

Being a huge anime and visual novels fan, I’ve always wanted to somehow contribute to the field. Looking through popular VN engines and toolkits, I’ve noted that none of them really meet my requirements, being either limited in platforms support...