It looks like you're new here. If you want to get involved, click one of these buttons!
Late last year, I began an extended collaborative project of asking ChatGPT/DALL-E to generate images of Star Wars. Well, it wouldn't actually produce Star Wars images due to some loose protections (guardrails) against generating images with known IP -- despite the fact that most of what DALL-E generates has been taken someone's art. Though the system would not produce Star Wars content, when prompted to create images from the fictional scifi franchise Hair Wars, it basically interpreted that as Star Wars. See more about Hair Wars here.
Flash forward to now as the project has grown to include a half dozen artists, who have been contributing images for a few months, including Star Wars and Star Trek (er, Hair Trek) characters performing Critical Code Studies. Take for example these images of Chewbacca (or Chewbucko as he's known in Hair Wars) presenting some Critical Code Studies of WookieScript.
(I should note, Wookiee language in my hands is not a structured language but an amalgamation of groans and moans. Similarly, there is no formal WookieScript. It is just what I'm calling the nonsense code that Dall-E hallucinates for the images.)
In the meantime, Alex Mitchell has been scraping his Bing (which is also Dall-E) generated images of their text, including code. And so it was only appropriate to have ChatGPT design a website, where people can enter code, even total hallucinatory nonsense code, and it will compile that into legal WookieScript. Like so:
5)+-(mQ/gb8v53//-S
=Z*2*02S*(38(Zw-0)()-
v+M+/*)
mAw2)*)B=
)(S*(9(/3K52-//-
Djg1)1hzo*B()(/
Becomes the following WookieScript:
WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE mQ WOOKIE MRRRROWWL WOOKIE gb WOOKIE MRRRROWWL WOOKIE v WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE S WOOKIE =Z WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE S WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE Zw WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE HRRRN WOOKIE HRRRN WOOKIE MRRRROWWL WOOKIE v WOOKIE MRRRROWWL WOOKIE M WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE mAw WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE B= WOOKIE HRRRN WOOKIE HRRRN WOOKIE S WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE K WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE MRRRROWWL WOOKIE Djg WOOKIE MRRRROWWL WOOKIE HRRRN WOOKIE MRRRROWWL WOOKIE hzo WOOKIE MRRRROWWL WOOKIE B WOOKIE HRRRN WOOKIE HRRRN WOOKIE HRRRN WOOKIE MRRRROWWL WOOKIE
To take that a step farther, I prompted ChatGPT to create a script that would convert the WookieScript into a picture of a space battle between ASCII art X-Wing Fighters, Tie-Fighters, and Interceptors, along with a Millennium Falcon. You can use [the WookieScript Compiler here] (https://markcmarino.com/hairwars/wookiedit.html "the WookieScript Compiler here"). The nonsense code is rendered meaningful to fictional wookies and then meaningful to the battle image generator.
I am not sure if this work is a parody of Critical Code Studies or just a marker of the moment when AI is inserting itself into the communication layer of making and reading code. Is this piece an elegy to or a eulogy for creative coding?
Mrrrrrow. Hnn-row. Wookie.
Comments
There have been several esolangs in similar spaces; for example, Ook!, which is an alternative syntax for Brainfuck: https://esolangs.org/wiki/Ook!
I should also note that the Star Wars universe did actually expand on "Wookee", in that there are at least two languages, Shyriiwook and Xaczik. https://starwars.fandom.com/wiki/Wookiee_language
Sadly, unlike Tolkien, I don't believe there was any effort to actually create a coherent language, only a few phrases. In some sense, that work is coming at this same idea from the opposite direction.
@Steve.Klabnik your point that Wookee is (unlike Klingon or Sindarin) not actually a constructed language / conlang seems to fit with the parody aesthetics here.
Re:the images, I feel like the window on easily creating these kind of wild code images may be closing: soon, a new generation of image generation models may seldom if ever contain hallucinated partial characters from imaginary alphabets (a la triple-u from the graffiti true alphabet of Grant Morrison's The Invisibles). Image-embedded text will have been (largely) domesticated.
Re:the script, a script that repetitively spits out combinations of the tokens WOOKIE MRRRROWWL and HRRRN seems to again have less in common with conlangs and more in common with the trope of a limited vocabulary whose meaning is not transcribed, but only tonally inflected by pronouncing the same word in many different ways (as a statement, as a question, sadly, angrily, etc). TVtropes calls this "Pokémon Speak" and collects dozens of examples, including Pikachu (who only says "Pikachu"), Groot (who only says "I am Groot"), Yoshi, the John Malkoviches, Hodor, the Sesame Street Yip-yips, et cetera.
As a parody of communication, that can be a bit uncomfortable, as racist parodies of foreign languages also commonly include performing a grab-bag of 3-5 "weird sounds." But, on the positive side, like the melting text, an imagined tonally inflected form of Wookie (or Groot-ese, or anything really) might escape tokenization. Pokémon Speak can't be systematized by transcriptive computation, because meaning doesn't reside in what you are saying, but in how you are saying it, and that 'how' escapes the character set.
This might lead to read the notional WookieScript (in images and/or text generation) in contradistinction with Cayley's DHQ article on Critical Code Studies in Translingual Contexts.
Yes, I certainly hope my rendering of Wookiee does not read as a racist depiction of barbarian sounds, but instead as an affectionate tribute to the fictional character and the endearing sounds it made in the films. Like Groot-speak, Chewbacca's similar (to my ears) plaintive moans seemed to convey pretty much any sentiment the dialogue called for, made meaningful by Han Solo or C3PO's verbal response in English. The WookieScript language is merely a riff on what appeared in these generated images. I think I was feeling an affinity between the unsystematized Wookiee language of the Star Wars universe and the stochastic hodgepodge of characters generated by this early version of AI image software. It amused me to think that another machine model, ChatGPT, could create code for another system (the "compiler" webpage) that renders the hallucinated image code into something meaningful, as my system generates the ASCII space battle out of the translated WookieScript. It is the software equivalent to Han Solo's dialogue responses to Chewie. It felt like an idea that builds on the activity of feeding the code from images back into the system.
In the Star Trek parody, Hair Trek, I had Dall-E 2* create a piece of code that compliments Captain Khairk's hair.
(Spoiler: we find out this was written by Doctor McCoiffe, the ship's medical officer.)
Then I asked Dall-E to show me what happened to the bridge when the ship's computer processed the code, using text scraped from one of the images in the prompt. Here is the response:
It's a bit silly, but I find it, as First Officer Locks would say, curious how the LLM acts on this nonsense code.
Apologies if this is a bit meandering, but here are some thoughts first on Dall-E and WookieScript code aesthetics and then on Ook! and the possibility of WookieScript becoming an actual esolang.
What does code look like to Dall-E? Some observations... It's sometimes similar to mathematical notation, with exponent-like superscript. Syntax highlighting is essential: code is a multi-colored text. It has a lot of parentheses, although it seems undecided between s-expressions (LISP-style) and something more procedural -- Dall-E code is multiparadigm. Single-quote marks can just show up anywhere.
I'm curious how consistent this is and how it might vary with other AI systems. You mentioned Alex Mitchell, if they've already delved deeper into these questions of hallucinated code aesthetics.
So what about the aesthetics of WookieScript? Here's the beginning of a C# 99 bottles program:
The technical jargon WookieScript swap for growls is very oriented around procedural languages; it looks for function|var|let|const|if|else|for|while|switch|return. If it were more inclined for functional/declarative langauges it might also have cdr, car, defn, def. I like that it finds "confusion or excitement" in numbers as if that is what it finds most compelling.
Do Wookies often (or ever) say the word "Wookie" in the films? Because there's a lot of it in WookieScript. Perhaps Wookies write the word "Wookie" more. But would they write growls? I don't know enough Star Wars lore to understand how their language works.
I like that it consumes code: if you use non-code-like language, its response is plainer (more WOOKIE, less HRRRN). Could it be made reversable (WookieScript back to its input) by having more variations of its sounds? If so, it could become an easily-implementable esolang, what is usually called a "theme language" where one lexicon is swapped out for another but all the commands map to each other (example: the language RockStar where code is written as power ballad lyrics).
Ook!, mentioned by @Steve.Klabnik was one of the first "theme languages." I interviewed its creator, David Morgan-Mar (who also made Whenever, Piet, and Chef), years ago and he called Ook! his "most embarrassing language." At the time, and especially among early esolangers, theme languages were not as respected, especially "brainfuck equivalents" where every command maps to an equivalent command in brainfuck.
But I have a higher opinion of Ook! because, not only is it possibly the first of its kind, but also an early language to play directly with the opacity of code alone. In adopting an existing language's commands, its innovation is purely in the lexicon. Ook! creates a greater distance between the concrete syntax and abstract syntax, obfuscating through vocabulary alone. Here is what this looks like:
To open a loop in brainfuck is
[
. In Ook!, it isOok! Ook?
To close a loop in brainfuck is
]
. In Ook!, it isOok? Ook!
In both languages, only the punctuation has meaning. Yet in Ook!, where the "Ook" word is required, the sheer repetition of Ooks makes the code nearly impossible to read. The symbols of brainfuck are not hard to understand or follow one-by-one, it is in their accumulation that it becomes challenging. It's much easier to remember what
[
vs]
mean thanOok! Ook?
vsOok? Ook!
. It is nearly the smallest change you can make to make brainfuck incomprehensible.Going one step further, if WookieScript were extended to map to all the common keywords across many languages, and be fully reversable -- getting rid of randomness and maintaining a one-to-one relationship with its input, perhaps
HRRN
forlet
andHRRRRRN
fordefine
-- it could become a kind-of growling meta-language that translates back, not to one language, but to many languages, given a large enough set of "technical jargon."@DanielTemkin You have been more generous with my parodic project that I have been in its creation. I love your proposal for a universal translator. I am not sure that's within the scope of my abilities or enthusiasm for this project.
I was more caught up in the absurdity of ingesting whatever code the system hallucinates as though it were meaningful, and perhaps it is on some level, and then translating it into a language that in some ways seems to have an unlimited ability to signify with signs unformalized sounds, as the Wookiee language does not seem to have had the same kind of development process as Na'vi from Avatar (created by one of my former colleagues at USC Paul Frommer) and even the Pakuni language from one of my childhood favorites "Land of the Lost." And then to further have the system take that translated language seriously by generating images out of it (prompted by it) seemed to have a complementarity to the logic of the LLM. In other words,
the LLM says,
"You want code? Oh, right, your code looks like this."
And it spits out stings of mathematical symbols and parentheses with syntax highlighting.
And then my "compiler" says,
"Oh, so that's code. Well, here's what that looks like in my means-anything signifiers."
And it spits out some amalgam of Wookiee sounds with the word Wookie mixed in. (Keeping in mind the compiler was made by an LLM to generate something approximating the WookieScript from the images it generated.)
And then the ASCII art system says,
"Oh, well, that is obviously the tale of this space battle."
And it spits out a deterministically generated image of a nameless space battle.
It leans into this AI moment of symbolic replication and manipulation without comprehension.
It kind of takes me back to the problem I have with the current iteration of the Star Wars franchise under Emperor Mouse, where the logic seems to be, Okay here are the 8 things we call Star Wars: jedis, lightsabers, wookiees, yodas, siths, robots with more personality than the humans, fake Shakespearean gravitas with capes, foundling origin stories and uncertain familial lineage (try not to kiss your sister), space battles. Then, it shakes them all together and rolls them out without much of a coherent vision or concern about overall storytelling quality. Not to be too harsh.
Somehow the logic seems the same to that of LLMs...
I'm more of a Star Trek fan than a Star Wars fan, so I was thrilled to see the Hair Trek contributions.
While it's true that responses from Han or C-3P0 often provide contextual cues that suggest what Chewbacca is saying, C-3P0, a protocol droid who specializes in communication often has trouble reading the room. Threepio's self-doubts and his performative blaming of Artoo mark him as unreliable. Meanwhile, Chewbacca's wordless growls give voice to the often unspoken (or under-verbalized) emotions between Han and Leia. For instance, in Empire Strikes Back, when Han tries to get Leia to admit she cares for him, and she rebuffs him with "I don't know where you get your delusions, laser brains," Chewie chuckles with friendly mockery, which prompts Han's faux-offended line, "Laugh it up, fuzzball," in the sequence that leads to Leia kissing Luke. Lots of parsing errors and emotional stack overflows from the humans who are all speaking Galactic Basic, but this is really a translation issue, not so much a coding issue.
I grew up with the original trilogy, had young children during the prequel trilogy, but only watched each of episodes 7, 8, and 9 once, and was not motivated to rewatch any of them. However, Artoo's secret coded instructions (to deliver Leia's message to Kenobi, which requires him to run away from Luke, and then later to reactive himself when the plot requires him to lead the others to Luke's refuge); BB-8's dilemma (he knows the location of the secret base that Finn claims to know); Bail Organa ordered that C-3P0's memory was wiped -- a rather clumsy way of providing something like continuity since 3P0 witnessed events in episodes 1. 2 and 3 (released from 1999-2008) that he didn't mention or act upon in episodes 4, 5 and 6 (released 1977-1983).
I seem to recall C-3P0's ability to translate a forbidden Sith language was a significant subplot in the Rise of Skywalker. I expect that other parts of the Star Wars universe focused more on exactly how droids are programmed, but the prohibition against Sith languages is a bit like Narnia's Deep Magic -- an operating system limitation that the good guys manage to exploit.