Projects

Click on a project to learn more about it.

Apps

Recipe Book

  • Swift
  • SwiftUI

A recipe scrapbook app written in Swift with the SwiftUI framework for iOS.

TransitSafe

  • Swift
  • UIKit
  • Public Transport Victoria API

A service for posting public transport related incident reports.

SoundFace

  • Node
  • Express
  • Ionic Framework
  • Spotify API

A neat little app that uses facial expressions to recommend music.

Web

Podzol

  • Node
  • Express
  • EJS
  • PostgreSQL

Podzol is the web version of my original Podzol CLI program. The Podzol Web Player is streaming-first, and allows you to easily browse your podcast library with a minimalist interface.

Lemonade

  • Node
  • Express
  • EJS
  • PostgreSQL

TBA (makes use of Node/Express for the backend service, and uses Node/Express/EJS for a custom frontend)

Hoddle

  • JavaScript

Window manager as a web frontend library

md2magic

  • Python

Rudimentary static site generator written in Python.

Linux

Podzol CLI

  • Python

Podzol CLI is a command line podcast client that helps you keep track of your favourite podcast feeds and to stream them directly from the terminal.

BiscuitWM and TSPWM

  • Python
  • C++
  • Shell
  • Xlib

Both window managers are based on TinyWM (BiscuitWM is based on the Python version while TSPWM is a C++ port of the original C version). I'm doing these window manager projects as a way of refreshing my Python skills, learning C++, and understanding how the X11 libraries work in Linux.

Antorca Linux

  • Python
  • Shell
  • HTML/CSS

A Linux distribution that strove to provide the best performing out-of-the-box experience.

illume OS

  • Python
  • Shell
  • HTML/CSS

A Linux distribution that strove to provide the lightest out-of-the-box experience.

Misc

Final Year Project

  • Java
  • Spring Framework
  • React
  • React Native
  • PostgreSQL

University project that involved building an evacuation tracker system for institutions.

Forward

  • Batch scripting
  • C#

Early experimentations with software development.

Podzol 2020

The Podzol Web Player is a minimalist web-based podcast client. It gives users a clean, minimalist interface that prioritises ease of navigation and simple library management.

This project was created just shortly after the Podzol CLI program's creation and does not share any technical similarities other than that they are both streaming-first services.

Podzol will be launching not too far in the near future.

Podzol CLI 2020

Podzol CLI is a command line podcast client that helps you keep track of your favourite podcast feeds and to stream them directly from the terminal. It is largely written in Python and uses JSON files to store and keep track of feeds. It uses the PyGame library to handle streaming via the terminal.

Recipe Book 2020

An iOS app that lets you create and keep recipes. It has some nifty features like recipe duration estimation (based on durations mentioned in recipe directions) and dark/light theme toggling. It's written in Swift and uses the SwiftUI framework.

BiscuitWM and TSPWM 2020

Both window managers are based on TinyWM (BiscuitWM is based on the Python version while TSPWM is a C++ port of the original C version). I'm doing these window manager projects as a way of refreshing my Python skills, learning C++, and understanding how the X11 libraries work in Linux.

I'm hoping to get either one of these working well enough and reaching a point of usability good enough to use it on my Raspberry Pi.

Hoddle 2020

Window manager written in JavaScript. It's still in the early stages of development, but it will eventually be converted into a library and/or frontend framework that other sites could use.

A drastically scaled-down and partially rewritten version is integrated with Podzol as an optional feature to make modal windows draggable. I am working on a rewrite of Hoddle (with a focus on being easily integrateable in other projects) based on this scaled-down version.

Here's a demo of it.

Fourth Year Project 2019

My fourth/final(?) year (team) project at university was to build a system for institutions with campuses to better understand how people behave during evacuations. This involved building a backend service (Spring Framework for the application and PostgreSQL for databases), a website/web app for safety wardens (React), and a mobile app for anonymised data collection (React Native).

Aside from getting the hang of React, this project was more of a learning experience for self-management (I really, really needed to learn how to control my scope for each user story, and didn't realise that it would affect the rest of my team) and managing expectations (with the client, our supervisors, and even other team members). Was it a success? Hardly, but it did set me on a path to better plan projects, at least.

md2magic 2018, 2020

md2magic allows you to generate a site from markdown files. Its ideal use case is for blogs. The current version is extremely rudimentary and lacks proper organisation (by date) for posts. A rewrite of md2magic seeks to resolve this along with some other missing features.

Hallway 2018

Open world text adventure game engine written in Kotlin.

TransitSafe 2017-2019

Formerly known as Public Transport Reporter. It's an iOS app designed for both members of the public to report incidents and issues on the Melbourne public transportation network. Some incidents that could be reported included medical emergencies, crime, and hygiene.

I designed and built this app for a university course on Android and iOS app development. We were required to write proposal reports (complete with prototype designs), and my report ended up being so long that the tutors were groaning amongst each other about how they had to review "these two horrifically long reports" (and so I learned that I wasn't the only one).

SoundFace 2017

SoundFace was an app that used your facial expression to get a Spotify playlist that matches your mood. I built this with some classmates at university as part of a hackathon (UniHack 2017).

It was built using the Ionic Framework (I was more involved in this; it allowed us to write a frontend in TypeScript and compile apps for both iOS and Android) and Node (for the backend service). We used Microsoft's Azure APIs for optical analysis (recognising emotions in faces) and Spotify's APIs (which provides some surprising data that could be used to determine the emotional profile of songs).

We didn't win the hackathon with this idea. I came away from hackathon not just regretting that I pushed really hard for this idea to the team, but also learning that people truly did value software if it provided a clear benefit to society (which led me to the idea for the TransitSafe app).

Webitor 2016-2017

Experimental JavaScript text editor that saves to browser's local storage.

Hear Ye 2016

Hear the news.

Antorca Linux 2016-2019

Antorca was an attempt to inject life back into the illume OS project by starting from scratch. It was developed in a similar fashion to illume OS, as it was a remaster of more popular distributions. I experimented with maintaining both a Debian-based and Ubuntu-based version of Antorca simultaneously.

The project sporadically started and stopped between 2016 and 2019 as I was in the midst of my Software Engineering degree at Monash University. I eventually ended it after coming to the conclusion that most people weren't really interested in keeping around old PCs to run some lightweight flavour of Linux any longer. I also realised that if Linux needed to be a serious contender for use on desktops and laptops, the community needed to rally around only a handful of general purpose distributions (like the official Ubuntu flavours, Fedora, openSUSE, Arch and its derivatives).

I really love the Antorca brand (the logo definitely needs a change though), so I might be reviving it for future projects!

illume OS 2011-2016

illume OS was a lightweight Linux distribution based on Debian GNU/Linux. It offered IceWM as the default window manager (or light desktop environment?) and came bundled with lots of other lightweight 'alternative' applications (i.e. AbiWord and Gnumeric instead of LibreOffice). I used a then-popular package called Remastersys to image the virtual machine I used as a development environment as an ISO image for distribution (so yes, illume OS was largely a remaster of Debian). I wrote some scripts in Python and Bash to try and fill the gaps that most Linux distributions at the time had (e.g. an installer for lists or bundles of packages for different use cases like multimedia or productivity).

I did my best to try and soup-up the design of the illume OS desktop by making my own IceWM theme, bundle some creative wallpapers (some were abstract pieces I made in GIMP, some were a selection of photos from photography trips my dad and I went on around Penang, and some were from classmates). Like the Forward project, I did make some ads or commercials for illume OS (but in iMovie, as I had moved over to the Mac by that time). Video editing software on Linux just wasn't up to scratch at that time (early 2010s).

The project eventually died-down as I got through high school. A combination of me probably not being able to communicate what it was to classmates (and likewise their apathy or confusion), hitting a wall with numerous bugs that I just did not understand at the time, and a general lack of motivation due to the roughness of high school life.

Forward 2008-2011

My entry into the software development world began at the age of 10, with my first programming projects revolving around learning how to do batch scripting in Windows XP. This involved creating little shell programs that emulated a text user interface with pipe characters arranged (in fixed arrangements, thanks to monospaced fonts) to look like windows, buttons, etc.

I wrote many of these programs as 'products' of a 'company' called 'Forward Corporation'. I tried to get some of my school friends involved to hold certain positions at this 'company'. Obviously they were completely lost on what I was trying to accomplish.

I used to make little ads or commercials for these apps in Windows Movie Maker and uploaded them on YouTube. I often used the music (which oddly enough didn't get copyright striked?) I had in my iTunes library at the time (I was just beginning to figure out what music I like at the time). Will I ever make these videos public (again)? I don't know, but time will tell.