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|
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)
|Type of application||Forest simulator|
|Programming environment||C++, MPI|
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)
|Type of application||System for shared file management|
|Programming environment||C++, POCO, MySQL, Lucene, Ruby on Rails|
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)
|Type of application||Sensor/actuator simulator|
|Programming environment||C++, wxWidgets|
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)