Building useful things across full-stack apps, scripts, desktop tools, and AI workflows.
GitHub · Blog · Juejin · Zhihu · LeetCode Bilibili
I like shipping practical software, fixing annoying edge cases, and learning in public.
My recent work sits in a few lanes:
- full-stack product and tool development
- cross-platform desktop tools
- AI-agent workflows and CLI tooling
- scripting, automation, and small experiments that are actually usable
| Shipping | Exploring |
|---|---|
| Full-stack tools and workflow apps | Business rules turned into scripts and automation |
| TypeScript utilities and editor tooling | LLM-assisted input and agent workflows |
| Maintaining | Learning |
|---|---|
| Blog notes, profile docs, and personal tooling | Flutter/Dart, language skills, and systems thinking |
| Open-source forks that are worth continuing | Better product sense through real debugging work |
- Working on tools that remove friction from daily workflows instead of demo-only projects.
- Moving between frontend, backend, scripts, and tooling depending on where the real bottleneck is.
- Turning messy business rules into software, whether that lands in a web app, a CLI, or an internal automation script.
- Keeping one foot in open-source desktop tooling and another in automation-heavy scripting.
- Writing more artifacts that are useful after the code is done: notes, guides, and postmortems.
when a process is slow, repetitive, or easy to get wrong, I try to turn it into software. That can mean scripting around manufacturing workflows, automating checks, or cleaning up rule-heavy logic, but the core skill is still the same: understanding the business, then implementing the right frontend, backend, or tooling shape for it.
Cross-platform clipboard tooling built around fast daily workflows, privacy, history, and sync.
Private or local-first workflow scripting that translates domain rules into usable tools, including validation logic, process checks, and automation for repetitive operator tasks.
A continued fork of a VS Code plugin experiment, rewritten forward with Node 20 and extra interaction modes.
An experiment around using LLMs for pinyin input inside IBus.
My blog repository for notes, experiments, and things worth writing down after the debugging ends.
TypeScript Python Rust Shell Dart JavaScript Git Linux Tauri Flutter CLI Automation
- projects that started from an actual inconvenience
- web, CLI, desktop, and script work mixed together when the problem calls for it
- forks that I continued because the original idea was still worth it
- notes about engineering tradeoffs, not just finished results
- a mix of quick experiments and long, annoying fixes