Writing

Blog

Essays, project retrospectives, and notes from building things.

  1. Building Namna: A Financial Independence Planner for Filipinos
    React NativeExpoTypeScript

    I built an offline iPhone app that estimates when your money could be enough — starting from Filipino take-home pay and local vehicles like MP2, PERA, SSS, and GSIS. Here's why, and what I learned along...

  2. Wrap, Don't Reimplement: Building obsidian-cli.nvim
    NeovimLuaObsidian

    I built a Neovim plugin for Obsidian as a thin wrapper over Obsidian's official CLI — not a Lua reimplementation of the vault format. Here's why 2,000 lines beat 4,500 lines once the official CLI shipped....

  3. sajj: Can a Couple of AI Agents Handle Your Workflow?
    AIGeminiReact

    I've been getting the 'can AI handle my workflow?' question enough times to want a serious answer. So I built a free tool that decomposes any business process, scores each step against four criteria, and generates...

  4. citruszest-ghostty.nvim: One Palette for Neovim and Ghostty
    NeovimLuaGhostty

    I wanted my terminal and my editor to use the exact same 16 colors — not just close enough, the same hex values. So I shipped a Neovim colorscheme that shares a palette with Ghostty.

  5. My First App Store Rejection, and Why I'm Okay With It
    iOSApp StorewatchOS

    I spent four weekends building my first Apple Watch app with an accompanying iPhone companion. Designed it, coded it, submitted it, and got rejected under Guideline 5.2.5 — a trademark issue. Here's what I learned, and...

  6. pyworks.nvim: Zero-Config Python Notebooks in Neovim
    NeovimPythonLua

    I built a Neovim plugin that brings Jupyter-like notebook workflows to the terminal with zero configuration. Here's why I created it and how it works under the hood.

  7. Automating tmux Setup with dev-session-manager
    tmuxBashDeveloper Tools

    I got tired of manually creating the same tmux windows every time I switched projects, so I built a tool to automate it and published it as a Homebrew tap.

  8. Automating MCP Server Management for Phoenix LiveView
    ElixirPhoenixAI

    Most Claude Code CLI MCPs work great once configured, but server-dependent MCPs like Tidewave need to connect to specific project endpoints. Here's how I automated the connection management for seamless project switching.