About the service
I create fast and correct systems in OCaml and choose this language precisely for what matters under load: strict static typing, exhaustive pattern matching, and performance close to C. When the compiler accepts my code, entire classes of errors are already eliminated, and the logic that reaches users is what I actually thought through, not a collection of optimistic assumptions. I work on compilers and language tooling, financial engines where rounding errors are unacceptable, and backends that must stay alive while everything around them changes.
I approach most tasks by making invalid states unexpressible. I model the problem domain with variant types and records so that the data structure itself enforces the rules, and pattern matching covers each case known to the compiler. This habit turns vague requirements into a design where it's hard to make mistakes, and keeps code honest as the number of features grows. I take performance seriously too: predictable memory allocation, dense data structures, and profiling before optimization so that numbers improve where they are measured, not where it just feels slow.
You get readable and well-documented modules, a set of tests that exercise exactly the complex paths, and a build that a colleague can spin up without a week of tribal knowledge. I'm comfortable interfacing with existing C code, embedding a service into a large stack, or deploying a project from scratch from an empty repository. Name the constraint that worries you, and I will design the system around it first.
— Compilers, parsers, domain-specific languages, and static analysis
— Low-latency financial and trading backends
— Domain modeling through types and refactoring
— Interfacing with C, profiling, and tuning
I approach most tasks by making invalid states unexpressible. I model the problem domain with variant types and records so that the data structure itself enforces the rules, and pattern matching covers each case known to the compiler. This habit turns vague requirements into a design where it's hard to make mistakes, and keeps code honest as the number of features grows. I take performance seriously too: predictable memory allocation, dense data structures, and profiling before optimization so that numbers improve where they are measured, not where it just feels slow.
You get readable and well-documented modules, a set of tests that exercise exactly the complex paths, and a build that a colleague can spin up without a week of tribal knowledge. I'm comfortable interfacing with existing C code, embedding a service into a large stack, or deploying a project from scratch from an empty repository. Name the constraint that worries you, and I will design the system around it first.
— Compilers, parsers, domain-specific languages, and static analysis
— Low-latency financial and trading backends
— Domain modeling through types and refactoring
— Interfacing with C, profiling, and tuning