Experience

Much of my life has been dedicated to developing various software programs and applications.

2024 update: the list on this page is really outdated, and does not include any of my recent, (IMHO even more amazing) achievements.

Most significantly, I’ve interned at Facebook, and contributed a new concurrent mode profiler to React. Since graduating from college in 2021, I’ve also relocated from Singapore to San Francisco, where I’m now a senior software engineer at Ironclad, Inc. working on the future of contracting.

Let me find some time to overhaul this page, but in the meantime, please check out my technical blog and GitHub contributions, and follow me on Twitter!

★ projects are those that I couldn’t be more proud of.

Note: I’ve organized my projects by their intention, and not chronologically.

Exploration

These were created in order to push my personal boundaries, to learn more beyond what I already knew.

Making a Difference

I already had the skills to do these, so it simply took intense googling and StackOverflow lookups, some keyboard smashing, and voilà. Of course, creating these required me to learn some new frameworks, languages or tools, and helped me practice and get better at programming, but the purpose and focus of these are to improve the lives of me and the people around me.

Initial Struggles

What I created roughly between 2009-2010 (when I was 13-14 years old), when I was learning to program.


Exploration

★ Jarvis

2012-2016 (16-20 y/o)

Jarvis is an ongoing project to, essentially, make a friend by creating human-like voice-controlled software. Obviously, I haven’t succeeded in doing that, but this project has been big enough for me that it deserves its own page.

IB Extended Essay in Physics

2013-2014 (17-18 y/o)

Although this isn’t a usual program, my EE was written in MultiMarkdown, with LaTeX, Sweave and R code mixed into it. All my graphs and figures were generated everytime the essay was “compiled”.

It was a pretty crazy way to write an essay I think, especially when everyone else used Microsoft Word, but it was really satisfying knowing that every number displayed was in sync, and that the document was typeset so beautifully.

You can download it here.

Making a Difference

★ Computing for Voluntary Welfare Organisations – Ruby on Rails Web App

May-August 2018 (22 y/o)

I joined as a developer from 14 May to 15 June 2018, before taking over as team lead until 10 August 2018. I led a team of 7 to stabilise, enhance, and maintain a Ruby on Rails web app and Ionic/Angular mobile app built for Lions Befrienders (LB), and to maintain another Ruby on Rails web app for various other senior activity centres and neighbourhood links.

What we did

★ Core team member of NUSMods – React and Redux Web App, Node.js Scraper

Nov 2017-now (21-22 y/o)

NUSMods needs no introduction to any NUS student – it is the way to plan timetables every semester.

I have been involved in this open source project since November 2017, when I ported the Venues page from the previous version on NUSMods to the new NUSMods R. Right now, I’m working with the rest of the team to enhance the venue data by integrating more NUS location APIs, and also to implement user accounts and timetable synchronization.

Progress Marker – React and Redux Web App, Node.js Backend

Feb 2017-now (21-22 y/o)

Progress Marker is a B2B program that I am developing for my father’s company, LZ Leadership International Pte Ltd. He is an executive coach and needs to measure the progress of his participants’ skills development. Progress Marker enables participants to measure their own progress and obtain 360° reviews of their progress. Progress Marker is nearly completed and will soon be used to enhance my father’s work.

Progress Marker’s frontend is a single-page web application, implemented using modern technologies such as React and Redux, packaged with Webpack, and hosted on Netlify. Its backend is a REST and GraphQL API server implemented in Node.js, hosted on Heroku, and stores data in an external MongoDB service. Both programs are written in JavaScript ES6 and transpiled by Babel, with tests written in Jest.

Internship at the Centre for Strategic Infocomm Technologies (CSIT)

April-June 2017 (21 y/o)

I did a 10 week internship at CSIT, an agency in the Ministry of Defence, where I worked on two fascinating software projects. I do not know what I can disclose at this time, but I hope it does not violate the Official Secrets Act to say that I learned a lot and that I had a lot of fun working with my two intern teammates and very experienced mentor.

Six.Man.Bot – Telegram Bot

November 2016 (20 y/o)

This was a little Telegram bot that I created for the Republic of Singapore Air Force while I was serving my national service there. I can’t go into much detail, but it modernises an existing squadron procedure. It only took 2 days to reach an MVP, and a further 2 days to flesh out the rest of the initial features needed.

★ Lusere – HTML Application, iOS

February-September 2016 (20 y/o)

Another project I did for the Republic of Singapore Air Force during my NS, this time to streamline the ad-hoc security clearance procedures at an air base in Singapore.

I volunteered to start this project after seeing troopers suffer due to the inefficiencies and quirks of the old procedures. Streamlining the processes required overhauling it completely with software to replace tedious, manual work, and as such, I architected, developed and deployed a new suite of HTML Applications and an iOS app. At least half of the code was written in Notepad due to system constraints.

Lusere reduced the time needed to process and check for clearances by over 90%, and I received the squadron’s Outstanding Serviceman of the Month award for the achievement.

Gyro – iOS

2013-2014 (17-18 y/o)

I initially wrote this app to experiment with the then-new device motion API in the CoreMotion framework. However, it became useful whenever I had to measure angles. I even used it as a measuring device in this experiment I did in physics class where I measured angles of diffraction.

G.E.N.I.E prototype – iOS

2013 (17 y/o)

A friend contacted me in JC 1, asking me to help him make a little demo app for his GCE A Level Project Work. This is how he described it:

G.E.N.I.E is a prototype of a smartphone application that was conceived in collaboration with the Singapore Association for the Visually Handicapped in order to increase access to convenience banking for the visually challenged in Singapore. G.E.N.I.E is an alternative user interface for the visually challenged to use should they require the services of an Automated Teller Machine. Instead of visual elements commonly found on screens, G.E.N.I.E. relies on audio cues and gestures which are friendlier to use.

The idea was for visually impaired users to use smartphones by swiping up, down, left or right. So I took a couple days to create it, and I recorded this video of the first alpha version. Do forgive the profanities – I was young and fooling around with a small project.

Capture suite — iOS, Mac OS X

2013 (17 y/o)

SJI Street View was done with a schoolmate at the end of 2013. My school, St. Joseph’s Institution (SJI), was closing for a major renovation. As SJI has a long history, we wanted to preserve the fond memories the campus held for countless generations of alumni, and thus were inspired to create something similar to Google’s Street View, so that anyone can walk through the school virtually. Due to cost constraints, we had to improvise, using a tripod and two iPhone 4Ss to take the photos.

SJISV Mounted iPhones

The Capture apps were a suite of iOS and Mac OS X apps which aided this process. Our setup required both iPhones in the setup above to take photos simultaneously. As their screens were not accessible, a remote control had to be created. So I created CaptureBoss and CaptureClient, which were the remote control and camera apps respectively. They communicated over WiFi, and were also able to transmit the photos to CaptureServer, a Mac OS X app which sorted and stored the photos received.

Once the photos were taken, we tried stiching them into the final panoramas with the open source Hugin software. Although this was more difficult than expected, all the necessary photos were taken and can be processed again in the future.

Initial Struggles

★ IntelligentMonkey and Fluttr – iPhone OS

2009-2012 (13-16 y/o)

I cofounded IntelligentMonkey with 2 other American teens (then aged 14 and 15) I met on Twitter. We split the work so that I did the programming, @branden3112 did the PR and @cohnjosta was the CEO. I titled myself the lead programmer even though I was the only programmer most of the time. At various points, we partnered with @fabiankr, who was older and more experienced than the three of us.

Together, we programmed a Twitter client called Fluttr for iPhone, which we sold on the App Store for $2.99-3.99. John recorded this video, which I believe features Fluttr 1.0.

Someone even wrote a blog post about me.

I learned so much from this period. Although there were numerous negative experiences such as dealing with a guy who seemed crazy and leaked our beta, I also met many people around the world who were very helpful and encouraging.

These years were probably the highlight of my teenage years.

Useless Info – iPhone OS

2009 (13 y/o)

I helped @cohnjosta (then aged 15) write this app, and he sold it on the App Store for $0.99.

Useless Info was an app that basically showed a fun fact from a big list of fun facts. You’d press the Next and Previous buttons to navigate between them, and you can even send these facts by SMS or email.