This is a post detailing my time at UWaterloo CS from 2014 - 2020. It is now completed. I got the idea to do this from Robert Elder’s UW Journey.

Table of Contents

My Story

Coming out of high school I wasn’t really sure what I wanted to do. I really enjoyed sciences such as chemistry and physics but I also enjoyed business courses such as economics after taking AP Microeconomics, AP Macroeconomics. I was also an active participant in Model UN and DECA and that molded my interest in business as well. When I was choosing universities what stuck out to me was Waterloo’s co-op program and I decided to go to Waterloo in Fall 2014 for science and business since it seemed to mix both of my interests in science and business.

I didn’t take any computer science courses in high school, and in hindsight, I should have at least tried them out while in high school. I did take a lot of AP courses which occupied my time. (AP Math, AP Physics, AP Microeconomics, AP Macroeconomics, AP Chemistry)

Fall 2014 (1A)

This is my first picture at Waterloo, taken in my room at Village 1 (V1) the on-campus residence. My phone at the time was the iPhone 3GS, a phone that came out in 2009 (it is about 5 years old in 2014). A lot of the photos I took up until Fall 2015 were taken on the iPhone 3GS.(I later got an iPhone 4S)

I entered the University of Waterloo Science and Business Program with a specialization in chemistry. I was interested in both facets and I was extremely excited to be a part of the program. The only time I had ever lived away from home for a prolonged period of time was for Shad Valley, where I went to Halifax and stayed at Dalhousie University for a month. It was an amazing experience to see the (far) east coast of Canada. Here’s some photos from Shad Valley:

1. Nice view from the top of somewhere we had gone for the weekend.

2. Had some lobster while on the east coast. I actually ate it at a place in PEI, and not in Nova Scotia or New Brunswick.


When I started in 2014, Science Teaching Complex and Needles Hall was still under construction, and I took some pictures of it when it was still being built.

Winter 2015 (1B)

This is was taken when I was doing a titration lab.

The winter was pretty snowy that year. The whole campus was covered in a blanket of snow. In the picture on the far left is EIT. In the back you can barely make out two figures, one of which is the President of the University of Waterloo, Feridun Hamdullahpur.

Near the Tatham Centre and MC.

Views of DP Library and QNC at night.

I also participated in Model UN, and got 'Best Delegate' at their first in-house committee. I really enjoyed DECA and Model UN in high school, and I continued to participate in those clubs in university. I went to UTMUN, a University of Toronto run Model UN event in Winter 2015 as well.

Spring 2015 (break)

I spent the summer working with HTML, CSS, and Bootstrap. I worked with my friend on a website called 'Amiiboplace.com', originally to be used for trading and selling amiibos. I decided to use a Wordpress CMS on the website, and used it to write and post Smash Bros related news. Eventually ended the site due to lack of traffic.

Fall 2015 (2A)

I was a Science Orientation Leader in Fall 2015.

I attended Terrible Hack 2, my first hackathon, and I was intrigued by the projects created. My friend and I didn't make anything too spectacular, but I was motivated to learn and create things on my own. At the time I didn't know a lot of the people presenting. I would eventually meet some of them at the Velocity Residence in Spring 2016.

I was part of the first ever Model UN in Waterloo called UWaterloo Model G20 as a assistant director of the committee.

I planned to switch into Computer Science (The switch would take almost a year since I needed CS 116 and CS 136 and meet certain mark requirements) I met with advisors, and embarked on a long journey to transfer faculties and programs. At the time I was unsure of the decision to switch. I was unsure if it would be better in the end. After some thought I decided to switch programs.

Winter 2016 (Work Term 1)

I had a co-op placement at Intrafinity (also called School Messenger since they were recently bought over by the West Corporation). While there, I migrated content from school websites. I also worked on some Javascript and regular expressions. I studied Python 3.0 on my own time. They hired 20 co-ops and I met a lot of people I normally wouldn’t have since they were from a variety of faculties and programs.

While in Toronto, I went to 'Smash at York' and played in the tournament for fun. I saw some local Toronto players I usually saw on Twitch.

Spring 2016 (2B)

I arrived back for an academic term in the spring. I took CLAS 104, CS 116, Math 135, and Stat 230. I liked CS 116 using Python. Although Math 135’s math proofs were a bit rocky I ended up doing pretty well in the course and by the end I enjoyed the content overall. (Mod and complex-numbers and n-th roots were my favourite concepts taught in the course)

I stayed at the Velocity Residence this term. The events were awesome there, and I recommend anyone even slightly interested in entrepreneurship to stay for a term and see if it is right for them. The dinner events where we could talk to start-ups and other speakers was my favourite part of the residence

1. My velocity sweater I got for staying in the residence.

2. The middle one is a picture of the Communitech sign when I went to their office for a big Velocity dinner.

3. Mural of the Google logo, since Communitech moved into Google's old building a lot of paintings were left there.

Fall 2016 (2B)

Sunset reflection over E5 (Engineering 5).

I switched my co-op stream around, so I was supposed to be on co-op during this term, but I wanted to take CS 136 and get into the CS program. I took Math 136, Stat 231, CS 136, ENGL 109, and Music 100. It is a little heftier of a term since it has 5 courses instead of 4 courses last term, but overall a manageable courseload.

MHacks8

I had a TON of pictures from Mhacks 8: Link

This was my first experience outside of the country for a hackathon. It took place at Detroit, Michigan at the Masonic Temple. I walked in with a view of Hack the North, but got a different style of hackathon. The venue was a bit run down, but the interaction from people from University of Michigan and other universities was amazing.

TerribleHacks5

The parody hackathon. I learned how to use Unity here. I compiled photos from the event here: Link

I also presented my (pretty terrible) Unity project there.

Winter 2017 (Work Term 2)

I worked at SurfEasy VPN as a QA Analyst. It was owned by Opera (the company that has the browser) but it acted like a startup with talented individuals that believe in their product. I learned about the development cycle of software in a real work setting, worked in a tight knit team on logging and investigating bugs, and coded some of the iOS mobile automation tests during my time there.

It grew in size, got a new office, and expanded their product line, so the company was doing amazingly well, and I was happy to be able to make a meaningful impact to the company during a time of high growth. SurfEasy has since been bought by Symantec

CN Tower in daytime and night.

Hackathons and Hackathons

I tried to code as much as I could during the term and go to as many hackathons as I could. My co-op job didn’t have a lot of coding and I wanted to travel when given the opportunity so I attended UoftHacks, QHacks, MHacks9, and HackPrinceton.

There were way too many photos, and it was a super-fun experience. Mhacks 9 and HackPrinceton were amazing hackathons in the US, and I highly recommend them to anyone. I actually didn’t even get accepted to HackPrinceton, but I still decided to try to get on the bus to try and work on my programming skills and see Princeton University. I went and luckily they let me in (begrudgingly). After HackPrinceton, I knew I really liked doing hackathons and creating ideas/projects/solutions through coding.

Here are two photos from UofTHacks and MHacks 9:

Update: I uploaded separate pages for UofTHacks, Qhacks, MHacks9, and HackPrinceton2017. Check it out here: UofTHacks QHacks MHacks9 HackPrinceton2017

Spring 2017

Sunset by the Ion Rail train tracks near campus.

I was back in school after doing my co-op. Unfortunately there aren’t many hackathons happening in the summer months. Most Canadian hackathons take place in winter and American ones in the Fall. I planned on focusing on learning NodeJs and some more web development tools for backend dev. I’ve done mostly QA co-op jobs and I’d like to try to get a dev jobs.

I took cs245 (Logic and Computation), cs246 (Object-Oriented Software Development), cs251 (Computer Organization and Design), math239 (Intro to Combinatorics), spcom223 (Public Speaking). This was the hardest term I had taken so far (and yet it would get MUCH harder). I walked in expecting cs246 and math239 to be very difficult based on what people had told me beforehand. The term was a nice challenge for me, and I realized it will only get harder from here on out.

cs246: I would describe it as difficult as what people say it is. OOP is a pretty useful tool and learning C++ alongside it is useful.

math239: Interesting introduction to combinatorics.

The class photo from spcom223 (public speaking). I'm glad I took it and it was a pretty fun course to use as the communication elective. I had felt I improved at public speaking after the course.

Fall 2017

Courses I took were cs240 (data structures), cs241 (mini-compilers), cs370 (numerical computation), and co342 (graph theory).

co342 with Martin Pei was difficult and I remember going to office hours every week. They had a 1-5 grading scale for proofs. You got a 4 if your proof was correct, but only a 5/5 if your proof was succint and correct. I didn’t get 5/5 on any of my proofs. (Martin Pei also took a photo of our class on the last day but he never sent it to us)

cs370 with Jeff Orchard was pretty good. I mainly took cs370 cause it is a prereq to graphics (cs488) cs240 was not too bad looking back and cs241 was fairly easy.

This was the term I tried to go to as many hackathons as possible. I went to PennApps XVI, HacktheNorth, Mhacks X, and EthWaterloo. I had to stop after I failed the cs240 midterm and I remember failing cause I had no sleep the prior weekend since I was at ETHWaterloo. I had planned to also go to YHack and HackHarvard but decided against it.

PennApps

Pennsylvania Sign

My team at PennApps and us at University of Pennsylvania sign.

A team wearing matching jerseys which I found funny. The team was so coordinated to try and win prizes at this hackathon that they came in a whole costume.

Campfire at PennApps

Skating activity at PennApps. I was fortunate to do some skating when I was younger and I knew how to skate. It was clear that some of the Americans didn't know how to skate. (LOL)

Beiler Bakery Donuts are famous in Philly and the hackathon ordered A LOT.

Got to try Shake Shake for the first time.

Hack the North

Prime Minister Trudeau speaking at Hack the North.

E5 being filled to the brim with people talking to sponsors.

MhacksX

MHacksX was the 13th hackathon I ever attended and the first hackathon I ever won anything at. To go to the dedicated pages for each hackathon from my grand hackathon tour.

MHacks opening ceremonies and MHacks logo.

MLH photo of us winning at MhacksX

Hoarding bottles of free Soylent

ETHWaterloo

My team working at ETHWaterloo.

Photo of me with Vitalik Buterin, (who seemed very happy to take a photo with me) founder of Ethereum, at ETHWaterloo

Winter 2018

You can see a bit of a sunset outside when exiting the optometry building on campus.

I took cs350 (OS), cs341 (Algorithms), cs349 (UI), co489 (Applied Cryptography), and co250 (Intro to Optimization). I remember this being a fairly challenging term taking 2 large CS courses, and 4 “cs courses” in total if you include co489. co250 also is no bird course either. I planned to take it since I only needed a few more courses to get a combinatorics and optimization minor.

I enjoyed cs341 because at this point I had been doing practice for interviews and algorithms seemed familiar. I really enjoyed cs341, the assignments were fun and straightforward. Alfred Menenzes is a good prof for co487.

OS was a whole different beast. I’ll comment on cs350 now with a more holistic view. I think it is a very good course that weeds out people similar to cs246. It throws you into implementing OS with a lot of prewritten code, you need to edit 5% of it, and you need to fix errors. Assignments are based on learning what you need to do, then implementing it. Unlike cs136 and cs246, you can’t walk in blind and hope to stumble upon the solution.

cs350 really makes you work for the assignments and understand what is going on behind the scenes, what you are doing, and unlike previous cs courses will punish you if you don’t know what you are coding before trying to code. That is also why I ended with a 52 in the course. I decided to skip A3 (page table implementation) and go to HackPrinceton2018 instead. We won a prize, but I also failed that assignment. Future readers, do not do what I did. (I was also still looking for a co-op at the time I went to HackPrinceton. I remember going home on the bus happy that my team had won, but I was reminded I still had to look for a co-op job in continuous round.)

HackPrinceton 2018

Passing through NY state and Princeton campus

Winning at HackPrinceton 2018

MLH Hackathon stickers I collected.

Job hunting was also very stressful. I had the most interviews up until my WaterlooWorks career in the main round with 4 interviews. I felt really good about one of my interviews in main round. I had relevant experience and solved their question with ease. I had a great chat with the interviewer afterwards. Unfortunately I got ranked and moved to continuous round with 3 not ranked and 1 ranked.

I had 9 interviews total in continuous round.

One company interviewed me and did not ask me a coding question it was all behavioural stuff. Up into this point not only had no company given me an offer but I was feeling nervous that I wouldn’t even get a developer job (as a 3A student). I was applying externally and trying to find other avenues as well since WaterlooWorks wasn’t looking good. That company ended up giving me an offer on WaterlooWorks in continuous round.

I was skeptical of the job (since their interview didn’t wow me) and decided to rank it a 4 (by not giving it a 1, someone who was ranked giving it a 1 means they got the job). I was not matched with the job. After this decision many people were stating that I was throwing away the only offer I had and I was crazy. I had around 6 interviews up until that point that were all rejections and it did seem crazy to throw away the only offer. Personally, I felt that the job did not nearly impress me in the same way an interview should have a company be impressed by you. So I rejected them.

I always tried to abide by two principles:

  1. Never gamble more than you can handle (relating to your ability to handle stress)
  2. Gamble when you get the chance and always bet on your abilities to do something remarkable

I have the belief that you need to put in work and dedicate your time to continuously improving yourself. That way you challenge what you can accomplish. In this case I got lucky, and I gambled. Sometimes it doesn’t work out this way. And when people ask sometimes how it happened, I guess I was willing to take risks. It was incredibly difficult though after tossing out the only offer I had AND THEN go back to failing interviews in WaterlooWorks for jobs I wanted. You feel incredible remorse after that.

Days before the start of exam period, 200 people applied for Okta soft eng intern position on WaterlooWorks in continuous round. They interviewed 3 people. The interview was 3 hours long. It was filled with technical rounds, behavioural questions, and talking to the manager. Two days before exams I got the offer from Okta. That is how late in continuous round I found the job. And with that, I secured my first ever developer internship.

Spring 2018 (Work Term 3)

Okta office

This term I worked at Okta in Toronto. This was a great experience as my first developer job. Okta in Toronto was an unbelievable place to work at compared to previous co-ops in terms of the development environment, my role in the development team, perks (lunch Monday, Wednesday, Friday), and intern program. I participated in their events and won their intern hackathon and won their smash 4 tournament. Small feats but I had tons of fun during the internship.

Okta office event at Blue Jay's game and us in the (old) office.

Axe throwing at a company event.

Winning the smash 4 doubles tournament after losing in winner's bracket 0-2 to Chris's team and winning 2 sets from loser's bracket 2-1 then 2-0. I played Bowser after our double Cloud strat didn't work.

RedBull AdrenaLan

Gaming setups at the tournament

I also attended a hackathon called “RedBull Adrenalan”. It was a crazy gaming tournament and hackathon crossover. The photos I got were pretty sick from the event with the gaming logos and overall aesthetics of the venue.

The venue had a lot of strobe lights.

I got to play Overwatch on some of the intense gaming rigs. The venue had areas where you could play on these setups for free.

At the end of the internship, the team at Okta told me that they were not extending a return offer in any capacity, intern or full time. It was an unfortunate time when that happened since my performance at Okta did not warrant a return offer. It took me a while to accept that out of the 5 interns at Okta (in Toronto office) I was the only one they were not giving a return offer. Of the 4 other interns, 3 did return for full-time.

Looking back on this experience it was very depressing since it was my first developer job and seriously put doubts in my mind for being a developer in the future. Looking back on this almost three years later, I can see why they chose not to extend the offer. I had areas in improve in for the future and I was much earlier in my career than some of the other interns.

I continued to do interviews even while interning at Okta. I had two major beliefs in my mind:

  • don’t be satisfied, Okta is great but I want to get another developer job (possibly California)
  • I still have 2 more co-ops left so I want to take each co-op experience and try to greatly improve upon it each time

In regards to the second point, I felt rushed. Most students have 6 co-ops terms with a gradual progression from basic developer jobs to better intern positions. I did not have that luxury where I was only granted 5 co-ops (I tried to get 6 but the co-op office refused to let me) and I had spent the first 2 on non-developer co-ops. That meant I really started with 3 co-ops and had 2 more developer internship chances left. I can’t complain, I was placed in a fortunate position of being able to switch into Waterloo CS, and getting Okta in the first place. But it only meant there was a lot of hard work needed to be done in the future.

Fall 2018

This term I took cs488 (graphics), cs343 (concurrency), and cs456 (networks). Just those three threw me for a loop. I wanted to do at least one of the big 3, because it was a long enough journey to reach the upper year cs electives. I wanted to challenge myself. It was challenging, but graphics is probably the easiest of the big 3 (cs444 compilers, and cs452 trains being the other two). I still recommend people taking it for a challenge even if you most likely will never be making a ray tracer or using OpenGL on a low level in your full time work. Continuously push yourself.

Concurrency (cs343) was also a valuable course. It is in micro c++, Peter Buhr’s custom C++ with concurrency. I really liked the course. The blog that sparked my interest in it? Robert Elder’s blog link. You will most likely never use micro c++ on the job, but the concurrency concepts challenge you in a similar way to full time. You are given assignment specs 4-5 pages long and you need to decipher the information and do the assignments. Details are sometimes murky, you need to clarify things, but that is software engineering in a nutshell.

Networks was just simple and solid. Not too much happening but that was probably a good thing with graphics and concurrency taking most of my time.

I only attended PennApps XVIII and MHacks 11 this term. I did want to focus more on interviewing and less on hackathons.

Skating again at PennApps

Mhacks Auditorium and Food at Mhacks 11

Alex and I at Mhacks 11. We teamed at MhacksX and both interned at Okta over the summer. He was at the SF office and I was at the Toronto office. Our team also won at the Okta intern hackathon.

Riding Bird scooters around Ann Arbor. Bird Scooter (before I was subsequently banned for not having a driver's license) and UMichigan shirt saying 'Respect is earned'.

I was also interviewing at this time. I wanted to get a summer 2019 internship preferably in the states. So I applied externally since I did not have WaterlooWorks access until Winter 2019. None of my interviews worked out. One interview I had to fly out to London, England for an onsite (which I unfortunately failed) in the last few weeks of the term when the final projects for graphics, concurrency, and networks were all due. I would have loved to stay longer in London, but time did not allow me. (I spent less than 24 hours in London. This includes sleep hours and the interview time)

London streets and Improbable Office.

Liverpool Street Station

After this term I had completed ALL my course requirements for the Bachelor of CS. Luckily I did not fail graphics because it was a intensive course. The ray tracer demanded more time than I gave it with the interviews going on and the cs 343.

I also got to try out Lime scooters for the pilot project they held in Waterloo.

Snowstorm in Waterloo.

I was no longer playing melee competitively (I had never gone to many tournaments) but I went to one last tournament at Crossroads near Laurier. I placed 7th out of 13 people. Tournament Link: https://challonge.com/Crossroads122#top_eight, not sure why I entered with the tag 'Sand'. Despite that sounding like a bad placing, hilariously this may be my best placing ever at an official tournament.

TnT opened in Waterloo and I lined up opening day. They had some good Taiyaki.

Winter 2019

This term I took cs454 (distributed systems), econ212 (game theory), and co353 (computational discrete optimization). I took distributed out of interest, econ212 for fun, and co353 to finish my combinatorics minor. I liked econ212 cause you play games and test out your game theory strategies. I did much better in cs454 compared to cs350 despite it being similar working at the OS level. This time I did the assignments and didn’t skip and to go to hackathons.

I attended one of Dave Tompkin's Reddit meet ups! I've been meaning to attend one for a while but I was never in Waterloo at the time. I'm not a reddit celebrity but I met a few notable names in person.

My friend David was helping out at an algorithm prep session held by the CS Club. (or something like that) Mostly 1st and 2nd years were there but it was a great way to try and help out people with technical interview prep.

I continued interviewing this term for internships (recurring theme). I had an offer from a place in SF. They were decent. I liked them and the interviews seemed promising. The only problem? I was interviewing concurrently with another company that I liked a little more. So I decided to decline the offer. I eventually was rejected by the company I liked more. So that situation did burn me when taking a risk doesnt always pay off.

I also was interviewing on WaterlooWorks. I had two interviews in main round, one of which were Zenefits. This makes sense the jobs I was applying for were now more competitive. I got not ranked from both. So like past job hunts I went to continuous round. In continuous round I continued to apply. I applied to Zenefits again in WaterlooWorks.

I interviewed externally with a California company and I passed the interview. They made some verbal promises about the offer and when I received the offer letter, it did not state a few things they stated. When I asked about it, they stated that what they told me was only for full times and not interns. So I declined it out of lack of trust over the entire internship. If a company is willing to promise you things and then go back on their word I wasn’t willing to go to them just because they were located in California. I had wanted to get a “California job” for so long but it would have to wait. And just like that I had rejected the only California offer I had.

Zenefits interviewed me again in continuous round and this time I passed the Zenefits’ interview. So for the first time I was headed to Vancouver for a co-op.

Spring 2019 (Work Term 4)

I worked at Zenefits in Vancouver this term. This was probably the best accidental experience ever. I was really aiming for California but Vancouver was amazing. I loved the UBC area and working in downtown Vancouver.

Sunset at the UBC beach

Photos from Garibaldi Lake near Whistler, BC

Zenefits fridge. Contains lots of LaCroix. On the right Mango Bingsoo from Snowy Village.

Hiking to Iceberg lake

Aburi sushi from Green Leaf Sushi. My Uncle's shiba inu named 'Yoshi'

On the long weekend I was able to plan a trip to Seattle with the other interns. Met up with my friend Austin who was in Seattle (We took the photo by the gum wall in Seattle). Also took a photo of a sticker that I saw a few times in Seattle saying 'go home tech bro'

Climbing Grouse Grind in ~1:29 with Andrew. Marutama ramen with extra chasu.

I grabbed lunch with my friend Rhys (who I interned with at Okta) near Canada Place.

I continued to interview for internships (common theme throughout all of my terms) at Zenefits (since technically I had 8 month co-op from Spring 2019 and Fall 2019)

I used WaterlooWorks. Officially I wasn’t in Waterloo so I couldn’t even go to the Tatham Centre for interviews. I had to schedule them all virtually. I had 0 official interviews through the “official waterlooworks system”. I had 3 interviews scheduled externally. I passed two of them. I passed the Amazon interview but they said they “ran out of spots”. So I went with the only offer I had which was LinkedIn for UI Engineer intern. UI wasn’t my specialty, but I decided to run with it.

Fall 2019 (Work Term 5)

After many years of grinding for interviews, I had gotten a developer job in California. Was the feeling as gratifying as I had always hoped it would be? It wasn’t. If anything I had felt it was disappointing with how I envisioned the gradiose nature of getting it would be. You yearn for something so long, you picture it as the ultimate goal and when it actually becomes true it is ultimately very disappointing when it is a reality. Something hyped up that much really describes the phrase “never meet your heroes, you’ll only be disappointed”.

That doesn’t take away from the LinkedIn internship. The attainment was disappointing, but the internship was not. In the way Okta shocked me as my first developer job, LinkedIn and the Bay Area shocked me in a larger way. The area was ruled with tech. Engineering was the focus and the perks and benefits were out of control. It was a mini-paradise.

I continued interviewing (continuous motif) for internships at LinkedIn. I decided to go to a place called “TheTradeDesk”.

Winter 2020 (Work Term 6)

Seattle Space Needle and Pike Place Market, two of the most iconic Seattle attractions.

I spent the winter months of January to June in Bellevue interning at a company called “TheTradeDesk”.

Seattle was really nice. I got to explore Seattle for January to March before covid-19 restrictions made me work from home. Our office had nice events for the ~20 people and we had catered lunch Wednesdays and Fridays alongside snacks and a stocked fridge. Reminded me a lot of my internship at Okta.

Mango bingsoo and a taiyaki from Snowy Village in UDistrict.

Fremont Troll which has appeared in a few movies.

Formally there was no “intern program” since I was the only intern among ~20 or so people in the office. I think there were other interns in other offices (Ventura, New York).

I was working on the data-processing team which dealt with logs and was working in the infrastructure layer working with logs, dbs, and schemas. My intern project specifically dealt with schematizing log files and performing code generation (in C#). This was a challenging project for a few reasons. I had to learn about C#, Avro schema format, and how it fit into the codebase. It also had hurdles of code generating.

Graduation

In Winter 2020 I took one online course and graduated while doing my internship in Seattle. After close to 5 and a half years I finally completed my degree, a Bachelor of Computer Science degree with a minor in Combinatorics and Optimization (with Co-op). It was fairly anticlimactic since I had completed my degree requirements back in 2019, but I wanted to do more co-ops and courses. I told the registrar I was “applying to graduate” and got approved.

Conclusion

“In the end”? Nothing ends Adrian. Nothing ever ends.

  • Dr. Manhattan

University Life

I attended the University of Waterloo that notoriously has a bad rep for having a poor social life and is only academically focused. I cannot truly compare between other places like UofT, UBC, or the countless US schools I visited. It is what you make of it.

I usually say university is a balance between:

  1. grades
  2. co-op jobs
  3. social life
  4. fun
  5. mental health

The people who can efficiently balance all 5 are few and far between and most people can only choose 2-3 of these and execute effectively. If you choose to have all 5, you often do a poor job addressing all of them. Despite this page being called my-story I will admit it is a heavily edited and skewed story that leans towards moments of great accomplishments or periods of change in my life. Not everything is as dynamic or picturesque as this, and I feel in some way responsible to say that these are only the “highlights” of my undergrad. There were just as many “lowlights” that were not mentioned in as much detail:

  • In 2017 I was unable to find a developer job for my co-op, I had to work in QA
  • I applied to Hack the North 4-5 times and Hack MIT 3-4 times but never got accepted
  • I failed to win anything at the first 12 hackathons I went to (despite people telling me it was very easy to win at hackathons)
  • I got 52% in CS 350 (Operating Systems)
  • I was unable to find a co-op job for summer 2018 after months of interviewing and went to continuous round, later going to Okta
  • I got a ‘very good’ co-op evalution from Okta (which is actually a mediocre evaluation) and I didn’t get a return offer from Okta
  • I was unable to find a co-op job for summer 2019 after months of interviewing and went to continuous round, later going to Zenefits
  • I often felt that my social life and mental health were very poor during my undergrad
  • there were moments on intense pressure either from school coursework, or trying to get a “cali” co-op and I buckled under the pressure
  • I tried multiple times to place in the Waterloo local ACM contest (to potentially be on the ICPC team) but I never made the team out of roughly ~5 attempts

My Marks

These are my marks, ordered chronologically.

Course Mark Description
AFM 131 83 Intro to Business in N.A.
Chem 120 72 General Chemistry 1
Chem 120L 75 General Chemistry Laboratory 1
CS 115 75 Introduction to Computer Science 1
Math 127 89 Calculus 1 for the Sciences
SCBUS 123 85 Workshop 1: Science and Business
Chem 123 83 General Chemistry 2
Chem 123L 74 General Chemistry Laboratory 2
CS 100 88 Introduction to Computing through Applications
Econ 101 88 Introduction to Microeconomics
ENVS 195 87 Introduction to Environmental Studies
Math 128 79 Calculus 2 for the Sciences
SCBUS 122 85 Management of Business Organizations
Chem 220 68 Quantitative Chemical Analysis Laboratory
Chem 264 62 Organic Chemistry 1
Phys 121 79 Mechanics
Phys 121L 80 Mechanics Laboratory
SCBUS 223 80 Workshop 2: Strategies Behind Technological Innovation
CLAS 104 72 Classical Mythology
CS 116 87 Introduction to Computer Science 2
Math 135 82 Algebra for Honours Mathematics
Stat 230 81 Probability
CS 136 92 Elementary Algorithm Design and Data Abstraction
Engl 109 93 Intro to Academic Writing
Math 136 72 Linear Algebra 1 for Honours Mathematics
Music 100 78 Understanding Music
Stat 231 79 Statistics
CS 245 63 Logic and Computation
Math 239 55 Introduction to Combinatorics
CS 246 74 Object-Oriented Software Development
CS 251 73 Computer Organization and Design
Spcom 223 89 Public Speaking
CS 240 72 Data Structures and Data Management
CS 241 73 Foundations of Sequential Programs
CS 370 67 Numerical Computation
CO 342 60 Introduction to Graph Theory
CO 250 59 Introduction to Optimization
CS 349 85 User Interfaces
CS 341 83 Algorithms
CO 487 67 Applied Cryptography
CS 350 52 Operating Systems
CS 343 75 Concurrent and Parallel Programming
CS 456 61 Computer Networks
CS 488 60 Introduction to Computer Graphics
CS 454 67 Distributed Systems
CO 353 57 Computational Discrete Optimization
Econ 212 72 Introduction to Game Theory
Bet 100 82 Foundations of Entrepreneurial Practice

My highest marks:

  • Engl 109: 93
  • CS 136: 92
  • Math 127: 89
  • Spcom 223: 89
  • Econ 101: 88
  • CS 100: 88

My lowest marks:

  • CS 350: 52
  • Math 239: 55
  • CO 353: 57 (I hated this course)
  • CO 250: 59
  • CS 488: 60
  • CO 342: 60

One thing I regret is that I never put a lot of effort into school. I often felt that I did not learn best in the conventional way of studying from a textbook, writing notes, and listening to lectures. A lot of times I had trouble paying attention, remembering concepts and falling asleep in class.

Afterthoughts

What if I failed to switch into CS?

I don’t know.

Co-op Competition (in Uwaterloo)

I travelled around North America and met tons of people through hackathons or co-ops. I am very fortunate to have met a fairly diverse group of people and spending time learning about them.

Some people in highschool are accomplished and motivated and continue this path in university. There are others who fail to reach their potential after being the “top of their class” in highschool. The fish in the small pond sees the ocean as university brings the people who are “the best of their area” and brings it to a much larger scope.

Survivorship bias makes us see all the successful people and not view the less successful people. In many ways we aspire to be them and disregard the other people who are not seen. I liken it to the concept of athletes and celebrities predate this notion early in our childhood. In reality, we know nothing about these role models and want to be like them because of what they have and what we don’t. These people are lauded as role models because they are good at some facet of life (perhaps they can play a sport well or act in our favourite movie). We almost never hear of the many failures or hardships that occurred.

The waterloo co-op scene is competitive due to perceived prestige from co-ops over others. We have this perception because someone has a co-op in a certain location (California) or from a specific company (FAANG) and we assume they are special or smarter than someone who doesn’t have it. The reality of this is that your job doesn’t mean much more than what it is, a job. I’ve made this mistake in the past, and I’ve seen people treat their job as their identity. You identity is comprised of your job, but it shouldn’t entirely be composed of your job or co-ops. There is more to life than that.

I don’t think there should be moments where you don’t help someone. Either in coursework, interview prep, or otherwise in life. I still remember when I switched into CS and I knew nothing. Many people feel like this and although this is fairly obvious statement, helping someone else is not a detrimental thing. It is a net positive for everyone and yourself. When we motivate one another to do their best we collectively succeed. I always felt it was important to give back in any way possible. Whether it be being an orientation leader, mentoring others, or helping others achieve their goals.

Tech is plagued by people trying to prove they are worthy and better than others. This behaviour might be spurned upon by the broadness of the field, the general insecurity of people, or the false positive/negative litmus test they conduct during interviews. I’ve already said my interviewing thoughts in a separate post, but I think it extends beyond that. The most important thing is to be a good person. The accomplishments are secondary. As vague as that sounds, I think it is really important to not lose our humanity, remembering we all have our flaws.

Closing Thoughts

There comes a time in everyone’s life where things end. University ending and a full-time job starts. Nothing in life really “ends” in the traditional sense. (akin to the Watchmen comic I showed above) I’m still tied to Waterloo in some sense when I talk to people who either recently graduated, are looking to graduate soon, are starting out undergrad, or looking to apply to Uwaterloo.

When I look back, the hardships that impeded my success early on served as guidance to where I would eventually land. There were things I believed to be prophetic of success and things I would work towards that would eventually have no impact overall. Other small things I didn’t even notice ended up having substantial impact on me without me knowing at that moment. It is hard to truly predict your path.

  • I did not envision graduating with a CS degree in 2014. I started as a Science and Business Major and deciding later on that it wasn’t a good fit for me and switching to CS

  • I would take some math upper-year courses like co342 (graph theory) with some people from my 1st co-op (years after that co-op)

  • I ended up doing a co-op in Vancouver by accident and it ended up being my favourite internship of them all

  • In 2017 I was unable to get a software engineering co-op. Three years later I did an internship at LinkedIn.

  • I went to multiple hackathons and failed multiple times. I had projects that melted down and people didn’t want to team with me. I was persistent on winning one after 12 failed attempts at MHacks X.

  • I went to University of Waterloo initially to stay close to home, but eventually I wanted to travel North America. I ended up going to Vancouver, California, and Seattle for internships.

  • Okta was my first tech internship, and it also did not give me a return offer. At the time it was immensely disappointing. I realized later on that even if it had given a return offer, my life would not be substantially altered, I probably wouldn’t have taken it. If anything I had to learn from the experience and their feedback.

The End

If you made it this far thank you for reading. I might make a part 2 if I find enough things to write about that are interesting. For now, I am on semi-hiatus as I try to navigate full-time life.