Blog
← BackBuilding kakemono: A Wallpaper Manager That Comes With Me to Any OS
Why I rewrote my macOS-only Go wallpaper daemon in Rust, how one binary now changes the wallpaper on macOS, Linux and Windows, the tools behind it, and how to install and use it.
Building profile-rag: A Chatbot About My Work That Cites Its Sources
How I built a retrieval-augmented question-answering app over my own resume, project docs, and posts. Every answer cites the excerpts it used, and it says so when the sources don't cover a question. Includes a plain-language explanation of how RAG works.
Building QuickPOS: A Point of Sale for Small Food Businesses in the Philippines
A case study of QuickPOS, the point-of-sale system I'm building for small counter-service food businesses: the register, kitchen display and cash shifts, how checkout survives a bad connection, and the refactors that gave permissions, stock and optional features one definition each.
Building Rolecraft: A Job-Application Assistant That Can't Invent Your Experience
How I built a local-first job search workspace that finds remote jobs open to the Philippines, drafts tailored resumes and cover letters, and refuses to put a claim in a draft unless it traces back to a fact I confirmed. Includes the architecture, the checks, and two refactors guided by an architecture review.
Building pi-image-preview: Inline Image Previews with Kitty Graphics in tmux
How I built a Pi coding agent extension that renders inline image thumbnails using the kitty graphics protocol — with full tmux support via Unicode placeholder characters.
Building pi-git-worktrees: Parallel AI Agent Sessions with Git Worktrees
How I built a Pi coding agent extension that spawns multiple AI agents in isolated git worktrees, orchestrated from a single tmux session with live status widgets and floating popups.
How I Let My QA Tester Run Our Full Stack App Without Any Dev Experience
A bash script that checks prerequisites, installs missing tools, checks out the right branches, and spins up the entire frontend + backend stack — so non-technical QA testers can test locally with one command.
Fix Tailwind CSS Canonical Classes in Neovim with One Keymap
Automate fixing non-canonical Tailwind CSS classes across your entire buffer using Neovim's LSP diagnostics and a custom Lua function.
Building Nyx: A Tailwind CSS Formatter & Linter
How I built Nyx, a CLI tool that canonicalizes non-standard Tailwind CSS class names and sorts them using Tailwind's official ordering — powered by @tailwindcss/oxide.
Neovim Treesitter Highlighting with SQL Generic Types (TypeScript)
Fix Treesitter's SQL syntax highlighting for TypeScript generics, non-null assertions, and custom helper functions like tx.
Solana Raydium SDK Swap Example in TypeScript with Magic SDK
How to perform a token swap on Solana using the Raydium SDK in TypeScript, with Magic SDK for signing transactions.