Hi all,

James Ladd here. Some of you may remember me from Redline Smalltalk, a
Smalltalk

for the JVM, years back. I've been away from the community for a while, but

Smalltalk has crept back into what I'm building, and I'd like to share it
with

people who'll understand why that makes me happy.




I've been building Taskriz, a way for AI agents to ask people things:
approve an

invoice, pick a delivery date, send a photo. Instead of sending text, the
agent

sends Smalltalk source that builds a small UI. The source arrives on the

person's phone or computer, gets evaluated in a sandbox, and a button sends
the

answer back. For example:




  | colour |

  colour := SegmentedControlMorph new label: 'Colour';


    segments: #('Red' 'Green' 'Blue'); selected: 'Green'.

  ScreenMorph new title: 'Favourite Colour';


    addMorph: (ListMorph new style: #insetGrouped; addMorph: colour;
yourself);

    ...



The Morphs are modelled on Pharo's Morphic, which will be obvious from the
addMorph:s and yourselfs.

The big difference is that they don't draw themselves.

The morph tree is turned into a UI description, and each platform renders
it natively: in a browser, in a terminal, and in iPhone and Android apps.

The set of Morphs follows Apple's UIKit (a Morph per control) rather than
Pharo's, so that the result feels native on a phone.


To be clear about what it isn't: there's no image, no IDE and no bytecode.

It's a small interpreter written in Dart and compiled to WebAssembly
(WasmGC).

It reads source into message sends and interprets them, and most of the
kernel is written in Smalltalk.

It's a long way from Pharo, but it's been a joy to see an AI agent write
cascades.


Things I'd genuinely like this list's opinion on:


- The Morph API. I've stuck close to Pharo's Morphic idioms so that it
feels familiar. Would Spec's style have been a better model for UIs
described once and rendered in many places?


- Liveness. Dropping "everything is live and draws itself" was the price of
native rendering. Has anyone here tried something similar, such as Morphic
as a description that gets rendered elsewhere, and what did you miss?


- Pharo as the agent. The agent side is a plain JSON API, so a Pharo image
could send requests and get answers back with Zinc. If anyone fancies
trying that, I'd love to hear how it goes, and I'll help.


If you want to look closer, the developer docs and more examples are at
https://www.taskriz.com/developers/ and every Morph is live at
https://www.taskriz.com/morphcatalog/


Thanks for reading. It's good to be back among Smalltalkers.


- James

Reply via email to