Communication Breakdown

The relationship between ancient and modern telegraphy through the lens of information technology

Megan OBryan
4 min readMar 8, 2020

Let’s start from the beginning. To convey messages people started communicating through speech and pictures. Once ideas could be mapped to sounds and visuals (i.e. words have meanings), they could be mapped to anything. This carved a path to conveying ideas over long distances.

Signals were used for defensive purposes first in ancient China and by Native Americans in the form of signal fires and drum beats to convey brief ideas.

Then came Polybius. Polybius, being Greek, used an alphabet, which enabled him to use a Polybius square to map letters to smoke signals to convey an unlimited number of ideas telegraphically. This is true telegraphy, as any message can be communicated when encoding messages from their base form — letters, or more accurately graphemes — to a transmittable message.

A Polybius Square using the English alphabet compared to the original Greek. Quickly typed up in Google Sheets by me.

In modern times, we use telegraphy all the time. How? The internet. We utilize our computer’s ability to decode encoded messages even offline, but telegraphy happens when we communicate across devices.

Computers and all digital technologies hold information via electrical signals. These can be high or low signals which translate to a series of on-off or 1–0 “bits” (AKA binary digits). Just like a number that we’re used to (like 435 for instance) is represented by a series of digits, a series of digits¹ translates — or rather encodes — into an ASCII (or Unicode) value which can be translated into a character in a “string” which is any sort of text value — like the text in this article for instance!

Code to convert numbers into and out of the base 10 number system in python. The first two functions are helper functions.

Alright, that could’ve been confusing. Trying step by step looks something like this.

Someone starts typing a string like “Hello there!”

First, you input ‘H’².

Then the computer translates the keyboard button you pressed into the ASCII numerical representation of the key you pressed, ‘H’. This number is 72. Just kidding! The computer uses binary, so it processes the letter ‘H’ to be represented as 0b01001000³.

A chart of ASCII characters as displayed on https://ascii.cl/

If we’re gonna out the letter in a text box does it matter how it’s represented? Well since we want to see the history of inputs on the screen, we have to store the data somewhere. In fact, computers need to store information to do pretty much anything with that information, including processing. Information relevant to input/output and processing and other relevant data is stored in “primary storage,” making it easily accessible (and RAM), unlike secondary storage — how we usually think of memory.

Finally, we output the ‘H’ to the screen! It’s a little more complicated because ‘H’ is a series of pixels that change with things like font, color, background color, etc. but that’s beyond the scope of this article.

Now, following the steps for the other characters, we have a string! In some languages for a string to be stored in a variable, there has to be a special ending character called a null terminator. This is usually added automatically.

Now for the fun part. You send this to your tinder match. It goes over the internet, but how? Information gets encoded even further in something called a packet. Packets are chunks of information that have certain protocols that tell the recipient’s computer how to read it. You get a packet back when your match replies “General Kenobi!” and find true love.

Going back to the storage part. You may have noticed every character has 8 bits to represent it. Is there an easier way?

Here’s another history lesson: David Huffman was a Sc.D. student at MIT when his professor gave the option to get out of taking a final by writing a term paper on the most efficient way to encode something in binary. Because of this challenge, he created what is now known as a Huffman tree.

In the simplest terms, a Huffman tree is a binary tree in which any path (usually denoted by 1s and 0s rather than left and right like a standard binary tree) is totally unique. This means once you see some sequence (can be simply “1” or something like “0000001”), you can be sure you’ve found your letter. It’s much easier to demonstrate.

Generally, you’ll take the things you want to encode and sort them by the most common values. The most common will have the shortest paths and thus be the easiest to encode and decode. This is great! Common graphemes like the letter ‘e’ take up 1 bit instead of 8! What could be wrong?

Check out GeeksforGeeks’ video about Huffman Coding

Well, there’s a lot of nuances here that we haven’t gotten into. ASCII and especially Unicode store quite a few characters more than just the alphabet in uppercase. Even if we did have such a small set of characters, how would we store them? Memory allocation depends on data type and just because it can be represented in a small number of bits doesn’t mean it can easily be stored in a small number of bits in a manageable way. You might notice that the tree isn’t very balanced. Taking into account all the other characters that need to be represented, this unbalance will quickly take more bits than it did use ASCII!

If you’re interested in learning more about telegraphy and information technology, I’d recommend checking out Khan Academy’s courses on the topic.

¹ we use “base 10” because there are 10 digits available to represent numbers. Why? Because we can easily count on our fingers (AKA digits)!

² in some programming languages strings are surrounded by double quotes and characters with single quotes

³ sometimes binary is denoted by adding 0b to the front of a binary representation of a number

--

--