It's that time of year where many of us reflect and also count down to the holidays; this latter activity is directly represented in the word "advent" which is from the Latin, a combination of "ad" (to, towards) and "venire" (to come).
I thought it would be nice to reflect on
the advent calendar that
nicolai.geburek put together for us (read more about this initiative in
l_stodal's
24 Days of SAP Community) and share another advent calendar, that of the
Advent Of Code.
The annual Advent Of Code event
The Advent Of Code
is described as:
"an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as interview prep, company training, university coursework, practice problems, a speed contest, or to challenge each other."
It's been running annually since 2015, and is the creation of Eric Wastl. He gives a "behind the scenes" talk on how he puts the entire thing together, one recording of which is this one:
Eric Wastl - Advent of Code: Behind The Scenes - Leetspeak 2019.
The programming puzzles
You can approach Advent Of Code in any way you like. There are many, many folks participating (2020 saw a 50% increase to around 180,000) and solutions are written in pretty much every programming language under the sun. In fact, some of the puzzles are solvable with other methods, maths included, but most are about
computational thinking.
Some are in it for the thrill of finishing the puzzles as quickly as they can. Others are in it for the recreational diversions it offers. Others take advantage of the quieter holiday period to improve their skills in a particular programming language that they've been working on.
There are no prizes, you don't even have to work through all of the puzzles, you can skip ones you don't fancy. You can do them solo, or join up with your friends and create your own leaderboard.
Languages
Looking at the statistics of the search results for
Advent Of Code resources on GitHub we can see that the following languages are pretty common: Python, Rust, JavaScript, C#, Java, Go, Kotlin, C++, TypeScript and Ruby.
Moreover, this is just the tip of the iceberg; I know that my son Joseph, for example, has enjoyed writing solutions in Haskell, APL and Go in the past, and this year he's
enjoying using the functional library
Ramda in a JavaScript context.
Many folks have used ABAP too!
This year
I have started building solutions in
jq which is a language primarily designed for processing JSON data, but with a bit of persuasion it can be employed to address some more general problems.
Incidentally, in the
Hands-on SAP Dev show we're using jq to explore the rich seam of JSON-based metadata in the
BTP Service Metadata project - see the YouTube playlist
Exploring the BTP Service Metadata project (head over to this playlist to watch the replays).
How about you?
As you reflect on 2022 and start thinking about moving into the holiday season that is approaching, will you also take the opportunity to think about solutions to the
Advent Of Code puzzles this year? What language might you use?
Let us know in the comments if you're taking part, and what your language of choice is.
Happy holidays!