how it started

The search is a pleasure, and a difficult one, as most great pleasures are. — John Green

My foray into programming was muddled, to say the least. I was 18, it was the end of 2014, and I had just finished high school with about three months before I would enter Singapore military to do my two years of national service. I was planning to study Physics in the US — the study of which I considered to be the contemplation of the sublime; a glimpse into the hidden patterns of our universe.

But it was 2014 and it felt like everyone was talking about coding all of a sudden. The year before, released a video, What Most Schools Don't Teach, where the likes of Bill Gates and Gabe Newell were extolling the virtues of learning to code. And in August that year, CGP Grey warned of a future where, for most jobs, humans need not apply. So I decided I'd learn to code in the two years before I entered college.

Up to this point, my exposure to coding had been minimal. In Secondary 1 & 2 (i.e. ages 13-14), we had a computing class once a week for half the year that taught us the basics of flash programming (we made simple games!) and how to create a basic HTML/CSS website. I was also editing Wikis as a hobby, which was mainly writing wikitext, a HTML-like markup language. Perhaps unsurprisingly, I didn't catch the programming bug, and while I wasn't sure what work I'd like to do when I grew up — my best guess at that age was lawyer! — I thought computer programs and processes to be best left to the computer geeks and, to my eternal regret, mostly ignored it for the next 4 years.

Now, at this point, the notion of a programming language was still foreign to me. Flash seemed like an isolated ecosystem for animations and games that I could find on Newgrounds. And I was basically only proficient in HTML. So I started my coding journey thinking that "learning to code == learning to make websites". I stumbled around finding resources and MOOCs teaching web programming, and got the hang of using HTML and CSS to make simple websites. But while it was neat to make a webpage, but it wasn't intellectually fulfilling — I was finding it harder and harder to care about centering divs and tweaking margin values.

I nearly gave up on coding entirely at this point, until I stumbled onto Harvard's CS50 MOOC. In the first lecture, David Malan tears up a Yellow Pages book to explain the concept of binary search. "So this is what CS is about!". Suffice to say, I found CS concepts to be beautiful and elegant — qualities that had attracted me to the field of physics in the first place. Back then, CS50 still taught C, and I took to arrays, pointers, and recursion quickly, finishing CS50 on Christmas 2015, and, in the last year of my military service, I went on to complete MIT's Intro to Computing Using Python, Andrew Ng's Machine Learning MOOC, and Tim Roughgarden's Algorithms MOOC.

I was also serving in the military full-time at an airbase, so this was done in the weekends and in the quiet hours that I eked out during my shift duties. On the weekends when there were no squadrons flying and the airbase was in a lull, I'd fall asleep reading Algorithm Design (Jon Kleinberg & Eva Tardos). In a curious twist of fate, I would later take a course in algorithms at Cornell University, which was taught by none other than Eva Tardos herself!

It wasn't easy. At the end of each night shift at my airbase, I was groggy, beleaguered, and dull in my thinking, which is not great for doing abstract thinking! But I would take a nap, have a meal, and head down to the library to learn what I could. I've always loved logic — the pure rigour it demands in your thinking and the delight it induces when you discover something new in your thinking — and so the study of CS, so exact and unerring in its methods, was a labour of love. As I often told my girlfriend (now wife) when she was learning to code, Programming is not magic. Everything happens for a reason.

When I got my ED acceptance to Cornell, it was 6 am, approaching the end of another night shift in the airbase. The night before, I had stepped out of the command post at midnight and gazed out into the airfield. In the distance, commercial jets took off from the Changi Airport runway, whisking passengers off to lands beyond all that I had ever known, each on a journey wholly unknown to me. In 6 hours, I would know if I too would be on one of those flights. Flights that promised adventure and new beginnings, but also great unknowns, thrusting me forward into a new phase of my life where Singapore would no longer form the steady bedrock of my existence.

Three years at Cornell University, one year at Stanford University, and a few jobs later, I'm still that starry-eyed kid who caught the coding bug and never let go. But I also developed my interests in government, politics, and social justice — it turns out the human systems around us are not unlike the artifices of code we create. There is no Magic; everything happens for a reason, and so we must work too to debug the problems in our country and communities. Technology has been partly responsible for the polarizing currents of our time, and my goal is to make technology part of the solution.