All posts by anzo960504

As 2021 draws to an end…

“Wait what, it’s 2022 soon? But COVID is still here to stay…” Remember last year when the vaccines first came out and we were like, “life is going to be back to normal soon!” Unfortunately with the emergence of Delta and Omicron variants, having the two jabs were no longer the golden tickets that we imagined.*

Coping with COVID

Indeed, the pandemic itself has blown our mind repeatedly ever since we were finally convinced that we had to limit in-person activities and switch things online. In hindsight, we should be proud of ourselves for the drastic changes we’ve adapted to — the new normal, if you like to call it (it still amazed me on how I collaborated with people while interning at Cockroach Labs without meeting anyone in person). We should be proud to have maintained the resilience amid the difficult times (e.g. missing my family and convocation ceremony). And we took comfort on the work-from-home and study-from-home (and even exam-from-home for the case of TOEFL and GRE) coziness that saves us from commuting and moving into a new city altogether.

But have we fully coped with this new normal? I don’t know. Other than the times when we could finally please the lazy self of not going anywhere, there are other parts of us that we fail to satisfy. Did we perform / learn as well under the work-from-home environment? Do we truly enjoy them? Are our mental / physical health still the same under lockdowns? Are we still finding the balance in minimizing exposure risk vs doing whatever’s natural for us? These worries may sound abstract, but the COVID weight I gained was tangible (only managed to get rid of them after sustained morning runs at MIT). There’s also the awkwardness of attending office hours via Zoom that I still couldn’t fully get used to! (can you still show your code privately to a TA for debugging)?

“If lockdown sustains for 5 years I could very well get depression,” I once told my dad. This is probably an exaggeration, but still underscores the anxiety I had over the future uncertainties.

Making things worse was when the COVID situation went dire in Malaysia amid the surge of Delta variant when the vaccination program just started to ramp up, which made me worry about the well-being of my family. I’m glad that they ended up fine (they practically stayed home except for weekly grocery trip), but not everyone was that lucky — one distant relative passed away from this virus (I hope his family is doing okay now).

One silver lining that I could get out of is that there are a select set of people that I got closer to: my housemates over the pandemic (Andrew and Jay, the two Malaysians who also graduated from Waterloo around the same time as I did). Our primary interaction was simple: cook together, grocery hauling, and repeat for a good 16 months. Owing to the variety of dishes we made, every single meal with them was enjoyable. Spicing these things up were the board games session (Hanabi), eating out to satiate our cravings, Genshin Impact monster fights together (including embarrassing myself before them by repeatedly spelling f-bomb when fighting aybss mages in a domain), and the occasional Toronto trip after getting our vaccines. Looking at these memories makes me feel that my credits to them in a single section of a video wasn’t enough.

The housemate farewell pic

The PhD Dream

2021 is also a turning point (as planned) — I finished my undergrad and transitioned myself into a graduate student. This means saying goodbye to my Canadian friends, and continuing my path in academics while they started building their careers. I’m still fortunate enough to get to know enough people in my first four months of MIT, but these newly built friendship can’t replace the kinship I built with my peers in Canada over the past 4-5 years (yes I friggin missed them). This reminds me of my one recent grocery trip to a Chinese store somewhere in Boston that invoked the memories of the weekly T&T trip with housemates at Waterloo — the good times that were now behind us!

Finally, starting a graduate program means introducing research into as a core part of my life. A friend once joked about how we could package ourselves professionally as a “researcher”, while still enjoying student perks (like Apple Education or Amazon Prime). In reality handling two roles at the same time posed some challenges for me as a newbie. Like others, I want to power up on my research since Day 1, but realized that coursework took out significant amount of time from me. And perhaps my familiarity as being a student rather than a researcher, and that classes are easier than research (in terms of content), inevitably made it harder for me to have the same level of enthusiasm for my research as compared to classes. I’m aware, however, that this is something I need to overcome as an aspiring independent researcher — one who’s capable of having his own research agenda (also a goal of PhD). All these are something I need to work on continuously, anyway. (An analogy would be one of my favourite classical pianists of the new generation, Kate Liu, who said during an interview that performing at the Chopin competition was when she felt that she was a pianist, instead of a student).

Like everyone else, I do hope that the pandemic will subside sooner than later. But the pandemic itself brought some new discovery: remote work and learning, for example. While I’m not a big fan of having every single interaction through the computer screen, I do hope that remote mode could become an option when travel becomes prohibitive (e.g. attending conferences, where travel could sometimes be a hassle!).

As for 2022 and beyond…it’s still some time, and I remain excited to see where the PhD journey would lead me to!

* Disclaimer: I still trust vaccines’ efficacy in minimizing our chance of getting bad infection outcome (e.g. hospitalized). But it’s still a tad disappointing that we can’t live like COVID is no longer a thing even with the vaccines.

(More) Updates

Whew! Just realized that it has been 1 year since I last wrote something here (for some reason I lost the momentum to write). Here you go, in rough chronological order.

Fall 2020 – Internship with Enlighted

My job titled was ML engineering internship, and I was working mainly on crowd counting in an enclosed space (basically a computer vision problem). There had been a lot of exploration going on in setting up code, debugging, tuning parameter, trying to reproduce some past experimental success that was some how lost.

I eventually noticed that multi-column CNN could work well if your samples come from a fixed background (e.g. collecting data from the same room), and compared it against other algorithms I have surveyed and implemented. One close contender to this was the You-Only-Look-Once algorithm (though more work was required to label the training data). I then delivered a presentation on my findings which attracted attention from some senior employees. That felt pretty good. 🙂

Fall 2020 – #gradapps

Fall 2020 was also the busy time with me devoting most of my spare time to graduate application. I have my resume from job applications that I could just tweak around, there were still a lot more to do:

  • My Statement of Purpose took me around 2-3 months to write (and still, if I look back now I might still find places for criticism)
  • Looking for a potential advisor also took a lot of research, when there were so many of them and I’d need to narrow down to a few that I think that’s a close research interest match

It really doesn’t help that I was applying for one of the most competitive programs which is CS/ML, where people rate admission into PhD at the top schools as “nearly impossible”. Luckily, the three professors from Waterloo whom I asked for recommendation letters were very helpful and prompt, and I was grateful for that.

You know you’re too stressed out when you need this to entertain yourself

Winter 2021 – Online Classes

My Winter 2021 term was my final term of studies at Waterloo, which was also my first and only term of having classes that are completely online. The classes I took were 3 CS (computer vision, AI, concurrent programming), Stats (Applied Linear Model), Econ, and French 101.

That’s also the time I appreciated people’s comment saying “online classes are tough”, mainly because not having classmates / profs around you kinda made you feel like you lost your morale (slightly). The change of grading scheme also made the workload a bit heavier (e.g. the change from final exam to final project, where the latter is substantially more time consuming). Despite being accustomed to taking 6 courses per term, in hindsight I wished I only took 5 in the term.

On the flip side, I can now speak a little French (Je parle un peu français) so my 5 years stay in Canada was no longer a complete waste 😉

April 23, 2021 was the day I submitted my last deliverable for the term, and therefore completing my undergraduate degree at the University of Waterloo. Relieved as I was, I had a rather unusual way of ‘celebrating’ (since we can’t go out…quite yet).

Coursework trivia: French pronunciation went wrong (translation: we don’t play football today)

Winter 2021 – Graduate Applications Revealed

I started getting invitation to speak with profs about 2-3 weeks after submitting my applications (a.k.a. ‘interviews’), and had a few interviews scheduled throughout January. February was the time where most of my admissions decisions were rolled out. A summary of my admission decisions:

  • accepted: MIT, Toronto, Waterloo, UBC, Alberta, UCLA, Illinois, Texas, Wisconsin
  • rejected: McGill, Stanford, CMU, Berkeley, Harvard, Princeton, Washington, Cornell, Georgia Tech

I was particularly elated when receiving admission notification from MIT (literally had my mouth opening big and my left hand covering my mouth — don’t worry I did not go out that day so it’s COVID-safe), considering that the admission cycle has been unusually tough given the pandemic, and MIT’s competition was already extremely competitive. I eventually chose MIT’s offer after a few weeks of deliberation. 🙂

This email was all I asked for 🙂

Summer 2021 – Internship at Waterfront

It’s summer time and graduate program doesn’t start that soon, so time for another internship! I returned to a former employer, Waterfront International (albeit virtually this time), when I had some fun time setting up my equipment (with a display monitor, a CPU, a modem and a phone!)

I worked on correlation estimation on high frequency intraday returns, and it’s pretty exciting to explore different correlation estimation algorithms from research papers! The discovery on how Kalman Filtering can rectify the problem of underestimation still feels amazing to me (though Kalman filtering was not without its own shortcomings).

Summer 2021 – COVID Injections, Vacation

Everyone hates COVID. Fortunately, I had my two Pfizer doses done by June 2021, and became fully vaccinated come early July.

Ontario opened up in July and my roommates and I travelled to Toronto 2 times for vacation, ranging from going for bicycle trip to spending almost $100 on food over two (high-end) meals in a day. We were happy that we could finally dine in and get out of our home once again.

(I hope this sentiment is not short-lived though, considering that new COVID variants are circulating and we cannot get our guard down yet. I still wear mask regularly now).

Horse riding (as a vacation) is fun!

Winter / Summer 2021 – Genshin Impact

Okay something not-so-proud to talk about: I was introduced to a game named Genshin Impact during 2020 Christmas, and had been playing that for 8 months (my mum asked me jokingly if I got into any bad activities and I guess gaming was my only answer to that, sorry mum 🙈 jkjk).

I’ll cover more details in a YouTube video (coming very soon!), but it’s definitely well-developed, and it’s addictive. In fact, the way I celebrated my end of school (mentioned earlier) was to spend USD 10 to purchase Battle Pass (a way for you to get more in-game resources). (More like, a #yolo way of rewarding myself after going through 5 years of academic struggle).

All good things must come to an end — I’m at the verge of quitting. I haven’t uninstalled the app only because my friends and I are planning to take an in-game photo together before I leave the game.

Summer 2021 – Time to Say Goodbye!

Finally, it’s end of August and also the time I moved from Waterloo to Boston.

First, taking a flight nowadays was made extra tricky, no thanks to COVID. Taking a COVID test within 3 days of departure (and show the proof that I’m negative) wasn’t a problem, but it still bothers me that I was in an area of high exposure risk (i.e. airports and airplanes), where I was physically with people who could be from everywhere (and the airplane was operating at full capacity 🤦‍♂️). I vividly remembered my mum describing my journey as a war — this description couldn’t have been more appropriate at this time.

Second, the process of moving itself was also somewhat onerous. I have moved a few times, but thanks to storage services (e.g. Youpackwestore) and that I was only moving between Toronto and Waterloo at most, things were easier. The fact that I was moving everything from Waterloo to Boston made this task significantly harder, especially given the airline baggage restrictions (I weighed my luggages at least 10 times at home, I swear). I ended up discarding around 35% of my belongings (mainly old clothes and items that I donated into a Diabetes Canada donation box). Fun fact: this is also the time I first experienced shipping a box internationally where I need to beware of custom regulations.

Rant aside, I was grateful that the whole moving process went rather smoothly (and my COVID tests after landing at MIT were all negative!)

The outfit-of-the-day at airport during COVID

Summer / Fall 2021 – A New Chapter

Nothing much to say yet, but the orientation program was pretty enjoyable overall. It blew my mind that we can have dinner together in a big group outdoors when I have been extremely cautious about having meals together with friends of different households in the past. I have also been exploring the Boston/Cambridge area…before the real work (as a graduate student) starts soon.

Mandatory selfie at the Great Dome

Four Years

“Wait, it has been four years?”

The day when I waved goodbye to my parents to study in Canada on September 1, 2016 still seemed to be fresh — as if it was only last year, or even yesterday. I was in my first CS class as the professor talked about the 2016 US Presidential Election prediction; now the world is heading for another one.

It’s inconceivable to think of how much things have been embedded in these 4 years: the changing seasons that saw me dreading the winter and can’t wait for the next summer (unfortunately I still can’t stay comfortable with the Canadian winter); missing my family so badly that I couldn’t hide my excitement when I finally booked a ticket back home last summer; moving around different places every 4-8 months that I officially lost count on the money I paid for storage and moving; picking up the Canadian hobbies like skiing and skating; immersing myself in the academic rat race of assignments and exams for 7 study terms (1 more left and I’m gonna graduate!); interning in fields that span graph theory, cryptography, machine learning, finance, databases; experiencing the once-in-a-century pandemic (oh well…). All these happened in a blink of an eye.

It wasn’t like that before. When I was 8, 4 years later means I would have “levelled-up” into a teenager who could basically do many things himself and don’t have to listen to his parents (jk that’s so delusional LOL). As a kid, this turned out to be hard for me to wait for. Later in 2010, I involved in mathematical Olympiad for 4 years that culminated in my gold medal win in IMO 2014. An arduous uphill journey with unknowns on how things turn out, but the joy derived from mathematical problem solving made the time flew by without me noticing.

Perhaps it’s a wake up call for yet another reminder on how transient our lives are, that we can’t be afford to be careless and let 4 years slip away.

Putnam 2019

For some time I doubted if I am still going to write about the process of writing a math contest, but since I need some effort to revive this writing page…here it is! (Warning: this is gonna be long)

Screen Shot 2020-03-21 at 7.58.08 PM
The session A problem as taken from AoPS

Session A

Part 1 – the warm up

As usual the strategy is to start from the easy problem so I looked at A1, which, unfortunately, wasn’t that easy at its first glance beyond the fact we can factorize the expression into (A+B+C) x (sq(A-B) + sq(B-C) + sq(A-C))/2 (where sq means the square function), which means if A=B=C=0 we get a 0. A few more experimentation: substituting (1, 0, 0) and (1, 1, 0) means we get the value of 1 and 2, respectively. This isn’t taking me anywhere…let’s try A2. Turns out, A2 was quite routine (I was a trigonometry-trick enthusiast back in the IMO times, remember?) To make things more systematic:

  1. Notice that the incenter I cuts the angle bisector from C into 2:1,
  2. Drop the perpendicular from I to AB to make good use of the arctan condition,
  3. Draw parallel to AB from C that intersects the perpendicular line above at D, calculate AD based on the angle beta (double tangent angle formula needed here)
  4. Finish off by concluding that alpha = 90 degree

There goes A2 and time to revisit A1. Remember the factorization earlier on? That wasn’t in vain as it turns out: if we make the some of square stay constant at 1 (achievable whenever (A, B, C) are either (k, k, k+1) or (k,k+1, k+1) then we have all the cases for 3k+1 and 3k+2. This idea inspires another solution of 9k via (k-1, k, k+1) and we could just finish off by showing that this expression must be divisible by 9 OR cannot be divisible by 3 (though I should have shown that it must be nonnegative — reason why I lost 2 marks).

Part 2 — strategy and decision

It wasn’t as easy as it sounds because the next candidate wasn’t clear. A6 was out, A4 (differential geometry) wasn’t well under my radar (I was convinced that the answer was no, but no obvious counterexample popped into my mind), so the only clear choices are A3 and…A5? Yet there wasn’t a clear strategy on how to tackle A3 either (for god’s sake how is this an A3?) The only way I could get out from was to invoke AM-GM inequality (M_1)^(2019) >= b_(0)/b_(2019) >= 1/2019 (i.e. this will practically be our lower bound, lol).

There was only around 1 hour and 30 minutes left, so I took a flight instead of a fight and glanced at A5. I tried p=3 (ans=1), p=5 (ans=2) so it looks like the answer has to be (p-1)/2 using the fact that:

  1. The i-th derivative of x^k is k(k-1)…(k-i+1)x^(k-i)
  2. The highest power of n with (x-1)^n dividing q(x) is the biggest possible M such that q(1), q'(1), …, q(M-1 derivative)(1) are all 0.

But I wasn’t too sure about 2 as it works only for the complex field: who on earth have the expertise on a finite field?!?!?! Chill man…we could very well just verify that: turn out we are all good as long as n < p because (x-1)^p has derivative 0 in prime field. That’s it: for the i-th derivative evaluated at 1 we will just take the following sum:

a_k k(k-1)…(k-i+1)=k^((p+1)/2)(k-1)…(k-i+1)

for k = 1, …, p-1. Finally we remind ourselves that this is a sum of b_i(1^i+…+(p-1)^i), which is divisible by p unless the exponent i is divisible by p-1 (hint: primitive root). Therefore the maximum i we can permit is (p-3)/2 (and therefore the answer is (p-1)/2).

Cool, back to A3. We got the previously-mentioned inequality, we need |z| to be the same for all the roots. There’s how we got the inspiration:


so all roots have size 1. So all it needs to make z=Mx (or is it x/M? Whichever works) and we’re done.

(There’s no part 3, 30 minutes left and I think I better check my work instead of trying A4 or A6).


Session B

Screen Shot 2020-03-21 at 8.50.28 PM

Part 1: Settle the easy ones first

Contrary to Session A, I looked at the second one (B2) first. The structure of the denominator suggests the use of partial fraction, why not give it a try? And we need the formula:

sq(cos A) – sq(cos B) = (cos A – cos B) (cos A + cos B)

= 4(sin (A+B)/2)(cos (A+B)/2)(sin (B-A)/2)(cos (A-B)/2)


so each term now becomes 1/sin(pi/2n)(1/sq cos(k pi/2n) – 1/sq cos((k-1) pi/2n)) which gives the convenient telescoping sum, yielding 1/sin(pi/2n)(1/sq(sin pi/2n)^2 – 1) and therefore the limit 8/pi^3 (just take sin(pi/2n) as pi/2n )

Back to viewing B1. It makes an intuitive sense on how to proceed by trying small cases (use infinite descent to show that the points are all in the form (2^m, 2^m), (2^m, 0), (0, 2^m) with its negatives), and I’m 99% sure that the square must either be axis-aligned or have 45 degree difference but proving that became a total nightmare (The most straightforward way is to brute force using “same length” and “perpendicular” criteria but…uh…nobody got time for that).

Part 2: Fight or flight? 

Desperate, I looked at the other problems (3-6) but none seemed too easy (in hindsight it was a mistake not to try B6 since it turned out to be easy). A few scribbling on B3 took me nowhere, so I decided to give B5 a go via small cases (replacing N=1008 with N=2, for example), which gives the next value (after 1, 2, 5) as 10 (because the difference of polynomial degree n is a polynomial degree n – 1), And hey, why can’t we apply the idea to the general case N=1008? What follows is a lot of writing in justifying this argument, finding an expression, and finally, simplifying into what’s required by the problem (which turned out to be F_{2N+2}-F_{N+2}). This last step required a bit of investigation but not too hard after some pattern finding and proof by induction.

Having done B5, the only sensible thing is to revisit B1. It’s an honest struggle, at best, but I finally came up with an argument: if we rotate by 45 degree and shrink It by a factor of sqrt(2) then we’re basically reducing all points from P_n to P_{n-1} and therefore we can continue doing this until at least one point is in P_0 (excluding the origin). Manual check + parity argument means there are only 5 such configurations, and therefore f(n)-f(n-1)=5 for all n. Elegant idea, but my writeup was messy that I was kinda disbelieved to receive a 10/10.

Part 2.1: the final struggle

The last 30 minutes should better be devoted to the problem that I have the strongest feeling about: B3. At this point I couldn’t remember much but all I could remember writing on the solution sheet was pure gibberish . Times up. I gave up.

Updates (again)

I have to admit — the past months have been hectic due to schoolwork and a part time research project, which explains why this site has been dormant for a whooping 6 months (or is it just a cover-up of the fact that I lack writing inspiration?) The fact that I’m not attending school (physically) should then mean that I better get my writing muscles on again, so here we go as a warm up:

  1. The COVID-19 pandemic that dominated the headlines of my news feed affects every single one of us: in particular, universities suspend in-person teaching and students are to continue their studies online. While the restructuring of the course outlines implies a significantly slower pace of workload, we’re all overwhelmed by the immense uncertainties amid keeping ourselves abreast of the current situation that evolves rapidly.

    Endless monitoring on the official site aside, we students need to cope with the many things that will no longer go along with our plan (e.g. the cancellation of a scheduled GRE test), the adjusted routine that minimizes the frequency of leaving my hostel, and more important, the well-being of people around us (friends, families, and ourselves). It’s only wise if I can use this opportunity to do things that I almost never have a chance to do regularly (like reading), and figure out the directions of my life (academia vs industry, math vs CS) that has been abandoned in the middle of schoolwork.

  2. Adding to the previous point: I originally have an internship lined up in the States but the travel ban imposed by both Canada and US necessitates some change in this plan (as minimal as “working remotely”, hopefully). I’m not alone. We’ll have to wait for things to unfold for the weeks to come.
  3. Fall 2019 term. The beginning of the term saw me pulling two all-nighters for the 2019 Hack the North, which I wowed to be the last hackathon that I would pour all my soul in for more than 24 hours in a row. Due to the part time research and the heavy nature of one course (Operating System), I reduced my course load from the my 6 to 5 (though a friend said “come on 5 is the usual not 6!” 🤣). I did well in those courses, those in retrospect I wish I spent more time to actually understand the content of certain courses instead of finding the “most efficient” way to gain good marks, and to produce more for my research during that period.

    Screen Shot 2020-03-21 at 11.05.31 AM
    A note from my instructor on the algorithm course 🙂
  4. Winter 2020 term (to-date). My part time research continues, and I think I did better with better direction and knowledge in machine learning (though the output still fell short of what’s required to make a conference submission, alas). I think I enjoyed the courses better than last term’s, though it might have to do with the theoretical and mathematical nature of the courses too.
  5. Contests. I have to admit I’m getting increasingly less obsessed with math and programming contests (there’re other more important things like school, jobs and research, aren’t they?), but I’d do it for the pure sake of having fun. Without intensive practice, I probably won’t see a phenomenal increase on my Codeforces rating for time being like what happened over the 2018 summer (in fact I can’t even secure the orange rating right now :/ ). The miracle of doing well on the 2018 Waterloo ACM locals and ECNA regionals did not re-occur in 2019 either. I’m simply happy, though, to score another Honorable Mention on the 2019 Putnam competition, with a respectable ranking. 😀

    Screen Shot 2020-03-21 at 11.45.23 AM
    Screenshot of my score
  6. Activities. Currently, travelling has become a luxury. This makes the 2019/20 Boston vacation more memorable where I finally checked off the MIT/Harvard visit off my bucket list and enjoy the great seafood over there! (More details on vlog, stay tuned!) Earlier in the term I had the pleasure to travel to Ottawa and Gattineau park, and this winter (before COVID-19 became a pandemic) I visited a local ski resort at Waterloo as part of my indulgence for winter activities.

    Just learned skiing, really

TL;DR the past 6 months were great, thanks to the people around me: research project colleagues, the Data Science club execs (including both the activities and socials), Malaysian society for the informal potluck and end-of-term celebrations, and several schoolmates that I’ve known since the start of my undergrad. Now it might be in our best interest to stay away from each other physically and connect via electronic media to practice #socialDistancing


Writing stuff has always been enjoyable. Unfortunately, it has been relegated to the bottom of my to-do list ever since I started my undergrad here (with the exception of Summer 2017 period when I had more free time). This is the only thing I could do to rectify this situation: the update before school starts.

  1. I’m back from a month-long summer break in Malaysia! Thanks to my co-op program at Waterloo, summer break really isn’t a thing for me as all school breaks are at most 2 weeks in length. Getting home is therefore rendered impractical considering the time and money spent on the flight. This time, though, I had a month off this time (thanks to my employer for the flexibility in adjusting my work term length!), so I seized the opportunity to go home. Being able to spend time with my family, catch up with some old friends, and relish in the local food made every second spent in my city worthwhile, and this one month would be one of the most memorable moments in my undergrad life.
  2. Summer in Toronto had been amazing, replete with activities and entertainment ranging from watching the live Raptor’s show in the bar and watching the victory parade, to cycling around the Toronto island or simply jogging around the town. My summer internship had been an enriching one — now I have a better sense of how working at a trading firm would look like.
  3. Hobbies — I lost the penchant to do a complete writeup on the process of me solving the IMO (simply because I had retired from the participation in this contest for a good 5 years), but I do have my solutions uploaded here (first time having 6 problems solved, though problems 3 and 6 are probably considered out-of-contest-time solutions and I only got problem 3 after reading some comments on AoPS). Solutions to other contests are also in the same repo, just to showcase my love for math Olympiad 😉 .

    Codeforces — this is the only competitive programming that I’m actively doing till now. Until last August, I had been steadily marching from cyan / blue to purple rating (except a downfall), surpassing the purple bar with an astonishing 35th place on a Division 2 contest. The journey to the next rating band (orange) steepened significantly after that, however (despite it’s being only < 150 points away) with me hovering between 1953 to 2014 rating points consistently for the next 10 contest, only to breakthrough with a lucky #75 later on before crawling slowly to scrap by the orange bar. Regardless of how long I can maintain this, I am happy to unlock this achievement, at least for once.


  4. How about school? “Oh no I haven’t gone to school for 8 months!” While this is not the correct way to convey this fact, but it’s true. I will be starting my Fall study term in two days (after 7 months of internship + 1 month of vacation), so stay tuned!

That’s all, for now. 🙂

Dear Winter

Just face it — time flies, and it’s the end of April of the year 2019. Following UWaterloo’s calendar, this also signifies the Winter 2019 term has reached the end. In the past two years, this brought me the relief of finishing yet another academic year, especially in 2017 when the internship search and academic workload have been tumultuous. Consequently, the new non-academic life style in Spring has always been something I was looking for. Now, instead of celebratory, there’s a sense of emptiness lurking in my heart. The previous anticipation of the end of the April final exam season has since been replaced by the reluctance to accept the fact that the term was really over.

Contrary to the past Winter terms, I spent my term interning in the Uber’s Advanced Technologies Group. The learning curve at each research internship just got steeper each time, with this me facing a brand new challenge this time: machine learning. Amid the rewarding experience of learning something completely new, there’s always the self-doubt of where I’m working hard enough to contribute meaningfully to this internship. There were so much to be done that my coworkers actually described 4 months as too short; it’s only towards the end of the term did I feel it — I was ultimately swarmed by the ambivalence of both the excitement by the new interesting direction and opportunities the project was leading to, and the anxiety that time was running out. How I wished there were more time to work on it!

Several coding explorations filled the first half of my Winter term, ranging from algorithmic (CommuniTech Code & Win, and the Terminal AI challenge) to hackathons (Hack the Valley, Acorn Talent, and LunarHacks). Excited by the prospect of these hacking opportunities and the free weekends from the co-op terms, I turned myself into these hackathons with the intent to learn skills needed for application development. These five programming contests / activities were tinged with the nights we pulled our lethargic selves for all-nighters just to get stuff done, shivers as we were racing against the submission deadline to add our desired features, and the hilarious moments when we had to package our project as if it’s something “useful” during the pitching session. Eventually, I came to the point of deciding that I should halt these intensive exploration and focus on ML- or algorithmically-related aspects of CS. Nonetheless, the time luxury that made these explorations possible was something I would always appreciate. (Note: I travelled to Portugal as a supporter of the Waterloo’s ACM-ICPC team at the World Finals event, but I will save this to a later post I guess. 🙂 )

Screen Shot 2019-06-08 at 10.58.17 PM
One hackathon project: the image denoiser

The winter term was the first time I broke myself away from the tranquil university town (Waterloo) to a metropolitan that accommodates one-sixth of Canada’s population (Toronto). Interns event (Escape Room and Axe Throwing) by ATG aside, the vibrant Toronto atmosphere incentivized me to self-explore several places, ranging from the repeated visits to the Toronto Symphony Orchestra performance and the skating rinks, to several winter-exclusive events like the Light Festivals. Other times, strolling around the downtown area itself (when weather permits) or inside the Eaton centre served just in time to take a break from exhausting my brain after a day of work, or simply a gruelling Codeforces contest. Roaming around the city definitely became easier with weather turning warmer, but the winter-exclusive activities like skating and the light festivals, and the Toronto winter vibes in general, remain the moments that I wish I could live again.

WhatsApp Image 2019-03-24 at 14.58.13
Another exploration in the term: the Illusion Museum 😛 (creds to the hangout buddy)

With a few months left in Toronto before heading back to Malaysia for vacation, I hope to seize the opportunity to relish in the urban atmosphere where the weather is welcoming enough to make people stay outdoors. Nevertheless, this winter term will most likely be one-of-a-kind experience throughout my undergraduate journey, and will therefore be deeply ingrained in my memories. 🙂

Ps: thanks to my hangout buddy (schoolmate / friend who happened to be in Toronto with me in the term) for joining me for the in-city travel, and dragging me to places in return!


Pi Day Reflection

It’s Pi Day again, which reminds me of the MIT decision date (I always loved enjoying their decision trailer because it’s incredibly entertaining. One thing I couldn’t help thinking of, however, was what would happen if I were to choose MIT on April 30 three years ago? I still remember the Pi Day when I logged into, thrilled at the sentence “it’s our pleasure to offer you…”, yet an awkward ambivalence arose when I sensed that I wasn’t likely to commit to MIT (and no, I didn’t choose MIT, obviously).

This thought led me to the whirlwind of memory lane between December 2015 and August 2016: arguably one of the best moments I have in life. Just fresh from completing my A-Levels exam, I was on full course to complete my university application processes: the Regular decision of US colleges, and several others in Hong Kong and Canada. I was first threw a surprise admission offer by Princeton, then by Cambridge and MIT itself (on the Pi Day!), along with some full scholarship offer at other colleges. It feels like hard work from the IMO, A-Levels and SAT preparation that together took me years to prepare finally paid off, and the power is with me to make a choice.

Thereafter, gone were the days of idling (beyond teaching math Olympiad and picking up programming), and I were set to attend Waterloo. The romanization of life in another continent, and the warm Residence Welcome video stole my hype for this Canadian university. Only after settling down here did I realize the stress piling up when exams and interviews started, and the fantasy started transformed into anxiety. Perhaps this made me think of the same question again: how would I be if I were to be placed in MIT (or similar)?

It’s been three years, and however stressful life at Waterloo could be, I am grateful that the rigorous curriculum in math and computer science, and also the internship program made me a person that I want to be (though, there’s still a long way to go). And all these are attributable to the people around me — being in an environment where people around you are working on improving they appearance on resume definitely motivated me to work hard on that. On a not-so-serious remark, choosing a school in Canada also enabled me to blend into the life of the Canadians, ranging from embracing the Canadian hobbies (like skating and skiing) to simply exploring the cities and neighbourhoods around me. Perhaps, the only thing I would long for is the balance between a tech-focused environment and a multi-disciplined interests like humanities and physical sciences: something I did in the A-Levels and worked hard on (Physics and Economics). And this is something I envision to be something the Ivies look seriously on.

“Stay well and thrive”, a note to self as I continue along the Waterloo journey (which was also something I wrote three years ago).


Context: the 10-year-challenge campaign started by Facebook .

The craze for this 10-year challenge among my friend circle became evident as I scroll through Facebook or Instagram wall. The vicarious fun of entertaining oneself of the contrast between numerous pairs of before-and-after photos almost attracted me to join the squad, only to be held back by my self-conscience of preventing myself from being to obsessed with being present unnecessarily on social media. Nevertheless, in this writing space that’s more personal, it’s worth reflecting what had happened to me over the last 10 years.

Perhaps it’s such a coincidence, Jan 2009 was also the time I entered my middle school: the so-called elite high school in my hometown. This ‘status upgrade’ and the simplistic mindset in me gave me an illusion that the value of “following parents’ order” that Chinese have held sacrosanct doesn’t have to be followed closely; I should be now entitled with my own thoughts. While puberty gave me the audacity to speak out my thoughts, disagreements and demands, it failed to install me the skills to professionally voice them and to exercise my discretion on knowing what to do. This explains why I thought it’s okay to relentlessly query people about their marks: for the purpose to gauge my class ranking under the competitive (and somewhat toxic) environment, without knowing that these numbers could be privacy or taboo to people. Fast forward to college, I became way more well-received among my classmates. Being in the cohort of like-minded folks definitely helped; other than that, it’s only because I only learned how to interact with people at the age of 18. Perhaps that’s also why Prof. Arsmah (the former Malaysian IMO chairperson) texted me “You have grown up” along with a reunion photo in 2016, as compared to 2011 when she insisted me to tell her myself on how did the IMO go — “to improve your communication skills”, she said.

One lucky thing happening to me in the first half of the 10 years was the discovery of who I am: someone who loves math. If not because of the opportunity to get into the IMO training camp, I wouldn’t realize that I can spend my thoughts on a single math problem for a few hours just to taste the sense of accomplishment after solving it. Amid my practice of math problems and following the IMO training regime, alchemy happened as I advanced into the IMO team: something my parents and I thought it was impossible given the fierce competition in the selection process. That’s when math problem solving, turned from merely an exploration to a commitment and a habit. This habit perpetuated beyond the 2011 IMO despite being severely hit by the failure, even though it wasn’t clear if the hard work and sacrifice was worth it. Fortunately, achievements came along with my continuous practice, and my IMO career ended with the pinnacle: one and the only gold medal in IMO 2014. My full scholarships from Waterloo and HKUST, and the acceptances into other elite universities definitely served as great rewards and ramification to my achievements before, but what’s more heartening was the immense comfort before most pure math courses in Waterloo — simply because I have the motivation to deal with them.

The second half of the 10 years saw me entering the A-Levels programme, which also saw how my dreams were shaped. As glamorous as it sounds, the Malaysian IMO ‘ancestors’ often ended up in great colleges like Oxbridge and the Ivies, so I thought I would be the same as them one day. But it’s not until the college application period did I realize that I had to earn the respect of the admission officers through means other than the IMO. Luckily, my bursary from the SPM (Malaysian Education Certificate) also placed me to mix closely with people with the similar mind, sharing the similar dream: to get into one of the top 20 universities. For the first time, my motivation to work hard came from something other than merely to make my transcript look beautiful. For the first time, I became able to think of what I wanted to pursue in the future, and what were my areas of interest (and not-so-interest). The admission offers from 11 universities justified my hard work, eventually. But what’s matter was how the process shaped me into someone who’s dare to be more productive to chase for his dream.

The last quarter of the 10 years span was spent in the university, which was what I called the pivotal point of my life. In September 2016, I left behind people around me to embrace a new environment, in a new country, with new set of people around me. It’s this environment that I picked up programming and tuned myself towards a better self when comes to the WaterlooWorks Hunger Games period. It’s this place that I saw the weather around me turning from green to red to white, before turning green again. As I braved through the unprecedented challenge of job hunting season, I started realized what differentiates myself as a student and as a person: someone who doesn’t vs does care about skills other than those needed to get the good grades. The struggle to mould myself to someone who’s ready to contribute to the industry while still maintaining the other aspect of my life (school and work-life balance) gradually prepared me for the challenges I may face upon the adulthood, which is also a step towards maturity.

With that, what would happen in the next 10 years?

My 2018 ‘Sonata’

screen shot 2019-01-04 at 10.08.03 pm
Countdown at Montreal (2018->2019)

“It’s the time of the year again”: to look at what I have been through, ranging from switching into Computer Science to doing another math research, and how I broadened my tentacles from math competitions into regionals programming contest. It’s also a change of perspective, somewhat.

First Movement: Winter 2018 (Allegro vivace)

Quick, light, lively, which somewhat characterizes the Hackathon adventures amid my adaptation as a CS student. The closing section was preceded by a heavy-duty passage ending with a 7-note-chord at fortissimo (staying up late for a group project), but nothing else extraordinary that deviates from the usual pattern. 

It’s the first term after I switched into the Computer Science department, in the hope to explore a variety of courses that I would crack my head out just to get the course admission. This also means that, instead of diving under the infinite mathematical odyssey indefinitely, I would have to frequently get my head up and breathe the air of programming. As a fish who’s so accustomed in this mathematical sea, taking the Object Oriented programming course propelled me out of my comfort zone — that was the course that took me a disproportionate amount of time in completing the assignments and studying for the material. As I thought that the workload might be lighter as the term passed by, no– I had to gave up a few nights sleep just to complete our group assignment project, the chess engine. Only after seeing the ensuing success could I pat myself on my back for what I have done.

screen shot 2019-01-04 at 4.20.37 pm
Reversi game: snapshot of our homework

The second aspect of my adaptation as a CS student was my exploration and experimentation of programming competitions, which were the Communitech Code and Win Finals, Google Games (again), Citadel’s the Data Open, and the UOttaHack. Sleep deprivation became real after almost every single such event (all-nighters), but thinking of the new skill gained, it’s worth it.

#repost: skating as part of UOttaHacks (oops I mean…the Lifelog chrome extension we made)

The sweet spot behind every single coding struggle was that I am still able to immerse myself in the mathematical odyssey and swim as vigorously as I want in this infinite ocean. Contrary to the CS courses, the few pure math courses I took challenged me with the rather obscure concepts and identities. It’s also, however, these challenges that opened to me one of the most beautiful gem in the mathematical world (like the unsolvability of quintic polynomials).

Second Movement: Spring/Summer 2018 (Andante)

This movement is slower than the rest, probably because there’s no academic workload to bind me during a non-school term. But the cadence (i.e. chord progression) of this movement is difficult to predict: it can make a detour that leads to a I-IV-V-VI-V(7)-IV-I instead of a more straightforward I-IV-V-I (well, research outcomes are often unpredictable, right?). Another symbolization of the unresolved mysteries was the use of the modulation into the dominant key in the first section, which was then resolved in the later section by the tonic modulation except that one last part. Oh well…the only way to get around with it was the closing cantabile section. 

“That’s the one”, I monologued before Prof. David Jao’s profile, being captivated by his research focus on number theory and cryptography. Subsequently, I applied to work for him under the Combinatorics and Optimization research program, and got the offer a few days later.

It all started with “Crypto 101”: mindblown by the array of fundamentals (elliptic curves and their isogeny mappings, ideal class groups and binary quadratic forms, and the most dreaded yet the most quintessential quaternion algebra), and the intensive study and summarization of recent works and optimizations in post-quantum cryptography. Thereafter, I went into the scavenger hunt (as quoted from my prof) on the optimization sweet spots, bearing in mind on the future beast-in-development: the quantum computer attack, before deciding on the project to go forward: to implement a signature scheme using There I went, starting to understand the pseudocode and the theory behind it, only to be obstructed by logic that hardly made sense to me, objects that I wish there’s built-in functions (but no), and one-liner sub-procedure that left me to figure its implementation details. Amid the clueless sessions of me trying to merely get its syntax correct, some room of optimization (for some auxiliary algorithms) appeared afloat upon the discussion with my professor. I rushed to my laptop and swiftly started the implementation process, and delightfully see that this optimization worked out. But the overarching problem was still there: how should I fill in the gap and make everything completely correct?

screen shot 2019-01-04 at 4.27.41 pm
Part of my sage experimentation (hint hint: my full code has 600+ lines)

Complementing the research experience was the side project development, one of which was inspired by the research itself: the Big Integer Library in C++. Having the object-oriented principles fresh in mind after CS 246, I strived to maintain these principles in mind while maximizing optimizations simultaneously. This involved some efforts like learning the Fast Fourier transform and minimize compiler-specific redundancies, but when my running time improved from 4 minutes to 0.2 seconds, the pain is worth it. Another side of my coding was the practice on Codeforces, which saw me improving from cyan to purple within 7 contests. Unwilling to succumb to the fact that I was new to coding, I allocated time practicing on this competitive programming platform, in the hope to achieve a respectable rating and get that sense of vanity. While a few initial leaps in rating boded well on my mission, this effort was once hampered by a 90-point plunge, no thanks to my inability to cope with time constraint and a failed verdict by system test. Served as a wake-up call to restructure my contest strategy, I aced the two subsequent contests and eventually reached my lofty purple rating.

screen shot 2019-01-04 at 4.38.09 pm
Top 50 -> promotion to purple!

Rounding up those were the blessing of having friends around me to had great leisure activities, the most important of which was cooking. Being able to learn the arts and crafts of culinary that returns you with great gastronomical rewards have never been boring. The periodic gathering with mates over meals also served well to relieve the stress and tension from my work, sometimes made more mirthful by the atmosphere of birthday celebration (including mine in the piano room 😛 ) and brief vacation.

screen shot 2019-01-04 at 9.37.49 pm
Failed duo attempt during my birthday party XD

Picnic @ Toronto island during Canada Day!

Finally, thanks to my research prof I was given the privilege to travel to Santa Barbara to attend the Crypto 2018 conference. Relishing in the rustic campus view by the Pacific Ocean aside, I also had the opportunity to broaden my cryptography horizons well beyond what I was doing in my research through listening to the presentations. This marked a great closing to the Spring 2018 term. 🙂

screen shot 2019-01-04 at 9.47.30 pm
Crypto 2018: ft the opening speech and the sunset view I captured 😉

Third Movement: Fall 2018 (Presto)

The relatively relaxed opening seemed to belie the nature of this movement: it actually serves to build up the mood for the main theme. Thereafter, it’s just a healthy mix of running notes in semiquavers and 7-note chord in this movement, with the right hand becoming fugue-like in the middle section (i.e. multitasking between 7 courses and interview). The whole intensive nature lasts throughout the piece (except the last few bars: Christmas break). Not for everyone, tbh. 

The beginning of the term was characterized by extracurricular activities like the Velocity bootcamp, Hack the North, and the PennApps. But soon, the effect of taking 7 courses instead of 5 began to crystallize when the assignments started to pile up to the extent of me having up to 6 of them due in the same week. The study term then became a relay race of me with those homework, one after another, like an infinite relay week after week. Adding to these were the planned hurdles: the midterms, which sometimes came when part of classroom material still remained conundrum to me.

screen shot 2019-01-04 at 9.35.48 pm
Sneak peek on the classes I took ahem

Come mid-September, the WaterlooWorks recruitment season for Winter 2019 began. Having started my internship application and interview process since July, I should reassure myself that the process was going to be smooth. No, it didn’t happen. Still being fresh into the Computer Science major, the struggle of cherry-picking mutual interests from the thousands of job postings was tangible — I had grave trouble filtering jobs out of my shortlist. Following the submission of my applications was the great fluctuations of my feelings: fear, both because of the initial “no job” paranoid when interview never came in the first week, and of the “can’t cope” spectre when interviews and midterms started sandwiching each other; underwhelmed, every time after a sub-par interview performance, and after a rejection by a position that I had been dreaming for long. Only during the unfolding of the position offers towards the end of the recruiting period could I catch a breath out of my hectic schedule: I am rewarded with 3 offers.

screen shot 2019-01-04 at 4.39.40 pm
Sneak peek into my schedule in the busiest week (oh not included the self-note on what I should do)

screen shot 2019-01-04 at 9.56.30 pm
Onsite interviews I had in New York and Chicago 😉 (travel first, sweat later)

Embellishing my already packed schedule was my participation in the ACM-ICPC North American regionals, qualified through my rather unexpected placing of the top positions in the Waterloo local contest. As an amateur competitive programmer, the practice sessions offered a new perspective into competitive programming–the combination of teamwork, speed and accuracy. It’s therefore a great privilege to learn from the more experienced teammates and work with them during the contest, which resulted in our victorious placing of the 2nd place in the contest. Later in the term, come the Putnam contest that I have been enjoy writing every year. Though the extreme workload rendered any Putnam practice almost impossible on my own, cracking at mathematical problems have never been less enjoyable for me.

Second place at the regionals!
The routine of the term made me resonate with the third movement of the Moonlight sonata, prompting me to take some break from my routine and self-learn the piece (still in progress). Arms weary after each practice, this piece nevertheless gave me an avenue to express my feeling about my extra-hectic life during this 4 months. Luckily for me, this isn’t the only leisure I had: I had several short gathering over meals with several friends that were quintessential to my uni life, as well as some brief explorations over sports like archery, badminton and squash. This leisure went to a pinnacle at the end of the academic term as I travelled to Montreal again, this time with the bold try of skiing without really going through the 101’s, and finally a countdown there. 😉

screen shot 2019-01-04 at 10.05.43 pm
L: “three idiots” (a.k.a. travel companions); R: my fall from the (dis)grace during my first ski

Can’t be complete without my photo with Einstein!

Final remarks

2018 is a year characterized by adventure, mainly marked by my switch into CS and the ensuing change in my course structure and the commitment to side projects and hackathons. Perhaps, time to give credits to the following people (shamelessly citing from my Facebook post)

  1. people who offered me help and advice out of their initiative — even without me asking first
  2. those who offered constructive criticism when I need them the most, sometimes harsh enough for a wake-up-call
  3. those who disseminated their passion in different fields, encouraged me to try them out, and patiently provided guidance to those, even though I could be extremely intractable in those fields
  4. my comrades who struggled together with me, be it a group assignment, a hackathon project, or even when applying jobs together
  5. my family who continuously provide support and advice even from the other side of the globe

Thanks to these people I dare to make these adventure, not only in venturing into the CS field which I previously lack confidence in, but also trying new things out (like skiing and side projects). Having them around me simply alleviates me from the stress over my routine — even if it’s a simply discourse over life.

“May things happen in the way they should be, even though it won’t necessarily go in my favour”, here I wish, for 2019.

Annual tribute to my tech squad 😛

Lastly, photo credits to the following: A. Chan, J. Lim, Y. Li, S. Lin, F. Chen, Z. Low, the ACM official photographer. Apologies for using them unabashedly without your permission 😛