My Blog

How a Meme Helped Me Tackle the “Hardest Problem” in Computer Science: Cache Invalidation
Fri Dec 19 2025
There’s a famous quote in computer science: “There are only two hard things in Computer Science: naming things and cache invalidation.” It’s funny because it...

How to integrate Medium articles into Next.js portfolio for better SEO discovery
Tue Dec 02 2025
Short version: I pulled my Medium RSS feed into my Next.js App Router, rendered posts server-side as real HTML pages (with proper metadata, canonical links a...

React vs Next.js: How Switching My Portfolio Improved SEO, Performance, and Core Web Vitals
Tue Dec 02 2025
React vs Next.js: How Switching My Portfolio Improved SEO, Performance, and Core Web Vitals by Over 40% And how a simple plan to add a blog turned into a ful...

AWS, Azure, or Alibaba Cloud: How to Open a Cloud Account in China
Fri Nov 07 2025
The Trend I Couldn’t Ignore A few weeks ago, while checking Google Trends for regional cloud interest, I noticed a sudden spike in searches for “cloud accoun...

Make Your App China-Ready: How to Deploy Web Services Inside the Great Chinese Firewall
Tue Oct 28 2025
Meta Description Discover how to deploy web services in China’s unique internet environment. Learn cloud-native strategies with Alibaba Cloud, Tencent Cloud ...

Integrating EJBCA (Community) with Scala & Play Framework using CMP
Tue Oct 28 2025
Keywords: EJBCA CMP integration with Scala, CMP Play Framework, CMP client Scala, EJBCA community enrollment TL;DR This guide shows how to enable CMP on an...

Smarter Tolls, Smoother Commutes: An AI Idea for Hong Kong’s Traffic
Wed Oct 01 2025
I live in Yuen Long. On some days, I need to drive into Kowloon or even across to Hong Kong Island. Every time, I’m reminded of one of the biggest frustrations...