Personal info for Craig

This person is currently certified at Master level.

Name: Craig Latta

Homepage: http://netjam.org

Notes: Squeaker since day minus-one, spends today making Squeak smaller and modular (see Spoon). Music composer and performer.

This person is:

Recent diary entries for Craig:
RSS

17 Dec 2005  »

Spoon 1a12 or later is available:

http://netjam.org/spoon/releases/current

17 Oct 2005  »

Check out this movie of a running snapshot, this screenshot of an object memory browser, and this rendering of the current object memory at startup.

When I got the current Spoon snapshot down to about 450 kilobytes, I realized that I could render it as a reasonably-sized picture (within 800 by 600 pixels). I was interested in doing this mostly because I'd never seen a graphical representation of the Smalltalk object memory before. As I proceeded, I found it enabled some pretty useful things.

In Squeak, I made an 8-bit-per-pixel bitmap, put the snapshot bytes into it linearly, and displayed it. It looked like a very peculiar sort of confetti... It wasn't hard to see a few vague patterns, though. I instrumented the Squeak virtual machine simulator so that it would stop every so often to render a picture. I also chose the color of each pixel based on the class of the object of the corresponding byte.

I ran the simulator through the first 3000 instructions a Spoon object memory goes through after resuming, stopping after every 50 instructions to render a picture. (The simulated Spoon system went through its startup routine of reconnecting over the network to a headful system, so that one may browse it via remote messaging.) I put the pictures together into a 30 frames-per-second movie, a new picture every four frames. So here's an example of extreme slow-motion; in the course of two seconds one sees roughly the first eight microseconds of execution time (as measured on my hardware). Here's the movie.

But why just look at the pictures? I changed the normal picture viewer event handler so that when you click on a pixel, a cached simulator tells you more about the object of which the corresponding byte is a part. Coupled with an on-screen magnifying glass, this has turned out to be a valuable tool for finding more objects to delete from the Spoon snapshot. Here's a screenshot.

I think this stuff gives new meaning to the old jargon phrase "smalltalk image". :)

11 Oct 2005 (updated 11 Oct 2005)  »

Things are going well with the new Spoon snapshot. I started by browsing all users of Display, and changing or removing all of them. Morphic took awhile. :) I also got rid of Bitmap and Point, and their entries in the special objects array. I ran into some trouble with obsolete classes not being flushed from Behavior<<ObsoleteSubclasses, and ended up forwarding their identities to garbage. Lots of other stuff is now gone, including ChangeSet, Rectangle, and BitBlt. Currently the system is 12,679 objects and 431,836 bytes (see the current tally). Also see the list of classes I plan to remove. Suggestions welcome!

7 Oct 2005  »

I'm using Spoon to write a dynamic interactive fiction system called Quoth. I've made a Quoth site, featuring a short demo movie, showing it being used for "musical livecoding". It's rather fun!

I'm preparing a release, to be delivered via Naiad, Spoon's module system.

7 Oct 2005 (updated 7 Oct 2005)  »

I copied my day-to-day development snapshot, and removed as much as was convenient by using the local GUI. That got it from 36M to 12M (mostly throwing out the purty background pictures that I had in projects :).

Then I made a remote-messaging connection between it and my original development snapshot. This is implemented as a WormholeServer running on each system; each incoming client, representing the other system, is a Wormhole. Each Wormhole is exposed to the other system as a remote object. I added a "snapshot" method to Wormhole, so that the control system can make a snapshot of the working system by sending a remote message. That method takes care of re-establishing the messaging connection upon system resumption.

Then, from the control system, I terminated the working system's active process, input process, interrupt watcher process, MVC process, and Morphic UI process. I made a snapshot of the working system, and resumed it. The working system reconnected, and I opened a remote system browser on its classes.

The first time I went though this whole thing, I was using two pre-morphic snapshots. This time, since I'm starting from 3.2-vintage systems. I reimplemented my remote tools to play nice with Morphic, MethodReferences, etc. I think they turned out a bit better; this is usually a side-effect of starting over. :)

The remote system browser can do at least the basics: find-class, class-references, browse-method, senders-of-selector, implementors-of-selector, compile-method, remove-method (with confirmation happening on the proper side :), remove-class, remove-class-category, etc. It should be enough to add whatever I forgot. :) Here's an unexciting screenshot of a remote browser. The remote debugger works well, too.

So! Now the real wanton dismantling begins. I think I'm going to proceed by nilling out Display, then chip away at the leaders on successive space tallies. Here's my latest space tally. Visit it again later to see my progress. :)

5 older entries...

This person has certified others as follows:

Others have certified this person as follows:

[ Certification disabled because you're not logged in. ]

[ Home | Articles | Login/Account | People | Projects ]