About | Research | Teaching | Programs | Pictures | Other |

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.

**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.

**btrfs_explorer**
visualizes the on-disk format of the BTRFS file system. I originally
wrote a parser for BTRFS metadata just to understand the file system
better, but then also gave it little web interface. It’s kind of fun
to click through the B-trees of a filesystem with it. There’s an
online demo here: chunks/root

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