Inkscape – a free vector graphics editor
I contribute as a developer to the Inkscape Project. Inkscape is a free and open-source vector graphics editor for Linux, MacOS and Windows, written in C++. It uses SVG as its main file format, which makes it particularly well-suited to the creation of icons, web assets and illustrations for printed documents. My contributions to Inkscape range from simple bugfixes and quality-of-life improvements to major rework efforts and refactoring of the legacy codebase, as well as new features and improvements.
I also contribute to lib2geom, a 2D geometry library used internally by Inkscape (subproject of the Inkscape project). In addition to providing support for vector graphics primitives used by the SVG format, lib2geom implements affine transformations and several other utilities essential for any graphics editing software. My work on the project focuses on developing a new boolean operations engine, which will provide robust operations of union, intersection and difference of shapes, among others.
m3di – a program for computing the meromorphic 3D-index
The meromorphic 3D-index is a topological invariant of oriented 3-manifolds with toroidal boundary, defined as an (analytically continued) state integral of Turaev-Viro type on ideal triangulations. It was constructed by Garoufalidis and Kashaev, who showed that it behaves like a generating function for the standard q-series 3D-index considered previously.
As a part of a joint project with Craig D. Hodgson and Andrew J. Kricker, I wrote the program m3di in order to evaluate this state integral numerically. In fact, m3di was an essential tool in our research, which is described in detail in this paper.
We ran m3di on a supercomputer at Nanyang Technological University, but the program is fast enough to be usable on an ordinary PC for triangulations with at most 3 tetrahedra. It is released under the GPL v2 license and available from Github.
A template presentation in Reveal.js
For largely historical reasons, most slideshows for mathematics talks are made with the ‘beamer’ package for Latex. Unfortunately, the PDF file format was never meant to be used for slideshows, so accomplishing any interactivity or embedding multimedia is hard if not outright impossible. Combined with the quirkiness of beamer (which arose as a massive hack after all) and its unappealing, dated default styles, the current state of affairs is far from ideal.
I would like to contribute to putting ‘beamer’ out of its misery by disseminating the knowledge of Reveal.js. In a nutshell, Reveal.js is a framework for creating slideshows in HTML which are then viewed in a web browser. Not only can you use all of the rich multimedia functionality that the modern web allows, but also publishing your slides becomes as simple as putting them on a server. Thanks to the steady advancement of MathJAX, you can easily include mathematical formulae using the familiar Latex syntax.
All you need in order to get started is some knowledge of HTML and the
following demo presentation
which you can use as a template to create your own slides.
View the demo in the browser or download the demo presentation.
Latex to SVG and MathML converter
Mathematical formulae are typeset most easily using Latex syntax, but you're going to need a different format if you want to embed such a formula in a web document, an email, or a drawing. The most widely-supported formats suitable for this purpose are: SVG (scalable vector graphics) and MathML. Both formats are based on XML and can be directly incorporated into HTML5 documents.
I've created a MathJAX-based tool which converts Latex formulae to these two formats, allowing you to either copy the markup as text or to save it as a file. The tool works in your browser and doesn't submit any data to the server.
PDF creation and manipulation
llpdf – a shell script for lossless conversion of raster images into PDF
I often need to convert raster images (such as PNG or TIFF files)
into pages of a PDF document – for example, when turning scanned pages into
a multi-page PDF.
Although ImageMagick can help with this task, it doesn't give you a good way to control the parameters of the resulting PDF file. In many cases, the PDF has a low resolution and the images are downsampled and/or compressed with a lossy compression algorithm similar to JPEG.
llpdf is a Bash shell script which relies on ImageMagick and Ghostscript internally, but enables you to losslessly convert a raster image, or a collection of images, into a PDF document with one image per page. You can set the page size and the margins of the PDF in user-friendly units and decide whether you want to keep your images' aspect ratio or you're OK with stretching them to fill the available page area. In all cases, llpdf guarantees that only lossless compression will be used, without any downsampling or colour space reduction, so that all pixels of the input images are faithfully represented in the final PDF.
Visit the project page on GitHub to download llpdf.
fitpdf – a shell script for resizing PDF files and fitting multiple pages in one
The Bash script fitpdf has two main functions:
- Rescaling or resizing a PDF file to a new page size,
- Fitting several pages of an input PDF file per page of output
The first function is useful when you want to print a PDF but you don't have paper in the exact page size, although most PDF readers can do this anyway. Perhaps the most useful function is the second one: fitting several pages as “minipages” onto a single page of output. The pages are scaled as needed and placed in a grid layout. In addition to paper format, you can specify the margins and the separation of the minipages in the output file.
Visit the project page on GitHub to download fitpdf.
Exam countdown timer
This is a simple countdown timer that I wrote in 2013.
It has the form of an HTML5 document which you can display in full-screen
mode on a screen in the exam room in order to give your students a good
idea of how much time they have until the exam ends.
Thanks to it being hosted online, you don't need to install any software in the exam room;
all you need is a web browser with internet access.
Access the exam timer