I write quite a lot of software, for many different purposes and using many
different languages. Most of it ends up being handy tools for my own
idiosyncratic needs. Some of it becomes mature enough for being potentially
useful for a broader audience.
I extensively use Free software, so most software I write I
also naturally release as Open Source, usually under
the GPL license.
An algebraic coding theory library for Sage
Most of the code I have written during my PhD to experiment with
algebraic coding theory and encoding/decoding algorithms. The code
is written in the Sage extension language to Python. I have
striven to make it generally useful, though it is of course quite
focused on my research and idiosyncratic to my needs.
Implementations of algorithms proposed in publications
This is implementations of algorithms described in papers but which I
have not merged into Codinglib (see above). It can also be useful
as examples and simulations of how to call functionality in
Codinglib. It is structured into .sheet-files, which are
clear-text analogues of the Sage Notebook's worksheet files.
Sozi is a really nice open
One feature I lacked from Sozi is to make objects appear and
disappear on certain frames. This
also been requested on the project page. Based on a manual
solution from Sozi's main developer, senshu, I wrote a small
Python script for automating the process as well as making it much
Abbreviate journal, conference, and other names in BibTeX files.
This is a simple Perl script for running through a BibTeX source
file and replacing names with abbreviated versions. Abbreviations
are controlled manually by filling in a file with mappings. The
script comes with the file I use myself for abbreviations.
Musicians often play songs from lyrics annotated with simple
chords, since they know the basic melody and tempo
beforehand. Such texts are usually typeset in Notepad or similar
using a fixed width font, such as the songs
on UltimateGuitar.com. The
result is usually visually jarring, prints even worse, and takes
up a lot of space on screen or paper.
chords is a tool for automatically converting such
chord-annotated lyrics into beautifully typeset pdfs. One has
further control, such as varying font size and multiple columns.
Based on the theoretical description in
thesis by Christoffer Rosenkilde Nielsen, Christoffer and I
a Horn logic
clause solver in OCaml. The
solves any formulas in the class H1, but uses an iterative
refinement framework invented by Christoffer for precisely or
approximately solving much outside this class.
The HornSolver is the computational core of CryptoKlaim, a
language developed by Christoffer for describing cryptographic
communication protocols and analysing them for confidentiality and
integrity. I implemented CryptoKlaim as well as a user-friendly
front-end for reading off the analysis results.
A web-page I wrote for Mikkel Pape, a friend who is an artist and
scripts. The challenging part was designing a scalable gallery
system which Mikkel could very easily content manage with minimal
technical fuss and without my involvement, and due to low-level
nitpicking requirements, ready-baked CMS systems were not a good
The web-page is of course
at sortsne.dk, and all the
atmosphere and art of the site is the work of Mikkel Pape
entirely. There is no repository for the PHP and Python, but I
will gladly share it if you contact me.
Configuration of an O/S and its nice editor
After 7 years of being a faithful Vim user, I switched to Emacs in
the fall of 2012; after only a few months, I had more than a 1000
lines of configuration, and it is steadily growing. Obviously, I
am using the absolutely
project for getting efficient Vim keys for basic editing