SqueakMap shaping up...

Göran Hultgren goran.hultgren at bluefish.se
Wed Aug 14 18:37:48 UTC 2002


Hi all!

Quoting Craig Latta <craig.latta at netjam.org>:
> Hi Göran--
> 
> 	You write:
> 
> > > This is a very important tool for us all - I am simply amazed at
> > > the low amount of feedback sofar. Don't you all see the importance
> > > of this tool?
> 
> 	Ned responds:
> 
> > Sure; at least for me, it seemed like things were still somewhat in
> > flux. Not to mention that I've been busy and/or gone recently.
> 
> 	Yeah, there are other explanations for the small amount of feedback.
> :)  I'm very interested in the topic, but have had higher priorities up
> to this point. Even now, about all I can do is write this message. :) 
> I
> have been reading the messages, though.

Good enough! :-)
 
> 	While I'm here, some thoughts:
> 
> -	I think you have interesting ideas; following them through to a
> working system would be great.

Just a matter of days. I am releaseing what I have got tomorrow and hopefully by
tomorrow evening it will be ready for beta testing.

> -	Instead of using files to communicate changes, I'd rather use a
> system
> which mediated a live conversation between two systems (an updated one
> and a to-be-updated one). A "synchronizer" of sorts. The only "files" I
> want to download are the snapshot and the VM. :)

This is actually what it does! The code you need locally for this stuff to
integrate with Squeak only depends on vanilla 3.2 and will come as one single
simple cs. It will hopefully get included in the base since it does not affect
much anything and is very small.

Essentially what the slave map does when you synch is it calls using HTTP an url
at the master (at sqf typically or a mirror of it) with it's last known
transaction number as an urlencoded argument.

The server responds by fast searching backwards in its logfile copying the
recorded transactions from the log and then gzipping them together and returning
them. This is fast - gzipping is the majority of the time spent. You can see
numbers for this at: 

http://marvin.bluefish.se:8000/sm/analyzeupdate

If you want to see how the transactions look you can try this url:

http://marvin.bluefish.se:8000/sm/allupdates

...and compressed:

http://marvin.bluefish.se:8000/sm/allupdatesgz

Normally you would add a transaction number as an argument though.

As you can see the log is simple Smalltalk code!

The slave map then just evaluates this stuff using the Compiler, exact same
technique as the Module files use by the way. And these messages are in turn
logged locally on your machine so even if the image goes BOOM, the slave map can
reload itself from the local log. This also means that you can switch between
images and share the same logfile (but not use them concurrently of course).

> -	My current Squeaky priorities are:
> 	-	a MotorMix driver (for mixing albums, see www.cmlabs.net)
> 	-	a MindStorms driver (to test serial and IR in Flow)
> 	-	modules and other system organization issues
> 	-	a messages browser (mail/news)
> 	-	new text editing behavior
> 	-	survey the state of fonts

Sounds like cool stuff.

> 	cheers,

Cheers, Göran

Göran Hultgren, goran.hultgren at bluefish.se
GSM: +46 70 3933950, http://www.bluefish.se
\"Department of Redundancy department.\" -- ThinkGeek



More information about the Squeak-dev mailing list