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!
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).
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”. :)
Context 3 beta 2 is released. This one includes the development environment memory from the 3 alpha 3 release, startable from the webpage that the app automatically opens. A remote system browser onto the history memory opens automatically. You can also shut down the development environment from the webpage. It should be fairly easy to get into trouble with this release…
Next, I’ll set up a third memory, a minimal environment which will become Squeak 5. I’ll write instructions for creating unit tests for each package in our community, and imprinting the code run by those tests into the minimal memory, thereby creating a module. We can work toward a release where all the packages anyone might want to load are served by some online history memory, with package metadata searchable with Google.
I’ve released Context 3 beta 1. This is another “ignition check” release. On the Mac, the intended sequence of events is:
You double-click on the app.
The app is an AppleScript which starts an embedded Context virtual machine, which resumes a web server. The AppleScript also opens a web browser on the web server’s welcome page.
The welcome page tells you what to do next (but it currently refers to things which don’t exist).
I’m working on the equivalent magic for Microsoft Windows and GNU/Linux for the next release; suggestions welcome.
Please let me know if the startup sequence works for you, and any questions or comments you have. This is an exciting release, because it’s the first one that could be the basis for a self-supporting community.
Well, it took a while to evolve into clarity, but here it is…
You get Context by downloading a ZIP file from the net. You install Context by unzipping the ZIP file and putting the resulting all-in-one app folder where you want it to be. You start Context with a simple platform-dependent gesture (on Mac, you double-click the app).
This starts a history memory. This memory can…
…speak with web browsers. It presents a simple control interface for starting and stopping the other memories in the app (called “subject memories”), and discovering other memories on the net.
…speak with FTEs (Favorite Text Editors). It presents itself as a filesystem via a WebDAV server, so that a person can use their Favorite Text Editor to control the subject memories, edit classes and methods, and evaluate expressions.
…speak with the subject memories, to keep track of their development changes.
…speak with remote memories, to obtain their modules.
This is available in Context 3 alpha 5, which I plan to release in time for the Camp Smalltalk event in Gent, Belgium on 24 August 2012, ahead of the European Smalltalk Users Group conference the next week.