Things I built because I found them technically interesting. Not everything I have ever written — only what has a working artifact behind it.
The sections say how mature a thing is; the tag after each name says what kind of thing it is:
[library] — reusable code, imported by other code.
[tool] — something you run from a command line.
[solution] — a worked-out setup for one concrete problem.
[devops] — infrastructure, pipelines and cluster plumbing.
[language] — a language, or an experiment about languages.
[research] — code written to answer a question.
The second bracket is the state of the repository: updated is when the repository last received a commit, and what follows the dot, where there is anything, is the newest released version and its date. A project with no version has never been tagged for release. Both are as of September 2026 and are not updated automatically — the repository itself is authoritative.
Released and still moving. Rough edges are on purpose.
HyperMarkdown [language, tool] [updated 2026-08 · v0.2.0 2026-08] — ordinary Markdown plus wiki-style links and transclusion, so a folder of .md files becomes a knowledge graph that is still plain text. (source)
grem [tool] [updated 2026-08 · v0.3.0 2026-08] — deterministic, versioned project scaffolding and agent workflows for AI-assisted development.
yep [devops] [updated 2026-03] — yet another engine for pipelines: a small Python core that runs a declared pipeline without dragging a CI server along with it.
groundstack [devops] [updated 2026-03] — a down-to-earth, cost-free substitute for cloud APIs, so testing, prototyping and local development do not need an account with anyone. Written in Go.
Stable and doing their job. I am not adding features, but I fix them when they break.
Agent K [devops] [updated 2025-04] — a minimalistic kubectl companion that keeps the everyday cluster commands short.
JSModem [tool] [updated 2026-07] — a virtual modem device for Fabrice Bellard's JSLinux, giving a Linux machine emulated in the browser a network connection over PPP. (demo)
findtools [library] [updated 2026-09] — file search routines in Python, in the spirit of GNU findutils.
pshlib [library] [updated 2023-05] — causal embedding of shell commands into Python, so a long bash one-liner can be written as a nested, multi-line Python statement.
runstat [library] [updated 2015-05 · 1.0.0 2015-05] — running variance and standard deviation after Welford's 1962 algorithm, in Python, MATLAB and C++.
ibm-mq-mtls [solution] [updated 2026-03] — a reproducible IBM MQ test setup with mutual TLS authentication.
minikan [solution] [updated 2020-08 · v0.1.0 2020-08] — a small-scale Kafka cluster on Kubernetes, for local development and testing.
picostack [tool] [updated 2015-09 · 0.1.10 2014-09] — a minimal KVM virtualisation manager for a single Linux host: a command line over libvirt with a small Django web application around it.
Pre-alpha: prototypes, playgrounds and thinking out loud in code. Published because the idea is worth reading, not because the code is ready.
kolmi [research] [updated 2026-05] — a reference implementation of Kolmogorov maximization of (semantic) inference: text compression that uses an autoregressive language model as the predictor, driven from the command line against either a local HuggingFace model or an external LLM API. (paper draft, design note)
len [language] [updated 2026-03] — an experimental meta-programming language for writing programs that reason about programs. (documentation)
subdot [library] [updated 2025-05] — a realtime event-routing framework for building pubsub-like systems, where subscribers filter on the payload rather than only on the topic.
kgr [devops] [updated 2025-04] — kguru, an agnostic, declarative and distributed manager for infrastructure as code.
Other people's projects, packaged and bugfixed by me. The original authorship is theirs.
beautify_bash [tool] [updated 2026-09 · v2.0.0 2026-09] — a shell-script formatter written in Python, originally by Paul Lutus (2011).
mlab [library] [updated 2017-12 · 1.1.4 2014-08] — a high-level Python-to-MATLAB bridge; a repackaging of the original mlabwrap project and of later work by Dani Valevski.
yamlmatlab [library] [updated 2019-08] — YAML input and output for MATLAB by Jiří Cigler, Jan Široký and Pavel Tomáško, packaged into a +yaml namespace.
daemoncxt [library] [updated 2013-07] — a PEP 3143 library for well-behaved Unix daemon processes, packaged from python-daemon.
No longer developed, kept online for reference.
disktools [tool] [updated 2015-01] — Python extensions to du, df and friends. The one idea worth keeping is duc: rather than holding a size index in one global place, it leaves a .duc cache in every directory as it walks the tree, so a later query reuses the subtrees it has already measured and a chosen sub path can be monitored over the long run. The cost is that writing the cache entry disturbs the containing directory's modification time, once. Tested on XFS volumes over 100 TB and more than ten million files. zevv/duc is a similar tool, and a far more developed one.
ci3 [devops] [updated 2022-08] — continuous deployment for Kubernetes and GitLab, running build pipelines as pods in a cluster. (example deployment; the GitHub repository is a stale mirror)
UaaX [library] [updated 2019-03] — an Angular library of reusable authentication, authorization and user-management flows, extracted from JHipster-style applications. The repository above is the demo application that hosts and exercises the library code.
plato [library] [updated 2013-07] — PyPlato, a set of Python batching utilities for HPC scheduling and shell-like automation.
pipette [library] [updated 2015-04 · 0.2.0 2015-04] — a protocol for chaining intercommunicating processes into a pipeline. Each process reads its parameters as a YAML document on standard input and writes its results as YAML on standard output, so programs compose like shell pipes but pass structured data rather than lines of text; the workflow itself is described in YAML too. (pipes.py)
brainy [solution] [updated 2015-04 · 0.1.19 2015-04] — a nimble workflow manager at the core of the iBRAIN framework: it lays out scientific computing projects, runs their pipelines on an HPC cluster and reports on the progress. The upstream repository has been archived by the Pelkmans lab and my GitHub fork is gone; the GitLab copy above is what survives. (user manual)
examplecv [solution] [updated 2016-02] — a companion showcase for brainy: running a simple ilastik and CellProfiler pipeline in parallel.
parcp [library] [updated 2016-01] — ParCP, a small Python library for running CellProfiler in parallel on a cluster or in the cloud: it splits an image set into batches, runs the pipeline over each batch independently and merges the results back together.
MatlabCompat.jl [library] [updated 2019-07 · v0.2.0 2015-11] — a MATLAB compatibility library for the Julia language, easing the migration of numerical code from one to the other. (documentation)
Infectio [research] [updated 2015-10] — a simulation framework for predicting pathogen dynamics; its capse implementation in MATLAB combines cellular automata with particle strength exchange.
s3it-playbooks, samba_export and storagesite-playbooks [devops] [updated 2015-05 to 2016-07] — one cluster of Ansible automation written for research infrastructure at the University of Zurich. s3it-playbooks is the scaffold holding the playbooks together, samba_export is a role that exports a storage volume over Samba, and storagesite-playbooks assembles the two into a CIFS export on Ubuntu. Small, but they are what actually ran.
ansible-miniconda [devops] [updated 2018-06] — an Ansible role that installs Miniconda and creates Conda environments from a declared list, so a scientific Python stack can be brought up on a fresh machine without manual steps.
respawn [tool] [updated 2012-01] — a user-space implementation of the inittab respawn behaviour in Python: it keeps a declared set of processes alive without needing root or a change to the system init.
sqlalchemy-XL [library] [updated 2016-06] — an on-the-fly dialect patch that lets SQLAlchemy emit the distribution clauses (DISTRIBUTE BY) that Postgres-XL needs, so an existing model definition can target a distributed cluster without being rewritten.
Upsilon [library] [updated 2013-08] — an open-source MATLAB toolbox: a collection of small functions and scripts, packaged together so they can be added to a path as one thing.
DocStyle [tool] [updated 2010-10] — a docstring style checker for Python, with the PyDoc conventions expressed as an ANTLR grammar rather than as regular expressions.