Portfolio

Smalltalk & Object-Oriented Languages

Virtual machines that run Smalltalk on platforms it was never ported to. Tools that inspect and validate the images those virtual machines load. An implementation of Prograph, the visual dataflow language.

Virtual machines

Interpreters written from the object memory up, verified against the reference implementations rather than against my own expectations.

smalltalk80-2026

Runs the 1983 Xerox Smalltalk-80 virtual image on macOS, Mac Catalyst, Linux and Windows. It boots to the desktop on all four. The virtual machine core is ported from dbanay/Smalltalk under MIT. This project adds the platform abstraction, the four frontends, the endian-aware image loader and packaging. Every platform reproduces the Xerox trace2 boot prefix — 499 bytecodes — exactly.

AI-built: I wrote none of this code C++ ★ 3

iospharo

A Pharo Smalltalk virtual machine for iOS and Mac Catalyst. The interpreter runs stock Pharo 13 and 14 images with no just-in-time compiler, because iOS does not permit one. It passes 13,040 of 13,053 Pharo tests on Mac Catalyst (99.90%) and 99.55% on the iOS Simulator.

AI-built: I wrote none of this code C++ Objective-C Swift ★ 14

st80-images

A public mirror of the 1983 Xerox virtual image, its sources file, and the trace2 and trace3 reference traces. smalltalk80-2026 fetches these files at run time, so you need no GitHub account to build it.

AI-built: I wrote none of this code Data

droidpharo

A Pharo virtual machine for Android built from the iospharo sources. It loads images and draws the GUI, but typical Android processors run the interpreter too slowly to be pleasant, so work stopped.

AI-built: I wrote none of this code C Kotlin unmaintained

Image tooling

Everything here exists because a Smalltalk image is a live object graph. A corrupt one fails in ways a stack trace will not explain.

validate_smalltalk_image

A standalone validator for Spur-format images from Pharo, Squeak and Cuis. It checks heap integrity, class tables, methods and object reachability. It writes per-object SHA-256 manifests, class hierarchy trees and reference graphs.

AI-built: I wrote none of this code C++ ★ 2

Prograph — visual dataflow

A reimplementation of Prograph, the early-1990s language where you draw the program as nodes and wires rather than as text.

Smalltalk on a platform that does not want it

Getting a Smalltalk image onto iOS, into CI, or through a validation gate is mostly a systems problem rather than a Smalltalk one: no JIT, no display, no tolerance for a corrupt object graph. If that is the wall you are at, I have been through it.

Get in touch