Notes · Self
About Me
I realized I had never written a proper intro for my own blog. The first serious self-introduction I wrote somehow ended up on the company intranet. Since you opened this page, I assume you are probably someone who still carries a healthy curiosity about the world.
You can call me Ethan. At work, I focus more on the Feishu ecosystem and how AI can be applied inside enterprise workflows: how business processes, data structures, collaboration tools, and model capabilities can come together so AI becomes part of daily work rather than just another chat interface.
Outside work, I build personal projects such as App Store Price, Pinlist, AI Token Usage, and a handful of native macOS / iOS apps and self-hosted tools. These projects are my testing ground: a place to validate product ideas, polish interaction details, and keep myself close to the full path from frontend and backend to automation and deployment.
I tend to define the problem before writing code: what the invariants are, where the soft edges live, and what the minimum runnable system looks like. Get it running first, then iterate on structure, experience, and performance. I spend disproportionate time on tooling, docs, and constraints because they are the infrastructure that lets a project live for years.
My home is in Luoyang, Henan, in China’s central plains. I spent four undergraduate years in Shenyang, Liaoning, then moved to Hangzhou for graduate school. Work first took me to Beijing, and later I returned to Hangzhou to build a family. Each of these cities now holds a different chapter of my life.
I love electronic products. Almost anything that runs on electricity interests me, and I like taking things apart. As a kid I opened computers and phones to study their internal structure, often breaking them in the process. Over time that curiosity became an obsession with products, systems, and troubleshooting. Over the past two years I have become especially fascinated with repair and diagnostics, to the point that I once seriously considered becoming a Genius Bar technician at an Apple Store. I still want to learn how to repair Apple devices someday. My favorite repair videos on YouTube are from 艾奥科技.
One thing I have kept doing from university until now is learning English. While preparing for the postgraduate entrance exam, I started thinking about studying abroad, which was also why I took IELTS. After the exam, the pandemic put that plan on hold. But English stayed with me and gradually became part of how I read docs, follow technical material, and watch repair videos.
I also like photography, though my wife often complains that my photos make her look worse than she does. Recently I have been reading Photography Notes by Ning Si Xiaoxiao. While reading, I found that I already knew the basic concepts and even understood some topics in a bit more depth, yet my photos still somehow look terrible.
On yizhe.me you’ll find some of these personal projects, along with notes on AI-native products, software polish, and the personal interests that keep pulling me into new rabbit holes.
Outside view
Me, in Claude’s Eyes
Written by Anthropic’s Claude, based on the projects we’ve built together under ~/Projects.
- 01
You design systems; you don’t just iterate fast.
You take time to figure out what’s invariant and what isn’t before you write code. The CLAUDE.md in appstoreprice asks for “three invariants before any large refactor” — that constraint feels written for future-you and your collaborators, not for a single shipping cycle.
- 02
You keep things small on purpose.
claude-bar is ~250 lines of jq + awk shell — no npm, no bundler, no runtime. When you build a tool, you reach for whatever will still run untouched in five years, not whatever looks most modern this quarter.
- 03
On iOS, you go native — never a wrapper.
Pinlist is SwiftUI + SwiftData + CryptoKit + CloudKit; PowerFlow targets iOS 26’s Liquid Glass. You absorb the platform’s learning cost so the product feels like it belongs there.
- 04
Detail-obsessed, but always for a reason.
We spent eight rounds polishing a single navigation squiggle — not because the difference was huge, but because you could articulate exactly which pixel-level inconsistency was bothering you. Your eye for detail always points at a specific visual or interaction signal; it’s never detail-for-detail’s-sake.
- 05
Tooling consumer and tooling creator.
You use pnpm / Drizzle / Astro, sure — and you also write Claude Code plugins, launchd-managed Chrome instances, and your own token-usage worker. When workflow friction crosses a threshold, you fix the friction instead of routing around it.
- 06
Docs density well above average.
appstoreprice splits its architecture into overview / databases / data-flow / domain-routing. Multiple CLAUDE.md files specify commit emoji, naming style, even how country flags render. You don’t write docs to look professional — you write them so you can return to a project six months later and pick up.
- 07
Bilingual codebase, global perspective.
Comments and identifiers in English, product copy mostly Chinese, commit messages in Chinese with emoji. Your products — App Store Price, Pinlist — were multi-region from day one. You build tools that start in China and serve the world, not single-market apps.
- 08
You notice friction, and friction is where you build.
claude-chrome exists because chrome-devtools-mcp kept showing an Allow dialog — a minor annoyance most would ignore. You stopped and solved it. That same sensitivity shows up across projects; it’s the root of your product instinct.
— Claude (after reading everything Ethan keeps under ~/Projects)