cs interest phases
posted jan 2025
I often describe my interaction with Computer Science before university as “two-year bursts of obsession”. Here they are.
Jan 2011 - Nov 2013: I wanna make games!
I joined the Infocomm Club in primary school and made some games with no-code software like GameMaker Studio. I think I opened Unity a few times, and I tried to read Java code for Minecraft mods.
Dec 2013 - Nov 2015: I discover programming!
I learned to code for the first time after my PSLE through the CS50 course (on iTunesU, of all places). I did CS courses in school where I learned to code in C and really liked them.
The sole exception was a Raspberry Pi course which I was completely lost in. I still have a fear of hardware to this day.
Dec 2015 - Jan 2017: Competitive Programming
I was invited to a competitive programming (we called it “informatics olympiad”) course because I did well in the earlier courses, and I got pretty “into” competitive programming. I remember thinking about Kattis questions all day.
In hindsight, I definitely approached it wrong (e.g. memorising instead of understanding), and I’m not sure if I was really interested in the learning or just in the idea that I was “good at CS” because I was in informatics olympiad.
Jan 2017 – Mar 2018: Android App Development
There was a course in school where we made Android apps, and I fell in love really quickly. That was the first time I actually made a “real thing” with programming. I made a bunch of apps for hackathons and for random school events / projects.
Mar 2018 – Dec 2021: Cybersecurity CTFs
I attended my first CTF and instantly fell in love again. I was genuinely addicted for a few months in 2018 and would play a CTF almost every weekend, neglecting every other life priority (for example, I received a 1.8/5 GPA in the first half of 2018 lmao).
In hindsight, I really loved the broad exposure to CS concepts that I didn’t really get in school. I think I also liked the fact that I was reasonably successful at competitions for the time, and the black rectangle for a challenge on CTFd becoming green when you solve it really tickled my dopamine monkey brain.
Dec 2020 – Sep 2022: Web Dev & Hackathons
There begins to be some overlap here, maybe my brain finally learned to multithread at 19.
I started making web apps with libraries like Flutter or React/Vue. I attended a bunch of Hackathons and I felt a lot of joy when putting together apps. I also started volunteering for Better.sg as a developer, and I joined the MLH Fellowship where I kinda did mostly web dev work.
Aug 2021 – now?: Program Analysis, then PL
Through playing CTFs and enjoying security, I discovered fuzzing, which made me discover symbolic execution. I was absolutely mind-blown by the fact that one could “provably” enumerate input constraints for all the branches of a program.
I went to work at Trail of Bits where I worked around a symbolic execution tool, I tried to do research with Prof Rigger at NUS where I worked on SQLancer and metamorphic testing, and I would later learn Coq through the NUS course CS3234 Logic and Proofs for Programs by Prof Danvy.
Aug 2022 – now?: Databases
Working on SQLancer made me realise how much depth databases had. As I went through my CS degree, I kinda decided that I kinda just enjoy most of CS, and I liked databases because one could touch many areas of CS by working on a database. I could get a touch of PL when thinking about query languages, a touch of algorithms when thinking about index data structures or join ordering, and a touch of systems when thinking of concepts like sharding, isolation levels, and storage.
now?
CS / Technology as a whole is fun and interesting to me.
I think my ability to completely obsess over a specific topic has been slightly dampened, which has resulted in significant improvements to my ability to perform basic human functions.