We believe that programming can be, and should be, an intellectually rewarding activity; that a good programming language is a powerful conceptual tool — a tool for organizing, expressing, experimenting with, and even communicating one's thoughts ... we think that programming can be, and should be, part of the problem solving process itself; that thoughts should be organized as programs, so that consequences of a complex set of assumptions can be investigated by "running" the assumptions; that a conceptual solution to a problem should be developed hand-in-hand with a working program that demonstrates it and exposes its different aspects.
(Sterling & Shapiro, The Art of Prolog)
Published
um-abt: An OCaml library implementing unifiable abstract binding trees (UABTs)
emojitsu: Tiny executable techniques for dealing with emoji
alg_structs: Algebraic structures in OCaml Structs
tokenize.pl: Tokenization library for SWI-Prolog balancing simplicity and flexibility
OSS Contributions
quint: A specification language with modern tooling based on the temporal logic of actions (TLA)
- Technical Project Lead of Informal System's Apalache team.
- Contributed to core design and implementation of the syntax, type system, and tooling.
- Managed build and release infrastructure.
- Documentation, maintenance, user support.
- Authored algorithm specifications.
omd: Extensible Markdown library and tool in pure OCaml
- (Volunteer) maintainer
- Have helped guide key design decisions since 2021
Apalache: A symbolic model checker for TLA+
- Member of the Informal System's Apalache team.
- Contributed to implementation of the type system.
- Build and release engineering.
- Documentation drafting, maintaining, and editing.
themis-contract: A command line-based parameterized contracting tool
- Member of distributed orgs team at informal.systems.
- Requirements gathering, specification, design, and implementation.
- Project management.
dune: OCaml's composable build system
- Member of the dune development team
- Designed and implemented the
init
subcommand
aws_ssm_provider: A configuration provider for Elixir handling AWS SSM parameters
- Rewrote library to adhere to functional principles for compatibility with Elixir 1.9
ATD: "Adaptable Type Definitions"
- Extended some small language features and hepled with bug fixes
Vyconf: A software appliance configuration framework written in OCaml
- Contributed to the parser for the VyOS configuration language.
Unpublished | WIP
OooapI: OCaml of Open API
- Generate OCaml client libraries from Open API specifications.
- Implemented via ppxlib and atd, aiming for a robust, extensible, and maintainable implementation derivation. No fiddling with untyped templates.
Oopenai: An OCaml Library for Open AI's API
- An unofficial OCaml client library for OpenAI's API.
ND Project: A pedagogical web toy for learning Gentzen’s natural deduction
- Fullstack, reactive OCaml using
Opium
,Js_of_ocaml
, andincr_dom
.
These: A Type for inclusive disjunction
- An OCaml port of Haskell's Data.These and Data.Align.
- Uses the structures supplied by alg_structs
OCOBS: COBS (Consistent Overhead Byte Stuffing) in OCaml
- COBS is "a framing method for binary streams and is useful any time you need to send binary datagrams over a stream interface" - Inspired by nim_cobs
- My property based testing for this implementation revealed a bug in
nim_cobs
.
Consolate: What if everything where a multiplexer?
- An experiment in modular design of modal console applications.
protelog.pl: Experiments with Prolog syntax extensions
- Macros to modernize powerful prolog idioms