Here are some of the things I did, some places I’ve been to, and some responsibilities I’ve had in the past and in the present time. I’ve put them here for you to poke around, play with, inspire, fork, make fun of, learn, or maybe just for you to exercise your nosiness. Just don’t blow up the country with anything here (I’m looking at you old friend. Not that it’s feasible at all, even in the faintest sense).

Some of these aren’t even projects, because I’ve included interesting events that I’ve attended. Maybe you’ll spot an event below and say “Hey, I’ve been there too!”, or perhaps “Hey, maybe I should try this while I still can”.

In late 2017 to now, I contributed

Virtual x86 Emulator

Tech: JavaScript

Status: ongoing

A NodeJS and browser-based project, started and maintained by Fabian Hemmer, that emulates x86 hardware.

I implemented the Sound Blaster 16 card, completed the VGA controller, and fixed some PS/2 keyboard and mouse bugs. I plan to complete the sound card emulation, and I’ll keep a close eye on the project.

In early 2017 to now, I created

A Blog

Tech: Jekyll, Staticman

Status: ongoing

A website! I thought: a new year, a new school, welp time to throw the MS Frontpage and whatnot out the window and pull something real together. For what purpose? Well, apparently we need to coexist in both the physical realm and the digital realm. I find it a bit difficult to split myself into two and inject one half of my consciousness into a bunch of silicon, so here’s a website as a placeholder for my presence instead.

I find that I’m not a fan of using ‘prebuilt’ themes. Morally, it’ll be equivalent to using someone else’s hard work. Practically, it will be difficult to extend the theme with consistent quality. Finally, it’d be both fun and nicer if I tried creating my own identity of some sort. Hence, this weird looking, non-responsive website looks the way it does.

In 2015–2016, I was

A Highschool Robotics Team Programmer

Tech: C, Purdue Robotics OS, libtap

Status: retired

I was pretty committed back then but was nonetheless plagued by my over-ambitious attempts at introducing modularity to what should’ve been a simple program for controlling the robot. As a result, I hogged most of the development time and mechanical failures occurred as often as bugs.

The programming aspect was interesting as it had to deal with autonomous routines, drive controllers, flywheel regulators, and data loggers. It was the first time dealing with PIDs and control theory, and I must say that the robotics platform really got me excited about engineering, and was the reason why I chose this degree.

I was also the ‘team captain’ in 2016, but leadership is hard. Our team faced obstacles such as high school exam stress, lack of feeling of success, pessimism, technical inexperience and difficulty, conflicts of interests, all those things just piled on top of each other and the season finished quite crazily, to be honest.

In 2015, I created

Robotics Dashboard – Pigeon Dash

Tech: C, JavaScript, Processing, NodeJS, Express, socket.io, React, Gulp

Status: completed

A simple, human-readable communication protocol, a server, and a simple browser app for displaying and controlling subsystems within a Vex EDR robot.

In 2017, I created

nfcycler - Linux Pipe Looper

Tech: C, sharness

Status: completed

A tool (with potentially zero use cases) that executes a given shell command and loops the stdout back into stdin.

In 2016, I created

Virtual Robot Driving Simulator

Tech: C, JavaScript, socket.io, svg.js

Status: completed

Simulates a simple clawbot to give the team driver opportunity to practice before a real physical robot is built.

In 2016, I created

Raspberry Pi Photogate

Tech: C, JavaScript, Plotly API, Raspberry Pi

Status: completed

A little electronics/raspberry pi project using LEDs as photodiodes that can be used to measure when an object travels past the photogate. It can be used to measure the velocity of an object and the RPM of a spinning object.

In 2016, I attended

NZ Olympiad of Informatics Summer Training Camp

Tech: C, C++

I had the privilege of attending the 2016 NZOI summer training camp at Victoria University down in Wellington. I met quite a few awesome people there, and they taught us some really nice compsci stuff, all within a pretty short time to be honest. But most importantly, we were fed well by the catering team at Victoria House. Of course, I didn’t make it into the training squad (especially how I scored zero points in the final competition), but nevertheless, I had plenty of fun.

In 2015, I participated

NZ Informatics Competition

Tech: C

I had a chance to try out this competition which was held throughout the year. I immediately regretted not knowing it’s existence earlier. Kudos to those who run and manage it.

In 2013, I created

Mechanical Adding Linkage

Tech: Lego

Status: completed

The translational position of the output linkage is equal to the sum of the translational positions of the input linkages. Pretty cool? Yup. Useful in real life? Nah.

In 2011, I created

Platform Game Experiment with Variable Jump Height Mechanics

Tech: JavaScript

Status: transcended to an abandoned world

You know when you’re playing a platform game, such as Super Mario Bros, you can make small jumps and big jumps. I never thought about the mechanics until I tried making a game, but, how does it actually work? You see, when you try to jump in real life, once you have left the ground you can no longer control how high you want to jump. Turns out there are some pretty neat tricks used in games to create an illusion that the sprite is moving in a parabola with variable height, and make it appear as if the game magically knew how high the parabola needed to be before you jumped. When I found out how other games have solved this problem, I got so excited that I even posted on gamedev.stackexchange!

My game itself had some features that I thought was pretty cool at the time. There were sound effects and disgustingly low-quality piano game music that I ‘composed’. The art was the best: MS Paint. I even animated the googly eyes! I’m glad those days are over.

In 2011, I created

Mechanical Logic Gates

Tech: Lego

Status: completed

I was always fascinated by digital technology. I remember borrowing this book called ‘Practical Electronics for Inventors’ by Paul Scherz, even though I didn’t understand half of it. The bit that I did find particularly interesting was the chapter on digital electronics. Computers seem to make much more sense ever since reading that chapter.

I was inspired by a person called Randomwraith to attempt modelling functional logic gates using lego. His creations were fascinating. My ones, err, barely worked. But nonetheless, it taught me some interesting things, especially something that was later formally taught as De Morgan equivalents.

In 2011, I created

Simple Physics Simulations

Tech: C#, JavaScript

Status: completed

When I was young, I was overly ambitious in attempting to simulate the world with physics. Ah, the grand dream. Unquestionably my attempts completely missed the point. Especially so when it was used for my year 8 science fair (which, by the way, took me years until I figured out what science fair was really about since my ego was tragically way too high to notice it).

In 2011, I created

Simple Phone Plan Chooser

Tech: C#

Status: completed

This was nothing more than a maths homework with some GUI over a table, and a simple piece of code that loops over each row, calculates the expected costs, and displays the row with the minimal cost. I’m surprised how inefficient I made it.

In 2010, I created

Mouse Controlled Platform Game – ‘Banana Attack’

Tech: ActionScript, Adobe Flash

Status: completed

It could’ve been worse.

The End