Hey, I'm Carl

On this site I share my process, tools, lessons, and the occasional bit of creative chaos from working with the web.

Latest posts

  • A designer's desk with UI panels showing appearance options, variant styles, and style controls, alongside four button variants and design tools scattered around

    Building a Theming System

    build a robust, library and framework agnostic design system

    design-systemtooling
  • Four stone blocks in ascending size, each engraved with progressively more specific HTML — from the raw </> through <input type="button"> and <a role="button"> to a fully realised <button> — illustrating the evolution from a basic primitive to a complete interactive element

    Design System Primitives

    design-systemfoundations
  • CSS token variables for spacing, typography, and breakpoints arranged on a structured grid, representing the raw values a design system depends on

    Design System Utility Tokens

    design-systemfoundations
Screenshot of the Televi IPTV viewer showing Japanese TV channels

Televi ( テレビ )

A Next.js IPTV viewer that aggregates Japanese TV streams, caches EPG data, and plays HLS streams in the browser. Built to solve the challenge of watching Japanese baseball from overseas when official streaming services restrict international access.

  • Next.js
  • TypeScript
  • HLS.js
  • Docker
  • Server-side caching