Menu

Blog

Signals in the noise.

Long-form thoughts on programming, leadership, product design, and more.

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.

[ read → ]

November 25, 2019

Hexagonal grid

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.

[ read → ]

July 15, 2019

Swap configuration in Linux

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.

[ read → ]

March 26, 2019

Tips on canvas optimisation

Practical HTML5 canvas performance tips for games: reduce draw calls, use dirty rectangles/offscreen canvases, batch paths, avoid expensive state changes, and more.

[ read → ]

March 24, 2019

Implement Object Pool in JS

Why object pools help smooth performance in GC-heavy JavaScript apps, plus a simple pool implementation and usage pattern suited to games and real-time loops.

[ read → ]

March 14, 2019

Redirecting from HTTPS to HTTP

Why HTTPS → HTTP redirects don’t work without a valid certificate, what that means for SEO, and the narrow cases where an `.htaccess` rewrite can help.

[ read → ]

March 9, 2019

Cerbot renewal

Quick guide to automating Let’s Encrypt renewals with Certbot, including dry-run testing and a safe cron pattern to keep certificates current.

[ read → ]

February 27, 2019

Notes on apply for ICP filing

Practical notes on navigating China’s ICP filing process, including common approval messages and gotchas that can block access even after the filing is granted.

[ read → ]

PW
Paul Wen
Replied just now
Hello! Thanks for reaching out.
I'm currently open to new opportunities. How would you like to connect?