Writings
One of the greatest thing about humans is that we can express our thoughts and type them into text.
CoachBot: my Telegram health coach
I built CoachBot, a Telegram bot in Go that tracks food, workouts, and weight through natural conversation using an LLM API.
AI Coding Agents can be Useful
How I used Claude Code to build a personal todo app in Kotlin without knowing the language, plus tips on working with AI agents.
Claude Code looks interesting
First impressions of Claude Code as a CLI-based AI coding assistant and why I'm switching from Cursor to use it with Vim and tmux.
Tracking todos
Why I ditched todo apps and switched to a simple notebook with dashes and plus signs to track tasks and shopping lists.
On waiting
A short reflection on how waiting disrupts focus and emotions, and a personal strategy to keep moving forward while you wait.
Writing notes during the day
How daily note-taking on a typewriter became a thinking habit that clears my mind and inspires more public writing.
How Paper Tape Readers Work
A quick look at how paper tape readers use photodiodes to convert holes in paper into data, inspired by Usagi Electric's build video.
Hugo vs Astro: A Comprehensive Comparison
A detailed comparison of Hugo and Astro static site generators covering performance, features, and developer experience.
Serving Multiple Sites in One Object Storage with Nginx
How to serve multiple static sites from one object storage bucket using Nginx reverse proxy with subdomain-based routing.
Testing Laravel Continuously with CircleCI
How to set up continuous testing for a Laravel app using CircleCI, with a working config example and lessons learned.
Switching to Astro from Hugo
Why I migrated my site from Hugo to Astro, covering developer experience, component support, SSR capabilities, and the smooth migration.
I want to become better engineer
Reflections on strengthening foundational software engineering skills, inspired by Jonathan Blow, and a plan to tackle harder technical problems.
Hugo Theme From Scratch
A video walkthrough on building a Hugo theme from scratch, covering the full setup and templating process.
Installing Arch on Bios Systems
Step-by-step guide to installing Arch Linux on legacy BIOS systems, from creating a bootable USB to partitioning and setup.
My e-mails are now fully mine
How I set up my own mail server with Postfix, Dovecot, and OpenDKIM to take back email privacy from Google and Microsoft.
Introduction to Vim
I created a VsCode extension to connect with developers!
What is Wordpress?
An introduction to WordPress, the open-source website builder, covering setup options, hosting, and useful tips for beginners.
How to get more productive
Practical tips on beating distractions and building a productive routine by writing daily, curating your feeds, and staying consistent.
Programming Languages for Beginners
Power of Programming
What is SEO?
📝 I decided to write every day
Why I committed to writing a blog post every day to build consistency, grow my personal brand, and share beyond just programming.
I switched from HUGO to Ghost, but why?
Why I moved from Hugo to Ghost CMS, how Ghost works as both a traditional CMS and headless content API, and how to get started.
What is domain and why it's important
Learn what a domain name is, why having a memorable one matters for your brand, and tips on where to buy one.
Java Variables
Learn how to declare and use Java variables including int, float, char, boolean, String, and other data types with examples.
Java Comments
Learn the three types of Java comments: single-line, multi-line, and documentation comments with syntax examples.
Introduction to Java
A beginner-friendly introduction to Java covering its platform editions (JSE, JEE, JME) and platform-independent architecture.
Markdown Guide
A beginner's guide to Markdown syntax covering headings, paragraphs, bold, and other formatting basics with HTML equivalents.