Prototype 1

Proto-poegram

Proto-poegram

I presented a sample program/poem (poegram?), which is a web page split in half with code on the left and output on the right. Talking one-on-one with a few people, I let them look it over for a few seconds before talking through the poegram step-by-step, explaining what my intentions were and what decisions I made.

People were generally super supportive and encouraging about the prototype! Most people didn't have much programming experience, so I think it was a little overwhelming with all the things I was trying to explain to them.

Esha

Thomas

Max

I also got to talk to Elizabeth, who gave positive feedback and also asked how I could think about or clarify who my intended audience was. I originally thought "writers", vaguely, whether they do or don't have programming experience. But after more reflection and discussion, I think I want this to appeal more to people like me who do have programming experience but want to see what other possibilities there might be for the emotional experience of computing. I want to subvert or play with those existing expectations by focusing on the quirks of the language in contrast other languages.

I think this will be fine for an esoteric language that has to be learned and gradually appreciated in depth, but I do also want it to be accessible and for there to be a lot of help along the steep learning curve. I think the fill-in-the-blank/mad-libs suggestions are super helpful. I definitely want to incorporate a lot of suggestions in my editor that can provide pathways forward through exploring the language. Or, for more of the exhibition aspect, I can configure the examples so that certain fields are editable to certain limited values.

Prototype 2

Proto-poegram 2, depicting the palimpsest feature.

Proto-poegram 2, depicting the palimpsest feature.

The printout from my calculator program.

The printout from my calculator program.

I presented two things for the prototype session today: my working calculator program and my second proto-poegram. I explained to Jay, Max, and Jose how the program works so far.

First, it parses all the tokens inputted. Taking the first token, 1, as an example, the type is NUMBER, the lexeme is 1, and the literal object is 1.0, as this language parses all languages as doubles (numbers with decimals). The next token, +, is parsed into a token with type PLUS, lexeme +, and no literal object, as it's a character token instead of an identifier, string, or number. A few lines down, after the program has parsed all the tokens, it prints a representation of the abstract syntax tree, or AST, that has been built out of the given expression. This is a litmus test for me to check that the parser is working correctly and obeying my rules of precedence and order of operations. As expected, the multiplication happens first, then the division, and finally the addition. Finally, on the last line, it has evaluated each of the nested expressions and produced the final result, which is 2.5.

My second proto-poegram is a prototype of a potential feature I want to implement, which is the palimpsest feature. A palimpsest is a parchment on which writing has faded over time and new writing is written on top of those traces. Borrowing from that idea, I want to be able to have variables retain their history, so that every time you redefine a variable, it remembers its previous states and you can view that in the output.

I wasn't sure if I wanted to show the calculator program, as I don't need feedback for it at the moment, but it turns out that I was really excited to talk about it, and other people were really interested in learning about how it worked. Jay (and later Katie) and I had some discussion about how mind-boggling it is to write a programming language… using a programming language.