blog.mengw.io
WMXPY's automated bug factory
~/mengw.io $ echo "hello world!"
writing, mostly to think out loud → tags 40 / 40
- 01 Hello, world (again) → Re-launching this blog on Astro. Same person, fewer adjectives. #meta May 20, 2026
- 02 Rethinking How We Write Documentation → What an open-source project's docs need to provide beyond what a generator can output. #documentation #writing #open-source Oct 27, 2020
- 03 Angular and .NET Notes → C# threading, JS vs C# GC, TypeScript type tricks, and the Angular lifecycle and DI. #csharp #angular #typescript #notes Apr 10, 2019
- 04 Generators and Coroutines: From spawn to async/await → The stackless coroutine that powers JS generators, and how async/await desugars to a generator + executor. #javascript #generators #async Apr 09, 2019
- 05 Redis: Single-Threaded but Still Fast → Why Redis is single-threaded and still hits six-figure QPS. #redis #performance Apr 01, 2019
- 06 How HTTP Ends → HTTP's blank-line terminator, the chunked transfer-encoding shape, and how both relate to a filesystem's EOF. #http #networking Mar 31, 2019
- 07 Extracting Function Argument Types in TypeScript → Pulling parameters and return types out of a function with `infer`, and where it stops working on unions. #typescript #type-system Mar 26, 2019
- 08 Idempotence and Side Effects → What happens when a user pounds the submit button — designing for idempotent APIs. #api-design #http #rest Mar 22, 2019
- 09 Python / ML / CV Notes → Common interview-style questions across Python, ML, and CV. #python #machine-learning #computer-vision #notes Mar 21, 2019
- 10 Binary Search Tree → BST properties, operation costs, and the worst-case degeneration into a linked list. #data-structures #trees Mar 19, 2019
- 11 How HashMap Handles Collisions → The linked-list shape Java's HashMap uses for hash collisions. #data-structures #java Mar 18, 2019
- 12 HTTP Protocol Versions, Recapped → What changed across HTTP 1.0/1.1, SPDY, and HTTP 2 — multiplexing, header compression, server push, and how multiplexing differs from keep-alive. #http #networking Mar 16, 2019
- 13 Flattening Arrays: From Recursion to Generators → Three takes on the array flattening problem: recursion, hand-rolled iterators, generators (yield*). #javascript #generators #iterators Mar 14, 2019
- 14 A Decent Cloud Web Architecture → GCP vs AWS load-balancer comparison, plus a deployment shape for a typical web app. #cloud #architecture #aws #gcp Mar 12, 2019
- 15 Wiring a JS/TS Project into Sonarqube → Sonarqube's Java docs are deep. JS/TS, less so — here's a working setup. #javascript #tooling #qa Mar 07, 2019
- 16 Quick Sort → An in-place quicksort in TypeScript, with a note on why a left-side pivot forces right-to-left scanning. #algorithms #sorting Mar 05, 2019
- 17 Dynamic Programming → What DP is, and what kinds of problems it's actually useful for. #algorithms #dynamic-programming Mar 04, 2019
- 18 A Few Nginx Tuning Knobs → A handful of Nginx config knobs worth knowing: workers, file descriptors, TCP options. #linux #nginx Feb 15, 2019
- 19 Checking 'Is This an Array?' in JS → Array.isArray, instanceof, and Object.prototype.toString.call, and where each one breaks. #javascript #types Sep 09, 2018
- 20 Webpack Config Notes → A few webpack pitfalls hit while wiring up ghoti-cli's fully-static React template. #javascript #webpack Mar 28, 2018
- 21 Reverse-Proxying a Node Service with Nginx → Routing traffic through Nginx to a Node app listening on a non-standard port. #linux #nginx #node Mar 24, 2018
- 22 Securing a New Linux Server → First-pass hardening on a fresh DigitalOcean Droplet: non-root user, SSH port, key-only login. #linux #security #ssh Mar 14, 2018
- 23 Multi-Process Node with cluster → Using Node's cluster module to spread work across cores. #node #concurrency Dec 07, 2017
- 24 React Native Environment Setup → Setting up React Native on Windows / Ubuntu / CentOS. #mobile #react-native #android Nov 28, 2017
- 25 CentOS Install Cheatsheet → A handful of common install commands on CentOS. #linux #centos Oct 17, 2017
- 26 Shrinking JS: the Ternary → When the wire format is text, code size is cost — reach for the ternary. #javascript #minification Aug 10, 2017
- 27 Reaching the Outer Object from a Nested Method → An old caperjs refactor and the `this` chain that wasn't. #javascript #scope Aug 09, 2017
- 28 Installing native-dep npm packages on Windows → A few npm packages ship C++ or Python code that needs node-gyp. On Windows that means windows-build-tools. #javascript #node #windows Jun 29, 2017
- 29 Swift / WKWebView Photo Upload Workaround → Fixing the iPhone bug where WKWebView's photo picker also dismisses the parent NavigationController. #swift #ios #webview Jun 26, 2017
- 30 Hybrid App Gotchas → Notes from a stretch of hybrid-app work — WebView interop, layout, packaging. #mobile #hybrid #webview Jun 23, 2017
- 31 PHPUnit Basics → Common PHPUnit assertions and a simple test example. #php #testing Jun 02, 2017
- 32 Electron / Node / TS / Vue Gotchas → A handful of things I tripped on while building UpgradeE. #javascript #electron #node Apr 20, 2017
- 33 Closures and Private Variables in JavaScript → Using closures to implement private in JavaScript. #javascript #closures Apr 13, 2017
- 34 Guessing Gender from a Chinese Name with Bayes → A small idea for guessing gender from a Chinese name using Bayes. #javascript #experiments Apr 12, 2017
- 35 DN-02: Frontend Notes → Drive-by frontend notes, part two. #javascript #frontend #notes Apr 03, 2017
- 36 DN-01: Frontend Notes → Drive-by frontend notes, part one. #javascript #frontend #notes Mar 17, 2017
- 37 Review.md Project Notes → Loose observations from working on Review.md. #javascript #notes Mar 16, 2017
- 38 Ubuntu Install Cheatsheet → Common install and cleanup commands for Ubuntu, kept around for copy-paste. #linux #ubuntu Mar 13, 2017
- 39 ES6 Notes: let and const → Notes adapted from Ruan Yifeng's ES6 introduction. This part covers let and const. #javascript #es6 Nov 16, 2016
- 40 Vue Notes → Notes from learning Vue 1.x. #javascript #vue May 14, 2016