Archive for the Context Category
Smalltalk Reflections episode three is up
Posted in Appsterdam, consulting, Context, music, Smalltalk, Spoon with tags context, debugging, gemstone, livecoding, minimalism, modules, naiad, objects, pharo, release, remote messaging, smalltalk, spoon, squeak, virtual machine on 16 December 2014 by Craig LattaContext release 4 alpha 1
Posted in Appsterdam, consulting, Context, Naiad, Smalltalk, Spoon with tags context, minimalism, object-oriented programming, objects, smalltalk, spoon, virtual machine on 9 December 2014 by Craig LattaContext 4 alpha 1 is released. This one fixes loading errors in the welcome page, supports remote debugging and process browsing, and makes Naiad and remote messaging support available as Monticello packages. Thanks in advance for reporting bugs!
a most useful virtual machine debugging aid: simulated objects
Posted in Appsterdam, consulting, Context, Smalltalk, Spoon with tags context, debugging, primitives, smalltalk, spoon, virtual machine, virtual machine simulator on 2 December 2014 by Craig LattaSqueak’s virtual machine simulator is extremely useful for debugging. You can use it to inspect and change objects “while time is stopped”, between the execution of individual virtual machine instructions. Traditionally, though, it takes an address-based view of objects. There are several useful utility methods which, given an object address, will print useful information to the Transcript. Wouldn’t it be nicer, though, if you could use normal inspectors to look through the fields of the objects in a simulated virtual machine’s object memory?
I created simulated objects for this purpose. They are instances of a SimulatedObject class; each one has an interpreter and an address. They can print useful information about themselves, like the interpreter can, but they can also modify themselves and interact with each other, changing the interpreter’s object memory appropriately. Are you wondering about the instructions of a compiled method? Would you like to make a few choice modifications to those instructions? A simulated object for that method’s address will help you.
Simulated objects play nicely with Squeak’s object inspectors, and, more importantly, with its object explorers. You feel like you’re inspecting normal objects, except that you can’t send normal messages to them. Or can you? I’m pondering this. It might be useful, for example, to terminate a process in a simulated interpreter’s object memory, without having to do it in another process. Time is stopped, but perhaps you could queue up messages to send when it starts again, through a collaboration between simulated objects and a coordinating object in the memory they describe.
I’ve been using simulated objects recently to chase references with the absolute assurance that I won’t be creating new ones. They’re very useful for debugging virtual machine primitives. Sometimes, when I’m debugging a headless system with a broken remote messaging system, it’s the only user interface I have for inspecting things. And it’s sure a lot nicer than inspecting things in a C debugger.
What will you do with them?
debugging remote exceptions works
Posted in consulting, Context, Smalltalk, Spoon with tags context, debugging, livecoding, remote messaging, smalltalk, spoon, squeak on 20 November 2014 by Craig LattaI 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.
the IDE app README
Posted in consulting, Context, Naiad, Smalltalk, Spoon with tags smalltalk, spoon on 27 October 2014 by Craig LattaContext 3 beta 5 released
Posted in Context, Uncategorized with tags 3 beta 5, context, modules, naiad, release, smalltalk, spoon, squeak on 4 March 2014 by Craig LattaHi, 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 context, favorite text editor, smalltalk, spoon, squeak, virtual filesystem on 13 January 2014 by Craig LattaI’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 context, modules, naiad, smalltalk, spoon, squeak, web browser, welcome on 10 January 2014 by Craig LattaWhat services should the initial Context filesystem provide?
Posted in Context, Naiad, Smalltalk, Spoon with tags context, minimal, modules, remote browsing, smalltalk, spoon, squeak, virtual filesystem, webdav on 19 December 2013 by Craig LattaThe 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).
Context 3 beta 3 released
Posted in Appsterdam, consulting, Context, Naiad, Smalltalk, Spoon with tags context, release, smalltalk, spoon, squeak 5 on 23 October 2012 by Craig LattaI’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.



