The Summer of 2020

July 31, 2021

As I discussed in the previous post, it’s been a few months over a year since my last series of blog posts. All sorts of things have happened in that time; the world has changed dramatically, and with it, the people both in and outside the lens of my day-to-day. Focally, I too have changed—perhaps even accidentally growing or maturing along the way. This is a chronicle of change.

A Preface on Organization

I had originally planned for this post to cover the entire span of my hiatus from blogging: from March 2020 up until, well, now. Actually implementing this plan has inspired a change my mind. While it might seem like I’ve been lazing around during quarantine, I realized while writing that if I tried to cram everything into a single post, it would require a decidedly disproportionate effort, not just to edit and publish, but to read, too.

Instead, I’ve settled on splitting the work roughly into seasons. I’ll start with the summer of 2020, prepending the extra bits between my last post and the summer months for posterity. You can expect the next posts to fall along the Fall and Winter of 2020, and consequently the Spring and Summer of 2021. Let’s not get too far ahead of ourselves, though!

March 2020

It’s fascinating to look back at the earliest months of this period and try to piece together what was going on with so few memories to draw from. I knew for sure that I wanted to include a song relevant to each month in the final piece, so I started by sorting through songs in my Spotify playlists by their date added. Scrolling back through my calendar was the next logic step, and after a bit of brainstorming, I also came up with paging through my commits on GitHub, reviewing course syllabi, and skimming the endless list of todos I somehow crossed off. In a sense, writing the post was like detective work, or at the very least, like putting together a jigsaw puzzle. With just the highights of my mostly digital footprint in hand, I’ve assembled some crude simulacrum of my year.

The pandemic began sometime around March, and to kick it off, I remember getting insanely sick. I was achy, tired, and had the gnarliest headache I had experienced in my entire life, all for about three days—but hey, at least I didn’t have COVID, right? Of course, I almost certainly had COVID, but this detail went completely over my head. Two months later, while recanting the whole ordeal to my mom, we finally put two and two together…

Sometime in March, I also got a chance to visit the Getty, a famous art museum in Los Angeles. Of all the things I’ve seen in Southern California, this is one that I’d recommend to everyone. The architecture alone was absolutely stunning, not to mention the actual exhibits. Even the quiet spaces between the buildings seemed masterfully crafted; as purposeful as precise. The outing was organized for my dorm, which meant I also got to meet a bunch of the kids from the honors college that I had not run into previously. All in all, in made for a fantastic afternoon.

A picture of yours truly at the Getty, taken either by Lucia Jiang or Ian Huang. Downtown LA would be out of view to the left; we were only about ten miles away. A spectacular corner somewhere on the grounds. I'm no good at photography, but I'm not convinced you can take a bad picture of the place.

Amid all of this excitement, it seems I still managed to find time to code. Primarily, I was working on Graduate, a course planner and scheduler for USC that I had been designing and developing for the past year or so. At the time, Graduate was probably the biggest software project I had ever undertaken. It currently sits at around 16,000 lines of code, but I think even that sells the scope of its potential short.

Graduate’s fundamental goal was to provide a unified, relational structure for academic data—think courses, sections, requirements, grades, transcripts, etc.—thereby trivializing the process of developing apps that interfaced with that data. My proofs-of-concept were a course planner and a scheduler, both of which I almost completely finished; in fact, despite how nebulous these goals sounded, I made surprising progress in all of them. For example:

  • I created a DSL (domain-specific language) as well as validation and inference tooling for requirements. This normalized everything from “course A has a prerequisite of course B” to “you may take any combination of lecture, lab, and discussion” to “you must have an average GPA greater than 3.0 in your major-specific classes to take this”.
  • I developed a database schema that represented semesterly offerings of courses in relation to their course code so that requirements and other relationships could be computed precisely. This schema also featured virtual aggregation of the most recent iteration of each course so that all recent courses could be efficiently accessed.
  • I wrote a TypeScript library based on the JSON:API specification with some extremely helpful abstractions for working with relational data, caching results and relations, and providing types for endpoints and endpoint schemas.

I consider Graduate to be a seminal project in my career, really just for how much I learned designing and developing it. I wrote snippets and supporting libraries that I use and am proud of to this day. However, I would come to realize that Graduate has unfortunately poor prospects as a product in this sphere.

While all of these features seem remarkable from a technical standpoint, the university has no impetus to improve a system that already works, even if it’s not optimal (their scheduler is abominably slow and absolutely miserable to use, and they don’t even have a planner). Correspondingly, my several attempts to reach out to them came up empty-handed. And this is all beside the fact that even if I could somehow work out a deal with USC, it would be a technical and logistical nightmare to scale this to other universities.

As depressing as this sounds, somehow, all of this never really got me too down. Regardless of how it ended up, I always actively enjoyed working on Graduate. While it may never see the light of day, I will take the code written and lessons learned with me through the rest of my life.

April 2020

Thus began quarantine.

In April, I would have started my stint at home. I probably set up my desktop the second I stepped in the door, and since I think we all got sent home just before Spring break, I would have had a whole week to waste by playing videogames. Consequently, I’d be introduced to the novelty of the digital classroom, and shortly after that, I’d realize that there’s actually no reason whatsoever to show up to online lectures.

From the receipt, I know I got my electronic drum kit in April, so I’m sure I was playing constantly. This is an important point for me because it marks the more serious start of my journey to become a drummer. You see, the acoustic kit I had been playing up until that point was so loud that non-adjacent neighbors would complain if I played during work hours. With the electronic kit, I’d be able to selectively annoy the occupants of just my own house (this is my resting state anyway).

At this point, I would be trying to play about an hour a day, mostly getting used to the kit, and some of the first songs I started working on were from my metalcore and power metal playlists. Since I had a hard time digging up pretty much anything about this month, I have to assume that’s mainly what I was listening to as well, but I’m sure choral music and old videogame OSTs joined the mix when I needed to actually do a modicum of work. It’s pretty much anyone’s guess after that, though.

On the Software side of things, I’m guessing I spent most of my time this month supporting the office hours queue I had spent the first half of the semester developing and deploying. The concept of the queue was pretty simple: students could get help by opening a ticket the described their problem and waiting for a staff member to get around to them. However, digitizing this process saw disproportionate improvements on our office hours throughput. Now, staff could quickly pick tickets they were best suited to answer and could coordinate around others, students could communicate with staff via comments and even close their own tickets, and everyone involved had much more information about the queue size, their position in it, etc. I got super lucky with my timing on this project, too; already having this around greatly eased our transition to online office hours.

A screenshot I took of the staff dashboard. From here, TAs would be able to assign themselves to, comment on, and eventually close tickets.

May 2020

As my sophomore year at USC came to a close, my internship at Microsoft drew nearer. Due to the pandemic, I didn’t get a chance to live in Seattle over the summer, and while they shipped us hardware to work from home, I was definitely bummed about not having a chance to experience the Pacific Northwest. This is not to suggest that continuing to live at home would be any kind of struggle, though I did have to jigsaw second desk, laptop, and monitor in my already cramped guest-room office space. I was super lucky to have a job at all, and in theory the work would be pretty interesting.

The Microsoft internship is an insane gig with great pay, all sorts of perks, unique events, and all sorts of interesting people to talk to and work for. An ex-girlfriend of mine did two internships at Microsoft and eventually transitioned to full time, and she never had anything but the best to say about it. Naturally, I was looking forward to delving into the work, and with some luck, impressing my bosses enough to return.

During the first month of the internship I had a ton of fun learning about the software I’d be working on and meeting the people on my team. My manager was super welcoming, and the engineer I’d be directly working under was as friendly as he was knowledgeable. My first impressions were great, and I had a pretty positive outlook on the rest of the summer.

Another perk of transitioning into work from school was that I no longer had homework. Between drumming and very occasionally working out, I spent a ton of this summer playing videogames, mostly CS:GO. CS:GO is short for Counter-Strike: Global Offensive. It’s a hardcore (low time to kill and no respawn in each round), tactical (focus on strategy in advanced play), first-person shooter (pew pew kill people), and it’s easily one of my favorite games of all time. Over the summer of 2020 I probably put between 100-200 hours in, and very occasionally did something cool like this:

If you’re unfamiliar with how the game works, CS:GO pits terrorists against counter-terrorists; the terrorists’ goal is to plant the bomb or kill all the counter-terrorists, and the counter-terrorists’ goal is to stop the bomb from being planted, defuse the bomb after it’s planted, or, surprise surprise, kill all the terrorists. Games are played five versus five where the first team to reach 16 rounds wins the game. Oh, and teams switch sides after 15 rounds, regardless of score, so that both take turns playing as terrorists or counter-terrorists. In this clip I dropped an ace—I killed all five members of the other team (and then my teammate shot me to celebrate).

June 2020

Unfortunately, it took me all of a month to realize that the project I would be working on at Microsoft was absolutely insipid. Summarily, I was on the team that supported IDE tooling for Blazor, a web framework + templating language created by Microsoft for…no apparent reason (we definitely don’t have enough of those already). In other words, I was working on spell check for a useless programming language—let’s just say that there are not many things that are less exciting.

On one hand, work is work, and throughout June I made a good attempt to go above and beyond expectations. However, my effort would ultimately be in vain. Even if I could have somehow convinced myself of the value of what I was building, I simply do not enjoy working from home unless it’s a project I’m truly passionate about. Thus, any potential the summer once had was quickly clobbered.

Fortunately, there were at least a couple of things going my way to soften the blow. For one, I got a chance to drive up to New Jersey with Lucia to visit Elodie. It was pretty interesting to meet her parents and see where she grew up—NJ is not unlike MD in a lot of ways. We also figured out why she always turns the lights off; her parents eat dinner in candlelight…

A picture of the girls walking around a school in New Jersey. They downloaded this app that directs you to an arbitrary location based on whatever you 'manifest' while using it.

Aside from all of that, I have no doubt the drumming and videogames continued. I’m pretty sure around this time I was absolutely grinding matchmaking, though I think I only ever made it to AK. I remember many late nights spent chilling on Discord and queueing.

July 2020

July marks a discrete increase in the monotony of my quarantine. Of all the months in early COVID times, I have the fewest memories from the latter half of my internship. Perhaps this can be attributed to how unfulfilling this period was, or perhaps that space in my brain was taken up by the events of months to come. Maybe both.

In July, the Valorant beta released. Valorant was a huge step for the FPS genre, as it presented the first real competitor CS:GO has seen in ages. Instead of offering a re-skinned clone of the genre, it built on ideas from previous games like Overwatch, giving each player a selection of characters to choose from, each with unique abilities. I was immediately hooked, and while I would eventually return to CS:GO out of my inclination towards its core mechanics, I can at least say I boasted a Diamond rank during the beta.

With the fall semester on the horizon, I started spending more and more time on Curricula, the content distribution and auto-grading framework I’ve been developing for USC’s CSCI 104. As head TA, it’s of course in my best interest to optimize our assignment publishing and grading procedures. However, Curricula has also served as a fantastic creative outlet for innovating on scripting ergonomics and extensible automation patterns. This collection of libraries and frameworks is one of my proudest works, and you can read more about it on GitHub.

This is a screenshot from our modernized course content site. I wrote the styles by hand with a focus on readability, accessibility, and reactivity. Dark mode coming soon :) A screenshot from the online submission form. The rollout of this feature marked a significant step forward in our submission process, as it facilitated sanity checks and instant feedback on submissions. An example of what you might see when you submit an assignment. Sanity checks are simply a marked subset of autograder tests, and are run in the background upon submission.

The Next Installment

I have absolutely no idea how I imagined I could fit an entire year into a single blog post. This was only five months and I’d be impressed if anyone’s actually made it this far. While I’ve basically drafted the entire rest of my recap, I’m gonna give myself slightly more time between installments, as there are other topics I wish to cover in the meantime. However, per the schedule outlined in my last post, you can expect to hear from me soon!