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)
The Unix Binary wants to be a Smalltalk Method, Not an Object
(Update 2025-05-13: I see a lot of traffic! I recently got part of Squeak By Example's SBECrossMorph>>horBar working, see this github repo. I also developed the ideas into an Onward! Essays submission.) Much of the appearance of commitments in programming comes from how programming systems live within the Unix Paradigm. It's very fruitful to flit … Continue reading The Unix Binary wants to be a Smalltalk Method, Not an Object
The Commitments-As-Contracts School of PL Philosophy
(Previously in this series: Isn't late-binding inevitable?) The history of all hitherto existing programming is a history of commitments that are now obsolete. Why does programming suck? Why can't we have nice things? This could be designated as the central question of Programming Hamartiology, i.e. the origin of Sin in the world of programming. My … Continue reading The Commitments-As-Contracts School of PL Philosophy