esoteric.codes
The following are the titles of recent articles syndicated from esoteric.codes
Add this feed to your friends list for news aggregation, or view this feed's syndication information.

LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.

[ << Previous 20 ]
Tuesday, March 30th, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:32 am
Interview with Jon Corbett

Image

Jon Corbett's languages Cree# and Ancestral Code allow programming in Cree keywords using Cree concepts and metaphors. In addition to this language, Corbett's PhD research has led to his Indigenous Coding Framework, a work-in-progress that will help other Indigenous communities bring to computation not only their languages but their cultural logic and values as well. Corbett describes the challenges of this work, from the danger of accidentally including colonial understandings in such a system, to working with technologies that assume programming languages have Roman-character keywords.

» First, for people who are not yet familiar with Cree#, can you describe the how you expect it to be used?

My desired output for this language is graphical based. I originally envisioned it as a kind of “Processing for Indigenous Languages”. Where the output is generative and graphic. The generative aspect is crucial in the representation of the Indigenous worldview, because when the program ends whatever display was generated is destroyed (comes to end of life). And subsequent running of the program – though they may produce similar results will never be graphically identical to any previous execution. This mimics the “real” world equivalent of listening to a story from a storyteller – who might change it slightly each time, so the same story is never the same twice.

Additionally, many Indigenous peoples use their arts and crafts as knowledge and story histories. So being able to create a graphic from story ties the language to a visual archive, and moves the creative process into a digital practice that has the same result.

Read More

Tuesday, March 2nd, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:36 am
Interview with David Madore

Image

David Madore is responsible for one of the best-known and most-confounding esolangs of all time: Unlambda. The language is based on the SKI combinator calculus, a super-minimalist computational system used in the mathematical analysis of algorithms, but considered impractical for coding. In Unlambda everything is a function that takes a single variable, so there are no indicators like ()s to take parameters. Like the SKI calculus, it entirely eschews variables and the lambda indicator, and so is described as lambda-without-the-lambda. If this is entirely new to you, the second half of this post is a nice introduction. Madore, an accomplished mathematician, is also responsible for languages that play at the edges of infinity. His main web presence is his webpage from his undergrad days thirty years ago, which remains a fascinating portrait of the sincerity, optimism, and banalities of the early Web. He is also on Twitter with a handle derived from his engagement with The Hackers' Zen.

Read More

Monday, August 30th, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
10:33 am
Monkey: the satirical Go package used unwittingly by Arduino and SalesForce

Collisions between the personal and the commercial in open-source have become familiar, like when an irate independent developer pulled a widely-used package entirely in 2016 bringing down hundreds of projects. But we don't expect a commercial enterprise to suddenly discover a package they have long relied on forbids any use at all—and does so for a very good reason.

This was the realization for dapr, a “portable, serverless, event-driven runtime,” with 14k stars on GitHub, when an issue was opened last week about its dependency bouk/monkey. Monkey's license, in its entirety, reads:

I do not give anyone permissions to use this tool for any purpose. Don’t use it.

I’m not interested in changing this license. Please don’t ask.

It raises the question: do even corporate entities read the licenses of packages they use? While Dapr was called out, Arduino, SalesForce, and hundreds of other projects also reference Monkey.

Read More

Wednesday, September 22nd, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
7:29 am
Escher Circuits: Using Vision to Perform Computation

In 2008, Mark Changizi, a Sloan-Swartz Fellow in Theoretical Neuroscience at Caltech, noted that the eye can make sense of complex relationships that often mystify the brain.

Our everyday visual perceptions rely upon unfathomably complex computations carried out by tens of billions of neurons across over half our cortex. In spite of this, it does not “feel” like work to see. Our cognitive powers are, in stark contrast, “slow and painful,” and we have great trouble with embarrassingly simple logic tasks. 

Might it be possible to harness our visual computational powers for other tasks, perhaps for tasks cognition finds difficult? 

In other words, could we trick the eye into performing computation? 

Changizi proposed the Escher Circuit, "a special kind of image that amounts to 'visual software' our 'visual hardware' computes" merely through perception.

Escher Circuits work by creating different states corresponding to how the eye resolves ambiguous images. Its core component, the wire, holds a state of 0 when we perceive it as if we are to the right of it; otherwise, it holds a state of 1.


wire

0

1
Tuesday, July 13th, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
10:18 am
Fat Dactyls

Image

If you make a language and are lucky, someone else will write code for it. If you are very lucky, someone else will find uses for it you never intended, or that even challenge the premise of the language.

This is not the same as using the language in an unexpected way. Urban Müller could not have foreseen brainfuck as the bedrock for a Rust-like language or a CPU. But do these projects truly counter brainfuck's premise? I would argue not. Brainfuck appears chaotic but part of its appeal has always been in conquering that chaos, in building efficient algorithms using the language despite the challenge. These projects counter the chaos of brainfuck, but that really is the appeal of brainfuck in the first place, they are simply taking it much further than could have been anticipated. If Müller had wanted brainfuck to be impossible to master, he would have designed the language much differently.

Sometimes, however, a language inspires work that falls very far from the intent of its original designer. Most esolangs, like mainstream programming languages, are open systems and don't dictate how programmers use them. C# offers many features to make structured code easy. But I can also write C# that looks like 80s BASIC wrapped in some standard C# boilerplate:

Read More

Wednesday, August 18th, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
9:20 am
Coding in Indigenous African Languages

Image
A phonebook.yl program in Yorlang

The language Yorlang began like many code projects, with a group of programmers contemplating a what-if.

One evening after work, i was scrolling through the messages in a group chat that i'm in and i read a message by someone talking about how cool it will be to have a programming language in yoruba that can process the command "sope 'hello world' ". So, i thought it was cool and i decided to create a very small language.

With that modest intention in mind, Karounwi Anoulowapo (based in Nigeria) created Yorlang, a JS-like language using keywords drawn from Yoruba. As colleagues requested more features, he kept expanding it until it became a full-fledged language. Other Yoruba-speaking programmers contributed, along with some non-speakers who were excited about a programming language created by and for West Africans.

One of the major contributors to the projects is a guy from the Igbo tribe. He documented the architecture of the code, contributed helper functions to the language, and also made small sample programs using yorlang.

Read More

Thursday, November 12th, 2020
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
7:04 am
Wenyan-lang

ImageThe Wenyan-lang Hello World program reads like this:

吾有一言。曰「「問天地好在。」」。書之。

Even those of us who don't understand the characters can likely recognize it as a form of Natural Language Programming—a programming language whose code mimics prose—in its wordiness and its structure as sentences. In fact, Wenyan is built on its namesake, Classical Chinese (or Wényán), the written form of Chinese used from the 5th century BCE to the early 20th century. Because Wenyan-lang's inventive feature occurs in the nuance and humor of its multicoding between Classical Chinese and code, as a non-reader, I am exploring this language through the insights of others. Yidi Tsao, a Berlin-based artist, curator and writer, explains that the text the Hello World actually prints (you can see it between the quotes 「「 and 」」) translates not to "Hello, World!" but closer to "Greetings to Heaven and Earth."

The humor and poetry in its engagement with Wényán become more clear in longer examples. In the 99 Bottles program below (translated and notated by Tsao), beer is replaced with the more era-appropriate wine:

Read More

Monday, June 21st, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
7:39 am
Interview with Zzo38

Zzo38 is undoubtedly the most prolific of esolangers. In addition to his long list of fully developed esolangs are his unimplemented ideas and experiments. He has been creating languages since 1994 with DZZZZ, a Funge-like language not much younger than Befunge.

» Is there a meaning behind your pseudonym zzo38?

"ZZO" is like "ZZT", which is a DOS-based game engine I have used in the past (and still do). (ZZT wasn't Free software at the time, but it is now.)

The numbers 3 and 8 are from I wanted to decorate a pillow with numbers but those are the only numbers they had.

» Your list on the esolangs wiki of unusual features of languages is fascinating, e.g. how COBOL can change the locations GOTOs point to. Do you draw from these in designing your own languages? What are the most esoteric features you've found in non-esoteric languages? What do you consider the most non-intentionally-esoteric language?

It had been said that PostScript is both esoteric and non-esoteric at the same time. Additionally, I would think PostScript is both general-purpose and domain-specific at the same time, too.

Read More

Thursday, February 4th, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
5:10 am
Interview with 100 Rabbits

Perhaps best known for their esoteric livecoding language ORCΛ, 100 Rabbits (Rekka and Devine) have a creative practice that seamlessly crosses from the esoteric to the practical. Living on a boat and relying primarily on solar energy, they create their own tools to avoid the impracticalities and wastefulness of commercial software. Their work has a rare coherence of thought and design that bridges art, code, and life.

Image

» There is an idealism to many of your projects that reminds me of the early Web or perhaps the Amiga era, with a sense that anything is fair game to be re-thought; from the recipe site grimgrains with its unusual sign to even representations of time and dates with Neralie and Arvelie. *

This extends to the tools you adopt by others, like Plan 9 and Gemini, that are not as widely used or supported but are built on better logical or aesthetic principles.

I'd like to begin by asking you to describe a bit of your creative philosophy and process as a team.

Read More

Tuesday, March 16th, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:44 am
What Programming Language Would Yoko Ono Create?


Secret Piece from Yoko Ono's Grapefruit (1964)

 

“The arts which today have the most vitality for the average person are the things he does not take to be arts” - John Dewey, Art as Experience

Esolangs are experiential works. As has been expressed since the earliest posts of esoteric.codes (reiterated in this twitter thread this morning), we engage with esolangs by writing code in them, which forces us to come to terms with their logic and with the behavior of the virtual machines they define.

This post is not about such languages.

This post is about languages that deliberately frustrate that experience. They make it hard to write code, not as an enticing challenge—like a Tarpit that promises Turing Completeness via strange machinations—but through absolute refusal. This includes languages where nothing is code or everything is, or where code can be written but carries no signification, or that otherwise break down that process of controlling a machine through a text or binary sequence. Many—but not all—are listed as Unusable for Programming on the esolangs wiki, which does not consider languages like brainfuck and Malbolge “unusable” but only (extremely) inconvenient.

Read More

Tuesday, January 5th, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:17 am
xchg rax, rax

Image

Assembly code can appear mysterious to the uninitiated. Aspects of the physical machine abstracted away in higher-level languages are referred to directly in its terse commands.

This chapbook of minimal assembly code poems (its author refers to them as "snippets") offers no solutions, context, or explanations to ease this gap, leaving the work of deciphering to the reader. For xorpd, its pseudonymous author, this is exactly the point: to immerse the reader in the machine level of code.

When working inside a computer, everything is eventually made of assembly, so this is where you go if you really want to understand how things work.

There is no extraneous word of text in the book to break that context. The title, xchg rax, rax, is a NOP instruction (pronounced no-op, for no operation): xchg exchanges the data of two operands, in this case of rax with itself. The author's name, xorpd, is a bitwise logical XOR (exclusive or) of packed double-precision floating-point values.

Read More

Tuesday, January 19th, 2021
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
4:56 am
KFC Mascot Col. Sanders Talks Malbolge Programming on General Hospital—Wait, What?

Image
"It's not his fault he doesn't know mal Bogle" says Col. Sanders

"I was once cursed by a warlock," says Col. Harlan Sanders, in not even his most unhinged piece of dialogue on this General Hospital episode.

Sanders is visiting character Maxie Jones to request she secure his secret recipe (all 11 herbs and spices), which had been threatened by a bomb Sanders himself defused using the classic esolang Malbolge. Unfortunately, this all happens offscreen.

Damian Spinelli, mentioned by Sanders, is a private investigator / hacker who General Hospital's casting describes as a mix between Seth Green and Sean Penn's Spicoli. Spinelli is unable to defuse the bomb, not knowing Malbolge, but Sanders had picked up a little of the Turing Tarpit as one randomly does (apparently without learning how to pronounce it) and saves the (only copy of this?) recipe from being incinerated.

Sanders feels no reservations about then asking Jones to then hide this recipe which has attracted this violence, which she does without question.

The full scene is here in two parts:

Read More

Tuesday, December 1st, 2020
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:23 am
Oak

Image

Oak is a rust-like language built on esoteric-inspired architecture. It was conceived as an alternative to C according to creator Adam McDaniel:

I wanted a language that had all the elegance of C, such as the potential simplicity of the intermediate representation, without all of the things that make C ugly and dangerous. I added stricter type checking rules to prevent simple memory errors, and a lot of the ugliness and difficulty of writing C code went away.

Its tiny back-end, built on experiments with brainfuck, is "infinitely more portable" than C. Even the smallest C compilers, designed for highly constrained environments, have around twice the number of opcodes that Oak relies on.

Oak relies on a series of earlier experiments. Like many who dabble in the esoteric arts, McDaniel began with a brainfuck variation. SMPL, written when McDaniel was in high school (he is only a college freshman now), extends brainfuck by three new commands; each is, of course, represented by a new punctuation symbol:

* Set the pointer equal to the value of the current cell
& Set the pointer back to the value it was before the last *
? With the value of the cell under the pointer, store the address of the first instance of that many consecutive zeros from the left of the tape at the current cell

While most brainfuck extensions run counter to the minimalist constraints that make the language interesting, this was done less with writing SMPL as the end goal, but building a more conventional language on top of it. By adding pointer manipulation of this kind, he could now perform dynamic memory allocation for the language he would write on top, free. He aimed to make free more powerful than brain-lang, which also generates bf but lacks free's type checking and the dynamic memory allocation made possible by SMPL.

Read More

Monday, December 14th, 2020
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:47 am
Turing Paint

Image

An annotated Busy Beaver program in Turing Paint

One doesn't so much write a Turing Paint program as scribble it, preferably in MSPaint.

Think of it as Piet meets the Turing Machine. Where Piet uses colors to indicate commands, it also essentially a Funge, where the instruction pointer is sent left or right, up or down via a command (indicated with a relative change in color). In Turing Paint, those directions are determined by paths marked in black, similar to the lines of an AsciiDots program.

However, the real charm of Turing Paint is in the crudeness of its programs' visual design, where programs can be quickly scribbled doodles, so long as the logic is correct. In fact, the more basic the editing tool, the better: anti-aliasing, on by default in most imaging programs, causes interpreter issues. Turing Paint creator Byron Knoll, a software engineer at Google, suggests writing programs in JSPaint, which simulates MSPaint in the browser.

Read More

Thursday, June 4th, 2020
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
7:07 am
Make Your Hard Drive Infinite With These Three File Systems

Image

Having storage issues? These three file systems make your hard drive virtually limitless.

PingFS

PingFS stores your files on the Internet itself. Each file is split up into chunks of 32 bytes or smaller, small enough to pack into the payload of an ICMP echo request and pings it across the Internet. It picks servers by random. Should the thousands of receiving servers honor these requests, each piece of the file, embedded in a different message, will arrive back at its source, only to then be sent out again. By doing this continuously, all of your data can be kept in motion, going back and forth across the Internet endlessly; it no longer lives on your drive, but now in the ether itself, in endless transmission, giving what amounts to unlimited storage. Its designer, Kelson describes it as "like holding up the clouds by swatting the rain back up."

Pros

  • While not infinite, it will expand your hard drive to the size of the internet. With over a billino websites, and over a zettabyte per year of traffic, all your storage means should be taken care of.
  • True cloud storage: this is the future, don't fight it.
  • If you don't want to support Amazon or Google, here's your non-corporate cloud alternative

Cons

Read More

Wednesday, May 6th, 2020
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:59 am
Interview with Don Woods

Before brainfuck and Befunge, there was INTERCAL. Its revival in 1990 by ESR may mark the beginning of the esolang movement, but the language dates back to 1972, when it was created in a famous late-night session at Princeton by Don Woods and Jim Lyon. The original version INTERCAL (sometimes called INTERCAL 72) is a rich parody with a more chaotic sense of play than its later revivals. Its instructions are deliberately vague and embrace an almost-believable hacker jargon, collected in a straight-faced, well-organized manual. Don Woods not only co-created INTERCAL, but is also noted for Colossal Cave Adventure, and the original version of the Hacker Dictionary: three essential cultural objects of geek culture.

At the bottom of the interview are links to more Woods/INTERCAL resources.

» Part of INTERCAL's charm is its jargon and syntax. For instance, the renaming of punctuation like rabbit ears for " and embrace and bracelet for { and }. While INTERCAL lore puts its creation in a single evening, did it grow out of existing in-jokes with Jim Lyon or others? Where did the impulse to rename things come from, and what did it feel like to create a language with this new set of vocabulary? Do you ever find yourself using INTERCAL jargon?

Read More

Tuesday, June 30th, 2020
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
9:17 am
in:verse

Image

In:verse has a simple premise: a poem that generates an image or animation.

It is a multicoding esolang, meaning its programs have double-readings: in this case, code as poetry. This is in the tradition of Piet (code as image) and Shakespeare (code as play). Unlike those languages, however, in:verse is not for general computing. By avoiding flow-control and recursion entirely, its creator Sukanya Aneja focused the language completely on creating compelling poetry and visuals in a way that both experienced and beginning programmers can engage with.

The simplicity of its command set is important because of in:verse's other unusual feature: its lexicon is unique to each program. In:verse has a static list of commands, but how those commands are called—their actual keywords—varies from program to program through an additional level of indirection. One poem might use the word "love" for tangent, while another poem will use the word "orange" in its place.

This approach is reminiscent of Esopo by Will Hicks; but where Hicks accomplished the variability of expression through many different languages, each finely-tuned for one mode of expression, in:verse leaves the naming to the designer of the individual piece, who essentially creates their own dialect of the larger language.

Read More

Tuesday, June 16th, 2020
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
10:21 am
Esoprogramming and Computational Idealism

Image

Computational idealism is a code aesthetic introduced midway through M. Beatrice Fazi's book Contingent Computation. She describes it as holding "the classical age's concern with the supremacy of simplicity over complexity, of order over chaos, and of unity over parts."

Fazi describes it as a mathematician's aesthetic ideal of harmony and simplicity that sits behind much of what is considered elegant or beautiful in computing.

[C]omputational idealism holds that an equivalence between beauty and truth can be found via logical proof: computational structures are truthful insofar as they are logically consistant; this consistency is beautiful because it adheres to the axiomatic character of computation.

This might sound like it has little to do with esolangs, which do not in particular favor order or simplicity, but is actually a very useful tool to understand classic esoteric coding practices. In fact, Fazi introduces this concept, not with a particularly clever sorting program or other classic algorithm, but with code associated more with mayhem and machine disobedience: Jaromil's Fork Bomb:

Read More

Monday, November 23rd, 2020
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
1:12 pm
Computing with JS's undefined

Why use numbers or true or false in JavaScript when you can just simply use undefined for ALL values?

Image
From reddit's esolang subredit

Let's break down what the above code is doing, and how it all works. JS is loosely typed, meaning values of one type can be used as another (this is called type coercion). Something that is not true or false will adopt a truth value when used in that context. The first example below is comparing a value with the same value, which we expect to be true. What is odd is that adding undefined to the result will then make it false (undefined is "falsey"):

(undefined == undefined) == true                          // undefined is equal to itself
(undefined == undefined + undefined) == false // undefined is falsey, and we've added it to a truth value


Once we have truth values, we can add them together, to get integers:

(true + true) == 2            // equivalent to this below:
(undefined == undefined) + (undefined == undefined) == 2

// the initial assignment to j:
(false + false) == 0 // equivalent to this below:
(undefined == undefined + undefined) + (undefined == undefined + undefined) == 0

// the initial assignment to output:
(false + true) == 1
(undefined == undefined + undefined) + (undefined == undefined) == 1

Keep going down this road and you'll end up recreating JSFuck. :)

Read More

LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
7:05 am
Classical Chinese as a Programming Language

In the previous post, David Branner's insights helped explain the expressiveness of code in Wenyan, a programming language built on Classical Chinese. However, Branner's own research shows parallels between Classical Chinese and programming languages that already exist within the language. Specifically, that "Classical Chinese grammar has approximately the order of formal simplicity of a programming language, rather than that of a natural language."

This unusual feature comes from a fluidity in its parts of speech. In English, we can verbify a noun: "knife" someone or "book" them, etc. Classical Chinese goes much further; there all verbs can be nouns, and nouns, verbs.

The transformational grammar for Classical Chinese is thus very different than that for English. In analyzing an English sentence, we have rewrite rules such as NP→Det N, meaning a noun phrase can be replaced ("rewritten") with a determiner + a noun. Additional rules might give us Det→"the" and N→"person," ultimately resolving our noun phrase to "the person." Because of its fluidity of speech, Classic Chinese adds recursion, with circular patterns like the grouping of V→N and N→V.

Read More

[ << Previous 20 ]

LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.