About

Systems fail when we optimize for 'how' before understanding 'why.' When teams chase the right questions first, architecture emerges from constraints.

At Wise, we're solving content collaboration for 20 teams at scale. Building editorial infrastructure that handles global→local fintech tension—regulations collide with cultural nuances, offerings vary by market. The problem space is architectural: how do we maintain coherence and developer experience when constraints multiply?

Functional programming principles emerged through production bugs at Instabug, Statsbomb, and Wise. Traditional thinking treats velocity and correctness as opposing forces. Working in high-velocity environments revealed they're complementary: when you separate behavior from state and make illegal states unrepresentable, both increase together. Still learning what's possible when architecture constrains failure.

How do systems adapt when the future is unknowable? Architectural separation—separating behavior from state, making illegal states unrepresentable—means systems can handle surprises structurally. Exploring how LLMs fit this pattern: not as automation replacing judgment, but as cognitive partners revealing architectural possibilities we haven't considered. Working primarily in TypeScript, Python, Go, and Clojure.

Curious about the 'why' first—it often reveals the 'how.'

Technical Expertise

  • Functional programming and separation of concerns
  • Distributed systems correctness
  • Real-time event processing and collection systems
  • Content architecture and editorial platforms
  • Global→local scaling (fintech regulations, i18n/l10n)
  • Developer experience and platform thinking
  • Architectural patterns for distributed systems
  • LLM-augmented development patterns