Portfolio

eduActiv8

A free collection of interactive educational activities for children.

Background Story - Problem to Solve

This personal project started back in 2012 when my son was about 5 years old. I was trying to introduce him to various educational programs which was a challenge since at the time his PC was a Linux (Ubuntu) machine only. The offline software for Linux that I could find did not cover everything I needed. So the reasonable solution was to build something to fill that void and learn something new at the same time.

Solution

At the time it seemed logical to learn Python for software development on Linux, so I started learning the language. Since I wanted the program to be interactive and somewhat fun to use I needed a Game Engine, and the only natural choice for use with Python was Pygame. In hindsight, the choice would be rather different due to compatibility issues with mobile operating systems, but sadly when the project started mobile was not so much of a concern. Fast-forward a few months of working on the project in my spare time the project gained a selection of activities that were pretty much prototype quality, but they worked. It was a foundation for various changes and rounds of improvements over the years. Since then, the program has been released as an open-source project, I am still mostly responsible for coding (except for minor bug fixes), however, a number of translators have joined the project which has been translated to 18 languages so far. Currently, the project has well over 100 simple activities that allow kids from across the world to learn the very basics of maths and language. The project seems to have been introduced in a number of schools most notably in India, Central and Southern America as well as remote parts of Africa. More info on the project is available on the eduActiv8 homepage.

Technologies used:

  • Python
  • Pygame
  • SQLite
  • XML
  • JSON
  • Git/GitHub

Shopping Centre - App for Staff

Background Story - Problem to Solve

The Customer Service and Security Staff in a shopping centre receive a wide range of customer/visitor enquiries while carrying their daily duties. Some of the enquiries are slightly beyond what the staff is able to easily respond to with the information they have without resorting to radio communication which is not always ideal. This inspired me to create an app that would assist staff.

Solution

The staff was equipped with Android mobile phones to carry out their patrols. The idea was to create a simple Android application that would hold the data related to over 120 shopping centre retailers. The challenge was that, at the time, the phones were not equipped with SIM cards so the application had to work offline and updates would be downloaded when the phones were connected to Wi-Fi. I created a native Android application in Java/XML. The core functionality involved a searchable list of all retailers along with retailer profile pages consisting of all the necessary information, such as opening times, phone numbers, website links, etc. Additionally, a Mall Map has been added, along with other sections with info about the shopping centre.

Technologies used:

  • Android
  • Java
  • XML
  • JSON

CCTV Camera Movement Log

Background Story - Problem to Solve

A new requirement to record all camera movements by the CCTV operators in a shopping centre resulted in a lot of time and paper (and archive storage space) being wasted to store this information. A Security Controller suggested creating an electronic system to quickly capture and save this data without having to look away from the CCTV screens for too long. I took up the challenge.

Solution

As a solution was needed rather urgently, therefore, I chose Python which was a language I was quite familiar with and confident I could complete the task in a reasonable time. The application needed to have an easy-to-use GUI, the built-in options seemed not sufficient, so I learned wxPython as much as I needed to complete the task. Within a few weeks of developing the project outside of work, a simple functioning desktop program was deployed. The screen was designed to show the numbers of cameras along with the time since the last 'camera patrol'. To make operation as quickly as possible, if the patrol was done in order, the user would only press Enter for the timestamp to be saved against the camera in focus. The focus would then shift to the next camera. The program also allowed to quickly switch between cameras with either keyboard or mouse.

Technologies used:

  • Python
  • WxPython
  • SQLite

Shutter Capture

Speed reading and short memory training exercise.

Background Story - Problem to Solve

My partner attended a personal development training (in order to hone her memory and speed reading skills). One of the exercises involved quickly remembering a random set of characters of varying length and complexity. The sequence of characters was to be read form a book which proved challenging since limiting the length of time one is looking at the sequence was rather difficult.

Solution

I was tasked with creating a simple representation of the exercise in a form of an Android application.
I built the application using the native Android stack initially, i.e. Java and XML over a few evenings. When the Application was finished it has been shared with others from the group undertaking the very same training, but it turned out the iPhone users were left out, so I took up the challenge of finding a solution to provide all learners with a similar experience. My lack of knowledge of the iOS development stack seemed like a "deal-breaker" since learning the stack was not an option as it needed to be completed as soon as possible. The only option I could think of was rewriting the application with web technologies (HTML, CSS and JS); learning about PWAs allowed me to create a near-native experience using a simple browser shortcut making the solution suitable for both iOS and Android. Since all the logic was already written in Java, stripping that into JavaScript was a pretty straightforward task as the HTML layout was created with matching IDs. The app seems to still be used months after the training was over. View the PWA version of the tool - best viewed on a mobile phone.

Technologies used:

  • Android
  • Java
  • XML
  • PWA
  • HTML 5
  • CSS 3
  • JavaScript