Developer, gamer, geek, wizard.
A passionate developer and user experience analyst, who believes in delivering solutions that are technologically elegant as well as accessible, usable, and efficient.
Excellence-driven and detail-oriented, hard-working, patient, and technically adept. Merging technical skills with a deep understanding of the human aspects of technology. A flexible addition to any workforce
Well-versed in a broad range of IT-related topics, and eager to learn and adapt.
I have experience or training in the following technologies:
- Java Standard Edition, and some Enterprise Edition.
- PHP, and Model-View-Controller frameworks, such as CakePHP.
- Basics of Python.
- SQL: MySQL and Oracle.
- XML, XML Schemas and XML Stylesheets.
- Regular Expressions.
- Some C# and ASP.NET.
I also have experience or training in the following concepts:
- User experience, usability, and human-computer interaction.
- Data structures and algorithms.
- Service-oriented architecture.
- Mobile and distributed systems.
- Business and systems analysis.
- Development methodologies, including Agile methodologies such as Scrum and Kanban.
- Project management.
|Jul 2016 - current:||Software Developer at Rand Merchant Bank.|
|Apr 2015 - Jun 2016:||Traveller. Japan, Germany, Czech Republic, England, Wales, Scotland, Malaysia, Thailand.|
|Dec 2013 - Mar 2015:||User Experience Analyst Team Lead at DStv Digital Media.|
|Dec 2012 - Nov 2013:||User Experience Analyst at DStv Online.|
|Jun 2012 - Nov 2012:||User Experience Intern at DStv Online.|
|Jan 2012 - May 2012:||Java Developer at Bhyve Technologies.|
Tutor of Computer Programming 1 and 2 (Java) at Monash University.
Tutor of Industrial Experience at Monash University.
|2010:||Development Manager and PHP developer for the Oxfam Australia Program Evaluation Management System.|
|2014:||Nielsen Norman Group, UX Certification.|
|2013:||Nielsen Norman Group, Usability Week in San Francisco.|
|2011:||Honours Bachelor of Computer and Information Sciences at Monash University.|
|2008 - 2010:||Bachelor of Computer and Information Sciences at Monash University, Majoring in Application Development and Networks.|
|2002 - 2007:||Fourways High School|
Demo: Raycasting in Java, using OpenGL -
Java 8 and OpenGL
An implementation of the raycasting lighting technique. Implementing and demonstrating the algorithms defined in the Math library.
To run, please download and extract the ZIP file. May require installing Java 8, and running java -jar RaycastDemo.jar from the command line, depending on your machine's configuration.
Library: Math -
Java 8 and JUnit
A library project, providing the mathematics used in various other projects. The project provides implementations of common mathematical functions, and methods to simplify floating point arithmatic. Current development is focused on geometry, to be used in collision detection and lighting algorithms.
As precision is important, unit testing using JUnit is a focus for new development.
The project was undertaken to learn the algorithms involved, and to create the functionality for use in other projects.
Thesis: "WebNS: Model for a Peer-to-peer Name Service" -
The centralisation of power of the incumbent Domain Name System presents three problems: it is vulnerable to orchestrated attacks, the administrative costs of its maintenance are increasing and there are several recorded cases of the centralised power being abused for political reasons. Peer-to-peer networks are resilient to these three problems and may be used to construct an alternative decentralised name service. By carefully constructing a structured overlay network, ensuring efficient replication of name entries, and making use of Byzantine agreement based algorithms to ensure consistency and security, a model for a decentralised, secure, scalable and available name service is created.
An online file system developed for storing and discussing conference papers and other works. A highly flexible permissions system allows directories and files to be shared or restricted at any granularity. The system was used throughout by students at Monash University South Africa to submit work during their Industrial Experience projects.
Oxfam PEMS -
Standing for "Program Evaluation Management System", the PEMS was designed to allow the South African branch of Oxfam Australia better manage their operations. The system is a database-driven alternative to the disparate document-based system used previously. At Oxfam's request, the PEMS also includes small Java applets to link and open existing documents housed on their servers.
The following are small, self-contained projects. They are undertaken in order to learn something new, because they are interesting, or simply because having the functionality available would be useful.