Web Development & Design
Mahlathini Development Foundation
I worked with the Mahlathini Development Foundation, a non-government organisation specialising in agricultural innovation in rural environments, in creating their website. The site features a fully-responsive design and is optimised for SEO (Search Engine Optimisation). It is built upon WordPress, using a custom theme which I built from scratch. The following languages were employed in this process:
- PHP for the theme’s base.
- SASS, a CSS pre-processor, for easy, scalable object-oriented BEM (Block Element Modifier) CSS design.
The following tools were used in my workflow:
- Gulp for automating processes such as pre-processing and minification of scripts.
- Blender 3D & GIMP for logo design and the design & web-optimisation of some images.
- Atom, an open-source code editor from GitHub.
- WordPress as a CMS (Content Management System) back-end for managing the site.
- FileZilla FTP for uploading and publishing the site and its updates.
I am quite pleased with the way that the site turned out and have received a number of compliments regarding its design and quality.
For a competition a user hosted on MyBroadBand.co.za, I was tasked to create the front-end design of a landing page for SockGate: the free websocket to socket gateway.
Personal Project: University of Pretoria Computer Science Website Redesign.
App & Game Development
Tuks Timetable (Android)
Tuks Timetable is an app I created to aid University of Pretoria students create timetables without clashes, then use that timetable in their academic life.
The app features:
- A timetable generator that lets you tell the app which modules you need to take and it will generate as many possible timetables as it can, giving you a choice of the layout of your week.
- A daily timetable viewer: Normally, students seem to keep a screenshot of their timetable on their phones – the app provides a simple, colour-coded timetable as soon as you open it.
- Integrated key dates: Key dates (such as timetable changes, public holidays, university events, etc.) are automatically used to make adjustments to your timetable, and are presented where necessary.
- Automatic test dates: The app automatically finds tests based on the modules you provided and inserts them into your timetable.
- Low battery usage: The app uses about as much battery as a web page, and uses an unnoticeable amount in the background.
- Low data usage: Automatic timetable updates are not compulsory, and the app works offline (except for updating).
The basis of the app was that I was utterly incapable of creating my own timetable without losing my mind at the idea of how much better a program could do it.
I had previously created a desktop version of a timetable assistant for University of Pretoria students (you can read a bit about that here). The program did not generate timetables, nor was it available on mobile devices, nor was it designed for day-to-day use. My end goal was to make a mobile application which could be used on a day-to-day basis and provide useful information.
Due to my previous experience with web development, the app was created primarily using web technologies. This allows for the application to easily be made cross-platform.
I created a JSON REST API on my website to serve timetable, key dates and test information. The API’s back-end automatically scrapes the University of Pretoria’s public timetable/calendar/test dates information on a day to day basis, then alters the data for it to be more usable and stores that information into a database. The API was constructed using PHP and MySQL.
The app took around two months to build over the December holidays. I am very chuffed with the outcome, and have been using it for my own personal timetable.
Unfortunately, due to the cost of publishing applications on certain platforms being so high, the app has not yet been released on any platforms other than Android. Hopefully, in future, I will release to other platforms, such as iOS and Windows.
Blind Maze (Android)
Blind Maze was an idea I had when doing a maze one day. I thought to myself “How on earth would a blind person do this?”
So I thought that it would have to work with some form of physical walls so that you could feel each wall and detect the edge you can’t go through. One would have to have incredible spatial concepts in order to have some skill doing it.
So I wanted to make it into a game…
First up was maze generation. This was very difficult, but I managed to create a system which procedurally generates arrays representing a map in which each element either represents a wall or a path.
Making the game from the perspective of blindness was easy enough; just a blank screen, but you cannot feel impact on a computer. So I decided to add vibration — a thud when you hit a wall, and a light tap when you walk down a path.
This was perfect, but there is no way somebody is going to have annoying vibrations playing in a quiet public place, so I added a square and a circle as indicators to show that the player has hit a wall or moved into an empty cell, respectively.
Space Dumpster is a game I made for the BGMC 14 (Blender Game Making Competition #14). My entry came third.
The theme for the competition was N64 oldschool graphics. So I decided to make a low-poly space scroller game with incredibly retro graphics.
Here are some screenshots:
deMOLEtion is a game I made for the Blender Game Making Challenge #21. My entry came a tied 5th in the competition.
The game is a mini arcade game centred around a ninja mole (you, the player) who attempts to stay alive, avoiding construction of buildings and the gassing of his home.
Development process included design, programming and music from scratch. I created custom GLSL shaders for any full-screen visual effects. Design was done using GIMP 2.0. Programming using Python 3. Music was performed by me using FL Studio 12.
The Artistic Side
I quite love art; being able to express oneself is one of the quintessential parts of what makes us distinguishable from animals. Visually representing an idea or data is, in my opinion, a very important part of being able to describe problems and highlight issues, as well as inspire creative solutions.
2D Digital Art
Art pieces I did for Matric 2015
Mahlathini Development Foundation (official) Mahlathini Organics (un-official)
On the Desktop & Around the Office
“IT” has always been one of my things for as long as I can remember. I find the troubleshooting experience thoroughly enjoyable and satisfying, and taking apart and assembling machinery is about as captivating as it can get.
Programming and Scripting
- I see a need.
- I built a prototype to test whether the idea will be a waste of time or not.
- I built on that prototype until I am satisfied.
- I look for another need to fulfill.
As an example: TuksTimeTable is a simple program I designed to help University of Pretoria students plan and adjust their timetables with ease. I noticed that many students were already using spreadsheet software to create timetables, reading the times out of their booklets and trying to find times which didn’t clash. My attempt at solving the issue employs the following features:
- Update lecture times to meet the latest timetable information.
- Detects if a clash will occur with a lecture group before adding it to the timetable.
- Adds all of a group’s lecture times throughout the week in the correct time slots on the correct days with one click.
- Custom time slots.
- Easily remove either one or all lectures of a specific group with one click.
- The ability to save to the cloud.
- Conversion to image format to keep on cellphone.
- And a few more.
PC Building & Repair
I am very capable of assembling, disassembling and upgrading computer hardware. I have built multiple computers for myself, friends and family, and upgraded and/or repaired them over time. Given the right parts, I can correctly assemble a computer and have it set up with Windows 7, 8.x or 10 and some basic programs installed (Thanks, Ninite!) in just a few hours. I am also able to determine the best computer build for the price, given a budget to work with.
I have been using Microsoft Windows PCs since I was a child, and have dealt with and resolved many issues from networking issues to power & performance enhancements to virus eradication in all systems from Windows XP to Windows 10.
I am able to set up a basic working networks, and have experience with router interfaces and Wi-Fi hotspot setup. I also have some minimal experience using pfSense. I am able to set up a Linux machine and create an intranet site using an Apache2 server and PHP.
Microsoft Office & Writing
I am able to use Microsoft Office’s Word, Excel and PowerPoint 2013 and 2016 with ease. Born English-speaking, I am fluent in the language and am capable of detecting and fixing errors in speech and text.