Computer drawing in air, showing the earth, with the words Drew's website on top

HomeProjectsNewsletterEventsInterviewsEphemeraCV

Scientific: PublicationsPresentationsCHEEREIOGithubGoogle Scholar

Interdisciplinary: BooksWritingGamesMusic

The JoyceScript programming language: a tortured technologial tribute to Ulysses

When I was a college first-year, some friends and I wrote up notes for an esoteric interpreted computer programming language based on James Joyce's novel Ulysses. Leopold Bloom acted as a pointer who wandered a 1D "tape" memory/command structure, representing Dublin. The arrangement of eight objects in his pockets represented 8-bit data, which could be manipultated with bitwise operators; items could also be dropped on the tape and returned to the pockets using a stack data structure. As a result, the language should be Turing-complete (though I haven't written the proof); however, a variety of "features" based on the novel make programming in the language near-impossible.

Movement operators for the Leopold Bloom pointer

JoyceScript programs are written like a csv file, with each entry in the 1D tape offering instructions for the pointer (Leopold Bloom). The first line of the program should consist solely of a number, giving the size of the Dublin strip. After the one-line header, the interpreter will read each line as a basic 1-D comma separated value file. The pointer begins in the left corner and wanders the tape following instructions, manipulating the program in the process.

Bitwise pocket operators

The Bloom pointer does bitwise operations based on the items in his pockets. The items correspond with place values in an 8-bit number.

Stack operators

Tape manipulation

Control operators

Comments

If the pointer cannot read a command in the tape, it will interpret it as a comment and continue moving in the current direction of travel.

Loading data into the pocket state

If a number has been pushed into the stack from Bloom or has been read from an ungirdled space on the strip, it will be NOT NECESSARILY BE RELOADED THE SAME WAY into the pocket state. As in the case when a simple number or character is inputted, either from the user or from the strip, the pockets will be arranged with the highest value 1 bit being recognized by the kidney, and so on down the order of objects.

STREAM-OF-CONSCIOUSNESS REQUIREMENT

No cells may consist of only whitespace. Every single space in the Dublin tape must have at least some text, even if it is gibberish. Failure to comply will result in the program ascending to heaven, accompanied with the error message ABBA! ADONAI! AND THEY BEHELD THE PROGRAM BEN BLOOM ELIJAH AMID CLOUDS OF ANGELS ASCEND TO THE GLORY OF THE BRIGHTNESS AT AN ANGLE OF FORTYFIVE DEGREES OVER DONOHOES IN LITTLE GREEN STREET LIKE A SHOT OFF A SHOVEL.

POLITENESS REQUIREMENT

At least 10% of the strip values must read “PLEASE”. Otherwise the interpreter will not work, as you have been rude. Failure to comply results in the output error PROGRAM IS TIRED OF HAVING TO BEG FROM THESE SWINE! This is, of course, a tribute to INTERCAL.

However, if more than 25% of the values are PLEASE the interpreter also won’t run, as you are getting a little obnoxious. Failure to comply results in the output error AND THE LAST WE SAW OF THE BLOODY PROGRAMMER WAS THE BLOODY CAR ROUNDING THE CORNER AND OLD SHEEPSFACE ON IT GESTICULATING AND THE BLOODY MONGREL AFTER IT WITH HIS LUGS BACK FOR ALL HE WAS BLOODY WELL WORTH TO TEAR HIM LIMB FROM LIMB

OPTIMAL MOLLY BLOOM INTERACTION

The interpreter will run faster with each inclusion of the phrase “yes I said yes I will Yes” in up to 10% of the cells, at which point it will begin to run slower with each superfluous addition. Inclusion of less or more than the optimum number of “yes I said yes I will Yes” will result in the output warning WARNING, SUBOPTIMAL PROCESSING. THE CHASTE SPOUSE OF LEOPOLD IS SHE: MARION OF THE BOUNTIFUL BOSOMS followed by the output of the program.

THE IMPORTANCE OF BLOOMIAN POLITICS

It’s a tumultuous time for Ireland. In order to satisfy the nationalist wing, please include the phrase “the constitutional agitation of Charles Stewart Parnell” in at least 5% of the strip cells. N.b. the Citizen! counts towards this total of nationalist cells. Failure to comply results in the output error ILL WRING THE NECK OF ANY FUCKER SAYS A WORD AGAINST MY FUCKING KING, as loyalists have taken control of the interpreter.

Additionally, to prevent a loyalist reaction, all nationalist cells must be offset by Bloomian cells. These read “a nation is the same people living in the same place”. If there are more nationalist cells than Bloomian cells, the output error PROGRAM CANNOT EXECUTE WHILE FIGHTING A JUST WAR will result, as nationalists like the Citizen are now in control.

N.b. if there are more Bloomian cells than nationalist cells (or vice versa) the program will enter a state of rebellion. Perfect equilibrium is required.

AVOIDING OUTPUT IN ROMAN NUMERALS

In a misguided tribute to INTERCAL, begob and chrystomos both will default to outputting their data as roman numerals, not as characters or arabic numerals. The inclusion of the phrase “Eh? Rome boose for the Bloom toff” in exactly one strip cell will avoid this unfortunate output format.

FILE FORMAT

Each program file should be saved with the .joyce file extension. Failure to do so will result in the unhelpful error message I DON’T KNOW WHO I AM ANYMORE.

THE RANDOM OCCURANCE OF FATAL ERRORS

In 1 in 10 runs of the JoyceScript will result in a fatal runtime error, denoted by the error message ARRRRRGHHHHHHHHHHH FATAL RUNTIME ERROR I REPEAT FATAL RUNTIME ERROR. I HEAR YOU SAY ONIONS? BLOO? CADGES ADS. PHOTOS PAPLI, BY ALL THATS GORGEOUS. PLAY LOW, PARDNER. SLIDE. BONSOIR LA COMPAGNIE. AND SNARES OF THE POXFIEND. FATAL FATAL RUNTIME ERROR ARRRRRRRRGGGGGHHHHH. Your .joyce file will then be overwritten with the entire text of the novel Ulysses. For this reason, it is advised that you make a copy of your program before running and store it out of reach of children.

OBSCENITY LAW

Obscenities in the Dublin tape are recommended, nay encouraged! It was illegal to send many of the best JoyceScript programs through the US Postal Service in the 1920s.

UNITS

All units of acceleration are given in furlongs per fortnight squared. Weights are given in troy ounces. Only units of dry volume are allowed, with the exception of the British pint.

MISCELLANEOUS