Code

Open-source software: home automation, simulation and data tools.

Mycelium (proprietary)

Hand-drawn diagram from the Mycelium talk

Mycelium is proprietary software, owned by Power Factors, that I developed at Greenbyte, so the code is not published, but I presented it in my 2019 GAIA talk.

More about Mycelium · Watch the talk

Home Assistant

I run my household on Home Assistant, and publish the pieces I build for it.

  • Home Assistant add-ons: a repository of add-ons for self-hosting services alongside Home Assistant, including the Taiga agile project manager (with the Postgres and RabbitMQ add-ons it needs), Fava for Beancount double-entry accounting, a Model Context Protocol server for Firefly III personal finance, and a static-site server for household pages.
  • Taiga for Home Assistant: a custom integration, installable through HACS, that shows Taiga user stories and tasks as a kanban board or list on a Home Assistant dashboard, and lets you change their status, create new items and filter by epic.
  • Home Assistant blueprints: reusable automation blueprints.

Smaller tools

  • hdf5: a Ruby wrapper for the HDF5 library.
  • treasurer: a command-line tool for managing accounts and finances and printing detailed reports.
  • text-data-tools: tools for reading text-based data files into arrays.

More on GitHub.

Gyrokinetics

This section and those below are adapted from the 2014 version of the site.

Gyrokinetics project

I was one of the lead developers for a set of codes used for modelling turbulence in plasmas, including GS2, Trinity and AstroGK. At the time, a big effort was under way to speed up and modernise GS2, adding better I/O, new algorithms and communication models.

Website · Wiki / user help · Source code

CodeRunner

CodeRunner

One day I got tired of editing input files and grepping results, tired of learning and remembering the arcane properties of each HPC system, and tired of typing the same commands into gnuplot… and so I created CodeRunner. CodeRunner is a framework for the automated running and analysis of simulations. It automatically generates any necessary input files, organises the output data and analyses it. Because it is a modular system, it can easily be customised to work with any system and any simulation code.

Website · Wiki / user help · Source code

SimpleDataIO

SimpleDataIO

Writing a variable to a NetCDF file in Fortran or C is a tedious business involving many lines of boilerplate. To help avoid this unpleasantness, I created SimpleDataIO: a simplified C and Fortran NetCDF interface that allows writing to NetCDF files with the fewest possible function calls.

Source code

CRONOS

CRONOS

CRONOS is a long-standing multi-featured suite, comprising a million lines of code, for modelling a whole tokamak, based at CEA Cadarache in southern France. It can be used to analyse existing experiments as well as design new ones. Following the start of a collaboration with the CRONOS team, I upgraded CRONOS to work on the new 64-bit system that had recently been installed at CEA.

Reference paper

  • Mycelium — Proprietary software, presented in my 2019 GAIA talk.