Projects by Martin von Gagern

This page gives an overview of the software projects I was or am involved with. It does not make any claims to completeness.


These projects I started all by myself, and most have no contributions by others.


A Node.js library to compress PNG images.


Node.js bindings for the HTML Tidy library libtidy which can be used to clean up HTML documents.


Creates randomized matrices with fixed marginal sums as a statistical null model. Used in a publication.

morenaments euc

This program for drawing ornaments in the symmetry groups of the Euclidean plain was written as part of my diploma thesis. It is designed as a Java applet and application, although I intend to write a JavaScript version one day.

morenaments hyp

Part of my Ph.D. thesis, not packaged for general use yet.


is a library for discretely conformal transformations of triangle meshes.


is a software for electronik whiteboards. It is written in java, vector-based and supports exporting of board contents to small PDF files.


is a modified SML compiler that generates documentation in XHTML format for the compiled sources.

mqn2mps und bande

are the results of an interdisciplinary project on the boundary between computer science and physics.


These projects are team efforts, and I am or was an integral part of the team in question.


A JavaScript framework for (mathematical) visualization, aiming at compatibility with Cinderella. I have designed and implemented large parts of that code base, and am the designated reviewer for incoming contributions.


A 3D visualization plugin for Cinderella, created by Matthias Reitinger and Jan Sommer and now maintained by me.


This is a selection of projects to which I contributed code.


Mathematical typesetting in the browser. I added a large number of features, including support for environments like matrices, expansion of user-defined macros, but also some important improvements to automated testing in this project.


Node.js bindings to libxml. I created a fork of that project to implement multithreading. I hope that fork can be reconciled into the upstream project one day.


A LLVM-to-JavaScript compiler. I implemented the initialization of memory from string literals.


This tool makes various mathematical software accessible using a common Python-based language, and can serve as a computer algebra system. I contributed various bits of code, like for example support for animations in APNG format, or generation of radical expressions for algebraic numbers.