Building a CLI Tool with Go and Cobra
A practical guide to building production-ready CLI tools in Go using the Cobra library, with flags, subcommands, and config management.
Software Engineer.
I'm a backend engineer who helps turn complex business requirements into reliable, working systems. I focus on delivering clean, efficient solutions that are easy to maintain and scale. I've worked with PHP, Java, JavaScript, Go, and Rust, and I adapt quickly to different project needs and environments.
A selection of things I've built.
A command-line tool that generates database schemas, migrations, and seed data from natural language descriptions.
A self-hosted AI agent that manages tasks, answers questions from your personal knowledge base, and automates repetitive workflows.
Tech Stack
Places I've worked and what I've built there.
Building and scaling a messaging platform used by millions — spanning backend services, feature development, and legacy migration.
Developed a Certificate Management System serving 50+ insurance companies across Indonesia, handling full-stack development and end-user support.
Built internal tools for scheduling and academic management at the university lab, supporting lecturers and students.
Technologies and tools I work with.
Things I'm actively working on right now.
Smart personal finance tracker with AI-powered categorization, spending prediction, and budget insights.
Generate database schemas, migrations, and seed data from plain-English descriptions via the terminal.
Self-hosted AI agent connected to my personal knowledge base that automates tasks and answers questions.
Thoughts on development, tools, and craft.
A practical guide to building production-ready CLI tools in Go using the Cobra library, with flags, subcommands, and config management.
A collection of architecture patterns, folder structures, and conventions I've settled on after building multiple production Next.js apps.
Real-world techniques for diagnosing and optimizing slow PostgreSQL queries — indexes, EXPLAIN ANALYZE, and common mistakes.
Have a project in mind, want to collaborate, or just say hi? My inbox is always open.
I typically reply within 24–48 hours. For urgent matters, email directly.