Cooking with Linux

Imaginary Languages

Marcel Gagné

Issue #174, October 2008

Programming languages aren't languages per se. You can't go out into the street and say, “print 'Hello, world!\n';” to passersby without raising the occasional curious eyebrow. In the right crowd, however, that might work as well as boldly proclaiming “naDevvo' yIghos” in a roomful of Klingons. It's all in how you say it and to whom.

François! Our guests will be here any moment, and you are sitting back watching old Star Trek episodes! Yes, I know that the Klingons in the original series look different from how they do now, but why are you watching television when there is work to be done? As much as I enjoy the original series....Quoi? Yes, of course, it is silly to show every alien race as speaking English. It happens in most science fiction and in most fiction, for that matter. Having the characters on television spend weeks or months learning the basics of a language before getting down to action would make for pretty boring television. And, people constantly would have to invent new languages for us to hear. Yes, I know many people speak Klingon, but that's different. We will discuss this later, François. I can see our guests at the door.

Welcome, mes amis, to Chez Marcel. Your tables await, and François was just turning off the television, weren't you mon ami? Please, sit and make yourselves comfortable while my faithful waiter fetches the wine. There's a case of 2006 Cuvée Bacchus Pfaffenheim Gewurztraminer in the cellar's north wing. You remember, François—right next to the ancient Egyptian hieroglyphics tablets.

The world has numerous languages. Some languages are spoken by millions. English, for example, is perhaps the most popular language, spoken by countless billions throughout the galaxy—a little joke, mes amis. Other languages are more obscure, and some, although still spoken, are nearly forgotten or relegated to the pages of history. Then, there are the imaginary languages, which, amazingly, sometimes have a great many speakers—like Pig Latin or Klingon. Originally only a few words invented by Marc Okrand for the 1979 movie Star Trek: The Motion Picture, Klingon now boasts tens of thousands of speakers worldwide. The language is championed by the Klingon Language Institute.

Ah, François, you have returned. Please, pour for our guests. Enjoy, mes amis. This Gewurztraminer is a full-bodied white with deep fruit flavors, a nice floral bouquet and just a hint of spiciness. Don't forget my glass, François.

Where was I? Ah...Klingon is unique in that it originally was an imaginary language. Google, as we all know, runs thousands of Linux servers to do its magic, and in performing those searches, it tries to support as many languages as possible—including Klingon. For a Klingonese Google start page (Figure 1), visit www.google.com/intl/xx-klingon.

Figure 1. Google offers a start page for those who are fluent in Klingon.

If you happen to be among those who speak Klingon, you might want to check out tlhaq, the Klingon clock, at Two Brothers Software (Figure 2). This graphical clock displays the time textually and numerically, using, of course, Klingon characters. Even if you can't speak the language, it's a pretty cool addition to the desktop, worthy of a warrior. Visit tlhaq.twobrotherssoftware.com and download the package.

Figure 2. tlhaq, the Klingon clock—I'm not even going to pretend I know what time it is.

This is a binary distribution, so there's no compilation required. You need the SDL_image and SDL_ttf packages installed on your system, however. Create a directory called tlhaq (or kclock, if you prefer), and extract the tarred and gzipped bundle:

mkdir kclock
cd kclock
tar -xzvf kclock.tar.gz

From that directory, you simply can run the tlhaq binary. When the clock is running, you can use some single keystrokes to modify its behavior. For instance, the S key toggles the text for the seconds on and off. Pressing + or - increases or decreases the font size. Should you find the text difficult to read, press F to switch between different font types (it still will be in Klingon though). If you want tlhaq to remember your settings, press C to save them.

I alluded to the idea that programming languages are, if not imaginary, at least artificial languages. Combining Klingon with programming hasn't escaped some Klingon enthusiasts. For instance, Unicode support for the Klingon language was added to the Linux kernel. Seriously. If you don't already have the Linux kernel source installed on your system, do so, and then check out the included file called /usr/src/linux/Documentation/unicode.txt.

Given this Linux Klingon support, there's var'aq, the Klingon programming language created by Brian Connors. He describes var'aq as “PostScript with a dash of Lisp thrown in”. Hmm...one wonders if Brian has ever worked in a kitchen. A programming language for warriors, var'aq can be downloaded from www.geocities.com/connorbd/varaq. Once you have it, extract the programming source. This is a zip file, which you can extract in the following way:

unzip varaq-current.zip

Once done, change to the varaq directory, and start the interpreter:

perl varaq-engl

You also can start varaq in the native Klingon language version if you happen to speak Klingon:

perl varaq-kling

var'aq is an unforgiving language. As if you would expect otherwise. There is no prompt to provide hints, but var'aq has no trouble telling you when you are wrong. Documentation is provided, so you can start writing your own operating system should you so desire. You might want to start with the classic “Hello world” program, keeping in mind that Klingons don't say hello:

"nuqneH 'u'?" cha' pong

The English version might make a little more sense:

"What do you want, Universe?" disp name

All programming languages, some might argue, are essentially fancy adding machines. On that note, you can use var'aq to discover the nature of the universe:

52 10 boqHa' cha'

This most certainly looks like the right place to take a break and have François refill our glasses. While you enjoy that lovely wine, let me direct you to another imaginary language—one of the very first learned by English-speaking children. Yesay, itway'say igpay atinlay. Pig Latin, as most kids will tell you, is as simple as taking the initial consonant, putting it at the end of the word, and adding ay to it. In that way, Linux becomes Inuxlay and Cooking becomes Ookingcay. Easy, huh? If you want to write large amounts of text in Pig Latin, it can, however, become fairly tedious. Luckily, there's a great little program to help do the job. It's called pig, and it comes with the classic bsdgames package (or bsd-games, in some distributions). To translate large phrases into Pig Latin, simply type pig at the command line, then type the phrase you want translated:

$ pig
Linux is the world's greatest operating system.
Inuxlay isway ethay orldway'say eatestgray
 operatingway ystemsay.

On a similar note, that same package comes with another tool for speaking in tongues. It's called rot13, and this is how you use it:

$ rot13
Linux is cool redefined.
Yvahk vf pbby erqrsvarq.

As it turns out, rot13 is actually a cypher, albeit a very simple one. It takes the letters of a word, such as linux, and changes it by moving 13 letters forward (or backward) in the alphabet. In that way, linux becomes yvahk. To translate from rot13, simply re-enter the encrypted phrase using the same command. If you break the alphabet up into two rows of 13 letters, it's extremely easy to see how rot13 works:

abcdefghijklm
nopqrstuvwxyz

Also in that bsd-games package is a translator for the computer world's most powerful language, acronyms. The program, wtf (which no doubt stands for “What's that frase?”) can help you decipher those strange words you find scattered on IRC and inside instant-message conversations. For example:

$ wtf rotfl
ROTFL: rolling on the floor laughing

Cool, non? Although, it's arguably nowhere near as cool as the greatest imaginary language of all time. I'm talking about mock-Swedish.

The greatest (and funniest) television Chef of all time is without a doubt the Swedish Chef from the legendary Jim Henson's brilliant Muppet Show. If you never have watched the Muppet Show, please, do yourself a huge favor and buy yourself the DVD boxed set. You won't regret it. But, as I have been known to do from time to time, I digress...the Swedish Chef was funny largely in part because of his rather strange form of mock-Swedish—that and his hilarious antics and over-the-top recipes. Nevertheless, many thousands of people have, over the years, attempted to duplicate the language of the Swedish Chef. Now, your Firefox browser can bring the experience to any page you visit.

Firefox is an excellent browser on many counts, but one of its coolest features is the ability to add features and capabilities through a system of add-ons and extensions. Extensions are program enhancements that can change how you work with your browser dramatically. This framework of extensions makes Firefox not only a great browser, but also a superior browser. To experience Firefox extensions, click Tools on the menu bar and select Add-ons.

A window labeled Add-ons appears with a list of buttons to access installed extensions, themes and plugins already on your system. On a fresh install, there usually isn't much here. Most likely, the Get Add-ons button will be highlighted with a selection of recommended add-ons listed in the larger pane below. You can choose to add the recommended extensions, browse through a rather huge list of other extensions, or type something in the search bar to narrow the search. What does all this have to do with the Swedish Chef? Let me tell you.

Type bork in the search box, and press Enter. The dialog should display Anthony Howe's “Bork Bork Bork!” extension along with a description (Figure 3). There's also a nice, friendly button labeled Add to Firefox.

Figure 3. The Firefox Add-ons dialog not only gives you access to installed extensions, but it also lets you search for many others.

When you click that button, a new window appears asking for confirmation before going ahead and installing the extension (Figure 4). There's also a warning about installing malicious software. If you are comfortable with your choice, click the Install Now button.

Figure 4. Do you know where that extension has been? Even so, installing it is merely a click away.

That's it. Once the extension is installed, you'll see a message appear above the description telling you to restart Firefox before the extension actually can take effect. Firefox also provides a handy Restart Firefox button. Once the browser comes back to life, the Add-ons dialog appears once more to confirm that you have indeed installed the “Bork Bork Bork!” extension. Now, when I surf to a Web site, such as www.linuxjournal.com, I can right-click on the page and select View Bork Text from the menu. In a few seconds, my page is translated into something only the Swedish Chef could understand (Figure 5).

Figure 5. Once borked, Web text becomes something only the Swedish Chef could understand.

Another way to bork the text is to click View on the menu bar and select Bork text. To return your browser to a normal view, simply repeat the process and uncheck Bork text.

Sadly, the clock tells us that our time for speaking in various strange tongues is nearly over. Yes, mes amis, it's closing time. If you need to have François refill your glasses, which he will do happily, remember that he only understands English and French. Asking for a refill in Klingon is likely to frighten him. Please, mes amis, raise your glasses, and let us all drink to one another's health. A votre santé! Bon appétit!

Marcel Gagné is an award-winning writer living in Waterloo, Ontario. He is the author of the Moving to Linux series of books from Addison-Wesley. Marcel is also a pilot, a past Top-40 disc jockey, writes science fiction and fantasy, and folds a mean Origami T-Rex. He can be reached via e-mail at marcel@marcelgagne.com. You can discover lots of other things (including great Wine links) from his Web sites at www.marcelgagne.com and www.cookingwithlinux.com.