← Mikael Ishhanian

Colophon

Animation
A single custom GLSL fragment shader: Gaussian metaballs with per-blob sphere normals under an orbiting Lambert light, quantized by ordered 8×8 Bayer dithering. It runs on Paper Shaders’ ShaderMount, with the dithering and wander math adapted from the MIT-licensed paper-design/shaders. Blob positions are computed on the CPU once per frame and fed to the GPU as uniforms.
Color
Palettes are generated fresh on every load in OKLCH via culori— random hues with a minimum circular separation, gamut-clamped to maximum chroma, and guarded by a minimum perceptual distance (ΔE in OKLab) between every pair. The near-black background and off-white text are dark and light shades of the palette’s accent, so the whole page shares one temperature.
Type
Space Grotesk by Florian Karsten, self-hosted through next/font. Set with text-wrap: pretty, cap-height trimming, and automatic hyphenation.
Stack
Next.js (App Router) and React, styled with Tailwind CSS, deployed on Vercel.
Icon
The favicon is a hand-generated SVG: a Lambert-shaded sphere pushed through the same 8×8 Bayer matrix as the site, one <rect> per lit pixel.