This is an overview of projects that I work on (or have worked on).


Flexx is a pure Python toolkit for creating graphical user interfaces (GUI’s), that uses web technology for its rendering. You can use Flexx to create desktop applications, web applications, and (if designed well) export an app to a standalone HTML document. It also works in the Jupyter notebook.

Being pure Python and cross platform, it should work anywhere where there’s Python and a browser.

Flexx has a modular design, consisting of a few subpackages, which can also be used by themselves, such as a Python to JavaScript transpiler and an powerful event system.


Pyzo is a cross-platform Python IDE focused on interactivity and introspection, which makes it very suitable for scientific computing.

We have developed Pyzo to have a simplistic design while still providing a powerful programming environment; all the good stuff, without the clutter.

Pyzo plays nice with conda by detecting conda environments and helping the user to install miniconda if no environment is available.


The Binary Structured Data Format (BSDF) is an open specification for serializing (scientific) data, for the purpose of storage and (inter process) communication.

It's designed to be a simple format, making it easy to implement in many programming languages. However, the format allows implementations to support powerful mechanics such as lazy loading of binary data, and streamed reading/writing.

BSDF is a binary format; by giving up on human readability, BSDF can be simple, compact and fast.

A number of few factors gave rise to the idea for BSDF:

  • I felt that imageio lacked a format to store 3D image data with meta data.
  • In my plans to make Pyzo work for multiple programming languages, I found a need for a data format that works in any language (and is easy to implement for novel languages).
  • I increasingly dislike JSON, with it having no support for nan and inf, no support for binary data, and barely being human readable/writable.
  • In Flexx I needed an efficient way to send binary over a websocket.
  • The realization that HDF5 can hardly be called a standard, because it is so complex that there is but one implementation.


Imageio aims to support reading and writing a wide range of image data, including animated images, volumetric data, and scientific formats. It is designed to be powerful, yet simple in usage and installation. It is also easy to extend new formats to imageio.

Imageio is a mature library and plugins keep getting improved/added. It's used as a basis in e.g. scikit-image and Visvis.


Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python.

Visvis is mature, though a bit idiosyncratic. I am not actively developing it anymore except fixing bugs and implementing small features.

The Vispy project was originally intended to replace a number of visualization projects, including Visvis. But to date Vispy has not converged to a broadly usable state yet.


Stentseg is a library to perform segmentation of stent grafts in CT data. Mostly developed during my PhD, but in a rather good state. I managed to make it Pure Python by moving a critical part (a specific variant of the MPC algorithm) to scikit-image.


PyElastix is a project that has spun out of the PIRT project. It provides a Pythonic interface to the awesome Elastix image registration toolkit. I created this (pure Python) library to enable people to do image registration in a simple way, while making it easy to maintain.


The Python Image Registration Toolkit is a project to make powerful image registration algorihms easily accessible. It wraps PyElastix and also includes custom algorithms, including a diffeomorphic version of the Demons algorithm. Originally written in Cython, but now that it uses Numba it is pure Python (i.e. much easier to install).


The simple structured data format is sort of like yaml and json, but adopts some Python principles to make it very easy to read. It knows seven base datatypes: Null, int, float, string, nd arrays, list, dict. The latter two are container types that thus allow storage of hierarchical data.

The idea was a format that is readable for both humans and computers. Suitable for configuration files as well as large datasets. Easy enough so it can be implemented in many dynamic languages. There is an implementation in Pyton and Matlab.

Don't use this, use BSDF for binary data and e.g. TOML for human readable data.


Yoton is a Python package that provides a simple interface to communicate between two or more processes. It allows to connect multiple nodes in any arbitrary topology and expose pub-sub, state and request-reply protocols.

It is used in Pyzo for the communication between kernel and IDE. It is maintained as a subpackage of Pyzo.