I'm participating in AoC because I enjoy solving these types of short challenges as a break from daily work on large systems. If you haven't heard of AoC, check it out and follow along yourself!
For 2020, I developed solutions in Python3, since I had just finished five years of graduate research using it as my primary development language.
Throughout 2021 I have shifted my focus to honing my skills in system-level languages like C/C++ while developing my Game Engine (I'll be posting a progress update at the end of December). So this year, I will be using AoC as a case-study comparing what I believe to be the three most promising system languages for performance-oriented programming:
- C (with limited use of C++11 compiler features)
- following the philosophies evangelized by Casey Muratori and several members of the Handmade Network.
- Jai (Jonathan Blow's language)
- I believe it has the potential to be a modern replacement for C++ with more thoughtful design philosophies dedicated to simplicity, performance, and programmer satisfaction.
- Rust
- The direction of the industry seems to move inevitably towards it's widespread adoption. One must understand the merits and caveats of powerful social trends like Rust to make informed decisions.
I am interested in the following:
- Writing simple, understandable, and efficient solutions.
- Comparing solutions across proven/existing and promising new languages.
- Having fun.
I am not interested in the following:
- Tuning in at the instant a new challenge becomes available to try to capture points on the leaderboard in the first 5 minutes.
- Finding time for anything outside of work and family is hard enough. Bending my schedule around these challenge drops is not a priority.
- Making my solutions as "small" as possible.
- In languages that provide syntactic sugar for minifying code, the act of reducing the character count is often accompanied by a loss of readability and maintainability.
- Instead, I will focus on making the simplest solutions that reveal what actually occurs on the hardware, rather than intentionally obfuscating implementations behind "convenience" operations of a language and it's standard library.
Note that this is in no way a mandate for how you should participate in AoC, but of course you should already know that, being the self-confident, emotionally healthy, and unapologetic individual I know that you are :).
If you have any questions feel free to open an issue we can have a chat. Happy coding!