English | 繁體中文
Software Architect · .NET · Taipei, Taiwan
I design and build enterprise application frameworks in .NET — the kind of infrastructure that ERP and line-of-business teams build on for years. I also contribute fixes upstream to the open-source tools I depend on: UI frameworks, component libraries, and database tooling.
- 🏗️ Author of Polhem, a definition-driven .NET framework that runs one business app on desktop, browser, iOS, and Android
- 🔧 Merged contributions to dbx, Avalonia, MudBlazor, Fluent UI Blazor, and MiniPdf
- ✍️ Writing about architecture and AI-assisted engineering on Medium and DEV
A modular .NET framework for building definition-driven business applications — the successor of Bee.NET.
- Single source of truth —
FormSchemadrives UI layout, database schema, and validation simultaneously - Any client, one API — Avalonia (desktop, browser, iOS, Android), Blazor Server, and JavaScript clients talk to the server over JSON-RPC 2.0
- Multi-database — SQL Server, PostgreSQL, MySQL, Oracle, and SQLite
- Conventions enforced at build time — Roslyn analyzers ship with the packages and turn framework rules into build diagnostics
- Shipped on NuGet with CI, test coverage, and static analysis on every change
See it in action: Polhem.Northwind — the classic Northwind case built almost entirely from definitions.
Also from polhem-dev: Polhem.OAuth2 (OAuth2 sign-in for Google, Facebook, LINE, Entra ID, Auth0, Okta) · Polhem.JsonRpc (JSON-RPC 2.0 on System.Text.Json) · polhem-connector-js (TypeScript client)
| Project | What I worked on | Example |
|---|---|---|
| dbx | Database correctness across Oracle, PostgreSQL, MySQL, and SQL Server | Report PL/SQL compilation errors in the SQL editor · Cancel the running statement when a query is stopped |
| Avalonia | macOS accessibility and automation | Don't expose a masked TextBox's text through its automation peer |
| MudBlazor | Component behavior | MudDatePicker: open month and year views in the clicked column |
| Fluent UI Blazor | Accessibility | Expose selected and disabled day states to assistive technologies |
| MiniPdf | Font management API | Add MiniPdf.ClearRegisteredFonts |
Languages & platforms: C# · .NET · ASP.NET Core · Blazor · Avalonia · TypeScript
Databases: SQL Server · PostgreSQL · MySQL · Oracle · SQLite
Architecture: N-Tier · Clean Architecture · MVVM · Definition-Driven Architecture · JSON-RPC
Domain: Enterprise information systems · ERP · Business object design




