For a while, every year we have a Christmas. Before Christmas night we start to countdown as an Advent Calendar, someone does it with chocolate, pictures or (as a good developer) write code. Eric Wastl started the Advent of Code project and it’s awesome.
But what is it? The first year we met with AoC was in 2015. It starts on 1st of December every year after that the site reveals a puzzle every day and the last puzzle is always on 25th of December. It’s like any other CodePuzzle site, the only exception is basically you will get a whole story around it. The first year we built a huge Christmas tree white we collected all the stars for the weather machine’s “show” function, in 2016 it was a city (or base) where we tried to get back all the 50 stars from the Easter Bunny. In 2017 we tried to repair the printer and we built a circuit. All of them look pretty good.
How is this project funded? Basically, there are (hopefully) Sponsors every year. They can advertise on the site for the given year. The other part is the personal sponsorship. What do you get for your personal sponsored money? The project itself. If it’s not enough, you will get a “badge” next to your name: “(AoC++)”.
That was the history and the “what the f* is this?” section. Now turn around and see why is it good. In general, you can learn a lot, or at least it’s fun. I can write my experiences only. Since 2015 I work at Cheppers and in 2016 Skarlso joined the company. We started to work together and near December he said: “I want to learn C++”. I said, “Ok, go… It’s useful”. Alone it’s boring so we tried to find something where we can practice. I knew C++ a bit because I wrote some random programs before, but I’m not a C++ developer. After a while, we realized “What if…” and decided to do the whole Advent of Code (2016) in C++. So we did. Both of us learned a lot in 25 days. It was fun and sometimes challenging. I knew how to solve the problem in general. Sometimes I said, “It would be like 10 lines in Ruby or PHP”, but we had a commitment on C++. Are you curious about the results? It’s ugly but solves all the problems. Skarlso did it in his cppprojects repository, while I created a separated and dedicated repository.
We did it and we were so proud, it could boost our next year with full of ideas and motivation. We started a C++ project named Furnace. Because some AWS reasons Skarlso switched to Go and the Furnace project is still running. What else happened? I don’t really remember. In those time, I made a CLI TOTP application and a CLI helper in Go (started the CLI helper in C++ as well) and started a few random stuff in C++ because it was fun.
Next year (in 2017) we could not choose one language, so we decided to make a language pool. The result was a new repository ;) It was a random language generator dedicated to Advent of Code. The code itself is not a big deal, it has a fixes seed value, a fixed language pool and it gives up a random language for every day of the Advent of Code. So we decided to do the whole AoC2017 with fixed-random languages. It was really fun. This year Skarlso made a dedicated repository and my Advent of Code 2017 repository is public as well.
Why I wrote this article? It’s a cool project that worth to spread and some of those puzzles are very good so hopefully, I can write more about them and basically this is an Intro article.