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

Timely as ever, I have released an MS-DOS shareware game in 2025: https://mhomer.itch.io/cromavor

A turn-based quick territorial acquisition game, it runs under DOSBox and it should also be playable in-browser at https://mwh.nz/dos/cromavor

Cromavor by mhomer

Turn-based territorial game for DOS

itch.io
Fast & Easy ASTs for Flexible Embedded Interpreters, in MPLR this week. A format encoding ASTs into text that is simultaneously valid as code in languages from Java to Haskell to Excel, allowing programs — or parsers, typecheckers, and libraries — to be serialised and run under a simple interpreter in that language. https://mwh.nz/pubs/mplr25 PDF: https://mwh.nz/pdf/mplr25 Live demo: https://mwh.nz/demos/mplr2025 (generate freestanding Java, Haskell, Javascript programs embedding a program as an AST)
Fast & Easy ASTs for Flexible Embedded Interpreters

Self-hosted software language systems need to bootstrap core components such as data structure libraries, parsers, type checkers, or even compilers. Bytecode interpreters can load byte code files, while image-based systems can load in images of entire systems — Emacs, for example, does both. Bootstrapping is more of a problem, however, for traditional AST-based systems, especially when they must be portable across multiple host systems and languages. In this short paper, we demonstrate how abstract syntax trees can quickly and easily be incorporated into the source code of an embedded interpreter. Our key insight is that a carefully engineered format enables textually identical ASTs to be valid across a wide spectrum of contemporary programming languages. This means languages can be self-hosted with very little bootstrapping infrastructure: only the host interpreter or compiler and a minimal default library, while the rest of the system is imported as ASTs. This paper outlines our technique, and analyses the engineering design tradeoffs required to make it work in practice. We validate our design by describing our experience supporting the on-going development of GraceKit, which shares a single Grace parser across host language implementations from Java and JavaScript to Haskell and Swift and to Grace itself, and even more eccentric languages like Excel.

Michael Homer

Not sure how to go about it? Questions about how to present what you’ve done, whether it’s in scope, or how to tie in with existing work? We are hosting drop-in LIVE office hours this week

- Thursday, June 19, 2025, 0100 – 0300  UTC
- Thursday, June 19, 2025, 1800  – 2000  UTC

Details at https://liveprog.org/#resources

Workshop on Live Programming (LIVE)

The 12th Workshop on Live Programming (LIVE 2026) will take place online. LIVE invites submissions of ideas for improving the immediacy, usability, and learnability of programming.

Not sure how to go about it? Questions about how to present what you’ve done, whether it’s in scope, or how to tie in with existing work? We are hosting drop-in LIVE office hours this week

- Thursday, June 19, 2025, 0100 – 0300  UTC
- Thursday, June 19, 2025, 1800  – 2000  UTC

Details at https://liveprog.org/#resources

Workshop on Live Programming (LIVE)

The 12th Workshop on Live Programming (LIVE 2026) will take place online. LIVE invites submissions of ideas for improving the immediacy, usability, and learnability of programming.

Are you working to make programming more direct, tangible, and alive?

Share your work at LIVE, the world's premier gathering on live
programming!

LIVE welcomes submissions from academia, industry, and individuals. Call for submissions and more details on https://liveprog.org/ - submissions due by July 21st.

Workshop on Live Programming (LIVE)

The 12th Workshop on Live Programming (LIVE 2026) will take place online. LIVE invites submissions of ideas for improving the immediacy, usability, and learnability of programming.

Useful to nobody: generate accurate Windows 3.x dither patterns for any colour in your browser. https://mwh.nz/dither/
Home

We (@qualmist and I) invite you to explore our experimental visual programming environment (which takes place in a dungeon)

Features
- dissolve the bounds of decision and explore all possibilities at once
- use sigillic incantations, delve into recursive caverns

https://vezwork.github.io/drostes-lair-post/

An invitation into Droste's Lair

A swords-and-sorcery programming environment for building and counting mathematical structures

There's a new FoC bonus episode where I talk a lot about visual programming. A lot a lot. Jimmy is there too; but the important thing is visual programming, lots.

Oh yeah, a (good) paper by @mwh makes an appearance ^.^

dig dig

https://www.patreon.com/posts/reclaiming-in-116972445

Next week I will be at SPLASH in Pasadena and presenting my work at Onward! about variety in visual programming systems. I'll also be at LIVE, PAINT, and the unconference on Saturday. https://mwh.nz/pubs/onward2024
Reclaiming the Unexplored in Hybrid Visual Programming

Programming languages have been trapped in a world of linear textual representations fundamentally unchanged for half a century. Even systems pushing beyond these forms — visual languages, projectional language workbenches, and end-user programming tools — largely ape the strictures of stream-of-bytes compilers and confine themselves to the popular paradigms of conventional textual systems. Instead of recreating what succeeded in textual paradigms, new programming systems should also be exploring what did not—the confounding, confusing, convoluted approaches that fell by the wayside—with the sorts of direct manipula tion, spatial connection, and change over time that textual languages could never match; and they should use their control of presentation to let the user choose the right representation for a piece of code in the moment—and change it. We argue that these two points unlock new frontiers for programming systems, and present preliminary explorations to highlight how multiple-representation environments can lower the pressure on more speculative visual paradigms, to encourage more investigation of this underexamined space.

Michael Homer
This morning my PhD student Philip Oliver successfully defended his thesis “Investigating Configurations for Automated Crash Reproduction in JavaScript” in a very clean oral exam. The examiners were happy with Philip's thorough, well-structured, and well-presented thesis, and the knowledge of his research and beyond demonstrated in answering questions, and after some very minor revisions the thesis will be deposited in the University library shortly. Congratulations to the soon-to-be Dr Oliver!