<?xml version="1.0"?>
<rss version="0.91">
  <channel>
    <title>Squeak People diary for Craig</title>
    <description>Squeak People diary for Craig</description>
    <link>http://people.squeakfoundation.org/person/Craig/</link>
    <item>
      <title>17 Dec 2005</title>
      <pubDate>Sat, 17 Dec 2005 00:06:17 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=9</link>
      <description>Spoon 1a12 or later is available:

&lt;p&gt; &lt;a href=&quot;http://netjam.org/spoon/releases/current&quot; &gt;http://netjam.org/spoon/releases/current&lt;/a&gt;

</description>
    </item>
    <item>
      <title>17 Oct 2005</title>
      <pubDate>Mon, 17 Oct 2005 07:04:24 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=8</link>
      <description>Check out this &lt;a href=&quot;http://netjam.org/spoon/viz/movie&quot; target=&quot;_blank&quot; &gt;movie of a running snapshot&lt;/a&gt;, this &lt;a href=&quot;http://netjam.org/spoon/viz/browser&quot; target=&quot;_blank&quot; &gt;screenshot of an object memory browser&lt;/a&gt;, and this  &lt;a href=&quot;http://netjam.org/spoon/viz/current&quot; target=&quot;_blank&quot; &gt;rendering of the current object memory at startup&lt;/a&gt;.

&lt;p&gt; 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.

&lt;p&gt; 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 &lt;a
href=&quot;http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html&quot;&gt;Squeak virtual machine simulator&lt;/a&gt; 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.

&lt;p&gt; 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 &lt;a href=&quot;http://netjam.org/spoon/viz/movie&quot; target=&quot;_blank&quot; &gt;movie&lt;/a&gt;.

&lt;p&gt; 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 &lt;a href=&quot;http://netjam.org/spoon/viz/browser&quot; target=&quot;_blank&quot; &gt;screenshot&lt;/a&gt;.

&lt;p&gt; I think this stuff gives new meaning to the old jargon phrase &quot;smalltalk image&quot;. :)
</description>
    </item>
    <item>
      <title>11 Oct 2005</title>
      <pubDate>Tue, 11 Oct 2005 20:35:00 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=7</link>
      <description>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&amp;lt;&amp;lt;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 &lt;a href=&quot;http://netjam.org/spoon/space.txt&quot; &gt;the current tally&lt;/a&gt;). Also see &lt;a href=&quot;http://netjam.org/spoon/classesToRemove.txt&quot; &gt;the list of classes I plan to remove&lt;/a&gt;. Suggestions welcome!</description>
    </item>
    <item>
      <title>7 Oct 2005</title>
      <pubDate>Fri, 07 Oct 2005 19:42:57 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=6</link>
      <description>I'm using &lt;a href=&quot;http://netjam.org/spoon&quot; &gt;Spoon&lt;/a&gt; to write a dynamic interactive fiction system called Quoth. I've made a &lt;a href=&quot;http://netjam.org/quoth&quot; &gt;Quoth site&lt;/a&gt;, featuring a &lt;a href=&quot;http://netjam.org/quoth/demo&quot; &gt;short demo movie&lt;/a&gt;, showing it being used for &quot;&lt;a href=&quot;http://toplap.org &quot; &gt;musical livecoding&lt;/a&gt;&quot;. It's rather fun!

&lt;p&gt; I'm preparing a release, to be delivered via Naiad, Spoon's module system.

</description>
    </item>
    <item>
      <title>7 Oct 2005</title>
      <pubDate>Fri, 07 Oct 2005 06:09:53 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=5</link>
      <description>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 :).

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; 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 &quot;snapshot&quot; 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.

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; 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.

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; 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. :)

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; 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 &lt;a href=&quot;http://netjam.org/spoon/screenshots/browser.gif&quot; &gt;an unexciting screenshot of a remote browser&lt;/a&gt;. The remote debugger works well, too.

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; 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 &lt;a href=&quot;http://netjam.org/spoon/space.txt&quot; &gt;my latest space tally&lt;/a&gt;. Visit it again later to see my progress. :)</description>
    </item>
    <item>
      <title>3 Oct 2005</title>
      <pubDate>Mon, 03 Oct 2005 23:03:50 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=4</link>
      <description>Okay, it looks like I'm starting a new minimal object memory. It's just easier than trying to get the latest tricky Naiad bits into it without Naiad. :)

&lt;p&gt; So. I'm starting from the same working snapshot that I've been using since August 2002, when I stubbornly declared that the next time I moved between snapshots would be when I had a minimal one. That would be Squeak 3.2 (as opposed to 2.2, the vintage of the &quot;mini&quot; image of Dan's that I started from last time, in the hope that I could take advantage of Dan's prior shrinking work).

&lt;p&gt; This time through the ordeal, I plan to make a few running notes here.</description>
    </item>
    <item>
      <title>17 Apr 2004</title>
      <pubDate>Sat, 17 Apr 2004 02:59:07 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=3</link>
      <description>I'm preparing a presentation about &lt;a href=&quot;http://netjam.org/spoon&quot; &gt;Spoon&lt;/a&gt; for the upcoming &lt;a href=&quot;http://www.smalltalksolutions.com&quot; &gt;Smalltalk Solutions&lt;/a&gt; conference (Seattle, 3-5 May). I'm fleshing out the summary, and would be happy for some feedback! It's at &lt;a href=&quot;http://netjam.org/spoon/slides/summary&quot; &gt;http://netjam.org/spoon/slides/summary&lt;/a&gt;.</description>
    </item>
    <item>
      <title>11 Apr 2004</title>
      <pubDate>Sun, 11 Apr 2004 02:46:25 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=2</link>
      <description>Getting lots of &quot;touched behavior&quot; automatically transferred from the kitchen-sink snapshot to Spoon modules in a smaller snapshot (see &lt;a href=&quot;http://alpha.hosting-dns.net/pipermail/squat_netjam.org/2004-April/000053.html&quot; &gt;this Spoon progress note&lt;/a&gt;).</description>
    </item>
    <item>
      <title>16 Feb 2004</title>
      <pubDate>Mon, 16 Feb 2004 11:49:17 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=1</link>
      <description>Last Saturday I made the &lt;a href=&quot;http://netjam.org/squat/releases/current&quot; &gt;first public release of Squat&lt;/a&gt;!</description>
    </item>
    <item>
      <title>29 Nov 2003</title>
      <pubDate>Sat, 29 Nov 2003 07:30:22 -0700</pubDate>
      <link>http://people.squeakfoundation.org/person/Craig/diary.html?start=0</link>
      <description>Created account. No dancing llamas appeared. Will keep vigilant lookout.</description>
    </item>
  </channel>
</rss>
