About the service
I am a Standard ML developer and write code that must be correct: compilers, interpreters, static analyzers, domain-specific languages, and tools supporting formal reasoning. I work specifically in the ML family — SML/NJ for interactive development and rapid prototyping, MLton for whole-program optimization and fast native binaries, Poly/ML where a responsive REPL over a large codebase is needed. This is not Haskell, OCaml, or F#, but Standard ML with its precise formal definition, algebraic types, exhaustive pattern matching, and, crucially, a powerful module system of structures, signatures, and functors that lets you assemble large systems true to their interfaces.
My everyday work is turning grammar or semantics into working, maintainable code. I design abstract syntax, write lexers and parsers, build type checking and elaboration passes, lower everything to intermediate representations, and generate or interpret results. I care about making invalid states unrepresentable: I bake invariants into the type system so the compiler cuts out whole classes of errors before the first test. When correctness must be proven rather than just checked, I link SML code with proof systems and specification tools, write property-based tests and reference interpreters to pin down behavior precisely.
I am comfortable joining a research group, language team, or company that inherited a mature SML system and needs someone at home in it. I read other people's functors, untangle complex signatures, add features without breaking abstraction boundaries, and document the reasoning so the next person can follow it. Tell me what language, invariant, or pass you need, and I will give you clean, typed, well-structured Standard ML you can rely on.
— Compilers and interpreters on SML/NJ, MLton, Poly/ML
— Lexers, parsers, type checking, and elaboration passes
— Module design: structures, signatures, and functors
— Domain-specific languages and embedded interpreters
— Property-based testing and reference interpreter validation
— Formal reasoning, specifications, and prover integration
— Refactoring and maintaining inherited Standard ML code
My everyday work is turning grammar or semantics into working, maintainable code. I design abstract syntax, write lexers and parsers, build type checking and elaboration passes, lower everything to intermediate representations, and generate or interpret results. I care about making invalid states unrepresentable: I bake invariants into the type system so the compiler cuts out whole classes of errors before the first test. When correctness must be proven rather than just checked, I link SML code with proof systems and specification tools, write property-based tests and reference interpreters to pin down behavior precisely.
I am comfortable joining a research group, language team, or company that inherited a mature SML system and needs someone at home in it. I read other people's functors, untangle complex signatures, add features without breaking abstraction boundaries, and document the reasoning so the next person can follow it. Tell me what language, invariant, or pass you need, and I will give you clean, typed, well-structured Standard ML you can rely on.
— Compilers and interpreters on SML/NJ, MLton, Poly/ML
— Lexers, parsers, type checking, and elaboration passes
— Module design: structures, signatures, and functors
— Domain-specific languages and embedded interpreters
— Property-based testing and reference interpreter validation
— Formal reasoning, specifications, and prover integration
— Refactoring and maintaining inherited Standard ML code