Under The Hood Of The All-Emoji Programming Language

The odd linguistic challenges you run into when writing a computer language in emoji.

Artist/coder Ramsey Nasser’s latest creation is a programming language written entirely in emoji. It's called Emojinal, and he designed it in collaboration with Addie Wagenknecht, with whom he presented it at the recent Emoji Art and Design Show at Eyebeam last month.

“Emojinal is the next step after قلب,” says Nasser, referring to Alb, the first Arabic programming language, which he created in 2012. Nasser says he's interested in English alternatives for coding because “a programming language based on any human language is alienating; code is not a conversation between you and the machine but rather between yourself and other coders," he says. "It’s an expression of intent that a computer can act on.”

Nasser commented that even in computer coding, “the tools we use carry cultural assumptions from the people that made them.” When Nasser created قلب, he ran into trouble when he tried to translate the words “true” and “false” into Arabic. He ended up using “correct” and “incorrect” instead, and though the concepts did not exactly align, he said it “turned into an amazing conversation that [he] got to have with [his] parents and friends.” Nasser aims at creating universality in coding: “Emojinal is an attempt to step away from cultural baggage.”

Coding in Emoji

Emojinal is a conceptual project, but what does it mean in practical terms when you code in emoticons? Well, Nasser says, “it's funny because it's a set of glyphs not designed for programming. It's incredibly expressive in some parts, but I was so stumped on other things like, how [to] represent a loop or abstract things like the soaring of a value in a variable... emoji is very much about nouns. Programming is very much about things but also very much about verbs and other grammatical constructs.”

To express abstract concepts and verbs, Nasser had to string together emojis to invent emoji “words.” For example, the emoji up arrow means “the Y coordinate” of a dot and the emoji watch followed by the emoji up arrow means the “previous Y coordinate” of a dot. Decisions about how to represent computational concepts in emoji were bounced back and forth between Nasser and Wagenknecht, which Nasser described as an element of the project in which their differences enriched the collaboration. “I have a practical perspective,” he said, “Addie has drafts where she used animals to represent numbers.”

The language is difficult to read and write because, for starters, instead of a standard 105-key keyboard, you’re working with about 860 emojis, which you scroll through to find each one you want. It’s also a stack-based language with very little punctuation. To make matters worse, Nasser explained, “most code is syntax highlighted…that's what makes it readable. You can't really do that with emoji, they're already their own thing. You can’t color them.”

“We do not imagine Emojinal being widely used,” Nasser said; “it’s more a statement than anything else. A statement about what programming without natural languages looks like.”

Where Nasser's Inspiration Comes From

In 2013, Nasser created God.Js with Ivan Safrin and Will Brand, a programming language that explores the similarity between scripture and computer code: that they’re both instructions.

Nasser also creates games, for example, Swordfight in which “the goal is to press your opponent’s action button with your joystick before the same is done to you.” Oh, and your joystick (an original Atari 2600 controller) is strapped to your groin (with a harness for strap-on dildo). Nasser worked with Kurt Bieg at Eyebeam to create the custom circuitry for the game which, when played, looks like a masturbatory gaming-performance-art spectacle.

After completing his BS in computer science at the American University in Beirut--his hometown--Nasser wanted to “do more with code." In the small village where his family spends their summers in Lebanon, the government only provides five to six hours of electricity per day. In search of a way to smuggle in wind generators, Nasser found instructions online for creating a generator from a Pringles tin. It was a lesson plan from Parsons School of Design, where he ended up studying. There he says, he “found that other thing that [he] wanted to do with code.”

As his MFA thesis project at Parsons, he created Zajal, “a language designed to reduce the friction between creative vision and functioning software.” This would come to embody the mission behind much of Nasser’s less conceptual work: creating user experience-oriented languages.

“It has been that engineers build languages and the machines have been central. But designers need to be more involved in it now…Programming languages are like user interfaces to computers to allow people to do interesting things. So people creating languages should be thinking, ‘What do human beings need?’ Languages should be built the way you would design an app: with the semantics that make the most sense to a human being," he says.

Article Tags: emoji