December 18, 2025
The AI Dilemma: When Legacy Infrastructure Meets Modern Ambitions
Why large enterprises struggle to adopt AI at scale—and why the problem isn't the AI models, it's the decades of technical debt hiding in their data foundations.
Blog
Long-form thoughts on programming, leadership, product design, and more.
December 18, 2025
The AI Dilemma: When Legacy Infrastructure Meets Modern Ambitions
Why large enterprises struggle to adopt AI at scale—and why the problem isn't the AI models, it's the decades of technical debt hiding in their data foundations.
March 22, 2025
AI-Powered Compliance Reporting in Regulated Research Environments
Building a production-grade RAG system with React, Flask, and Databricks to automate audit-ready report generation from experimental data—eliminating manual effort while maintaining strict regulatory compliance.
November 10, 2024
Learning the AWS Cloud Ecosystem: A Practical Journey
Lessons learned navigating AWS's vast service catalog, earning the Solutions Architect Associate certification, and applying cloud-native patterns to real-world enterprise platforms.
August 15, 2024
Building an AI-Powered Evaluation Platform for Research Innovation
How we replaced fragmented Excel workflows with a cloud-native, multi-stage evaluation system using React, TypeScript, Node.js, and AI-powered decision support—saving nearly a week per reviewer per cycle.
May 28, 2021
Orthographic Camera and Perspective Camera in 3D Modelling
Understanding the key differences between orthographic and perspective cameras in 3D graphics, with practical Three.js examples for choosing the right projection.
May 26, 2021
Incorporate Three.js and Phaser3 on WeChat Minigame Platform
How to render a Three.js scene inside a Phaser 3 scene on WeChat by sharing the WebGL context, plus what to do when WebGL 2 compatibility breaks on real devices.
January 10, 2021
Run Phaser3 on WeChat Minigame Platform
A field guide to running Phaser 3 on WeChat Minigame: patching image loading (no blob support), updating touch event targets, adding a DOMParser shim for bitmap fonts, and handling sharedCanvas limitations.
November 25, 2019
A short reference to Red Blob Games' excellent hex grid guide, with a practical rule of thumb for choosing offset/doubled coordinates vs axial/cube coordinates.
July 15, 2019
A practical walkthrough of creating and enabling a swap file on a low-RAM Linux server (dd, mkswap, swapon), plus how to verify memory changes and disable swap later.
July 10, 2019
Install and configure PHP with httpd in Linux
Step-by-step notes for building PHP from source and wiring it into Apache (httpd), including configure flags, loading the PHP module, and a quick phpinfo() smoke test.