01 / 2026 Mock
Hero Shader
The first screen of this site is a shader you can take apart, built as four stages that each render on their own.
Read the case study01 / 2026 Mock
The first screen of this site is a shader you can take apart, built as four stages that each render on their own.
Read the case study02 / 2026 Mock
One card, opened and closed by hand, revised across more than forty iterations from v1 to v20.
Read the case studyFour card-study decisions, replayed old rule vs new, in the Lab
I am a frontend developer in Korea. I like interfaces that respond: shaders, gestures that feel physical, and pages that stay fast while they do it.
This site is the clearest example. The hero is a WebGL2 shader written in GLSL, the cards run on Pointer Events and springs, and the page is plain TypeScript and Astro with a poster fallback when GL is not available.
AI is part of how I work, not a side project. Most of it happens at work; a little of it at home.
Updated
Questions, collaborations, or something you think I should look at. A short email is the best way in.
The first screen of this site is a shader you can take apart, built as four stages that each render on their own.
The first screen is a shader you can touch and then take apart. Switch on Inspect and the picture falls back through its own stages: a distance field of the letters, a warped noise, a flow field, and finally ink on paper.
It is plain WebGL2 with a small GLSL pipeline. Three.js and WebGPU were prototyped and measured, and the smaller path won on weight and on how evenly it runs on a mid-range phone.
When there is no GL, or the visitor asks for reduced motion, the page shows pre-rendered stills of every stage, so the explanation survives the fallback.
Read the full case studyOne card, opened and closed by hand, revised across more than forty iterations from v1 to v20.
A card that grows into a sheet and pulls down to close. Nothing about it is new; getting the decision at the moment of release right is the whole study.
Pull this sheet down from its top edge, slowly and then in a quick flick, and open Inspect: it replays your gesture and shows why it closed, or why it did not.
Close needs the sheet scrolled to the top, so a pull never fights reading. Escape, the close button, a tap outside and the browser Back button all close it too, and focus returns to the card.
Read the full case study