ANIMAL’s feature Artist’s Notebook asks artists to show us their original “idea sketch” next to a finished artwork or project. This week, Lebanon-born Brooklyn-based artist Ramsey Nasser talks about his Arabic programming language artwork قلب .
Arabic programming languages with the honest goal of bringing coding to a non-Latin culture have been attempted in the past, but have failed without exception. What makes my piece قلب different is that its primary purpose was to illustrate how impossible coding in anything but English has become. The process behind making it makes this very explicit.
After I realized that all modern programming was done in American English, I put together a mockup to get a sense of what Arabic code might even look like, and that became the first sketch of the project.
I translated some Ruby code literally into Arabic, flipping alignment and the directions of operators as needed. Code is almost never displayed uncolored to aid in readability, so I colored the Arabic text manually to simulate the syntax highlighting of a real language. At once, the text took on the identity of computer code, which was jarring to see in an incredible way. I made sure that syntax highlighting remained a part of the project every step of the way.
At this point, the language was still called صلاح الدين, or Salah ed-Din after the founder of the Ayyubid Dynasty. While a famed Muslim ruler, Salah ed-Din was a Kurd, not an Arab, a distinction even modern Arab politicians often miss. Naming an Arabic programming language after a non-Arab ruler was something of a joke, my good friend and artist Haitham Ennasr let me know that it wasn’t that funny.
The current name قلب means Heart, but is actually a recursive acronym for قلب: لغة برمجة pronounced ‘alb: lughat barmajeh meaning Heart: A Programming Language. Acronyms in Arabic are generally difficult to pull off, and قلب is the first recursive one I have seen. Recursive acronyms – acronyms where the initial letter stands for the acronym itself – are common in computer science humor. PHP stands for PHP: Hypertext Processor, GNU stands for GNU’s not Unix, and so on. قلب’s name connects it to that tradition of software engineering names.
Through the conversations I was fortunate to have at Eyebeam as a Fellow, the language grew. I realized the kind of punctuation that mainstream languages depend on are very disorienting set against Arabic. Curly braces, semicolons, commas, and the like would have to go.
I settled on a syntax based on the Lisp family of languages, which use nested sets of parentheses exclusively as their syntax. Lisp is also one of the oldest language families in programming, dating back to the late 50s, and modern language still lack much of the expressive power Lisp had way back when. Modern variant exist and vary in usage and popularity, too. I liked using Lisp as a base because it connected قلب to the history of computer science in a very real way. The preceding code is Hello World.
Thinking on the traditions of Arabic cultures and computer science is fine, but it was important that I make the damned thing work, and that was a nightmare. At every single step of the way, every software tool you would use to build a language breaks horribly when encountering non-Latin text. They all expect text encoded as ASCII, which is the standard that includes lowercase and capitol Latin characters, numbers, punctuation, and that’s about it. Anything else needs considerably more effort to support consistently. The preceding screenshot shows a version of my interpreter choking on Arabic text and vomiting it out as percent-delimited code points.
git, the tool that I use to reason about the history of my code and detect changes over time cannot deal with Arabic.
Arabic file and folder names are not really an option in the bash terminal, the low level tool coders often use to manipulate programs.
Attempting to print out Arabic characters to the terminal doesn’t come close to actually looking like Arabic, but then also causes permanent change to the rendering of the window.
GitHub didn’t like the name I picked for my language. This is the name of the repository to this day: https://github.com/nasser/—
After a point, it felt like engineering performance art to even go on.
The Arabs have a rich tradition of calligraphy and poetry attached to the text of their language. Computer scientists have a strangely similar relationship with the text that they write as well, and that overlap was something I became fascinated with.
The preceding code is the traditional implementation of the Fibonacci sequence algorithm. It generates a sequence of number known as the Fibonacci sequence, the purpose of which is irrelevant. It is taught to young computer scientists as an illustration of recursion, the notion that code can refer back to itself to form a self-referential loop. It also comes up in demos of new programming languages as proof that the language supports the necessary machinations for the algorithm. There are other algorithms that can do this, but Fibonacci is used out of tradition, and I think that is beautiful.
I wanted to celebrate this and other algorithms by building large scale tile calligraphy pieces out of them – applying the traditions of the Arabs to the traditional texts of computer science. Regarding the code as poetry and conforming strictly to the Square Kufic style, I designed by hand the tile arrangement for the قلب implementations Fibonacci, Hello World, and Conway’s Game of Life.
The preceding image is the digital mockup of the Fibonacci algorithm piece. It starts at the lower right hand corner and reads left, then up, then right, then down, the text looping back on itself the way the algorithm does. The red tiles highlight the variable ن, using Square Kufic colors in a form of syntax highlighting. The traditional implementation is actually simplified and wastes a lot of space in memory to remain simple, so this piece mimics that by wasting a lot of space in the center as well.
I had never done a tile calligraphy piece before, so I was jumping in blind. Building it took three sleepless days, over three thousand tiles, and the help of my friend Brendan Berg. I fucked up and had to redo the glue in a few places. When it was finished, it was large, heavy, and impossible to move. This abstract algorithm had such physical presence. I was covered in glue, sleep deprived, and humbled by the whole thing.
The experience building the piece was an unexpected echo of the difficulties learning code itself. I remember trying to wrap my head around Fibonacci in school, and how a thing could possibly refer to itself and what the hell that even meant. It took days and many false starts. Everything in code does, and I am happy that the construction of the calligraphy piece did justice to the experience of learning to program.
قلب is still usable at http://qlb-repl.herokuapp.com/
RAMSEY NASSER, قلب
Ramsay Nasser has just finished teaching a class at ITP on designing programming languages and will be doing and will be doing LMCC residency in the late summer/fall with Kaho Abe, Ida Benedetto and Christian Howard.
Previous Artist’s Notebook selects:
Artist’s Notebook: Ann Hirsch
Artist’s Notebook: Am Schmidt
Artist’s Notebook: Rhett Jones
Artist’s Notebook: Clement Valla
Artist’s Notebook: Parker Shipp
Artist’s Notebook: Brenna Murphy
Artist’s Notebook: Rafaël Rozendaal
Artist’s Notebook: Adam Ferriss
Artist’s Notebook: Daniel Temkin
Artist’s Notebook: Rick Silva
Artist’s Notebook: Nicolas Sassoon