joetjen.net
EN DE

Jan Oetjen

I build languages and the tooling around them — grammar compilers, data notations, configuration languages — mostly in Elixir, and mostly because the problem was interesting enough to keep going.

Developer in Kiel, Germany · Elixir, PHP, JavaScript, Java

Where to start
Elixir

cooper

Loads CASC config files — hierarchical, with imports, variables, interpolation, environment reads and loops — into native Elixir terms.

Elixir

dextrin

The reference implementation of DXN (Data eXchange Notation) for Elixir: .dxn text, .dxnb binary, .dxns schema.

All libraries →

Languages & frameworks
Programming language

Praxis

A Clojure-shaped Lisp for the BEAM and JavaScript, with Erlang/OTP semantics — compiler, runtime and tools written in Praxis itself. Not yet released.

Web framework

WebGlue

A web framework in Praxis, built as glue: Ring’s simplicity, Phoenix’s ambition. Small libraries that agree on one plain-map request/response contract.

Grammar language

Aether

The grammar language of Ichor: a PEG notation in which the case of a name decides whether the lexer or the parser matches it. CASC and DXN are both defined in it.

Configuration language

CASC

The configuration format behind Cooper: typed values, variables, environment reads, cross-references, imports and loops — with a formal grammar.

Data format

DXN

Data eXchange Notation: one data model with a readable text form and a compact CBOR-based binary form — exact numbers, sets, tuples, structs, dates and schemas included.