I've always found AoC to be added stress during a time of the year I'm not really running a stress-deficit. I find the competitive aspect a pretty big turn off. I usually get a few puzzles in and then burn out, because I can't keep up with the people who do it every day (I don't even use my computer every day).<p>I wish the scoring didn't prioritize timeliness. This is really the sort of thing I'd enjoy cranking out on a plane ride, not every day.
I look forward to Advent of Code every year.<p>So far, I've used it as a way to learn new languages - I've done it in D, C#, Swift so far. I don't bother with the competition aspect, but I do have a few people that I bounce solutions off of.<p>This year I'm taking a different approach though, I'm going to use it to re-learn an old language - UniVerse[0] Basic[1]. In my first IT job, I supported an in-house system that ran on UniVerse. I then moved on to working with a commercial system built on UniData[2] (a close cousin to UniVerse). These products mainly exist to allow Pick-style MultiValue applications to run on modern systems. They are closed-source commercial products, but there is a limited-use personal edition available.<p>One nice thing about these is that they don't just emulate a Pick environment, they also give it features that Pick systems never had. For example, UniVerse Basic is capable of making HTTP/HTTPS requests, parsing XML and JSON, and at some point UniVerse Basic even gained the ability to interact with Python objects. One of the first things I built in preparation for this was a subroutine to retrieve the input data, downloading it and caching it if required.<p>It's been about 10 years since I've worked with this technology, so I'm really looking forward to re-learning it.<p>[0] <a href="https://www.rocketsoftware.com/products/rocket-universe-0/rocket-universe" rel="nofollow">https://www.rocketsoftware.com/products/rocket-universe-0/ro...</a><p>[1] <a href="https://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew20/universe/v12.1.1/universe_basic_user_guide_v1211.pdf" rel="nofollow">https://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew20/uni...</a><p>[2] <a href="https://www.rocketsoftware.com/products/rocket-unidata-0/rocket-unidata" rel="nofollow">https://www.rocketsoftware.com/products/rocket-unidata-0/roc...</a>
Advent of Code is a huge amount of fun!<p>One of my favorite problems from last year involved programming a robot to traverse an obstacle course (<a href="https://adventofcode.com/2019/day/21" rel="nofollow">https://adventofcode.com/2019/day/21</a>).<p>Interestingly, the space of potential programs was small enough (105 bits) that you could smash an SMT solver into it and <i>solve</i> for a correct, minimal program, given the shape of your obstacle course:
<a href="https://www.mattkeeter.com/projects/synthesis/" rel="nofollow">https://www.mattkeeter.com/projects/synthesis/</a>
I'm curious if my debug visualizer extension for VS Code could be helpful for solving this kind of puzzles (<a href="https://github.com/hediet/vscode-debug-visualizer/blob/master/extension/README.md" rel="nofollow">https://github.com/hediet/vscode-debug-visualizer/blob/maste...</a>).
Might be one of the few use cases where it can really shine.
AoC is great.<p>But I also think that it's a missed opportunity to measure productivity and runtime performance of programming languages.<p>In "Benchmarks Game" you get extremely optimized programs which is not usually achievable by an average developer. On AoC you would get a wide distribution of submissions and you could get the right estimate of how performant are the programs submitted by PHP, Python, or Rust developers.<p>I guess we wouldn't get to see people abusing mpz_add on Python or PHP that often.
This is a great opportunity to use new languages and get a feel of how communities take on newcomers! I tried Clojure a few years back and I got a warm welcome, so I'd like to extend an invitation to anyone considering using Clojure for this year's puzzles, head over to the Clojurians Slack and the #adventofcode channel and hang out. There's no competitiveness and people just like to compare notes and discuss approaches. A lot of Europe representation too!
I've always struggled with AoC in the past due to work and family commitments, but this year is different. I now have a work from home, flexitime job and thus so much more time to devote to it. Hope to make it beyond day 2 at least!
Anyone else planning on rotating languages? I think that using a different language every day is too much of a stretch for me, but I plan to switch between C++, Rust and Julia.
that damn intcode computer from last year is still giving me PTSD. Had a bug in it that somehow didn't show up in the first three challenges, took me forever to find.
Data for past completion rates is available. I wonder how that affects puzzle difficulty tuning.<p><a href="https://adventofcode.com/2019/stats" rel="nofollow">https://adventofcode.com/2019/stats</a>
Is Advent of code used mainly for learning new languages? I find it very different from Topcoder style questions. I tried 3 puzzles and part1 and part2 in each question makes this a good test of how to design code in order to make it extensible for future changes. Can someone who has done Advent of code in the past confirm if learning new languages and making your code extensible are the primary objective of AoC questions?
Very nice. I like to try doing these in a different language each year. Last year went very well with F#, let's see how this year goes with Haskell.