Michael Homer

@mwh
52 Followers
91 Following
35 Posts
I make programming languages & user interfaces at Victoria University of Wellington
Websitehttps://michael.homer.nz/
GitHubhttps://github.com/mwh
Useful to nobody: generate accurate Windows 3.x dither patterns for any colour in your browser. https://mwh.nz/dither/
Home

Today I'm (remotely) at PX'23, where in about six hours I'll be talking about my recent work Multiple-Representation Visual Compositional Dataflow Programming. A lot of user development is fundamentally dataflow based, which can be tricky to express or understand: can we allow combining textual concatenative, direct-manipulation 2D, and graph representations of dataflow within the same program? The same function at different times? How can we match their idea of the task? https://mwh.nz/pubs/px2023
Multiple-Representation Visual Compositional Dataflow Programming

Many tasks that end users want to accomplish with a computer program are fundamentally data-flow transformations, and both visual and textual programming systems have been created to fill this need, but these are often inflexible, unapproachable, or cumbersome, satisfying a niche at one stage of the process but limited at others. An approach that suits one part of the program, or one time in its development, may be confounding at another, but the user is stuck with both the constructive and obstructive aspects of a tool’s chosen paradigm throughout. Much of this difficulty can be removed by enabling the cohabitation of multiple editing paradigms in a single program for the user to choose how to tackle the current point in the process - and change their mind. We present a new data-flow programming environment where the same program, or parts of the same program, can be viewed and edited as linear text, a node-and-wire graph representation, or a two-dimensional grid layout, and the correspondence between these representations is made clear through a continuous visual identity for each part of the program.

Michael Homer
Abstract 2/2: All of this difficulty can be avoided with a notation that presents both the functions and their operands simultaneously, which can also ease editing by making available values and functions directly apparent. This paper presents a two-dimensional notation for these programs, comprising alternating rows of functions and operands with arguments and return values indicated by physical layout, and a tool for interactive live editing of programs in this notation.
Abstract 1/2: Concatenative languages use implicit argument passing to provide a concise expression of programs comprising many composed transformation functions. However, they are sometimes regarded as “write-only” languages because understanding code requires mentally simulating the manipulations of the argument stack to identify where values are produced and consumed.
Interleaved 2D Notation for Concatenative Programs. https://mwh.nz/pubs/paint2022 I am presenting this in PAINT later today. Programs are laid out in a grid of alternating rows of function and stack value cells, functions stretched below their arguments. PDF: https://mwh.nz/pdf/paint2022
Interleaved 2D Notation for Concatenative Programming

Concatenative languages use implicit argument passing to provide a concise expression of programs comprising many composed transformation functions. However, they are sometimes regarded as “write-only” languages because understanding code requires mentally simulating the manipulations of the argument stack to identify where values are produced and consumed. All of this difficulty can be avoided with a notation that presents both the functions and their operands simultaneously, which can also ease editing by making available values and functions directly apparent. This paper presents a two-dimensional notation for these programs, comprising alternating rows of functions and operands with arguments and return values indicated by physical layout, and a tool for interactive live editing of programs in this notation.

Michael Homer

An experimental visual dataflow programming language I made, in PX this year.

https://michael.homer.nz/Publications/PX2022