Shenzhen Bay at dawn — calm sea and soft sky

16.33 km at Dawn | A Long Morning Run in Shenzhen

I started running a little after 6 a.m., when Shenzhen was still half asleep. From Nanshan, I headed south along familiar city roads toward the coastal area, letting a 16.33 km morning run gently set the rhythm for the day. The route ran almost straight north to south, cutting through the quiet early-morning city and gradually opening up toward the coastline. Traffic was minimal, the air was cool, and the rhythm of footsteps echoed against empty sidewalks. ...

January 13, 2026

2025 | A Year Measured in Steps

A review of my 2025 fitness record — walking, running, and half marathons, measured one step at a time.

December 31, 2025

Building Driver-Hub: A Feishu Web App for GitLab Project Management

Overview This article introduces Driver-Hub, a Feishu (Lark) Web Application I built to connect with our internal GitLab server. The app allows searching projects, browsing branches, viewing commits, and downloading code archives directly from Feishu’s workplace UI. The implementation is purely web-based. Traditional bot features were removed — users open Driver-Hub in Feishu, interact with form controls, and the app communicates with GitLab APIs through FastAPI. 1. Feishu Developer Platform Setup Before writing any code, configure a Feishu developer app to host the Driver-Hub UI. ...

November 10, 2025
Doom Emacs running perfectly in Windows Terminal

Fixing Doom Emacs Icon Garbling in Windows Terminal (MSYS2 + Mingw64)

When running Doom Emacs under Mingw64 inside Windows Terminal, you may find the UI symbols (like those from Nerd Font) showing up as random blocks or question marks. This issue is almost always caused by Windows console encoding not using UTF-8, even though your Emacs and fonts are already configured correctly. This article explains why it happens and how to fix it completely — including installing Nerd Fonts via Scoop, adjusting Windows Terminal profiles, and ensuring UTF-8 consistency across all layers. ...

November 9, 2025

Rebuilding My Windows 10 Development Environment

A reproducible Windows 10 Pro 22H2 workstation setup for cross-platform development: zsh, PowerShell, Doom Emacs, MicroPython, Windows Terminal, and proxy-friendly package mirrors.

November 6, 2025

Golden Week Runs: From River Breeze to Endless Laps

1. Along the River, Starting from Wanguo Stadium Golden Week turns Shanghai into a softer city. Traffic thins, the air cools, and the river path near Wanguo Stadium feels like it belongs to the runners again. On the first morning of the holiday I slipped onto the trail, followed the water south until the path ran out of concrete, then traced the same route home. The pace settled into something meditative—steady breathing, steady cadence, just the splash of waves against the embankment. The only real obstacles were the holiday strollers drifting three abreast, chatting as if the path were their living room. ...

October 7, 2025

Chili Pepper Stir-Fried Pork: A Spicy Symphony

Growing up in Sichuan means measuring seasons by the peppers in the market. At home, the wok was rarely quiet, and a handful of chilies was the quickest way to pull everyone into the kitchen. My wife and kid used to protest, waving chopsticks like white flags, so I dialed down the heat until they got hooked. These days they request this stir-fry by name. The dish is officially Hunan, but in practice it’s a friendly handshake between Sichuan’s smoky depth and Hunan’s clean heat. The heart of it is simple: bright fire, fragrant oil, and a flash of sweetness from good pork. ...

September 27, 2025

11.11 km on the Corporate Treadmill

Weekdays lately feel like a sprint between meetings, so the only way to keep training is to embrace the office treadmill. Surprisingly, I don’t mind it. I leave the headphones in my locker and listen to the belt hum in rhythm with my footsteps. It’s a stripped-down kind of focus. On September 25, I logged a solid session before the day fully kicked in. Because treadmills can feel forgiving, I nudged the incline up a notch to mimic pavement. ...

September 25, 2025
A table with classic Chinese spices and condiments

Essential Knowledge of Chinese Cooking

Essential Knowledge of Chinese Cooking Chinese cooking is a language of flame and patience. Recipes are useful, but the real fluency comes from understanding heat, timing, and balance—the grammar behind every stir-fry, braise, or steamed dish. The notes below are my crib sheet when I need to reset my instincts. The Magic of Beer in Braised Dishes When a chef tips beer into red-braised pork, it’s not a whim. Beer plays three roles at once: ...

September 24, 2025

ROM Packaging with --just-symbols

“Premature optimization is the root of all evil.” — Donald Knuth Overview Goal: Package low-level firmware as a ROM image plus symbol export. The application imports that symbol table during its own link stage, so it can call into ROM code without ever touching the original sources. ROM stays frozen and reusable; the APP continues to evolve. Key techniques: ld --just-symbols to reuse symbol addresses Exporting stable symbols __weak rewriting for patches Shared RAM segments Interface consistency constraints Equivalent implementation in Keil using --symdefs I. ROM Packaging with gcc --just-symbols Gather ROM code into a dedicated section Tag the reusable functions with __attribute__((section(".rom"))) so the object files collect them neatly. ...

September 24, 2025