HN user

xpointer

167 karma
Posts9
Comments19
View on HN

Hi, I'm the author. Esoteric.codes is my blog on esolangs in general; the book is a collection of my esolangs in particular.

Also just to note that e.c had been on hold while I focused on the book, but I'm working on new posts, so please send anything new esolang-related my way!

More specifically, The Humble Programmer is about "professionalizing" programming. In the '50s and '60s, programmers justified clever tricks due to the strict constraints of early machines. Dijsktra is saying enough already with that, we need to move to a neutral style and favor clarity above all else, so programmers can understand others' work. Esolangs, which often annihilate readability, give an excuse to show off technical feats that aren't justified in mainstream code, a return to the "Wild West" (as Backus put it) or early computing.

I favored the flexibility of ordering concurrent notes differently in MIDI over having the sheet music uniquely define a program. It gives the programmer more choices in how notes can be combined.

But there could be a default ordering -- I would think reading a chord from bottom to top -- for a piece of music where the score came first and the MIDI representation or performance of that score second.

I first made the language (fifteen years ago!) out of curiosity about esolangs and as a first try at writing a compiler. And for fun, yes. Since then, I've written more about multicoding -- the way two readings of code impact each other -- and thought more about the music that results (some links in my comment below). This is the aspect of the language that interests me now.

I chose MIDI since it's a standard and leaves to the programmer the choice of tool to compose the program. There's an IDE in the works geared for live performance of the language (that will not be MIDI, but not ready to say yet how it will work; it has the same lexicon but is quite a different language in practice).

It's funny you link to Piet; I began Velato by asking what would Piet be as music. Some programs are instantly recognizable as Piet while others are hardly recognizable as such; the language has its own aesthetic and yet programmers bring their own style to its set of visual constraints, all through fairly basic rules. In Velato, all notes are read in relation to a root note that can change between commands, even in the middle of a single chord. That was meant to allow for more choice in how a programmer constructs a piece of music.

Years later I interviewed David Morgan-Mar about Piet and his other languages https://esoteric.codes/blog/david-morgan-mar and wrote about the concept of multicoding, where a single text has readings in two systems that shape each other (an image and code, music and code etc) https://esoteric.codes/blog/chef-multicoding-esolang-aesthet...

In 2009, I made Velato, an esolang where code is written in pitch values (https://github.com/rottytooth/Velato) encoded as MIDI files. So sort of the opposite of writing algorithmic music (where the human programmer writes music to satisfy conditions of the program). Before switching to LilyPond, I'd used GUIDO with a GUIDO-to-MIDI generator, but it was always awkward. Part of the challenge is that notes can be sounded simultaneously to make the score work better musically, but still need to appear in the correct sequence in the MIDI file for the program to succeed; something that LilyPond handles correctly. There's a transparency to how LilyPond functions that is not always there with programs that try to be "helpful" and clean-up or rearrange information.

I see the more creative esolangs like this as beautiful and strange to think and code in; a formal play on language design. Not everything needs to be practical or a learning experience.