Thoughts on development, DevOps, photography, and life.
Kioku didn't start as a lifelogging project. It began with a narrower problem: LLMs have no context about me, and the data about me is scattered across every product that needs it.
How I built the /ask assistant on this site — chunking and embedding the corpus with Voyage, semantic search over pgvector, a grounded citation prompt, and the agentic tool-calling loop that retrieves iteratively. Plus how it all ships to production.
How I use Ghostty tabs as project slots and tmux as the split manager — why tabs stay visible, why splits live in tmux, and the config choices that make eight projects open at once stop feeling like eight projects open at once.
Worktrees, agent teams, and in-conversation subagents — when to reach for each, how they actually work under the hood, and the tradeoffs I've hit using them day-to-day.
Why I split the editor and the agent across two apps, how tmux keeps Claude Code sessions alive when the window closes, and the small configuration quirks that make it all feel native.
Ten Mac apps I use every day as a developer — terminals, editors, databases, translation, screenshots. Each one earned its place.
A walkthrough of Claude Code from the ground up — what it is, how configuration scopes work, and the rules, plugins, hooks, auto memory, and CLI glue that make it click for day-to-day engineering work.
A practical breakdown of CSR, SSR, SSG and ISR in Next.js App Router — with code examples, data flow diagrams, and real use cases.