Computer programs

I often write small computer programs. This might be for work (in math research, one can sometimes do computer experiments to test a hypothesis, or visualize a problem), or because I need some tool which doesn’t exist, or just for fun. In any case, I usually have myself as the only user in mind. Nevertheless, a few of these things might also be useful to others (maybe?), so I’m sharing them here whenever I find time to write some description/documentation.

This is just a list of some progams with links and short descriptions, split up into more math-y and less math-y things. The actual code can be found on my gitea instance (which is like github, but self-hosted).

Coxeter automaton constructs two automata associated to a Coxeter group: one which consumes every reduced word, and one which consumes the lexicographically minimal reduced word for each group element. That’s useful for enumerating group elements, or to study the dynamics of representations.

Enumerate balanced ideals We efficiently solve the combinatorial problem of finding “balanced ideals” in Weyl groups. These are combinatorial objects which describe cocompact domains of discontinuity of Anosov representations in flag manifolds (see the paper by Kapovich-Leeb-Porti, and also my PhD thesis for more information). This was a collaboration with David Dumas.

Hyperbolic tilings A program to draw regular triangle tilings of the hyperbolic plane as SVG files. It can also draw the axes and fixed points of hyperbolic and elliptic elements of the reflection group. The article Triangle group on Wikipedia explains the mathematical background.

critical limit set Limit sets of projective triangle groups A program to visualize the limit sets of SL(3,R) representations of triangle groups. These are special fractal curves which not only look cool, but tell us a lot about the mathematical objects involved. I made this as a tool for a research project, which ultimately lead to this paper: arXiv:2106.11349.

imapidle opens a connection to an IMAP server and runs a script every time an email arrives (presumably to trigger some notification or a refresh of an email client, at least that’s how I use it). I mainly made this to learn the Rust programming language, but it turned out to be actually useful for me.

iqconn downloads tracklogs from certain flight instruments like the IQ Basic GPS via USB, without having to use their software and drivers.