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:
Spoon 1a12 or later is available: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!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. :)
This person has certified others as follows:
- Craig certified water as Journeyer
- Craig certified KenCausey as Journeyer
- Craig certified rowledge as Master
- Craig certified Jecel as Journeyer
- Craig certified avi as Master
- Craig certified cdegroot as Journeyer
- Craig certified MarcusDenker as Journeyer
- Craig certified ducasse as Journeyer
- Craig certified julian as Journeyer
- Craig certified BertFreudenberg as Master
- Craig certified schwa as Journeyer
- Craig certified hylander as Journeyer
- Craig certified TedK as Master
- Craig certified NedKonz as Master
- Craig certified gokr as Master
- Craig certified JohnMcIntosh as Master
- Craig certified luciano as Journeyer
- Craig certified edoneel as Journeyer
- Craig certified ohshima as Master
- Craig certified spair as Master
- Craig certified BrentPinkney as Apprentice
- Craig certified cwp as Journeyer
- Craig certified aleReimondo as Journeyer
- Craig certified mas as Journeyer
- Craig certified AdamSpitz as Journeyer
- Craig certified dvf as Master
- Craig certified peter as Apprentice
- Craig certified bkv as Journeyer
- Craig certified dway as Master
- Craig certified efc as Journeyer
- Craig certified gcorriga as Journeyer
- Craig certified brad as Journeyer
- Craig certified gera as Journeyer
- Craig certified tapple as Apprentice
Others have certified this person as follows:
- KenCausey certified Craig as Master
- water certified Craig as Master
- DiegoGomezDeck certified Craig as Journeyer
- avi certified Craig as Master
- rowledge certified Craig as Master
- edgardec certified Craig as Master
- cdegroot certified Craig as Master
- GermanArduino certified Craig as Master
- AndreasRaab certified Craig as Journeyer
- rga certified Craig as Master
- BertFreudenberg certified Craig as Master
- asparagi certified Craig as Master
- elvislives certified Craig as Master
- bkv certified Craig as Master
- Jecel certified Craig as Master
- gaelli certified Craig as Master
- schwa certified Craig as Master
- NedKonz certified Craig as Master
- mas certified Craig as Master
- julian certified Craig as Master
- dway certified Craig as Master
- ragnar certified Craig as Master
- laton13 certified Craig as Master
- RomainRobbes certified Craig as Master
- gokr certified Craig as Master
- grepninja certified Craig as Master
- mds certified Craig as Master
- dwight certified Craig as Master
- humasect certified Craig as Master
- iho certified Craig as Master
- maf certified Craig as Master
- msh certified Craig as Master
- gcorriga certified Craig as Master
- Ozzard certified Craig as Master
- Chronos certified Craig as Master
- tonyg certified Craig as Master
- ron certified Craig as Master
- SergeStinckwich certified Craig as Master
- tansel certified Craig as Master
- LantzR certified Craig as Master
- FrankShearar certified Craig as Journeyer
- gera certified Craig as Master
- noha certified Craig as Master
- RalphJohnson certified Craig as Master
- mivsek certified Craig as Master
- grt certified Craig as Master
- tapple certified Craig as Master
[ Certification disabled because you're not logged in. ]
[ Home | Articles | Login/Account | People | Projects ]