Programming Christmas Advent Calendars for 2019
Geeks have their own traditions when it comes to celebrating the holidays, and one flavor of fun takes the form of online “advent calendars,” special calendars used to count the days in anticipation of Christmas. Such calendars share tips, tricks, and playful puzzles, often enhanced with a special Christmas-y theme.
This year there’ll be over a quarter of a million programmers all around the world who are spending part of their December learning, and the practice has even spread into the world of astronomy.
Here’s a look at some of the highlights and history of geeky advent calendars online — and how this year’s fun-minded geeks are counting down the days until Christmas while sharing their favorite things.
Arriving By Camel
This geek tradition seems to have started way back in 2000, when London-based programmer Mark Fowler launched a calendar highlighting a different Perl module each day. Soon Fowler was announcing his new creation on the London Perl-mongers mailing list, and then discovered it was being publicized to the geek world everywhere from the front page for O’Reilly Publishing to the geek blog NTK (which just gave it the enigmatic description “now, no PEEKING”.)
“Soon I was getting a lot of traffic,” Fowler remembered later, adding “to put it in perspective, more hits to my tiny little server than one of the UK’s largest broadcasters was at the time.”
Over the years the tone changed — Fowler had originally published each module’s documentation, but soon he was swapping in commentary with his own personal touch. This year marks the 20th edition of the Perl Advent calendar, and in Wednesday’s installment, Mark Fowler describes how Santa’s elves replaced speed-critical C code with a compiled module of Go code by importing Perl’s FFI::Platypus library. (“It’s a Christmas miracle!”)
Of course, a “rival” advent calendar eventually started for the language then known as Perl 6, launched in 2009 — far ahead of the language’s long-awaited official launch in 2015. But as a community that knows something about faithfully following your hopes, they’ve kept it running for over a decade — and this year the page opens with a very special announcement.
“The language formerly known as Perl 6 is now called Raku, so this year’s advent calendar can be found at rakuadventcalendar.wordpress.com.”
That calendar has continued evolving with the times. The 2016 edition began with a post explaining how to use the language’s Bailador module with a webhook to automatically create Docker images every time someone pushed a commit into GitHub Enterprise. And over at its new Raku-riffic home, this year’s calendar begins the holiday season with a Day One story about transforming old Perl code using Raku’s module Inline::Perl5, then moved on to topics like using Perl regexes with GitHub’s new actions and stack frame reduction (or “recursion without incurring a thousand stack frames”).
There was also an advent calendar for the Perl Dancer web application framework that ran from 2010 through 2018 (though it apparently skipped a few years, and in 2018 settled for a shorter “12 Days of Dancer” format).
Perl/Python guru Joel Berger also started a short-lived advent calendar for the Mojolicious web application framework (written in Perl). It ran from 2017 to 2018, and concluded with a very special post on Dec. 25, 2018, announcing the birth of “the newest unofficial member of the Mojolicious Core Team: Jude Carl Berger” (who was born on Dec. 1, within hours of the calendar’s first 2018 post).
New Kinds of Fun
The tradition has spread around the world — and even into different professions. There’s still a beautiful ghost of Christmas past lingering on the web in the form of the outreach site for the European Space Agency’s Herschel Space Observatory, the largest infrared telescope ever launched, which made its final communication with earth back in 2013. But its outreach site is still hosting an advent calendar of photographs taken by the forgotten telescope — celebrating Christmas with photos of the Whirlpool Galaxy, comet Hartley 2, and the supernova remnant W44.
And over in Wales, Cardiff University is celebrating Christmas at its Gravity Exploration Institute with a special LIGO/Virgo gravitational wave advent calendar: “We won’t be providing any chocolate, but there will be a new physics-related tidbit every day.”
Meanwhile, this year Amsterdam-based Perl programmer Andrew Shitov has also been offering a “Language a Day” advent calendar, starting off December with overviews of TypeScript, Rust, Julia, Kotlin, Modern C++, and Crystal.
And Oslo-based Bekk Consulting, a strategic internet consulting company, registered 12 different .christmas domains for an ambitious 12 different advent calendars on a variety of geeky topics, including “The Cloud Christmas,” tips and tricks for CSS, functional programming and machine learning.
The year of 2018 even saw an advent calendar for QEMU, a free and open-source emulator performing hardware virtualization, promising “an amazing QEMU disk image every day!” The disk images contained “interesting operating systems and software that run under the QEMU emulator,” explained its About page. “Some of them are well-known or not-so-well-known operating systems, old and new, others are custom demos and neat algorithms.”
“The ‘run’ scripts (and disk images if included in the download) were created by volunteers from the QEMU community to showcase cool software that QEMU can run.”
That calendar was apparently organized by Thomas Huth, a member of Red Hat’s virtualization team, who modified a 2014 website created by Stefan Hajnoczi. But they’re not the only experts sharing what they know with the rest of the web. There’s even a web design advent calendar that will count you down to Christmas with “24 ways to impress your friends.” Hosted at 24Ways.org , it’s now celebrating its 15th year. Started by web developer Drew McLellan in 2005, it’s still promising 24 daily doses of web design and “development goodness to bring you all a little Christmas cheer.” Its topics this year include “24 Days of Front End Testing and “An Introduction to Variable Fonts.”
And last Sunday saw the Go language site Gopher Academy proudly unveiling their seventh annual advent calendar — their own helpful roundup of blog posts contributed by their community.
The Advent of Code
But this year one of the liveliest communities has gathered around the fifth annual “Advent of Code,” an event which has grown into something of a Christmas phenomenon.
Creative geeks around the world keep finding new ways to tackle its challenges.
- One user is solving all of the puzzles using the Unix tool awk.
- Solutions have been implemented in Minecraft.
- Alok Menghrajani, a security engineer at Square, used a field-programmable gate array (and the Verilog hardware description language) to calculate solutions using hardware.
I decided to solve #AdventOfCode day 2 in BASIC on my Apple IIc+. It only took two hours to run part 2 😂.https://t.co/LYY0nYxDoC pic.twitter.com/IWPRYRtwqI
— Andrew Madsen 🇺🇸🇺🇦 (@armadsen) December 4, 2019
And one of this year’s participants is Keith Packard, a free software developer working on RISC-V processors and the creator of Python-inspired embedded computing language Snek. He’s now using his own language to solve the puzzles.
As the tradition continues, Wastl has offered his own behind the scenes look at how he creates each year’s event and scales to keep up with the event’s massive popularity. “Now we’re at 250,000 people,” he told an audience at this year’s Leetspeak conference in Stockholm. “Which is fine, because on AWS I can click ‘Add another server’ and it just does, and that’s much, much better.”
During his Leetspeak talk, Wastl also remembered that last year he’d even experienced a denial-of-service attack, but was able to AWS’s tools to block the attacker’s range of IP addresses “for a while, and then they went away.”
But in the spirit of celebration, his talk ended with an inspiring message. “Engineers in your organization should solve puzzles for fun.
“And not just engineers in your organization. Everyone should solve puzzles for fun. It helps you learn to think about the world in a different way.”
- How the question-answering humorists at the Internet Oracle continue a tradition started in 1976.
- Why America’s libraries are eliminating late fines.
- Can a new power line-monitoring technology help prevent wildfires?
- Facebook’s PR department built a chat-bot to help employees learn how to answer difficult questions.