C++ · Systems Programming · Software Architecture
📍 London, UK
Building systems that are understandable, evolvable, and able to survive their own success.
Today's design becomes tomorrow's constraint.
Good design leaves tomorrow with more possibilities.
|
Scriptorium is an experimental, cross-platform input method framework. It started as a Windows input method and gradually evolved into a multi-process architecture, separating platform integration, input method logic, UI, and shared infrastructure. The project is also where I explore a broader question: How can a system evolve without letting today's implementation decisions unnecessarily constrain its future? |
Current focus
|
Scriptorium has evolved from a Windows-specific input method into a multi-process, cross-platform architecture.
Read the full architecture evolution →
|
Platform integration |
Input method core |
Stateless UI |
Shared foundation |
Command-line tooling |
|
cxx-reflection is an ongoing collection of experiments around reflection and compile-time programming in C++. I use it to explore the language itself: what can be expressed at compile time, where abstraction becomes useful, and where it starts becoming a constraint of its own. The project is still in progress. Most of my recent development time is currently going into Scriptorium, but I intend to keep evolving these experiments alongside it. |
Exploring
|
|
|
I tend to care less about finding the perfect architecture and more about understanding the trade-offs a design introduces.
A design is never free.
Every abstraction makes some things easier and other things harder.
The interesting part is choosing deliberately.
I have worked on Chinese translations of several technical books:
|
|
I occasionally write about software engineering, architecture, and C++.
-
The Invisible Cost: From Creator to Consumer
Abstraction, cognitive cost, and the shift from creator to consumer. -
Cognitive Leakage and Cognitive Anchors: What We Lose Is More Than Just Code
How systems lose not only code, but the reasoning and context behind it.
-
Implement Fuzzy Type Match During Compile Time in C++
Exploring fuzzy type matching at compile time in C++. -
Dynamic Store Fields Type Info with C++
Experimenting with runtime type information and field metadata in C++.