Lulucat Blog is where we write down how the apps actually get built. Expect deep dives into the rendering engines behind our handwriting tools — stroke models, erasers, GPU pipelines — the measurement harnesses we build to trust them, and honest notes on working with AI coding agents: what they got right, what they broke, and what we kept. No fixed schedule; new posts appear when there's something real to show.
Dense handwriting exposed a performance problem in Lulucat Notes' chalk tool. The culprit was not 3,571 input samples, but 70 full-screen scratch passes in each frame. A discarded low-resolution cache and a scissor rectangle for each stroke show why.
We evaluated Turso/libSQL for our iPad handwriting app, measured everything and chose flat snapshot files. The workload does not need a database — each step should pay only for problems that already exist.
We wanted Freeform's directional fountain pen in Lulucat Notes. The spec was a screenshot of handwriting. Two models, one discriminating question, and an ellipse nib later, the water pen writes as it should. Kimi K3 did the research, code, and validation on Fireworks.
Our Core Graphics tile pipeline became a Metal point-sprite pipeline in six small steps, each verified on a real iPad. The code was pair-programmed with Kimi K3 on Fireworks.
An eraser stroke as its own element is the obvious design. Object movement breaks it, so in Lulucat Notes the erasure belongs to the stroke from which it removes ink.