Christmas 2019 Santa Tracking Teletype Broadcast

by js on

NORAD has been tracking Santa on Christmas eve for generations. Google has recently taken a greater market share from NORAD (after once being on the same team). However, with all these fancy apps and sites and games and visuals, there has been a marked absence from the Santa tracking wars from the very beginning– something so simple and pure, perhaps nobody has really thought to do it. No longer; as of Christmas 2019, that void is now filled: live Santa tracking via teleprinter is now a yearly event.

TTBN SANTA TRACKER 2019-12-24 07:17 MST

A TEAM OF STUDENTS ATTEMPTING TO SMUGGLE WESTERN MEDIA INTO NORTH KOREA
FROM THE SOUTH REPORTS THAT THE KOREAN PEOPLE’S ARMY ATTEMPTED AND
FAILED TO KEEP SANTA FROM ENTERING THE COUNTRY, JUST AS THEY DO EVERY
YEAR. KIM JONG-UN IS EXPECTED TO HAVE A TEMPER TANTRUM. IN ADDITION TO
DELIVERING MUCH NEEDED AID AND A GLIMMER OF SUNLIGHT TO THE
POVERTY-STRICKEN PEOPLE, IT IS EXPECTED THAT SANTA WILL ATTEMPT TO
RESCUE A FAMILY FROM THE COUNTRY AS HE HAS OFTEN DONE IN THE PAST
DECADES.

Most people reading this will scratch their heads either not knowing what a teleprinter is or not grasping the scope of how that’s done. This is a teleprinter, and it can be connected to a radio to broadcast messages as far as your radio equipment is able. Instead of broadcasting via radio, I broadcast the same signals via the internet. A more thorough explanation behind this can be found in the sections titled Software Creation and Streaming Simplex here.

This project has been planned for several years; now I finally had enough time to execute it. The Halloween broadcast of The War of the Worlds was a success, and there were several things I was able to learn from that broadcast to make this one better.

Series of vignettes

The gist of the broadcast is that Santa travels the world at lightning speed, but sometimes people are able to spot him on his journey. As people spot him, they report it in to the Teletype Broadcasting Network, which sorts through reports to find the verifiably true ones and broadcasts those out as they are received.

This allows for the TTBN to send out a brief broadcast on average every 10 – 15 minutes, including a location and a description of the Santaman encounter the reporting person witnessed.

For most broadcasts Santa is doing something unique– sometimes the only trace is a half-eaten cookie that dropped on someone’s head, sometimes he joins a group of Christmas Eve celebrators for a drink (while I don’t take to the stuff, it would seem Santa is able to hold his liquor better than any mortal according to this year’s broadcast), and other times he is discovered as just a streak of light across the sky or presents seemingly appearing out of nowhere. Each broadcast is a little vignette of something Santa’s doing on his yule delivery route.

Santa usually begins his work around 3:00 AM MST on Christmas Eve and ends around 4:00 AM AM MST on Christmas morning, and the broadcast lasted this entire time period– a total of over 37 hours including the initial 12 test messages (sent one per hour for the twelve hours leading up to the broadcast so people could properly tune in and configure their equipment before the actual broadcast began).

TTBN SANTA TRACKER 2019-12-24 11:53 MST

A SCRAP OF SCROLL PAPER WAS FOUND FALLING DOWN INTO A STREET IN
MAHEBOURG ON THE ISLAND OF MAURITIUS. IT APPEARED TO BE A PARTIAL LIST
OF NAMES, ALL OF WHICH HAD TWO CHECK MARKS NEXT TO THEM AND WERE EITHER
LABELLED AS “NAUGHTY” OR “NICE”.

Christmas Eve success

To put it simply, the broadcast went phenomenally. There were no technical blockers, the improvements I made to the software (outlined below) vastly enhanced the broadcasting experience, and everyone seemed to enjoy it.

I had my Model 19 printing out updates all night and through the day. My own boys, though they don’t quite have the written word down, always love to watch the machines in action, and they were fascinated to know where Santa was on his way (in spite of not really knowing where those places are).

In the mid-afternoon, I packed up the trusty Model 19 and associated equipment and carted it off to my sister’s house where we enjoyed our traditional Danish Christmas Eve, only I added a new tradition this year.

The clattering teletype was hardly heard above the bustle of some 40 people, most of the noise being generated by the younglings, as expected. Cousin Will took particular interest in the broadcast and set up shop there for the bulk of the night, waiting for each transmission, excitedly coming downstairs to report to anyone who would listen where Santa was last spotted and what he was doing. This continued all night until around eleven when everyone had filtered out and I packed up the equipment again.

The RTTY audio as recorded from the broadcast as well as the original text used to generate the broadcast can be accessed here.

TTBN SANTA TRACKER 2019-12-24 16:09 MST

A FAMILY NEAR COPENHAGEN, DENMARK WAS ENJOYING A TRADITIONAL CHRISTMAS
EVE AND CALLED OUT TO THE GARDEN FOR “JULMANDEN”. SANTA, APPARENTLY
THINKING THAT THIS FAMILY DID NOT HAVE A FAMILY MEMBER AVAILABLE TO
PLAY THE PART, CAME TROMPING TO THE DOOR ONLY TO FIND ANOTHER FELLOW
DRESSED AS THE JULMANDEN ARRIVING AT THE SAME TIME. APPARENTLY THE
FAMILY’S MORFAR (GRANDFATHER) WAS ABLE TO PLAY THE PART OF SANTA THIS
YEAR AFTER ALL. THEY GLANCED AT EACH OTHER, LAUGHED HEARTILY, AND BOTH
ENTERED THE HOUSE TO DELIVER PRESENTS AND SPEND TIME WITH THE FAMILY.

IT IS REPORTED THAT THE REAL SANTA FOUND THE TRADITIONAL ALMOND IN HIS
RICE PUDDING BUT SECRETLY GAVE IT TO THE YOUNGEST CHILD SO SHE COULD
WIN THE MARZIPAN PIG FOR HERSELF.

Can I haz data?

Please remove any children from the room before reading onward as the following has what the kids these days call “spoilers”.

When I came up with this idea, the first thing I did was search for a source of data. I knew the wheel had been invented by at least two organizations, and I didn’t want to focus a whole lot on calculating Santa’s path when it had already been done before. I even reached out to whatever contact information was available for NORAD’s Santa tracker to see if they’d be willing to share the data, but nobody ever responded.

I figured at first I would pull live data from either Google or NORAD and send very simple updates only including the date and location (e.g. “2019-12-24 12:00 – Free Country, USA”). However, this data source eluded me for some time across many searches.

After descending down an internet rabbit hole, I was able to source a static JSON file from Google’s 2017 Santa Tracking extravaganza complete with the name of every city Santa visited and the Unix timestamp indicating when and where he visited in 2017. I don’t know where I got this as I downloaded it and held onto it for quite some time before diving back into the project again, and by that time the source for the JSON was gone. I include the file here, perhaps putting myself in peril of Google’s wrath. Meh.

The good news is I had a complete set of data from which I could extract Santa’s calculated path and timing around the world, and I could expand on my original idea by creating a unique vignette for each location rather than rely on a live source and thus not easily be able to customize output.

To extract the data I needed, some bash magic is all that’s needed. In fact, I still have the commands I whipped up.

jq '.destinations[] | "\(.arrival)::\(.city)::\(.region)"' santa_en.json | awk '!(NR%3)' > santa.list

COUNT=1
mkdir -v santatracker
while read LINE; do 
   LINE=$(echo "${LINE}" | sed 's/"//g')
   TIMESTAMP=$(echo "${LINE}" | awk -F '::' '{print $1}')
   CITY=$(echo "${LINE}" | awk -F '::' '{print $2}')
   REGION=$( echo "${LINE}" | awk -F '::' '{print $3}')
   EPOCHOUT=$((63072000+$(printf "%s" "${TIMESTAMP}" | sed 's/...$//')))
   echo "$(gdate '+%Y-%m-%d %H:%M' -d @${EPOCHOUT}) - ${CITY}, ${REGION}" >> santatracker.list
   echo -e "TIMESTAMP=$(gdate '+%H:%M' -d @${EPOCHOUT})\n\n${CITY}, ${REGION}" > santatracker/$(printf %03d "${COUNT}").txt
   ((COUNT++))
done <santa.list

I also made the executive decision to extract only every third location (reflected in the script above) because this would equate to about one broadcast every 10 – 15 minutes (roughly 120 broadcasts) instead of one broadcast every 3 – 5 minutes (roughly 370 broadcasts). Writing ~120 broadcast vignettes took me enough time; 370, and I would not have been able to enjoy the holiday. Also, some of the broadcasts were longer than three minutes (being transmitted at only 45 baud) and thus would have collided with other scheduled broadcasts.

The program I created doesn’t do a whole lot of continuity checking, though one day it will: all it does is start on the first alphanumerically named file, wait for its timestamp to occur and broadcast it, then go to the next file, wait for its timestamp to occur and broadcast, and so on. The timestamp is not date-based, either (though it will be with a future improvement). The biggest problem with this is probably that if the timestamp in the next file, say, is one minute before the timestamp of the current file by accident, the script will patiently wait for 23 hours and 59 minutes before broadcasting the second file and moving on. When writing scripts on a time crunch and only for my own consumption, I sometimes make concessions just to get the critical functionality available, putting off smoothing out the rough edges like this until later when I can revisit it without ~120 Santa vignettes still needing to be written staring me down.

TTBN SANTA TRACKER 2019-12-24 13:57 MST

SANTA WAS SIGHTED UNDER COVER OF DARKNESS LANDING HIS SLEIGH ON A
PROMINENT HILL AT THE SOUTHERN BORDER OF BETHLEHEM, ISRAEL NEAR THE
ARTAS MONESTARY. AN EYE WITNESS THERE STATED HE DISMOUNTED THE SLEIGH
AND WALKED A FEW STEPS AWAY TO A PART WHERE THE HILL JUTS OUT, GIVING A
PARTICULARLY EXCELLENT VIEW OF THE GLOWING TOWN BELOW. THEN HE TOOK OFF
HIS CAP, BOWED HIS HEAD, AND SLOWLY KNELT ON THE GROUND. THE EYEWITNESS
WAS ABOUT TO GO OVER TO HIM BUT WAS STARTLED TO HEAR SANTA BEGIN TO
SING SOFTLY IN HIS RICH BASS:

SILENT NIGHT, HOLY NIGHT
ALL IS CALM, ALL IS BRIGHT
ROUND YON VIRGIN, MOTHER AND CHILD
HOLY INFANT, SO TENDER AND MILD
SLEEP IN HEAVENLY PEACE
SLEEP IN HEAVENLY PEACE

A RICH FEW MOMENTS OF SILENCE AFTERWARD, SAINT NICHOLAS ROSE UP AGAIN,
PLACED HIS CAP BACK UPON HIS HEAD, AND RETURNED TO HIS SLEIGH, BRUSHING
SOMETHING FROM HIS EYE WITH THE BACK OF HIS GLOVE BEFORE LAUNCHING BACK
INTO THE NIGHT SKY.

Creative process

By this point I had the data I needed, parsed neatly for human consumption. One of the later entries, for example:

2019-12-25 01:03 - Roswell, New Mexico, United States

All that was left was writing a treatise for each of the ~120 locations worldwide. Along with an active imagination, I used for reference an array of materials including Google Maps, Wikipedia, and a few websites specifically dedicated to worldwide Christmas traditions to brainstorm ideas to come up with each piece, many of which pieces are tailored to specific traditions or locations to do with the referenced city. The end result:

TIMESTAMP=01:03

Several people claim to have recent evidence of a UFO sighting over Roswell, New Mexico, USA, but skeptics refute this stating the most logical explanation is it must be Santa Claus because there is no such thing as a UFO.

There were just a few locations I decided to change to another one nearby for various reasons, and one location I decided to leave out altogether (resulting in the longest stretch of silence early on during Santa’s trip– about 30 minutes).

I quickly realized that Google’s pattern strictly follows timezones, which sometimes causes Santa to make very inefficient choices, such as stopping in Newfoundland and afterward skipping south across the ocean all the way down to Brazil. If I were to take a lot of time to manually adjust the algorithm, I would change his trajectory in instances like that to be more efficient. Of course, when you can travel nearly the speed of light and magick presents down a thousand chimneys in a flash, what’s an ocean or two?

Live in 3… 2… 1…

I made minor adjustments to the vignettes even minutes prior to the broadcast. Due to the nature of how the software was scripted, I could have kept making changes even after the broadcast began.

But I didn’t. December 23rd (what we call Christmas Adam, referencing Adam who came before Eve) is traditionally the night where my wife’s brothers come over for an evening of scones and hilarious video games, so after starting the broadcast, that became my next focus. My boys joined us this year for the first time, and, whilst playing Super Smash Brothers, Remington uttered darkly, “I AM THE ANGEL OF DEATH!”

The systems I used differed slightly than the previous Halloween broadcast, mainly because I knew I would need to receive the transmission away from my home network.

First is the trusty old Mac Mini, which I call CunniPlex– I say old because suddenly it is pretty old being the 2012 model. Its main purpose was to be a Plex server, which it continues to be, but as Plex has required about a 20th of the resources I expected it might even when streaming 1080p video, I have the transmitting fldigi instance running on it along with butt (Broadcast Using This Tool) to stream the audio up through Icecast, which is running on a web server up in Digital Ocean.

Here’s a screenshot of CunniPlex running the described softwares, with the transmission of one of the test messages in progress:

Another computer was actually controlling the broadcast, running the software to begin transmissions, broadcast text, and end transmissions all at the scheduled times. This is an old Raspberry Pi 3B+ I had laying around since the broadcasting software I created uses very little in the way of resources.

For the Halloween broadcast I used the Pi that also drives the current loops and teletypes– the Pi built into the board and circuitry I developed to control my teleprinter machines. This time I knew I’d be taking that Pi with me for mobile communications on Christmas Eve, and I needed something that could stay at home base, as it were, to reliably control the broadcast.

I dubbed this Raspberry Pi with the apt hostname of Homestar [Runner], both because he is a beloved if obscure and unusual cartoon character and because this device would remain at home. Here is a screenshot of Homestar at work– and note that while my broadcasting software is strictly commandline based and thus does not require any desktop access on the Pi, I used VNC instead of SSH to control this Pi across the network from my lappy for the sole purpose of being able to have and see the appropriate desktop background:

Homestar at work

The next device in this array has no significance to the sending side of the broadcast but was very important on the receiving side. For the Halloween broadcast I had used a second instance of fldigi listening to the live stream simply running alongside the first broadcasting instance on CunniPlex. For the Santa Tracking Broadcast, however, I needed a device to receive and demodulate the broadcast that I could take with me to Danish Christmas Eve– I needed the opposite of Homestar.

Thus Marzipan was born; I ran a receiving instance of fldigi on a brand new Raspberry Pi 4 B+ tuned in to the broadcast audio stream. fldigi requires a UI to be used (much to my chagrin– I would have it be purely commandline if I could– and yes, I’m well aware of minimodem) and is also a little more resource intensive, so the Pi 4 with its somewhat more powerful CPU worked out well, though I’m sure a Pi 3 and maybe a 2 would have done okay. I have noticed in all my testing that if the host’s CPU gets overloaded, such as when I was trying to stream 1080p video through CunniPlex whilst modulating a live audio stream through one instance of fldigi and demodulating the same stream on a second instance, the demodulator gets spotty and will leave out entire chunks of text, so it is important to reserve enough CPU capacity for fldigi to run reliably.

When at Danish Christmas Eve, I found my cellular connection to be lacking, which is the connection I usually rely on to tether my phone’s data to my trusty mobile router. I hadn’t ever tested this out before, but I was able to easily connect the WAN port on the mobile router to my sister’s NATed Comcast modem (yuck), and everything worked fine without requiring any extra configuration. Good deal. Perhaps not the most secure thing in the world– I didn’t have time to run some network scans as I usually do when curious about a network or host– but it worked in a pinch.

A path well laid

The very first teleprinter Santa tracking broadcast was a success. I’m sure I could install some form of analytics on top of Icecast to get a better idea of how many actual listeners I have; I could have grepped for a specific log entry to get an idea of total listeners, sorting based on unique IP addresses, and that actually would have been pretty accurate, but those logs are long gone.

For now I’m only relying on the single metric from Icecast that defines the highest number of concurrent listeners during the broadcast. The Halloween broadcast was much higher (39) because it was only three hours long, so most people tuned in for the entire broadcast, and thus the maximum number of concurrent listeners reflected more accurately the actual number of total listeners.

Because the Santa broadcast was 37 hours long, we had people tuning in and out around the world, mostly dependent upon time zones. Some people with autostart and a machine that was somewhere in the house where it wouldn’t keep them awake all night tuned in for the entire thing, but many had to tune in during chunks of time when they were awake and not doing other Christmas things. Thus our maximum concurrent number this time was only 19.

I suspect we actually had at least as many listeners as the Halloween broadcast, probably more, just spread out through the 37 hours. Next year I will parse logs, just because I’m curious, and perhaps underneath that curiosity is actually a bit of vanity. The important thing is that it went smoothly and brought much enjoyment to the weary world [Update in 2022: the 2021 Santa Tracker broadcast had over 40 unique IP addresses streaming accumulated over the course of the ~37-hour broadcast].

Jordan, this wonderful.  There are no children or grandchildren at my home this Christmas, but I’m getting immense enjoyment out of these continuing updates on where Santa has been spotted!

We enjoyed the Santa status bulletins at the AWA Museum today. It broke the “quiet” at the museum whenever the M15 started up with a new bulletin. There was one “little one” there today and she seemed impressed when her father read the latest Santa status.

The path is now laid to continue this yearly tradition as long as I am able. I hope that it will one day be emblazoned into currently young minds, embedded such that one day they will look back and remember fondly the old Christmas tradition of excitedly waiting for Santa updates in front of dad’s or grandpa’s or Uncle Roo’s old teletype and experience that yearning of nostalgia for simpler times, with this yearly broadcast being a part of those times.

Much like how the salty old teletype navigators today look back and remember the golden age of teletypery, once dominating the world of communications but now relegated to museums and curiosities at fairs, perhaps one day some few can look back on this period as another golden age, however minor its reach actually is in comparison to the previous century.

TTBN SANTA TRACKER 2019-12-25 04:15 MST

YET ANOTHER CHRISTMAS EVE DELIVERY TRIP FOR THE LEGENDARY SAINT NICK
HAS BEEN COMPLETED SUCCESSFULLY.

TO ALL THOSE WHO MAY HAVE CAUGHT A GLIMPSE OF HIM THIS YEAR, REMEMBER
HE IS NEVER CAUGHT UNAWARES. IF YOU HAVE SEEN HIM, IT IS BECAUSE HE
ALLOWED YOU TO SEE HIM. TO THOSE WHO WERE NOT FORTUNATE ENOUGH TO
WITNESS THE MAN OF MYTH AND LEGEND, KEEP A WEATHER EYE OPEN NEXT YEAR,
FOR YOUR TIME MAY COME. WHILE HE HAS TO TRAVEL ON AVERAGE SOMEWHERE
BETWEEN THE SPEED OF A SPACECRAFT AND THE SPEED OF LIGHT, HE DOES
SOMETIMES SLOW DOWN TO MORE COMPREHENSIBLE SPEEDS AS ILLUSTRATED IN
THESE REPORTS.

THANK YOU FOR JOINING US IN 2019 TO TRACK SANTA AROUND THE WORLD. FROM
THE DESERT IN THE EVERLASTING HILLS, MAY YOUR CHRISTMAS BE VERY MERRY
WITH POIGNANT MEMORIES CREATED WITH FAMILY AND FRIENDS, AND MAY YOUR
HOPES AND VENTURES IN THE NEW YEAR BE INDOMITABLE.