<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Upgrading a Running Squeak Image</title>
	<atom:link href="http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/feed/" rel="self" type="application/rss+xml" />
	<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/</link>
	<description>thoughts on Smalltalk and programming in general...</description>
	<pubDate>Wed, 23 Jul 2008 20:11:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Ramon Leon</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11668</link>
		<dc:creator>Ramon Leon</dc:creator>
		<pubDate>Sat, 01 Mar 2008 06:47:35 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11668</guid>
		<description>Well Scott, sounds like you miss Smalltalk quite a bit.  If it makes you feel better, I think it's coming back, the Seaside community continues to grow and I've never had more fun programming, I won't stop using it any time soon.  Smalltalk does change you, in the OO arena, no other language will do for me.  Oh, and welcome to the blog, lots of stuff to read if you dig back a bit.</description>
		<content:encoded><![CDATA[<p>Well Scott, sounds like you miss Smalltalk quite a bit.  If it makes you feel better, I think it&#8217;s coming back, the Seaside community continues to grow and I&#8217;ve never had more fun programming, I won&#8217;t stop using it any time soon.  Smalltalk does change you, in the OO arena, no other language will do for me.  Oh, and welcome to the blog, lots of stuff to read if you dig back a bit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Herndon</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11660</link>
		<dc:creator>Scott Herndon</dc:creator>
		<pubDate>Sat, 01 Mar 2008 01:06:33 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11660</guid>
		<description>Wow, Smalltalk is still so readable after all these years. Sorry to interrupt. I used to work with Smalltalk from the mid-80s to mid 90's, haven't done any real Smalltalk coding in 6 years or so and it is still as readable as it was back then. I was a real expert and loved the language, even worked for ParcPlace-Digitalk. Then when the great demise came I was caught up with having to feed my family and moved to the dark side and Java. My loss, I can assure you. 

I was reading you code snapshot (still called that?) and I am amazed at how easily I can still read and understand Smalltalk. It is also interesting how some problems are always being resolved. Please, I mean no offense at all, your solution is fine. It just seems that upgrading images is still the same issue it was back then, different circumstances and technology but still the same issue, how to upgrade a running image without bringing down everything to do it. I've looked at Squeak and Seaside a number of times and I am very happy to see that there are still people enthusiasticly learning the right way to code with objects. 

I am currently working with Ruby and Rails, I like Ruby a lot, Rails maybe not so much, but you have to do what customer's want. I am always tempted to go back to Smalltalk. I don't have similar feelings about C or Pascal or Ada or any other language. Perhaps if you ever need a testomial that's one. 

Smalltalk grows on you and some how you know it is the right way to program and you are changed forever. No matter how people try to tell you it is dead, and turn away when you just can't stop talking about how you did this and that in 3 months or prototyped this huge app in a few weeks. I loved the Workspace and interactive coding. And so, one issue with pure OO langs, such as Smalltalk or Ruby is they change the way you go about coding. With Smalltalk you can take bigger risks, because you didn't invest so much. So if some piece of code doesn't feel right you still have time to refactor before things get too complicated. I've written very large and complex systems in my time, and found out the hard way if I abandoned the Smalltalk way. XP all the way. And MVC, I love to remind people how we used to use MVC in Smalltalk back in the 80's especially when I was at Sun. 

That's not to say it is all perfect, but It is easy to change and customize. This is one reason I like Ruby. One reason I don't is it is command line no IDE built-in and the IRB well good is not great. So, if I keep reading your blog and studying your code I might just be pulled in again --- my wife would kill me. Keep up the great work, may the Smalltalk Way live forever.</description>
		<content:encoded><![CDATA[<p>Wow, Smalltalk is still so readable after all these years. Sorry to interrupt. I used to work with Smalltalk from the mid-80s to mid 90&#8217;s, haven&#8217;t done any real Smalltalk coding in 6 years or so and it is still as readable as it was back then. I was a real expert and loved the language, even worked for ParcPlace-Digitalk. Then when the great demise came I was caught up with having to feed my family and moved to the dark side and Java. My loss, I can assure you. </p>
<p>I was reading you code snapshot (still called that?) and I am amazed at how easily I can still read and understand Smalltalk. It is also interesting how some problems are always being resolved. Please, I mean no offense at all, your solution is fine. It just seems that upgrading images is still the same issue it was back then, different circumstances and technology but still the same issue, how to upgrade a running image without bringing down everything to do it. I&#8217;ve looked at Squeak and Seaside a number of times and I am very happy to see that there are still people enthusiasticly learning the right way to code with objects. </p>
<p>I am currently working with Ruby and Rails, I like Ruby a lot, Rails maybe not so much, but you have to do what customer&#8217;s want. I am always tempted to go back to Smalltalk. I don&#8217;t have similar feelings about C or Pascal or Ada or any other language. Perhaps if you ever need a testomial that&#8217;s one. </p>
<p>Smalltalk grows on you and some how you know it is the right way to program and you are changed forever. No matter how people try to tell you it is dead, and turn away when you just can&#8217;t stop talking about how you did this and that in 3 months or prototyped this huge app in a few weeks. I loved the Workspace and interactive coding. And so, one issue with pure OO langs, such as Smalltalk or Ruby is they change the way you go about coding. With Smalltalk you can take bigger risks, because you didn&#8217;t invest so much. So if some piece of code doesn&#8217;t feel right you still have time to refactor before things get too complicated. I&#8217;ve written very large and complex systems in my time, and found out the hard way if I abandoned the Smalltalk way. XP all the way. And MVC, I love to remind people how we used to use MVC in Smalltalk back in the 80&#8217;s especially when I was at Sun. </p>
<p>That&#8217;s not to say it is all perfect, but It is easy to change and customize. This is one reason I like Ruby. One reason I don&#8217;t is it is command line no IDE built-in and the IRB well good is not great. So, if I keep reading your blog and studying your code I might just be pulled in again &#8212; my wife would kill me. Keep up the great work, may the Smalltalk Way live forever.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ramon Leon</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11649</link>
		<dc:creator>Ramon Leon</dc:creator>
		<pubDate>Fri, 29 Feb 2008 15:41:42 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11649</guid>
		<description>You're right, but that's simply a trade off one makes if you want to upgrade the app without taking it down.  Quick bug fixes identified and fixed while dealing with the customer can be immediately pushed out and such responsiveness is very impressive to the customer.  

That an image might take a few extra megs on disk due to active Seaside sessions is of little to no concern to me, I could always just schedule a cron job to create the empty load file at 2am to ensure another image save during low or no load to get back a smaller image.</description>
		<content:encoded><![CDATA[<p>You&#8217;re right, but that&#8217;s simply a trade off one makes if you want to upgrade the app without taking it down.  Quick bug fixes identified and fixed while dealing with the customer can be immediately pushed out and such responsiveness is very impressive to the customer.  </p>
<p>That an image might take a few extra megs on disk due to active Seaside sessions is of little to no concern to me, I could always just schedule a cron job to create the empty load file at 2am to ensure another image save during low or no load to get back a smaller image.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sebastian</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11648</link>
		<dc:creator>Sebastian</dc:creator>
		<pubDate>Fri, 29 Feb 2008 15:06:52 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11648</guid>
		<description>Very interesting post. I just wonder about the save the image part. For deploy I use to set up the last code from a brand new image and the services always start in that state guaranteed. Saving the image will mean N sessions and temporary stuff in the image being saved. If the image being updated happen to be on a significative load at update time, then it could happen to save an image of 80MB or more instead of a fresh one of 37MB.
If housekeeping should be made before saving, I can't think in how to do it without breaking current user sessions.
I think the trade off is take that risk (of trusting in saved images) or to set up a programed maintenance to stop service in an adequate informed moment and quickly do it offline. It also could be automatized to some point.</description>
		<content:encoded><![CDATA[<p>Very interesting post. I just wonder about the save the image part. For deploy I use to set up the last code from a brand new image and the services always start in that state guaranteed. Saving the image will mean N sessions and temporary stuff in the image being saved. If the image being updated happen to be on a significative load at update time, then it could happen to save an image of 80MB or more instead of a fresh one of 37MB.<br />
If housekeeping should be made before saving, I can&#8217;t think in how to do it without breaking current user sessions.<br />
I think the trade off is take that risk (of trusting in saved images) or to set up a programed maintenance to stop service in an adequate informed moment and quickly do it offline. It also could be automatized to some point.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ramon Leon</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11454</link>
		<dc:creator>Ramon Leon</dc:creator>
		<pubDate>Wed, 27 Feb 2008 01:29:23 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11454</guid>
		<description>That's what we were discussing above, the upgrade now runs at a higher priority than Seaside requests, so once it starts, Seaside should be paused by the scheduler until the higher priority upgrade is finished (which normally only takes a few seconds).</description>
		<content:encoded><![CDATA[<p>That&#8217;s what we were discussing above, the upgrade now runs at a higher priority than Seaside requests, so once it starts, Seaside should be paused by the scheduler until the higher priority upgrade is finished (which normally only takes a few seconds).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11447</link>
		<dc:creator>Bill</dc:creator>
		<pubDate>Tue, 26 Feb 2008 23:34:53 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11447</guid>
		<description>Lovely!

Is there some need to temporarily "suspend" active sessions until the load is complete, to avoid callbacks getting executed with a partial set of packages loaded?</description>
		<content:encoded><![CDATA[<p>Lovely!</p>
<p>Is there some need to temporarily &#8220;suspend&#8221; active sessions until the load is complete, to avoid callbacks getting executed with a partial set of packages loaded?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brett Kosinski</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11429</link>
		<dc:creator>Brett Kosinski</dc:creator>
		<pubDate>Tue, 26 Feb 2008 18:24:36 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11429</guid>
		<description>Ah, good point... using Xvnc would require that you have a bunch of X-related trappings installed (client libraries, fonts, etc).  Obviously, you don't actually need to run an X server aside from Xvnc, but all that other stuff is overhead that one might wish to avoid on a production machine.</description>
		<content:encoded><![CDATA[<p>Ah, good point&#8230; using Xvnc would require that you have a bunch of X-related trappings installed (client libraries, fonts, etc).  Obviously, you don&#8217;t actually need to run an X server aside from Xvnc, but all that other stuff is overhead that one might wish to avoid on a production machine.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ramon Leon</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11427</link>
		<dc:creator>Ramon Leon</dc:creator>
		<pubDate>Tue, 26 Feb 2008 17:53:08 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11427</guid>
		<description>@Damien, you're right, I need to run this at a higher priority than Seaside to make sure it works as I expect.  Seaside runs at #userBackgroundPriority so I guess userBackgroundPriority + 1 would ensure requests were paused while code was loading.

@Bret, because I don't run X on my server, it's command line only, I do all management via ssh.</description>
		<content:encoded><![CDATA[<p>@Damien, you&#8217;re right, I need to run this at a higher priority than Seaside to make sure it works as I expect.  Seaside runs at #userBackgroundPriority so I guess userBackgroundPriority + 1 would ensure requests were paused while code was loading.</p>
<p>@Bret, because I don&#8217;t run X on my server, it&#8217;s command line only, I do all management via ssh.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cdrick</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11425</link>
		<dc:creator>cdrick</dc:creator>
		<pubDate>Tue, 26 Feb 2008 16:27:10 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11425</guid>
		<description>"I think I pretty much explained exactly what I do already, there’s not much left but a small handful of lines of code."

Sure, it will be a small post but something good to have and to know (I think) as it's a real practice that increases productivity (or at least increases the developer helpers that squeak is missing) and I found it's in the spirit of your blog... :)

Cédrick</description>
		<content:encoded><![CDATA[<p>&#8220;I think I pretty much explained exactly what I do already, there’s not much left but a small handful of lines of code.&#8221;</p>
<p>Sure, it will be a small post but something good to have and to know (I think) as it&#8217;s a real practice that increases productivity (or at least increases the developer helpers that squeak is missing) and I found it&#8217;s in the spirit of your blog&#8230; :)</p>
<p>Cédrick</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brett Kosinski</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11416</link>
		<dc:creator>Brett Kosinski</dc:creator>
		<pubDate>Tue, 26 Feb 2008 15:00:42 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11416</guid>
		<description>On the topic of VNC, why wouldn't you just run squeak inside an Xvnc instance?  I agree, the Squeak-native VNC server is flakey, and doesn't work with most clients, but a good ol' copy of Xtightvnc works quite nicely, and is how I manage my little seaside image.

Granted, this precludes running on a Windows box (unless someone could hack together a cygwin/X version of the squeak VM, along with a cygwin version of Xvnc), but it works quite nicely.  And in my case, it allows me to work on the running image remotely (it's not a production image, so I just hack away, and revert things if I break something horribly :).</description>
		<content:encoded><![CDATA[<p>On the topic of VNC, why wouldn&#8217;t you just run squeak inside an Xvnc instance?  I agree, the Squeak-native VNC server is flakey, and doesn&#8217;t work with most clients, but a good ol&#8217; copy of Xtightvnc works quite nicely, and is how I manage my little seaside image.</p>
<p>Granted, this precludes running on a Windows box (unless someone could hack together a cygwin/X version of the squeak VM, along with a cygwin version of Xvnc), but it works quite nicely.  And in my case, it allows me to work on the running image remotely (it&#8217;s not a production image, so I just hack away, and revert things if I break something horribly :).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ramon Leon</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11415</link>
		<dc:creator>Ramon Leon</dc:creator>
		<pubDate>Tue, 26 Feb 2008 14:43:18 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11415</guid>
		<description>@Damien, you're right, I don't deal with dependencies because I don't use this for loading new packages and setting up images, I use it for deploying upgrades to existing production images, bug fixes and such.  If I did want to load a new package, I'd simply upload them one at a time in the correct order.

I'm not sure I follow the last part of your question, unless I'm mistaken, Seaside runs at a lower priority so it just hangs tight doing nothing until the package is finished loading.

@Cédrick, I hadn't planned on posting on that but I guess if you're interested maybe others are as well.  I think I pretty much explained exactly what I do already, there's not much left but a small handful of lines of code.</description>
		<content:encoded><![CDATA[<p>@Damien, you&#8217;re right, I don&#8217;t deal with dependencies because I don&#8217;t use this for loading new packages and setting up images, I use it for deploying upgrades to existing production images, bug fixes and such.  If I did want to load a new package, I&#8217;d simply upload them one at a time in the correct order.</p>
<p>I&#8217;m not sure I follow the last part of your question, unless I&#8217;m mistaken, Seaside runs at a lower priority so it just hangs tight doing nothing until the package is finished loading.</p>
<p>@Cédrick, I hadn&#8217;t planned on posting on that but I guess if you&#8217;re interested maybe others are as well.  I think I pretty much explained exactly what I do already, there&#8217;s not much left but a small handful of lines of code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Damien Cassou</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11397</link>
		<dc:creator>Damien Cassou</dc:creator>
		<pubDate>Tue, 26 Feb 2008 10:11:09 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11397</guid>
		<description>Hi Ramon,

it seems you do not deal with package dependencies, you only load mcz in a random order. Moreover, how will the web application react when Monticello has only load part of the new mcz files?</description>
		<content:encoded><![CDATA[<p>Hi Ramon,</p>
<p>it seems you do not deal with package dependencies, you only load mcz in a random order. Moreover, how will the web application react when Monticello has only load part of the new mcz files?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cdrick</title>
		<link>http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11395</link>
		<dc:creator>cdrick</dc:creator>
		<pubDate>Tue, 26 Feb 2008 09:55:52 +0000</pubDate>
		<guid isPermaLink="false">http://onsmalltalk.com/programming/smalltalk/upgrading-a-running-squeak-image/#comment-11395</guid>
		<description>thanks again Ramon...

Is 5s not too often? I'd prefer trigger the watch for changes from a minimal seaside interface. but maybe it's not handy when you use several images. Anyway nice stuff :)

Cédrick

ps: Seeing your last answer on seaside list, I thought you would have made a blog post on image configuration at startup based on profile. I quote you "I keep three
profiles, dev, prod, test, with a file in the root that determines which
profile is used (easily toggled).  Inside the directory for a profile, each
setting is stored in a separate file where the filename is the setting name
and the file contents are the value." I'd love you post on that too :)</description>
		<content:encoded><![CDATA[<p>thanks again Ramon&#8230;</p>
<p>Is 5s not too often? I&#8217;d prefer trigger the watch for changes from a minimal seaside interface. but maybe it&#8217;s not handy when you use several images. Anyway nice stuff :)</p>
<p>Cédrick</p>
<p>ps: Seeing your last answer on seaside list, I thought you would have made a blog post on image configuration at startup based on profile. I quote you &#8220;I keep three<br />
profiles, dev, prod, test, with a file in the root that determines which<br />
profile is used (easily toggled).  Inside the directory for a profile, each<br />
setting is stored in a separate file where the filename is the setting name<br />
and the file contents are the value.&#8221; I&#8217;d love you post on that too :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
