Nana Adjei Manu
I’m a software engineer who lives in Berlin. I work at charles, building customer-facing product for an AI-native conversational marketing and commerce platform. Before that I spent eight years across frontend, backend, and infrastructure at SuitePad, HousingAnywhere, Andela, Leafly, and others.
On the side I work on programming languages. I hold an MSc in Advanced Computer
Science from the University of Leicester, where my thesis was
on operational semantics, and I’m currently thinking about how a static analyzer
could check object lifecycles in TypeScript across await.
I like OCaml and Haskell, and I write about both.
Email n.k.a.manu06 at gmail.com. Also on LinkedIn, Twitter, and RSS. Opinions are my own.
projects : Repo list
Things I’ve built, mostly around languages: L-Language, a small functional language in Haskell with a visualizer for its operational semantics; cathtml, a type-safe HTML DSL in OCaml; and rcv, a declarative résumé format compiled to PDF, in Rust. Smaller tools include Pricc, gurl, and Sqll. All projects →
research : Thread list
-
Typestate for TypeScript
Γ ⊢ h : File⟨open⟩ after
awaite ?Checking lifecycle protocols in the presence of aliases and asynchronous interference.
- Can TypeScript know a file is still open after await? — research proposal, Sep 2026
- TS₀: An Initial Calculus for Typestate Verification — early draft, Sep 2026
-
Operational semantics
⟨e, σ⟩ ⟶ ⟨e′, σ′⟩
Small-step and big-step accounts of evaluation, from arithmetic to closures. The subject of my MSc thesis at Leicester.
- Operational Semantics: A Formal Approach to Arithmetic Expressions — post, Feb 2025
- Operational Semantics: Adding Variables, Functions and Conditionals — post, Feb 2025
- L-Language — Haskell interpreter with an evaluation visualizer
notes : Post list
- Branded Types in TypeScript: From Structural to Nominal Typing
- Building a View Counter for Static Sites with Supabase and Astro
- 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
- A Beginner's Guide to Functional Programming with OCaml
- Algorithms: What are they?
- Filtering Sensitive Data in Ruby on Rails with ActiveSupport::ParameterFilter