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.
The main thrust of this project is to vastly enhance the coding theory part of Sage. We want to develop a whole range of functionalities for coding theory that may also be useful for other areas: combinatorics, cryptography, computer science, etc. Our intended audience consists of researchers, students, and teachers. We also keep in mind the engineering community.
This is a library for experimenting with algebraic coding theory in Sage, with an emphasis on decoding algorithms. It contains many decoding algorithms for algebraic codes, in particular a rather efficient implementation of the Guruswami–Sudan algorithm.
The code is written in the Sage extension language to Python. For anyone working in algebraic coding theory, it should provide a much stronger basis than what currently exists in Sage, and if one is working on decoding algorithms, it is quite powerful indeed.
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.
One feature I lacked from Sozi is to make objects appear and disappear on certain frames. This feature has 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 more flexible.
This repository contains the following tools for simple, automated fixes in BibTeX files:
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 the PhD thesis by Christoffer Rosenkilde Nielsen, Christoffer and I implemented a Horn logic clause solver in OCaml. The solver precisely 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.
Things I do with Emacs (and for which I have specific setups):
My Emacs use is powered by extensive customised setup. Notably:
I put my .emacs online in case it is useful for others.