Hi, my name is

Tu Chenguang.

Welcome to
my world.

I'm a first-year Electrical & Electronic Engineering student in Malaysia, originally from Hangzhou. This site is where I track how I grow, plus a few things I built on my own.

See what I'm building

01.About

Hi! I'm Tu Chenguang. Since September 2025 I've been studying at Xiamen University Malaysia (XMUM), majoring in Electrical & Electronic Engineering (EEE).

Hangzhou, Zhejiang is home. Graduated from Hangzhou High School.

Still figuring out what's next — grad school in China or abroad, both on the table. This site is where I keep notes on how I grow, and the projects I have fun with along the way.

Outside of all that — basketball, swimming, travel, motorcycles. Long game: financial freedom first, then the rest of the world.

Currently working with:

  • Python
  • JavaScript
  • C / C++
  • React
  • Supabase
  • Tailwind CSS
  • Vercel
  • Git
Tu Chenguang

02.Things I've made

2026.4
After moving abroad, money kept slipping through my fingers — different apps on different platforms, no clear picture of where it all went each month. Every ledger app I tried locked the useful features behind a paywall, so I built one for myself: multi-currency entries, stats, budgets — all free. The hosting bill is small enough that I can carry it for now.
  • React
  • TypeScript
  • Vite
  • Supabase
  • Tailwind
  • Chart.js
  • PWA
2026.4
Playing chase-the-score with classmates, every billiards-scoring app I tried was either backwards or stuffed with ads. So I wrote one.
  • React
  • TypeScript
  • Tailwind
  • Vercel
2026.4
My university hands out far too many deadlines and has no unified place to track them, so I built one that catches them automatically.
  • React
  • TypeScript
  • Vite
  • Supabase
  • Tailwind
  • Claude API
  • PWA
2026.5
A clean, ad-free guitar tuner that runs entirely on-device.
  • React
  • TypeScript
  • Vite
  • Web Audio API
  • YIN
  • PWA
  • i18n
2026.5

ESP32-P4 Smart Vision Terminal

DNESP32P4 + ESP32-C3 dual-MCU smart terminal for a school embedded-systems competition. The P4 runs local vision, audio and HUD; the C3 isolates the network stack. Voice loop = Whisper → GPT-4o → streaming TTS; GPT can also function-call into 7 tools (take_photo, get_weather, set_timer, …). Full dev log in the blog.
  • ESP32-P4
  • ESP32-C3
  • ESP-IDF
  • C/C++
  • FreeRTOS
  • LVGL
  • MIPI CSI/DSI
  • I2S
  • UART
  • OpenAI API
  • Function Calling
2026.6
An automatic danmaku-stats site for the Douyu streamer "Machine". It pulls 19M+ comments from six years of VODs into SQLite and aggregates them into eleven pages — trending memes, time trends, player boards, yearly charts, a meme encyclopedia — with full-text search served as a static phrase index queried right in the browser. Zero backend, zero credentials, $0 hosting, auto-updated daily.
  • Python
  • SQLite
  • React
  • TypeScript
  • Vite
  • Tailwind
  • GitHub Actions
2026.6
A score predictor for the 2026 World Cup. A Python engine replays every international match since 1872 to compute its own Elo, fuses it with Dixon-Coles attack/defense strength and a penalty model, then runs 100k Monte-Carlo simulations of the whole tournament — a scoreline distribution for every match and each team's title odds. A scheduled job backfills real results mid-tournament and re-simulates on demand, tracking how the odds shift. The front-end renders all eight chart pages as hand-drawn SVG, with honest out-of-sample baselines (RPS/Brier) validated across past tournaments.
  • Python
  • NumPy
  • SciPy
  • Monte Carlo
  • React
  • TypeScript
  • Vite
  • Tailwind

03.Apps

Cloud-sync apps stay current with the web automatically; fully offline apps run with or without a connection.

  • Class Calendar app icon

    Class Calendar

    Cloud sync

    Catches coursework deadlines and class times for you.

    v0.2.0 · 3.7 MB · Web ↗
    Download APK
  • Pocket Ledger app icon

    Pocket Ledger

    Cloud sync

    Multi-currency entries with stats and budgets — all free.

    v0.2.1 · 3.1 MB · Web ↗
    Download APK
  • Billiards Scorer app icon

    Billiards Scorer

    Offline

    A scorekeeper for three-player billiards.

    v0.2.0 · 3.0 MB · Web ↗
    Download APK
  • Guitar tuner app icon

    Tuner

    Offline

    A guitar tuner that runs entirely on-device.

    v0.3.0 · 2.8 MB · Web ↗
    Download APK
  • Memory app icon

    Memory

    Cloud sync

    Track the days that matter — birthdays, anniversaries, days-since and countdowns, with on-device reminders.

    v0.3.0 · 3.1 MB · Web ↗
    Download APK

04.Now

Last updated: June 12, 2026

✓ Done

World Cup score predictor

✓ Done

Guitar tuner

✓ Done

Billiards scorer

○ Shelved

Algorithmic trading system (shelved)

A backtesting system for BTC/ETH/SOL built around a symbolic-AI rule engine. Running it 24/7 needs a hosted server, and that cost dwarfs my actual capital; without a connectionist model and the compute to back it, the system can't read regime shifts in the market well enough to trust.

quant.tuchenguang.com
○ Shelved

Plants vs Zombies (learning build)

A Phaser remake of Plants vs Zombies to sharpen my game-loop skills — grid planting, wave spawning and the sun economy all work. But it leaned ever harder on the original's art and audio (too costly to redo cleanly) and kept drifting from the learning goal, so I shelved it — what I finished is still playable online.

pvz.tuchenguang.com
○ Shelved

Moodle course dumper

A browser extension that bulk-grabs my university's Moodle — course pages, announcements, attachments — to disk in one click, then hands it to an LLM to read across and cross-check into a confidence-tagged deadline list, keeping scraping and comprehension separate. A personal tool, never publicly deployed.

● In progress

Polishing Pocket Ledger

Steady polish on the existing build — bilingual UI, data export, budget visualizations, and interactions that just feel more obvious.

● In progress

Polishing the deadline tracker

Currently in closed beta — it'll open up to everyone before long.

● In progress

PCB-art generator

No AI — just Python. The user uploads an image; the script separates colors, simplifies the shapes, and outputs a PCB .zip ready to send straight to JLCPCB.

05. Travel

Places I've been

06. What's next

Get in touch

Say hello