The Parking Lot Simulator was a personal project aimed at expanding my knowledge of multi-agent systems built in 3D space. The project involved creating a multi-agent system to simulate a parking lot. This included implementing a finite state machine to control the behavior of cars, the A* pathfinding algorithm to guide agents along roads and into spaces, and managing the state of individual spaces. The simulation automatically spawns cars and guides them to a parking space. However, through the interface, the user can spawn additional vehicles and switch between camera views to observe the simulation. This application was built in the Unity Game Engine using C#.
In 2023, following the completion of the CIAANZ website, I was additionally contracted by NUBU Pharmaceuticals to develop a marketing tool in the form of a kiosk app for conferences, including GPCME Rotorua. The app was constructed using React, Typescript, Material UI, and Firebase for hosting and storage. Its functionality includes a form for medical professionals attending the conference to enter their details for a chance to win a prize. Additionally, it incorporates a brief quiz about the company and its products, a terms and conditions dialog, and a completion page. The app was designed to be responsive and to operate on an iPad kiosk station. Moreover, it included settings for easy exportation of collected data to a CSV file for the company's future marketing endeavors.
Note: This repository is private. Please get in touch if you would like to view further materials.
I was contracted by the CEO of NUBU Pharamceuticals to build a website for the Cannabis Industry Association of Aotearoa New Zealand (CIAANZ) in early 2023. The website, built using Wix, was designed to inform the public about the association, its members, and the medicinal cannabis industry in New Zealand. The site features five main pages. The home page, an industry certification page, an education page, news and a contact form. The site's primary purpose is to educate the public about the organisation and provide a pathway for medical professionals to become certified in prescribing cannabis-based products.
Using the Unity Game Engine I remade the first level (with some tweaks) from the iconic 1992 title Wolfenstein3D. This project was taken to weave together multiple aspects of the game development process that I had been learning including basic 3D modelling, animation, AI, C# scripting and more. The level features two enemies including a guard and dog. Both use a finite state machine to intelligently switch between states to guide behaviour. For example, an idle guard will switch to the chase state when a player wonders into their field of view. Other features include full rotational movement, multiple pickup types , as well as, four distinct weapons (from the original game). These include the knife and pistol (on the player by default), as well as, the machine gun and barrel gun which are hidden in secret areas.
The URL Shortener Microservice was built in Javascript using the Express backend API framework,
Mongoose, MongoDB Atlas (the hosted NOSQL document database) and Google's App Engine for
deployment.
The service allows a user to POST a URL to the API which returns JSON containing a shortened URL
ID. This ID can then be appended to the URL shortener's URL to create a GET request that
redirects the user to the original URL. This works by saving a document to the database which
can then be used to look-up the returned ID.
e.g. [app url]/api/shorturl/931774092 will redirect to https://www.google.com
The main objective of this project was to learn how to use React hooks such as useEffect and useState. As this application has many shared pieces of state that must be updated and maintained over a period of time using a timer. The application allows the user to select two time lengths - a session of productivity and a break period. These two periods then alternate when the user presses the play button. Once a timer reaches zero a short audio clip plays to announce that the timer is finished before it switches to either a break or another session.
In June 2020 the New Zealand radio station The Edge ran a competition where ten twenty-somethings were placed into a flat. Their experience over the following 2 weeks was then live-streamed 24/7 on theedge.co.nz. Throughout the two weeks flatmates competed in challenges to earn money in between periods of elimination. The bot uses PuppeteerJS to open a headless instance of Google Chrome. It then navigates to the stream page and scrapes the relevant headers. It then clicks and snapshots each of the six cameras. Once complete, the bot then interacts with the Twitter API V2 by uploading four of the six cameras and posting a tweet with the time, the current stream title, and the media ids. The whole process is automated via an hourly Cronjob.
This simple calculator app was built using HTML, CSS, JS, React and Redux - the state management framework. After becoming more familiar with React this project allowed me to leverage what I had learnt about using state, props, and hooks to build a more complex app with clearly defined actions (add, subtrack, clear etc.) These actions are handled by Reducer functions that allow for the the entire application's state to be stored in an app level store - this provides a single source of truth and removes the need for repeated prop drilling (the passing of parameters between components - even if they go unused by that component).
This assignment for COMPSCI 373 Computer Graphics and Image Processing at The University of Auckland involved developing a QR Code Detector from scratch in Python using only NumPy to import the image. In the process I gained an understanding of image processing techniques such as morphological operations, segmentation and connected component analysis. Several extensions where also incorporated including the implementation of an adaptive thresholding algorithm, as well as, ensuring the detector worked correctly on rotated images. My solution and its associated report was selected as one of the top three out of a class of more than 200.
Note: University requirements require this repository be kept private. Please get in touch if you would like to view the source code or further materials.
As a Marketing Intern at Fisher & Paykel Healthcare™ I developed Visairo™ Ready, a two-part online course, aimed at getting hospital staff ready for the introduction of the mask in their respiratory unit. The course was created using existing and new materials. Tasks involved in the creation of the courses included wireframing page concepts, writing scripts and storyboarding video content, and prototyping and developing interactive game-like experiences. Tools used to create the modules included Adobe XD, Davinci Resolve, Blender and Articulate 360.
Get Visairo ReadyNote: The F&P Education Hub requires a user account
House Hunt is a web application built using HTML, CSS, Bootstrap and JS. It uses Google's Firebase and Firestore services to host a document based database of properties for users to upload and view. It features user authentication, submitting properties, viewing properties, and managing of the user's profile and submissions.
My Date With Math Chan is a short visual novel built using RenPy - a framework for building visual novels in Python. This project showcases Python scripting, image manipulation and non-linear storytelling. This game was created as a creative work for MATH 102 at The University of Auckland in 2019.