Advent of Code

Why Advent of Code?

Advent of Code is a yearly set of coding challenges designed to put one’s programming skills to the test. Every day of December, from the 1st to the 25th, a new challenge releases, steadily getting more complicated and putting your skills to the test in everything from graph traversal to defragmentation to memoization. It is a DSA masterclass.

The challenges are intentionally presented in a way that is language-agnostic. With only a set of instructions, an example input, and a user-specific real input, the programmer may (nay should) use any tool at their disposal to get to a single numerical solution.

Crucially, upon successfully solving the challenge, a craftily-prepared part 2 is revealed with a new set of instructions for the same input, often pressing the programmer to return to the drawing board. Perhaps their initial recursive algorithm from part 1 now causes a stack overflow, or maybe the 100 values the user needs to cross-compare have become 100,000,000. The programmer would quite like their program to terminate in their lifetime.

For me, Advent of Code may well be the single most impactful resource for building coding proficiency that I have used. From humble beginnings two years ago, where I first attempted the puzzles in a single C# file, to more ambitious steps in AoC’s 2023 and 2024, where I dove headfirst for the first time into JavaScript and Golang, Advent of Code is the manifested proof that practice makes perfect.

So I invite you, dear reader, to leaf through my many solutions over many puzzles, and bear witness to this auto-biographical chronicle of code. To scrutinize the difference between my first clunky rough-cuts and more recent gems. To acknowledge the improvements yet critique the still present imperfections. To witness the clear cross-paradigm influences of C# on JavaScript, and of JavaScript on Go.

And to maybe ask yourself if those advent plans you had this Christmas could wait until January?