Software

This page contains some of the software projects I have worked on.

3D Fractal Explorer

Type of application 3D graphics / mathematics
Programming environment C++, OpenGL, GLSL, CUDA
Licence BSD
Fractal Explorer

The 3D Fractal Explorer program visualises two different 3D fractals: the Mandelbrot and the Julia set. The three-dimensional projections of the sets are obtained by redefining the sets onto quaternions instead of the complex numbers normally used and then by taking a three-dimensional slice of the four-dimensional space. The program allows the user to pan and zoom to look closer at different parts of the fractal.

I wrote the 3D Fractal Explorer as a course project in computer graphics. It uses OpenGL for graphics, GLSL vertex and fragment shaders for lighting, and CUDA for parallelisation in order to speed up various computationally heavy parts of the program.

Download: fractal_explorer-0.100715.tar.gz (20KB)

SPATE-HPC

Type of application Forest simulator
Programming environment C++, MPI
Licence BSD

SPATE-HPC is a highly efficient, highly parallelised forest stand simulator that is capable of simulating each tree individually. Data from a real or a generated forest can be used as the starting point. The user may then choose growing conditions and harvest methods, and the simulator simulates the stand's future development. When finished, the simulator provides statistics on the stand's growth and the obtained harvest volumes.

SPATE-HPC was developed as part of the SUSWOOD project. MPI was used for parallelisation, and the program was designed to be able to take advantage of the computational power of large supercomputers containing thousands of processors in order to simulate millions of trees. My master's thesis discusses the work I did on SPATE-HPC.

Download: spate-hpc-0.0912.tar.gz (3.7MB)

inflo

Type of application System for shared file management
Programming environment C++, POCO, MySQL, Lucene, Ruby on Rails
Licence GNU GPL
inflo

inflo is a system for storage and management of files, suitable for companies or organisations. The system manages shared files in a tag- and group-based category structure instead of a traditional tree hierarchy. The system supports fine-grained user and group permissions and incorporates a revision control system.

An efficient C++ backend is used for all business logic. It stores data on a MySQL server and uses Lucene for fast indexed searches. Two user interfaces were implemented: users can access all the functionality of the system through a web interface written in Ruby on Rails, and they can also access shared files directly through a WebDAV interface.

inflo was a group project we built for a software project course. The project was a study on how to build a large software system containing both a high-performance data backend and a separate web interface.

Download: inflo-all-src-0.1.1.tar.gz (2MB)

Lift Simulator

Type of application Sensor/actuator simulator
Programming environment C++, wxWidgets
Licence MIT
Lift simulator

I made the lift simulator as part of a software safety course, and it is an exercise in designing and implementing safe controller software for an electromechanical system. The program simulates a lift in a three-storey building, where the lift and the doors are operated by motor actuators and button presses are detected by sensors.

The program is written in C++ and uses wxWidgets for the GUI part. The lift's controller system is implemented separately from the simulated environment as a state machine, and it interacts with the sensors and actuators through events and signals. The system is designed to be fail safe; if it receives an aberrant signal or a sensor fails to produce a signal within the expected time frame it will retry three times whereupon it will enter a safe failure mode.

Download: lift-src-0.090128.tar.gz (20KB)