Most but not all of the open source software
I develop or maintain can be found on my GitHub page.
The GitHub project homepages will all contain more detailed
information and documentation.

Below you can find a complete list of all of my public projects
with links to external repositories and documentation.

OCaml Software

My OCaml software generally uses Oasis for package
specification to make installation and package management
as easy as possible on all platforms supported by OCaml.
I also release OPAM
packages for that purpose.

Machine Learning

GPR - Gaussian Process Regression

Gaussian processes are a modern
Bayesian approach to machine learning for inferring
nonlinear functional relationships within data. GPR offers
a library and a command-line application to use some of the
latest computationally tractable approximations of Gaussian
processes for regression problems.

Scientific Computing

LACAML - Linear Algebra for OCaml

GSL-OCaml - GSL-bindings for OCaml

This library is the work of Olivier Andrieu.
I only repackaged it using Oasis, made it a packed library,
and fixed some tiny issues. These changes will hopefully find
their way into the original distribution soon.

Type-driven Code and Protocol Generation

Type_conv - Generating Code from Type Definitions

This library can be used in
conjunction with the OCaml preprocessor Camlp4
to generate code from type definitions. It is used,
for example, by Sexplib and Bin_prot to generate code for parsing
human-readable and binary protocols respectively.

Sexplib - S-expression Converters Derived from Type Definitions

This library provides numerous functions for parsing and
pretty-printing S-expressions. A key feature is its use of Camlp4
and Type_conv to generate S-expression
parsers and pretty-printers automatically from OCaml type
definitions.

Bin_prot - Binary Protocol Converters Derived from Type Definitions

This library provides numerous functions for
reading and writing highly efficient and safe
binary protocols. A key feature is its use of Camlp4
and Type_conv to generate such
readers and writers automatically from OCaml type definitions.
The generated code will not crash on illegal input, can
be enriched with user-defined semantic checks, and is fast
enough to saturate gigabit connections for both reading and
writing of highly structured values.

Database Connectivity

SQLite3-OCaml - SQLite3 bindings for OCaml

This OCaml library interfaces version 3 of the SQLite3 client C-library.
The first version of this library was written by Christian
Szegedy and has subsequently been heavily modified with
numerous bug fixes and feature extensions.

PostgreSQL-OCaml - PostgreSQL bindings for OCaml

This OCaml library interfaces the PostgreSQL client
C-library. The first version of this library was written
by Alain Frisch and has
subsequently been heavily modified with numerous bug fixes
and feature extensions.

ocaml-prog-pats - Programming Patterns for OCaml

Build Tools

ocaml-makefile - A generic Makefile for OCaml

This generic Makefile contains numerous flags and build
targets for building OCaml applications and libraries with
little effort. It should scale from small to medium-sized
projects. This tool is mature and stable, but is only
in maintenance mode now. More modern build systems
like OMake
or the standard OCaml build tool ocamlbuild
should be considered instead, since traditional make does not
scale to complex, large systems.

LambdaProlog

LambdaProlog
is a higher-order logic programming language.
Its features like HOAS (Higher-Order Abstract Syntax),
higher-order unification, and intuitionistic implication make
it particulary suitable for representing and manipulating
programs in a highly declarative way. Do you need a function
for determining whether some arbitrary data structure contains
another arbitrary one? LambdaProlog can do just that in one
short, type-safe line of code:

contains T ST :- T = F ST, not (pi x\ F x = T).

Program Transformation

Fun-trans - Transformation of Functional Programs

I really enjoyed my programming
experience with LambdaProlog during my Master's
thesis. Fun-trans is the implementation of the
transformation framework described therein.