Archive for context

debugging remote exceptions works

Posted in consulting, Context, Smalltalk, Spoon with tags , , , , , , on 20 November 2014 by Craig Latta
a debugger for a remote unhandled exception

a debugger for a remote unhandled exception

I have debugging working for remote unhandled exceptions. My motivating use case was debugging messages not understood by the Context console’s embedded web server. The console is a headless app. In development, I run it with a remote-messaging connection to a headful system. Now, when there is an unhandled exception (like a message not understood), the exception requests that the headful system open a debugger (as its default action).

Before opening the debugger, the headful system replaces the sender of the first relevant context on the headless system with the last relevant context on the headful system, hiding all the remote-messaging-related contexts in between. The picture above shows an example of this. On the headful system, I sent “zork” to an object on the headless system. The debugger shows a continuous context stack which spans the two systems. This all works with little special handling in the debugger because of the complete transparency of remote messaging. It doesn’t matter that the contexts and methods that the debugger is manipulating happen to be remote.

Context 3 beta 5 released

Posted in Context, Uncategorized with tags , , , , , , , on 4 March 2014 by Craig Latta

Hi, Context 3 beta 5 is released. I’ve still got a bunch of changes pending, for a 3b6 release to follow shortly. This release is just to fix some startup problems on Windows, Linux, and Mac OS. You can also find the Spoon VM changes separated out, in the second “Resources” folder.

What I’d like is for you to just start the app and tell me the results, along with your host platform. Thanks!

current design for Context’s virtual filesystem

Posted in consulting, Context, Naiad, Smalltalk, Spoon with tags , , , , , on 13 January 2014 by Craig Latta

I’m writing Context’s virtual filesystem support now. The directory structure looks like this:

--
root
   classes
      <each class>
         methods
            all
               <each method>
                  literals
                     <literal objects>
                  source
                  version
            inherited
               <inherited methods>
            local
               <locally-defined methods>
         slots
            all
               <each slot>
                  <instances ordered by slot>
                     references
                        <referring objects>
                     slots
                        <etc>
            inherited
               <etc>
            local
               <etc>
   processes
      <each process' suspended context>
         method
            instructions
            literals
               <literal objects>
         sender
            <etc>
   README.html
--

What do you think?

the initial Context webpage

Posted in consulting, Context, Naiad, Smalltalk, Spoon with tags , , , , , , , on 10 January 2014 by Craig Latta

Here’s what you currently see in a web browser when you start a Context system:

the initial Spoon webpage

the initial Spoon webpage

What services should the initial Context filesystem provide?

Posted in Context, Naiad, Smalltalk, Spoon with tags , , , , , , , , on 19 December 2013 by Craig Latta

The Context app is now mountable as a virtual (WebDAV) filesystem. What should it do? It has a file at the top level called “README.html”, which is obvious enough. What should the README describe? What would you want a newcomer to be able to do from their favorite text editor (or their favorite file-aware programming language)? Browse classes and methods? Resume and suspend object memories? Add and remove code modules? Please share your thoughts, keeping in mind that this is meant to be a minimal system (one can always add code modules to it later).

Image

Context 3 beta 3 released

Posted in Appsterdam, consulting, Context, Naiad, Smalltalk, Spoon with tags , , , , on 23 October 2012 by Craig Latta

I’ve released Context 3 beta 3. New in this one:

  • A minimal seed memory in which to grow Squeak 5. This one is 300k and has support for networking and Naiad, but not WebDAV.
  • Minor UI changes to the remote system browser.
  • Fixed launcher AppleScript to use the current paths.
  • Instructions on connecting to the seed, and for browsing/saving it.

a detailed description of Context’s object memory visualization tools

Posted in Appsterdam, consulting, Context, Smalltalk, Spoon with tags , , , , , , , on 22 October 2012 by Craig Latta

direct graphical mapping of the object memory

When I got the current Context 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.

simulator movies

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 Context object memory goes through after resuming, stopping after every 50 instructions to render a picture. (The simulated Context 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).

exploring the space

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 Context snapshot.

Finally, I augmented the simulator to export graphs of all the reference relationships between all the objects in the system. Rummaging around in them in 3D is a lot of fun.

Please feel free to explore the graph data yourself and let me know if you find anything interesting. :) There are 8,628 objects (labelled) and 28,449 connections. It’s in a format for use with the Walrus graph visualizer (a lovely thing!).

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

%d bloggers like this: