Recommended Software

Software I regularly use

Below are recommendations on software that I use on a regular basis.



I single-boot Ubuntu on most of my machines as I have found it to be the least tedious setup for my own workflow. Primarily because:

  • there are extensive, easy to remember, easy to enter and customisable shortcuts;
  • it is easy to install compilers;
  • it is easy to write scripts for performing system tasks; and
  • there are no stupid docks or unnecessary animations/effects wasting precious resources when using gnome-session-flashback (there is by default unfortunately).

The steps I follow when installing ubuntu onto a machine may be found here.



"Development focuses on simplicity, minimalism, and code elegance. Arch is installed as a minimal base system, configured by the user upon which their own ideal environment is assembled by installing only what is required or desired for their unique purposes."

Arch is a simple, lightweight linux distribution that preferences developer experience over user experience. Many, including myself, consider ease of development as the primary objective with respect to usability for developers. For my own needs I find Ubuntu takes less time to set up and requires less maintenance than Arch, and I would definitely suggest Ubuntu is a better starting point for those unfamiliar with unix/linux. Having said that I consider getting your hands dirty with Arch to be an excellent way to get a better understanding of unix-like systems.

The Arch wiki is a well-maintained source of documentation, including sufficient information to install Arch on a machine.

GAP - a system for computational discrete algebra


GAP is a system for computational discrete algebra. I primarily make use of the semigroups package for playing with diagram semigroups computationally.

The steps I follow when installing GAP onto a machine and setting up a default workspace may be found here.



TeXStudio is an integrated working environment for writing LaTeX documents, originally it started as a fork of the more popular TexMaker, however TeXStudio has some additional/improved features which I consider ideal:

  • Texstudio automatically adds user defined commands/citations/labels to auto-complete across multiple files; and
  • Texstudio uses ctrl/cmd + tab and ctrl/cmd + shift + tab for adding/removing leading indenting when multiple lines are selected, and ctrl/cmd + shift + tab removes not only tabs but also spaces.



As one would expect from any reference manager you can sort/filter all of your references by type/author/year/etc., however what I really find useful about JabRef is that:

  • It uses your .bib file when saving, so you just open your .bib file up in jabref;
  • From inside jabref you can link bib items to the location of the article/book, allowing you to open them from inside jabref;
  • The location of an article/book is saved in the .bib file so you do not need to worry about both a .bib file and a jabref file; and
  • If you use dropbox on multiple computers with the same path for your dropbox directory then you do not need to manually link bibliography items to files in jabref on each computer, just open your bibtex file in jabref and it will already know where the documents are stored! That's really nifty!!!