The "Chains of Meanings" tech report (Piumarta 2009) contains a nice application of the OMeta parsing DSL, or perhaps one of its precursors called IS. The task is to compile high-level abstract syntax (concretised as a Lisp Fibonnaci function) to x86 machine instructions. These tech reports, while immensely valuable, are seldom optimised for readability to … Continue reading Notes on “Chains of Meaning in STEPS”
PAINT25 Invited Talk transcript: “Notational Freedom via Self-Raising Diagrams”
(I gave two talks at SPLASH this year. Besides my Onward! Essays submission, I was kindly invited to open the PAINT workshop on Programming Abstractions, Interactive Notations and Tools. Because it was not recorded, and there was no associated paper, I'm posting a lightly edited script here. This is my first iteration of these ideas; … Continue reading PAINT25 Invited Talk transcript: “Notational Freedom via Self-Raising Diagrams”
Substrates ’25 Vision Statement
The following is my vision statement submitted in advance of the Substrates Workshop held in June as part of <Programming> 25, alongside numerous other vision statements from attendees. It's been adapted from the LaTeX with minor referencing edits. Summary What is (and isn't) a substrate? Ontology of state with an authoring tool (PLs automate the … Continue reading Substrates ’25 Vision Statement
Ode to Id (Notes on COLA’s object model), Part N
(Previously: Part 1, Part 2) (EDIT 2025-08-05: formalising all this stuff for a paper made me realise that Id's multi-parent mechanism probably does NOT quite suffice to model Self! Will correct in future, for now, be warned...) Id only makes one assumption about existing objects, which is that each somehow has a binder object ("vtable"). … Continue reading Ode to Id (Notes on COLA’s object model), Part N
Ode to Id (Notes on COLA’s object model), Part 2
So far, we have this: function send(obj, selector, ...args) { const method = bind(obj, selector); return method(obj, ...args); } function bind(obj, selector) { if (selector === 'lookup' && obj === VtableVT) return vtable_lookup; else return send(vtable(obj), 'lookup', selector); } Our as-yet undefined terms are VtableVT, vtable_lookup, and vtable (yes, I'm sticking to the paper's name … Continue reading Ode to Id (Notes on COLA’s object model), Part 2
Ode to Id (Notes on COLA’s object model), Part 1
"Open, Reusable Object Models" (Piumarta & Warth 2006) is my most beloved paper of all time. I discovered STEPS half-way through my final year of undergrad and was immediately enthralled by the vision of programming presented for "COLAs", half of which is described by this small tech report. I remember being impatient to finish my … Continue reading Ode to Id (Notes on COLA’s object model), Part 1
People Whose Research Programmes I May Need To Understand
They said that, after my PhD, I should be an expert in my narrow topic. I suppose that's true, if we're talking about precisely the topic embodied in the dissertation. However, from the additional literature suggested to me during the corrections process, and my freer scope since submitting, I've been humbled to discover just how … Continue reading People Whose Research Programmes I May Need To Understand
Notes on the “late binding” of Virtual Memory, etc.
When a DLL/shared object is loaded into process virtual memory, it competes for space with the process' code and data, so its base address is knowable only at load-time. The DLL has metadata ("relocations") describing the address references in its code, and the loader uses this metadata to go through all these references and patch … Continue reading Notes on the “late binding” of Virtual Memory, etc.
Unix Commitments, Formalised (part 2)
Commitment to a particular syntax/semantics Since my Smalltix epiphany last week I've been having something of an identity crisis. The thing I want is Notational Freedom, in partial fulfillment of the dictum that we can Use The Right Tool For The Job. I notice that something like OMeta is specifically designed to support Syntactic Freedom, … Continue reading Unix Commitments, Formalised (part 2)
Unix Commitments, formalised (part 1)
Consider the basic pipeline of programming under Unix: source code S is compiled into a binary B, which is then loaded into a process R, which then runs for the length of its run time. (Note: this would induce a parallel analysis via the Unix-Smalltalk connection, where method source S is compiled into a CompiledMethod … Continue reading Unix Commitments, formalised (part 1)