I make small tools for oddly specific problems.

A 2D puppet engine where an AI agent does the rigging. A CLI that untangles your YouTube Music likes. A city builder where every commute turns into traffic. Each one gets a unit number the day it starts.

25 units so far, 21 of them live right now. Browse the catalogue

Units on file

Real products, libraries and a few experiments, every one of them shipped.

Listed by preference, numbered by build order. Purple tape means you can try it live.

Iki preview

Iki

Unit 17

Open, MIT-licensed 2D puppet engine for the web, a Live2D alternative whose Claude Code plugin has an image model draw a character's parts and then rigs them over MCP.

TypeScript · WebGL2 · MCP · Claude Code plugin · pnpm Monorepo · React

Demo
Charivo preview

Charivo

Unit 12

TypeScript framework for Live2D AI characters that talk, react, and look at you, with swappable OpenAI and Gemini backends for chat and voice.

TypeScript · Live2D · OpenAI Realtime · Gemini Live · LLM/TTS/STT · pnpm Monorepo

Demo
hyperclaude preview

hyperclaude

Unit 16

Claude Code plugin where Claude plans and writes the code and Codex reviews it read-only, looping until Codex has nothing blocking left.

Claude Code plugin · Codex CLI · Node.js · git

Demo
Cimulity preview

Cimulity

Unit 13

A SimCity-style city builder for the browser, where workers are matched to jobs over the road network and their commutes become traffic.

PixiJS · TypeScript · Next.js · React · Vitest

Demo
LiveClaw preview

LiveClaw

Unit 14

Electron desktop app that gives your local OpenClaw agent a Live2D face and a voice, with installers for macOS, Windows, and Linux.

Electron · OpenClaw · Charivo · Live2D · OpenAI Realtime · React

Source
Charaloom preview

Charaloom

Unit 10

AI character platform: build characters and worlds, chat one-on-one or in groups, and play branching stories, in English and Korean.

Next.js · Vercel AI SDK · OpenAI · Firebase · React · TypeScript

Demo
Ludoweft preview

Ludoweft

Unit 20

Claude Code and Codex plugin where an agent translates a game's text and a deterministic CLI extracts, validates and rebuilds the game files.

Node.js · Claude Code plugin · Codex plugin · JSONL · FreeMote

Source
chordotomy preview

chordotomy

Unit 23

Local harmony analyzer that finds a recording's chords on the beat, inversions included, and labels them with Roman numerals that flag secondary dominants and borrowed chords.

Python · librosa · lv-chordia · Beat This! · Vanilla JavaScript · Claude Code plugin

Demo
Wander preview

Wander

Unit 24

Text-first travel game in the browser: cross a seeded map of a region you don't know, read the signs on the road, and keep nothing between journeys but what you've learned.

TypeScript · React · Vite · Vitest · Canvas 2D · SVG

Demo
WC2008 Rating Lab preview

Tracker for the CPU ratings in Yu-Gi-Oh! World Championship 2008 (DS), with a headless emulator harness that played 1,600 tournaments and pinned down the game's rating formula.

React · TypeScript · Firebase · Recharts · Python · melonDS DS

Demo
tangent preview

tangent

Unit 22

Studio where Claude Code agents make Korean math and science Shorts, from topic to upload file, with code-rendered Remotion animation and a human approving at checkpoints.

Claude Code agents · Remotion · TypeScript · KaTeX · Gemini TTS · Codex CLI

Watch on YouTube
like-surgeon preview

like-surgeon

Unit 15

Fix the mismatches between your YouTube Music liked songs and YouTube likes — swapped, duplicated, missing and dead songs. A local CLI that fixes only what it can prove.

Python · ytmusicapi · YouTube Data API v3 · SQLite · SQLAlchemy · Typer

View on PyPI
Commentarium preview

Commentarium

Unit 05

Chrome extension that adds a social layer to any page with ratings, comments, and community voting.

Chrome Extension · Next.js · React · TypeScript · Firebase

Demo
Pokémon Numerals preview

A numeral system where n is the Pokémon with National Pokédex number n, shown on a live clock and a converter, with a silhouette hardcore mode.

Vanilla JavaScript · BigInt · CSS · PokéAPI · Node test runner · GitHub Pages

Demo
LeetCode Study preview

LeetCode Study

Unit 19

A LeetCode study log kept as GitHub Discussions and published with Repozine, plus a Claude Code plugin that gives one hint level at a time instead of handing over the answer.

Python · Claude Code plugin · LeetCode GraphQL · GitHub Discussions · GitHub Actions · Repozine

Demo
Repozine preview

Repozine

Unit 01

Template that turns a GitHub repository's Issues or Discussions into a static Astro blog, rebuilt and deployed to GitHub Pages by GitHub Actions.

Astro · GitHub GraphQL API · GitHub Actions · TypeScript · React · Tailwind CSS

Demo
Next.js Firebase Boilerplate preview

A Next.js + Firebase starter where the server does the Firebase work: session cookies verified by the Admin SDK, and per-user Firestore data.

Next.js · Firebase Admin SDK · Firebase Auth · Firestore · TypeScript · Vitest

Demo
KakaoTalk Viewer preview

Browser-only viewer for KakaoTalk export files with search, date navigation, and multi-platform parser support.

Preact · TypeScript · Vite · Tailwind CSS · Vitest

Demo
Captiony preview

Captiony

Unit 11

Browser subtitle editor that times SRT/VTT captions on a draggable timeline against a local video or a YouTube link.

Next.js · React · TypeScript · Zustand · react-player · Tailwind CSS

Demo
Number Lab preview

Number Lab

Unit 25

Seven browser machines for famous number facts, from Kaprekar's constant to aliquot sequences, each doing its arithmetic live as you watch, with no libraries.

Vanilla JavaScript · Canvas · Web Workers · BigInt · Web Audio · Node test runner

Demo
DOGimg preview

DOGimg

Unit 04

Dynamic Open Graph image generator that creates share-ready preview cards from any URL.

Next.js · next/og · Node.js · undici · TypeScript · Tailwind CSS

Demo
Backend Interview Guide preview

Korean backend interview guide organized across database, cloud, system design, and programming, drafted and reviewed with Codex, Claude Code, and an agent harness.

Codex · Claude Code · Agent Harness · Markdown · Python · GitHub

Demo
KiMCP preview

KiMCP

Unit 08

MCP server that exposes Korean APIs (Naver, Kakao, TMAP) as tools for LLM applications and agent workflows.

Python · MCP Python SDK · uv · HTTPX · Korean Open APIs

Source
Whozzie preview

Whozzie

Unit 09

Random name picker that keeps one list of names for a spinning wheel, real-physics 3D dice and a ladder game, in English and Korean.

Next.js · three.js · React Three Fiber · Rapier · next-intl · TypeScript

Demo
Fairy of Grass preview

Fairy of Grass

Unit 02

GitHub Actions template that auto-generates daily contributions by creating scheduled empty commits.

GitHub Actions · Cron Schedule · Template Repository · Git

Source

Lab notes

Build logs from the units above: what broke, what I measured, and how it got fixed. Every one is also in Korean.

  1. Oct 6
    The Like Never Moved

    When a song's upload dies, YouTube Music seems to move your like to a replacement. It doesn't. Liked songs is your YouTube likes shown in the same order, and lining the two lists up shows which like is behind every song.

    한국어로 좋아요는 옮겨진 적이 없었다

    like-surgeon
  2. Oct 4
    Renderable Isn't Good

    Getting an agent to draw and rig a 2D character that looks right took a reference to aim at, a critic that isn't the artist, and a second reference for the head turn. The turn is still the weakest score.

    한국어로 렌더된다고 잘 만든 건 아니다

    Iki
  3. Oct 3
    From 0.52 to 0.90: Five Steps to a Better Chord Analyzer

    How chordotomy's chord accuracy climbed, from a DSP-only first version to a pretrained model with better beats, and what each step cost.

    한국어로 0.52에서 0.90까지: 코드 인식 정확도를 올린 다섯 단계

    chordotomy

Read all posts