Compiling LaTeX on Travis-CI

One of the best parts of the current software development environment is the proliferation of Continuous Integration (CI) services like Travis-CI. These CI services plug into GitHub or other code repositories to automatically run when new code is pushed to a repository. Typically CI is used for running automated testing every time new code is added so you can be reasonably confident a change hasn’t broken any functionality. The premise of CI is the automation of tedious tasks like running tests.

Experi: A tool for computational experiments

Abstract One of the key features of computational experiments is being able to run the experiment over a large variable space. However, in my experience there aren’t tools available to assist with this, particularly in the realm of High Performance Computing (HPC), where bash arrays and loops are commonplace. Using the current toolset, I made lots of errors in the specification of files, turning a ‘quick edit’ into a tedious process of find the bug.

Distributing a Hoomd Plugin

A piece of software I have been using in my reasearch is Hoomd, a ‘relatively’ new package for running Molecular Dynamics (MD) simulations. These MD simulations have the basic premise of throwing hundreds of balls into a box and shaking it to find out what happens. The relative newness of Hoomd is in comparison to other software packages like LAMMPS and GROMACS which have been around for decades, while the initial release of Hoomd was in 2012.

Scraping Data from Facebook

Competition is a strange thing making you suddenly interested in the most unusual of problems It has become a tradition of The Lancer Band, of which I am a member, to produce a video as part of our ANZAC Day commemorations. These videos have been highly successful garnering millions of views on Facebook and with some choice communications throughout the rest of the year have resulted in a commendable social media following.

A guide to setting up remote SSH

In the right (or wrong) hands ssh is a powerful tool for the remote management of a Unix system. Most desktop, or workstation distributions of Linux disable remote access over ssh by default. The simplest method to check if you have ssh server running on your machine is to run $ ssh localhost If ssh is not installed or running this will print out a message ssh: connect to host localhost port 22: Connection refused most likely indicating that the ssh server is not running.

Adventures in the Python Visualisation Landscape

Calling the current python visualisation landscape fragmented would probably be an understatement, since itself requires a visualisation to even begin to comprehend. For various reasons I have been unhappy with the tool I was using for visualisation at that time and I have been searching for the one visualisation package to rule them all (spoiler: it doesn’t exist) About a year ago I was using Matplotlib for all my figures, which enabled me to create anything I wanted, usually with a stackoverflow answer giving me a working example to adapt.

Creating an HDF5 Bomb

You may have heard of a zip bomb or other decompression ‘bombs’, which have the basic premise of containing a large volume of highly redundant data that when decompressed takes up more resources than the system can handle. Within the HDF5 file format there is support for compression, an excellent tool for reducing file sizes, however also ripe for exploitation. This ‘issue’1 of a file containing far more data expected, whether accidental or malicious, is not limited to HDF5 files, any filetype supporting compression is susceptible.

The Perils of Packaging in Python

There are many guides to packaging a python application, including the official Python Packaging User Guide. While these guides offer step by step instructions for deploying a simple application, when deviating from a guide there can be unexpected problems. The application I have been trying to deploy is this one, a collection of tools to assist in the analysis of molecular dynamics trajectories for my PhD. Most of the code I have written is python, with small sections of Cython code for performance.

Quaternions for Orientation in MD

In the understanding of the dynamics of a molecule in a Molecular Dynamics (MD) Simulation the two main properties we use to understand liquid behaviour are the translational motion and the rotational motion of the atoms or molecules. These motions reflect changes in the position and the orientation of the molecules. When calculating these motions in an MD simulation it makes sense to represent each molecule as; the position of the Center of Mass (COM), and the orientation within the lab reference frame.

Building interfaces with click

Running computer simulations is great. You tell the computer what to do, it sits there crunching numbers for a while. Then you can come back and look at the results. The problem with this is that most simulation packages take the simulation parameters in an input file, so running a simulation becomes; Write an input file Run simulation Edit input file Run simulation Forget what the old file looked like Click can help us break this pattern, providing us with a simple way to pass values to scripts from the command line.