
A big cleanup day for this blog
April 11, 2026 | Today I migrated the blog away from Sanity, tightened the Markdown pipeline, cleaned old assets, updated tooli...

April 11, 2026 | Today I migrated the blog away from Sanity, tightened the Markdown pipeline, cleaned old assets, updated tooli...

April 11, 2026 | We often mistake accessibility for efficiency. This post explores why mobile devices are great for triage but ...

August 9, 2025 | Final result - click here. Hey everyone! Living in Hong Kong, my morning commute relies on catching the right ...

March 29, 2025 | I have been toying around n8n for a couple of days and installing the community edition on my trusted Synology...

March 3, 2025 | Running LLM locally has a bunch of benefits: faster, more private, more freedom, and if you hardware allows yo...

September 23, 2024 | I am back from what was one of my longest vacations ever, north of three weeks. And I learned a lot! While it’...

August 18, 2024 | Obsidian, on top of being super user-friendly, has one extremely appealing selling point: it uses offline, ope...

August 4, 2024 | Let’s dive into product prioritization frameworks for product managers. These methodologies help teams make in...

July 28, 2024 | I start having a bit more content, and some upgrades are necessary. Last time, I created a "Load More" button,...

July 13, 2024 | Excel has been around for almost 40 years. Is it perfect? Far from it. Does it provide good user experience? N...

July 5, 2024 | Google recently announced they were going to kill the infinite scroll feature on their search pages. That fina...

June 5, 2024 | “Don’t repeat yourself” (DRY), “Keep it short and simple” (KISS), refactoring, abstraction, and code maintaina...