> things I've built
ishin 以心
case study →Japanese ⇄ English communication that lands the way it was meant — pick a register, translate either direction, and check whether your own Japanese sounds native. Now two-sided: a free personal translator and a business review layer (early access).
riichi
case study →A browser riichi mahjong game built to teach the game — full real rules, deliberately beatable AI, and coaching grounded in real efficiency numbers.
webnovelist
An AniList-style web-novel tracker — log what you're reading, rate and review, build a library, and share a public profile.
anthonyta.dev
you're on itThis site — a personal hub and portfolio in a warm-terminal skin. The other projects feed it as live data through read-only connectors (reading progress, the day's mahjong hand, translation stats, the TFT ladder, GitHub activity), and a scheduled routine pushes in a daily markets briefing; the hub itself never calls a model.
mandosteps
code ↗Android companion app that pushes a daily step count from Health Connect to this hub — no cloud API exists for it, so ~150 lines of Kotlin do the push.
Kotlin · Health Connect · WorkManagerchip8-emulator
code ↗A CHIP-8 emulator in the browser — the full 35-opcode set on an HTML canvas, no UI framework, public-domain games bundled.
TypeScript · Vite · Canvashomelab
code ↗Infra learning sandbox: a one-command Docker Compose stack (app + Postgres + Prometheus + Grafana) with the app's metrics live in a dashboard, on the way to k3s.
Docker Compose · Prometheus · Grafanalocal-rag
code ↗A from-scratch, fully-offline RAG pipeline — local embeddings, hand-rolled numpy cosine similarity, generation through Ollama; sources shown with every answer.
Python · sentence-transformers · Ollamaledger
code ↗A local-file finance and portfolio tracker CLI, written to learn Rust's ownership, borrowing and Result fundamentals — the source explains each decision.
Rustmylang
code ↗A tiny scripting language with a tree-walking interpreter: lexer → parser → AST → evaluator, enough to run FizzBuzz and a recursive Fibonacci.
TypeScriptthe hub · warm terminal