Posts
All the articles I've posted.
-
Embedding Files in ESP-IDF Firmware with embed_txtfiles
Published: at 08:12 PMHow ESP-IDF's EMBED_TXTFILES works, including CMake resource embedding, read-only flash data, linker symbols, and TLS certificate handling.
-
Ditherpunk, Part 2: Image Dithering on an ESP32 Monochrome Display
Published: at 09:38 PMPorting dithering algorithms to an ESP32 monochrome display, with gamma lookup tables, an ST7305 driver, and Bayer, Atkinson, and blue-noise comparisons.
-
Ditherpunk, Part 1: Dithering Algorithms and Interactive JavaScript Demos
Updated: at 03:40 AMCompare Bayer, Floyd-Steinberg and Atkinson dithering in your browser, toggle linear luminance, and download black/white PNGs. Images stay on your device.
-
Connecting an ESP32 to a 4G Modem with PPPoS
Updated: at 03:40 AMConnecting ESP32-C3 and Air780EG through ESP-IDF PPPoS: UART wiring, esp_modem setup, IP events, and troubleshooting power, flow control and APN.
-
Driving WS2812 LEDs with SPI and DMA on CH592F and CH582
Published: at 07:20 PMDriving WS2812 LEDs with SPI and DMA on CH592F and CH582, using four-bit expansion and GRB encoding to avoid blocking the CPU during BLE operation.
-
Fixing Duplicate Pages and Canonical URLs in Google Search Console for a Hexo Blog
Published: at 09:27 PMFixing duplicate-page and canonical URL problems in Google Search Console for a Hexo blog using 301 redirects, robots.txt, and configuration changes.
-
Trying Claude Code for Android Development
Published: at 07:39 AMTrying Claude Code on an Android serial monitor project, from API and CLI setup to letting the coding assistant implement a feature on its own.
-
Building a CS2-Inspired Health Badge with CH592F and GSI Integration
Updated: at 02:45 AMBuilding a CS2-inspired electronic health badge with WCH CH592F, BLE HID, and GSI, covering PCB design, power management, and a custom device script.
-
Publishing on Google Play as an Independent Developer: My 2025 Experience
Updated: at 03:40 AMMy 2025 Google Play release: $25 registration, a 12-tester closed test lasting 14 days, production access, and Firebase / AdMob privacy disclosures.
-
Modifying GLSurfaceView for Zero-Copy Texture Sharing between Views
Published: at 05:10 AMForking AOSP's GLSurfaceView into GL14SurfaceView to share GPU textures between EGL14 contexts and render to multiple views without CPU copies.
-
Driving a WS2812 RGB LED over SPI on the DWM3001CDK
Published: at 11:05 PMDriving a WS2812 RGB LED over SPI using the nRF52833 on a DWM3001CDK development board.
-
Minecraft Compass IRL: Building and Using MCompass
Published: at 08:00 AMBuilding and using MCompass, an ESP32-C3 and GPS-based Minecraft compass with lodestone targeting, overshoot animation, firmware setup, and a bill of materials.
-
Friday Ink: Is It Friday Yet?
Updated: at 07:16 PMBuilding Friday Ink, a CH582F e-paper clock with approximately 3μA sleep current, including display drivers, Rust firmware, and power switching.
-
Adding a Xiaomi Yeelight Monitor Light Bar to HomeKit with an ESP32-C3 Controller
Updated: at 06:42 PMAdding a Xiaomi Yeelight monitor light bar to HomeKit by building an ESP32-C3 replacement controller, with teardown and pin measurements.
-
Why Declarative UI Uses Explicit Lifecycle Subscriptions Instead of onResume
Published: at 08:01 AMWhy declarative UI frameworks use explicit lifecycle subscriptions instead of component-level onResume, with examples from Flutter and Compose.
-
Mapping and Modifying the Lenovo R720 Keyboard Matrix
Published: at 04:00 AMMapping a Lenovo R720 laptop keyboard matrix and adapting it with Raspberry Pi Pico, QMK, and a 74HC165 I/O expander for a KVM project.