About
I’m a product engineer at charles in Berlin, an AI-native conversational marketing and commerce platform, where I build customer-facing product end to end. Before that: eight years across frontend, backend, and infrastructure at SuitePad, HousingAnywhere, Andela, Rhino, and Leafly.
Alongside that I keep up an independent research practice. I hold an MSc in Advanced Computer Science from the University of Leicester, where my thesis was on operational semantics. My interests sit at the intersection of programming language theory, systems, and data and machine learning: how we give programs precise meaning, how we make them fast and observable, and how we learn from what they produce.
If you’re new here, how I became an engineer is a good place to start, or browse everything by topic.
Selected research
-
TS₀: An Initial Calculus for Typestate Verification
Research note · 2026
A sequential foundation for interference-aware TypeScript analysis, with base typing and explicit proof obligations.
-
Can TypeScript know a file is still open after await?
Research proposal · 2026
A proposal for checking TypeScript lifecycle protocols in the presence of aliases and asynchronous interference.
Writing
- The Two Modes of Thinking: How Divergent and Convergent Thinking Drive Research and Innovation
- Branded Types in TypeScript: From Structural to Nominal Typing
- Building a View Counter for Static Sites with Supabase and Astro
- Learning with the Strangler Fig Pattern: Replace Your Skills Gradually
- The End of 'Sorry, I Didn't Understand': How AI Agents Are Replacing Old Chatbots
- Unveiling the Shadow Play: Simplifying Complex Data with Vector Projection
- Operational Semantics: Adding Variables, Functions and Conditionals
- Operational Semantics: A Formal Approach to Arithmetic Expressions
- Strengthening Connections: A Hebbians Lens on Love and Relationships
- A Beginner's Guide to Functional Programming with OCaml
- Algorithms: What are they?
- Filtering Sensitive Data in Ruby on Rails with ActiveSupport::ParameterFilter
- How I became a Software Engineer/Programmer
Projects
- L-Language · A minimal functional language in Haskell with a React visualizer for evaluation and operational semantics.
- Rtpl · A low-latency market data pipeline for trading workloads, designed for sub-5ms message processing.
- Sqll · An open-source Python SQL client built around SQLite for embedded workflows.
- Pricc · A C project generator written in Rust for faster systems development setup.
- rcv · A Rust resume generator that converts declarative .rcv files into PDF output.
- cathtml · A type-safe, composable DSL for building HTML pages in OCaml.
- gurl · A CLI wrapper around curl for faster and more ergonomic terminal usage.
- raptur · An Express-inspired router for TypeScript backend services.
- cashapp · A peer-to-peer payments service prototype.