<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Squeak</title>
	<!--<link rel="self" type="text/atom" href=""/>-->
	<link rel="alternate" type="text/html" href="http://planet.squeak.org"/>
	<id></id>
	<updated>2010-07-29T18:00:36+00:00</updated>
	<generator uri="http://www.planetplanet.org/">http://intertwingly.net/code/venus/</generator>

	<entry>
		<title>Andreas Raab: Croquet in Squeak 4.1</title>
		<link rel="alternate" type="text/html" href="http://squeakingalong.wordpress.com/2010/07/29/croquet-in-squeak-4-1/"/>
		<id>http://squeakingalong.wordpress.com/?p=143</id>
		<updated>2010-07-29T05:06:51+00:00</updated>
		<content type="html">&lt;p&gt;Wow! Looks like the Cobalt folks have been making huge headway with moving Croquet forward to Squeak 4.1. &lt;a href=&quot;http://nsuslovi.blogspot.com/&quot;&gt;Nikolay Suslov just posted on his blog&lt;/a&gt; that he’s got it running! Here is a screenshot from his site:&lt;/p&gt;
&lt;div style=&quot;width: 310px;&quot; id=&quot;attachment_144&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;http://squeakingalong.files.wordpress.com/2010/07/croquet4-1.jpg&quot;&gt;&lt;img src=&quot;http://squeakingalong.files.wordpress.com/2010/07/croquet4-1.jpg?w=300&amp;amp;h=203&quot; title=&quot;Croquet in Squeak 4.1&quot; height=&quot;203&quot; width=&quot;300&quot; alt=&quot;Croquet in Squeak 4.1&quot; class=&quot;size-medium wp-image-144&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Croquet in Squeak 4.1&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;That’s wonderful news! Together with our &lt;a href=&quot;http://squeakingalong.wordpress.com/2010/07/24/new-squeak-4-1-seaside-images/&quot;&gt;just announced Seaside images&lt;/a&gt; this will make Squeak 4.1 more attractive than ever.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/squeakingalong.wordpress.com/143/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/squeakingalong.wordpress.com/143/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/squeakingalong.wordpress.com/143/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/squeakingalong.wordpress.com/143/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/squeakingalong.wordpress.com/143/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/squeakingalong.wordpress.com/143/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/squeakingalong.wordpress.com/143/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/squeakingalong.wordpress.com/143/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/squeakingalong.wordpress.com/143/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/squeakingalong.wordpress.com/143/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=squeakingalong.wordpress.com&amp;amp;blog=13281507&amp;amp;post=143&amp;amp;subd=squeakingalong&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>andreasraab</name>
			<uri>http://squeakingalong.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Ramon Leon: A Simple Thread Pool for Smalltalk</title>
		<link rel="alternate" type="text/html" href="http://onsmalltalk.com/2010-07-28-a-simple-thread-pool-for-smalltalk"/>
		<id>http://onsmalltalk.com/2010-07-28-a-simple-thread-pool-for-smalltalk</id>
		<updated>2010-07-28T22:04:08+00:00</updated>
		<content type="html">&lt;p&gt;Forking a thread in Smalltalk is easy, wrap something in a block and call fork.  It's so easy that you can easily become fork happy and get yourself into trouble by launching too may processes.  About 6 months ago, my excessive background forking in a Seaside web app finally starting hurting; I'd have images that seemed to lock up for no reason using 100% CPU and they'd get killed by monitoring processes causing lost sessions.  There was a reason; the process scheduler in Squeak/Pharo just isn't built to handle a crazy amount of threads and everything will slow to a crawl if you launch too many.  &lt;/p&gt;

&lt;p&gt;I had a search result page in Seaside that launched about 10 background threads for every page render and then the page would poll for the results of those computations, collect up any results found, and AJAX them into the page.  Each one needs to run in its own thread because any one of them may hang up and take upwards of 30 seconds to finish its work even though the average time would be under a second.  I don't want all the results being stalled waiting for the one slow result, so it made sense to have each on its own thread.  This worked for quite a while with nothing but simple forking, but eventually, the load rose to the point that I needed a thread pool so I could limit the number of threads actually doing the work to a reasonable amount.  So, let's write a thread pool.&lt;/p&gt;

&lt;p&gt;First we'll need a unit of work to put on the thread, similar to a block or a future.  Something we can return right away when an item is queued that can be checked for a result or used as a future result.  We'll start by declaring a worker class with a few instance variables I know I'll need.  A block for the actual work to be done, an expiration time to know if the work still needs done, a value cache to avoid doing the work more than once, a lock to block a calling thread treating the worker as a future value, and an error in case of failure to store the exception to be re-thrown on the main thread.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Object subclass: #ThreadWorker
    instanceVariableNames: 'block expires value lock error'
    classVariableNames: ''
    poolDictionaries: ''
    category: 'ThreadPool'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I'll also want a few constructors for creating them, one that just takes a block, and one that takes a block and an expiration time.  For my app, if I don't have results within a certain amount of time, I just don't care anymore, so I'd rather have the work item expire and skip the work.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadWorker class&amp;gt;&amp;gt;on: aBlock
    ^ self new
        block: aBlock;
        yourself 

ThreadWorker class&amp;gt;&amp;gt;on: aBlock expires: aTime
    ^ self new
        block: aBlock;
        expires: aTime;
        yourself
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On the instance side let's initialize the instance and setup the necessary accessors for the constructors above.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadWorker&amp;gt;&amp;gt;initialize
    super initialize.
    lock := Semaphore new 

ThreadWorker&amp;gt;&amp;gt;block: aBlock
    block := aBlock 

ThreadWorker&amp;gt;&amp;gt;expires: aTime
    expires := aTime
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, since this is for use in a thread pool, I'll want a non-blocking method of forcing evaluation of the work so the thread worker isn't blocked.  So if the work hasn't expired, evaluate the block and store any errors, then signal the Semaphore so any waiting clients are unblocked.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadWorker&amp;gt;&amp;gt;evaluate
    DateAndTime now &amp;lt; expires ifTrue: 
        [ [ value := block value ] 
            on: Error
            do: [ :err | error := err ] ].
    lock signal
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I'll also want a possibly blocking value method for retrieving the results of the work.  If you call this right away, then it'll act like a future and block the caller until the queue has had time to process it using the evaluate method above. &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadWorker&amp;gt;&amp;gt;value
    lock isSignaled ifFalse: [ lock wait ].
    &quot;rethrow any error from worker thread on calling thread&quot;
    error ifNotNil: 
        [ error
            privHandlerContext: thisContext;
            signal ].
    ^ value
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But if you want to poll for a result, we'll need a method to see if the work has been done yet.  We can do this by checking the state of the Semaphore; the worker has a value only after the Semaphore has been signaled.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadWorker&amp;gt;&amp;gt;hasValue
    ^ lock isSignaled
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That's all we need for the worker.  Now we need a queue to make use of it.  So we'll declare the class with some necessary instance variables and initialize them to some reasonable defaults along with some accessors to adjust the pool sizes.  Now, since a thread pool is generally, by nature, something you only want one of (there are always exceptions, but I prefer simplicity) then we'll just rely on Smalltalk itself to ensure only one pool by making all of the pool methods class methods and the ThreadPool the only instance.  I'll use a shared queue to handle the details of locking to ensure the workers share the pool of work safely.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Object subclass: #ThreadPool
    instanceVariableNames: ''
    classVariableNames: 'MaxPoolSize MinPoolSize PoolManager QueueWorkers WorkQueue'
    poolDictionaries: ''
    category: 'ThreadPool'

ThreadPool class&amp;gt;&amp;gt;initialize
    &quot;self initialize&quot;
    WorkQueue := SharedQueue2 new.
    QueueWorkers := OrderedCollection new.
    MinPoolSize := 5.
    MaxPoolSize := 15.
    Smalltalk addToStartUpList: self 

ThreadPool class&amp;gt;&amp;gt;maxPoolSize: aSize
    MaxPoolSize := aSize 

ThreadPool class&amp;gt;&amp;gt;minPoolSize: aSize
    MinPoolSize := aSize
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once you have a pool, you need to manage how many threads are actually in it and have it adjust to adapt to the workload.  There are two main questions we need to ask ourselves to do this: are there enough threads or are there too many threads given the current workload.  Let's answer those questions.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadPool class&amp;gt;&amp;gt;isPoolTooBig
    ^ QueueWorkers size &amp;gt; MinPoolSize 
        and: [ WorkQueue size &amp;lt; QueueWorkers size ]

ThreadPool class&amp;gt;&amp;gt;isPoolTooSmall
    ^ QueueWorkers size &amp;lt; MinPoolSize 
        or: [ WorkQueue size &amp;gt; QueueWorkers size 
            and: [ QueueWorkers size &amp;lt; MaxPoolSize ] ]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We also need a method for a worker to grab a queued work item and work it, and we don't ever want this to error out killing a worker thread since the worker thread should trap any error and re-throw them to the queuing thread.  But just to be safe, we'll wrap it.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadPool class&amp;gt;&amp;gt;processQueueElement
    [ WorkQueue next evaluate ] 
        on: Error
        do: [  ]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now that workers have something to do, we'll need to be able to start and stop worker threads in order to increase or decrease the working thread count.  Once a worker is started, we'll want it to simply work forever and the shared queue will handle blocking the workers when there's no work to do.  We'll also want the worker threads running in the background so they aren't taking priority over foreground work like serving HTTP requests.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadPool class&amp;gt;&amp;gt;startWorker
    QueueWorkers add: ([ [ self processQueueElement ] repeat ] 
            forkAt: Processor systemBackgroundPriority
            named: 'pool worker')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To kill a worker, we'll just queue a job to kill the active process, which will be whatever worker picks up the job.  This is a simple way to ensure we don't kill a worker that is doing something important.  This requires actually using the queue, so a quick couple methods to actually queue a job and some extensions on BlockClosure/BlockContext to make using the queue as simple as forking.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadPool class&amp;gt;&amp;gt;queueWorkItem: aBlock expiresAt: aTimestamp 
    | worker |
    worker := ThreadWorker on: aBlock expires: aTimestamp.
    WorkQueue nextPut: worker.
    ^ worker 

ThreadPool class&amp;gt;&amp;gt;queueWorkItem: aBlock expiresAt: aTimestamp session: aSession 
    | worker |
    &quot;a special method for Seaside2.8 so the worker threads still have access to the current session&quot;
    worker := ThreadWorker 
        on: 
            [ WACurrentSession 
                use: aSession
                during: aBlock ]
        expires: aTimestamp.
    WorkQueue nextPut: worker.
    ^ worker 

BlockClosure&amp;gt;&amp;gt;queueWorkAndExpireIn: aDuration
    ^ ThreadPool 
        queueWorkItem: self
        expiresAt: DateAndTime now + aDuration

BlockClosure&amp;gt;&amp;gt;queueWorkAndExpireIn: aDuration session: aSession 
    &quot;a special method for Seaside2.8 so the worker threads still have access to the current session&quot;
    ^ ThreadPool 
        queueWorkItem: self
        expiresAt: DateAndTime now + aDuration
        session: aSession
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And now we're able to queue a job to kill a thread, making sure to double check at time of actual execution that the pool is still too big and the thread still needs to die.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadPool class&amp;gt;&amp;gt;killWorker
    &quot;just queue a task that kill the activeProcess, which will be the worker that picks it up&quot;

    [ self isPoolTooBig ifTrue: [ (QueueWorkers remove: Processor activeProcess) terminate ] ] 
        queueWorkAndExpireIn: 10 minutes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Of course, something has to decide when to increase the size of the queue and when to decrease it, and it needs to a method to do so.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadPool class&amp;gt;&amp;gt;adjustThreadPoolSize
    &quot;starting up processes too fast is dangerous and wasteful, ensure a reasonable delay&quot;
    1 second asDelay wait.
    self isPoolTooSmall 
        ifTrue: [ self startWorker ]
        ifFalse: [ self isPoolTooBig ifTrue: [ self killWorker ] ]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We need to ensure the thread pool is always up and running, and that something is managing it, so we'll hook the system startUp routine and kick off the minimum number of workers and start a single manager process to continually adjust the pool size to match the workload.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadPool class&amp;gt;&amp;gt;startUp
    &quot;self startUp&quot;
    self shutDown.
    MinPoolSize timesRepeat: [ self startWorker ].
    PoolManager := [ [ self adjustThreadPoolSize ] repeat ] 
        forkAt: Processor systemBackgroundPriority
        named: 'pool manager'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And cleanup everything on shutdown so every time the image starts up we're starting from a clean slate.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ThreadPool class&amp;gt;&amp;gt;shutDown
    &quot;self shutDown&quot;
    WorkQueue := SharedQueue2 new.
    PoolManager ifNotNil: [ PoolManager terminate ].
    QueueWorkers do: [ :each | each terminate ].
    QueueWorkers removeAll.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And that's it, a simple thread pool using a shared queue to do all the dirty work of dealing with concurrency.  I now queue excessively without suffering the punishment entailed by forking excessively.  Now rather than...&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[ self someTaskToDo ] fork
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I just do...&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[ self someTaskToDo ] queueWorkAndExpireIn: 25 seconds
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or in Seaside...&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[ self someTaskToDo ] queueWorkAndExpireIn: 25 seconds session: self session
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And my app is running like a champ again, no more hanging images due to forking like a drunken sailor.&lt;/p&gt;</content>
		<author>
			<name>Ramon Leon</name>
			<uri>http://onsmalltalk.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Pharo 1.1. Setup for Windows</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/pharo-11-setup-for-windows.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-8866309999764284335</id>
		<updated>2010-07-28T21:40:45+00:00</updated>
		<content type="html">The new &lt;a href=&quot;http://pharo-project.org&quot;&gt;Pharo 1.1&lt;/a&gt; release comes (similar to the first version) as a large download: the one-click image with virtual machines for all major platforms (Windows, Mac, Linux). &lt;br /&gt;&lt;br /&gt;As before for those who want to use/run Pharo 1.1. on Win32 system only I additionally prepared a smaller &lt;a href=&quot;https://gforge.inria.fr/frs/download.php/27305/setup_pharo1.1-11411-release10.07.25.exe&quot;&gt;installer&lt;/a&gt; for the new release. &lt;a href=&quot;http://lists.gforge.inria.fr/pipermail/pharo-project/2010-July/029919.html&quot;&gt;Read more&lt;/a&gt;. As ever it is also available on the &lt;a href=&quot;http://pharo-project.org&quot;&gt;Pharo project site&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-8866309999764284335?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Aida on Pharo 1.1</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/aida-on-pharo-11.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-138569037342504804</id>
		<updated>2010-07-28T21:32:43+00:00</updated>
		<content type="html">Not only &lt;a href=&quot;http://www.seaside.st&quot;&gt;Seaside 3.0&lt;/a&gt; is running on the new &lt;a href=&quot;http://pharo-project.org&quot;&gt;Pharo 1.1&lt;/a&gt;. release. Also the Aida Smalltalk&lt;br /&gt;web framework is running nicely on the open source Smalltalk platform. &lt;a href=&quot;http://lists.gforge.inria.fr/pipermail/pharo-project/2010-July/029990.html&quot;&gt;Read more&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-138569037342504804?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Pharo by Example on Amazon</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/pharo-by-example-on-amazon.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-6365141441972054564</id>
		<updated>2010-07-28T19:55:36+00:00</updated>
		<content type="html">Pharo by Example can &lt;a href=&quot;http://lists.gforge.inria.fr/pipermail/pharo-project/2010-July/029981.html&quot;&gt;now finally be ordered at Amazon.com&lt;/a&gt; and therefore also orderable at any bookstore. You can also visit the &lt;a href=&quot;http://pharobyexample.org/&quot;&gt;online version&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-6365141441972054564?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Pharo News Blog: Pharo 1.1 released</title>
		<link rel="alternate" type="text/html" href="http://www.pharo-project.org/news?article=pharo-1-1-released"/>
		<id>http://www.pharo-project.org/117c0163-2c85-464f-a4e1-b81dd6a4bfba</id>
		<updated>2010-07-27T07:28:04+00:00</updated>
		<content type="html">&lt;div class=&quot;part text tall&quot;&gt;&lt;p class=&quot;norm&quot;&gt;We are excited to announce our second release of Pharo!&lt;br /&gt;&lt;br /&gt;This release contains many bug fixes, improvements, performance optimizations, and new features that didn't get into version 1.0.&lt;br /&gt;&lt;br /&gt;Specific information about what is new in this release can be found on &lt;a href=&quot;http://www.pharo-project.org/pharo-download/release-1-1&quot; class=&quot;open&quot; title=&quot;http://www.pharo-project.org/pharo-download/release-1-1&quot;&gt;http://www.pharo-project.org/pharo-download/release-1-1&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt; Thanks everyone who has contributed and helped to bring Pharo one step further!&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;part text tiny&quot;&gt;&lt;p class=&quot;pale&quot;&gt;&lt;a href=&quot;http://www.adrian-lienhard.ch&quot; class=&quot;open&quot; title=&quot;http://www.adrian-lienhard.ch&quot;&gt;Adrian Lienhard&lt;/a&gt;, July 26, 2010&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;part cb-widget tiny cb-share&quot;&gt;&lt;a href=&quot;http://www.pharo-project.org/news?recommend=pharo-1-1-released&quot; class=&quot;cb-mail&quot; rel=&quot;nofollow&quot; title=&quot;Share this article on E-Mail&quot;&gt;&lt;span class=&quot;cb-invisible&quot;&gt;Share this article on E-Mail&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://twitter.com/home?status=I'm+currently+reading+http://www.pharo-project.org/news?article=pharo-1-1-released&quot; class=&quot;cb-twitter&quot; rel=&quot;nofollow&quot; title=&quot;Share this article on Twitter&quot;&gt;&lt;span class=&quot;cb-invisible&quot;&gt;Share this article on Twitter&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://www.facebook.com/sharer.php?u=http://www.pharo-project.org/news?article=pharo-1-1-released&amp;amp;t=Pharo 1.1 released&quot; class=&quot;cb-facebook&quot; rel=&quot;nofollow&quot; title=&quot;Share this article on Facebook&quot;&gt;&lt;span class=&quot;cb-invisible&quot;&gt;Share this article on Facebook&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://del.icio.us/post?title=Pharo 1.1 released&amp;amp;url=http://www.pharo-project.org/news?article=pharo-1-1-released&quot; class=&quot;cb-delicious&quot; rel=&quot;nofollow&quot; title=&quot;Share this article on Delicious&quot;&gt;&lt;span class=&quot;cb-invisible&quot;&gt;Share this article on Delicious&lt;/span&gt;&lt;/a&gt; &lt;a href=&quot;http://digg.com/submit?title=Pharo 1.1 released&amp;amp;url=http://www.pharo-project.org/news?article=pharo-1-1-released&quot; class=&quot;cb-digg&quot; rel=&quot;nofollow&quot; title=&quot;Share this article on Digg&quot;&gt;&lt;span class=&quot;cb-invisible&quot;&gt;Share this article on Digg&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;</content>
		<author>
			<name>cmsbox (alienhard@netstyle.ch)</name>
			<uri>http://www.pharo-project.org/news</uri>
		</author>
	</entry>

	<entry>
		<title>Pharo News Blog</title>
		<link rel="alternate" type="text/html" href="http://www.pharo-project.org/news?article=-"/>
		<id>http://www.pharo-project.org/35e0919e-9c5a-4986-a981-3580482984e1</id>
		<updated>2010-07-27T07:12:13+00:00</updated>
		<content type="html"></content>
		<author>
			<name>cmsbox (alienhard@netstyle.ch)</name>
			<uri>http://www.pharo-project.org/news</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Pharo 1.1. released</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/pharo-11-released.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-4640814299186596615</id>
		<updated>2010-07-26T20:55:43+00:00</updated>
		<content type="html">Pharo 1.1. - the next milestone of the Pharo project &lt;a href=&quot;http://lists.gforge.inria.fr/pipermail/pharo-project/2010-July/029917.html&quot;&gt;is released&lt;/a&gt;. Here is a short &lt;a href=&quot;http://www.pharo-project.org/pharo-download/release-1-1&quot;&gt;summary what's new&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-4640814299186596615?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Smalltalk Medicine Show: iPad - Adding pictures to the WikiServerPro.</title>
		<link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=9TndATaDcLo&amp;feature=youtube_gdata"/>
		<id>tag:youtube.com,2008:video:9TndATaDcLo</id>
		<updated>2010-07-26T15:02:48+00:00</updated>
		<content type="html">&lt;div style=&quot;color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-size: 12px; width: 555px;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;140&quot; rowspan=&quot;2&quot; valign=&quot;top&quot;&gt;&lt;div style=&quot;border: 1px solid #999999; margin: 0px 10px 5px 0px;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=9TndATaDcLo&amp;amp;feature=youtube_gdata&quot;&gt;&lt;img src=&quot;http://i.ytimg.com/vi/9TndATaDcLo/default.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;256&quot; valign=&quot;top&quot;&gt;&lt;div style=&quot;font-size: 12px; font-weight: bold;&quot;&gt;&lt;a style=&quot;font-size: 15px; font-weight: bold;&quot; href=&quot;http://www.youtube.com/watch?v=9TndATaDcLo&amp;amp;feature=youtube_gdata&quot;&gt;iPad - Adding pictures to the WikiServerPro.&lt;/a&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; margin: 3px 0px;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;146&quot; style=&quot;font-size: 11px; line-height: 1.4em; padding-left: 20px; padding-top: 1px;&quot; valign=&quot;top&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;From:&lt;/span&gt;
&lt;a href=&quot;http://www.youtube.com/profile?user=gandysmedicineshow&quot;&gt;gandysmedicineshow&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;Views:&lt;/span&gt;
16&lt;/div&gt;
&lt;div style=&quot;white-space: nowrap; text-align: left;&quot;&gt;&lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 11px;&quot;&gt;0
&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;ratings&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;Time:&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-size: 11px; font-weight: bold;&quot;&gt;02:37&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;font-size: 11px; padding-left: 20px;&quot;&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;More in&lt;/span&gt;
&lt;a href=&quot;http://www.youtube.com/categories_portal?c=28&quot;&gt;Science &amp;amp; Technology&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</content>
		<author>
			<name>gandysmedicineshow</name>
			<uri>http://www.youtube.com/profile_videos?user=gandysmedicineshow</uri>
		</author>
	</entry>

	<entry>
		<title>Andreas Raab: New Squeak 4.1 / Seaside Images</title>
		<link rel="alternate" type="text/html" href="http://squeakingalong.wordpress.com/2010/07/24/new-squeak-4-1-seaside-images/"/>
		<id>http://squeakingalong.wordpress.com/?p=126</id>
		<updated>2010-07-24T04:01:07+00:00</updated>
		<content type="html">&lt;p&gt;Good news, &lt;a href=&quot;http://lists.squeakfoundation.org/pipermail/seaside/2010-July/023898.html&quot;&gt;we just finalized&lt;/a&gt; a series of preloaded &lt;a href=&quot;http://seaside.st&quot;&gt;Seaside&lt;/a&gt; images on &lt;a href=&quot;http://www.squeak.org&quot;&gt;Squeak.org&lt;/a&gt;. This became necessary since builder.seaside.st is no longer accessible and consequently our instructions for installing Seaside in Squeak were out-of-date. The new images fix this problem and provide an easy install (for new users; this includes image, sources, vms etc. in an all-in-one setup) as well as an expert install (which just includes the images):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ftp.squeak.org/various_images/seaside/Squeak4.1/Seaside3.0-All-in-One.zip&quot;&gt;Seaside 3.0 Easy Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftp.squeak.org/various_images/seaside/Squeak4.1/Seaside3.0.zip&quot;&gt;Seaside 3.0 Expert Install&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition, we now also provide 2.8 based images for people who have existing Seaside 2.8 applications in older versions in Squeak:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ftp.squeak.org/various_images/seaside/Squeak4.1/Seaside2.8-All-in-One.zip&quot;&gt;Seaside 2.8 Easy Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftp.squeak.org/various_images/seaside/Squeak4.1/Seaside2.8.zip&quot;&gt;Seaside 2.8 Expert Install&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is a screenshot of the welcome screen:&lt;/p&gt;
&lt;div style=&quot;width: 310px;&quot; id=&quot;attachment_127&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;http://squeakingalong.files.wordpress.com/2010/07/seaside3-0.jpg&quot;&gt;&lt;img src=&quot;http://squeakingalong.files.wordpress.com/2010/07/seaside3-0.jpg?w=300&amp;amp;h=234&quot; title=&quot;Seaside 3.0 in Squeak 4.1&quot; height=&quot;234&quot; width=&quot;300&quot; alt=&quot;Seaside 3.0 in Squeak 4.1&quot; class=&quot;size-medium wp-image-127&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Seaside 3.0 in Squeak 4.1&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Oh, and if you want to load Seaside 2.8 / 3.0 into your custom Squeak variants; the above images include instructions about how they were created so you should be able to apply the same procedure to your own images.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/squeakingalong.wordpress.com/126/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/squeakingalong.wordpress.com/126/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/squeakingalong.wordpress.com/126/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/squeakingalong.wordpress.com/126/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/squeakingalong.wordpress.com/126/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/squeakingalong.wordpress.com/126/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/squeakingalong.wordpress.com/126/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/squeakingalong.wordpress.com/126/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/squeakingalong.wordpress.com/126/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/squeakingalong.wordpress.com/126/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=squeakingalong.wordpress.com&amp;amp;blog=13281507&amp;amp;post=126&amp;amp;subd=squeakingalong&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>andreasraab</name>
			<uri>http://squeakingalong.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>The Weekly Squeak: Seaside 3.0rc – One Click Image</title>
		<link rel="alternate" type="text/html" href="http://news.squeak.org/2010/07/23/seaside-3-0rc-one-click-image/"/>
		<id>http://news.squeak.org/?p=807</id>
		<updated>2010-07-23T13:27:38+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://weeklysqueak.files.wordpress.com/2010/07/seasideone.png&quot;&gt;&lt;img src=&quot;http://weeklysqueak.files.wordpress.com/2010/07/seasideone.png?w=431&amp;amp;h=345&quot; title=&quot;seasideOne&quot; height=&quot;345&quot; width=&quot;431&quot; alt=&quot;&quot; class=&quot;alignnone size-full wp-image-808&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Following on from the recent release of the Seaside release candidate for 3.0, &lt;a href=&quot;http://ftp.squeak.org/various_images/seaside/Squeak4.1/Seaside3.0-All-in-One.zip&quot;&gt;a Squeak “One-Click” image&lt;/a&gt; has been put together to allow you to try out the new version with—er—one click!&lt;/p&gt;
&lt;p&gt;The new image is based on &lt;a href=&quot;http://squeak.org/Download/&quot;&gt;Squeak 4.1&lt;/a&gt;, and launches fully configured with Seaside running with &lt;a href=&quot;http://map.squeak.org/package/0fdb5ffc-cfa1-4d40-96c2-fe325bc8ba5f&quot;&gt;Comanche &lt;/a&gt;on port 8080, so you can immediately see the new improved Seaside welcome page at http://localhost:8080/, with links to documentation and the &lt;a href=&quot;http://book.seaside.st/book&quot;&gt;Seaside book&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Seaside’s 3.0 release is faster, cleaner, better tested and has &lt;a href=&quot;http://www.seaside.st/community/development/seaside30&quot;&gt;many other changes and improvements&lt;/a&gt; over previous releases, so it’s well worth checking out this release candidate now.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/weeklysqueak.wordpress.com/807/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/weeklysqueak.wordpress.com/807/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/weeklysqueak.wordpress.com/807/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/weeklysqueak.wordpress.com/807/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/weeklysqueak.wordpress.com/807/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/weeklysqueak.wordpress.com/807/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/weeklysqueak.wordpress.com/807/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/weeklysqueak.wordpress.com/807/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/weeklysqueak.wordpress.com/807/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/weeklysqueak.wordpress.com/807/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=news.squeak.org&amp;amp;blog=394922&amp;amp;post=807&amp;amp;subd=weeklysqueak&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>Michael Davies</name>
			<uri>http://news.squeak.org</uri>
		</author>
	</entry>

	<entry>
		<title>Squeak Oversight Board: Meeting Report for 7/21/2010</title>
		<link rel="alternate" type="text/html" href="http://squeakboard.wordpress.com/2010/07/21/meeting-report-for-7212010/"/>
		<id>http://squeakboard.wordpress.com/?p=346</id>
		<updated>2010-07-21T21:15:47+00:00</updated>
		<content type="html">&lt;p&gt;In case you haven’t noticed, it’s summer! People are on vacation and consequently Craig (on vacation in Europe) wasn’t present in our meeting and Bert joined us from his hotel room and shared a view of the beach with us.&lt;/p&gt;
&lt;p&gt;There wasn’t too much to talk about. We discussed a bit the SFC status and noted that we need to make some progress with the reconciliation of our finances. We’re still waiting for some info from the SFC on how to best address this issue and will ping them again as a reminder. Andreas brought up the issue of providing a Squeak image with Seaside preloaded and the board agrees that we should provide such an image on http://ftp.squeak.org/various_images/seaside.&lt;/p&gt;
&lt;p&gt;We raised a couple of other issues in the discussion, including what a useful scope for 4.2 might be, how to make progress with community supported packages, and how to continue the discussion about documentation, but no specific action items resulted from these.&lt;/p&gt;
&lt;p&gt;As a result we finished our meeting early. But hey, it’s summer!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/squeakboard.wordpress.com/346/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/squeakboard.wordpress.com/346/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/squeakboard.wordpress.com/346/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/squeakboard.wordpress.com/346/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/squeakboard.wordpress.com/346/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/squeakboard.wordpress.com/346/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/squeakboard.wordpress.com/346/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/squeakboard.wordpress.com/346/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/squeakboard.wordpress.com/346/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/squeakboard.wordpress.com/346/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=squeakboard.wordpress.com&amp;amp;blog=7042622&amp;amp;post=346&amp;amp;subd=squeakboard&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>andreasraab</name>
			<uri>http://squeakboard.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Eliot Miranda</title>
		<link rel="alternate" type="text/html" href="http://www.mirandabanda.org/cogblog/2010/07/20/29/"/>
		<id>http://www.mirandabanda.org/cogblog/?p=29</id>
		<updated>2010-07-21T05:33:12+00:00</updated>
		<content type="html">Hi All,
in lieu of some full posts on the Cog JIT here’s a screencast that gives a brief overview of some image level info for the Cog VM before diving into the simulator and looking at the evolution of a send site in the VM through various forms of inline cache.










Send post as PDF to [...]</content>
		<author>
			<name>admin</name>
			<uri>http://www.mirandabanda.org/cogblog</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Sunset or Eclipse with Oracle JVM</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/sunset-or-eclipse-with-oracle-jvm.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-8120792781652173609</id>
		<updated>2010-07-19T17:36:45+00:00</updated>
		<content type="html">When you run the new Oracle JVM 6u21 and Eclipse you may encounter frequent Eclipse crashes. &lt;br /&gt;&lt;br /&gt;Eclipse launcher (which is written in C/C++) reads the JVM vendor and if it detects a Sun JVM, it adds a necessary memory parameter for Eclipse to function. &lt;br /&gt;Since now the &quot;Java&quot; vendor was changed from Sun to Oracle it crashes. &lt;br /&gt;&lt;br /&gt;So the current version of Eclipse does not work with the current version of Java on the most popular platform - at least not out of the box. &lt;br /&gt;&lt;br /&gt;There is a &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=319514&quot;&gt;bug&lt;/a&gt; report already ...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-8120792781652173609?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Seaside in Czech</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/seaside-in-czech.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-1948598026237646368</id>
		<updated>2010-07-19T17:18:35+00:00</updated>
		<content type="html">Two new Seaside applications on the radar:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.webchod.cz&quot;&gt;http://www.webchod.cz&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.kalorik.cz&quot;&gt;http://www.kalorik.cz&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-1948598026237646368?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Smalltalk Medicine Show: SocketStream</title>
		<link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=a7rikGsh0iM&amp;feature=youtube_gdata"/>
		<id>tag:youtube.com,2008:video:a7rikGsh0iM</id>
		<updated>2010-07-19T13:46:04+00:00</updated>
		<content type="html">&lt;div style=&quot;color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-size: 12px; width: 555px;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;140&quot; rowspan=&quot;2&quot; valign=&quot;top&quot;&gt;&lt;div style=&quot;border: 1px solid #999999; margin: 0px 10px 5px 0px;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=a7rikGsh0iM&amp;amp;feature=youtube_gdata&quot;&gt;&lt;img src=&quot;http://i.ytimg.com/vi/a7rikGsh0iM/default.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;256&quot; valign=&quot;top&quot;&gt;&lt;div style=&quot;font-size: 12px; font-weight: bold;&quot;&gt;&lt;a style=&quot;font-size: 15px; font-weight: bold;&quot; href=&quot;http://www.youtube.com/watch?v=a7rikGsh0iM&amp;amp;feature=youtube_gdata&quot;&gt;SocketStream&lt;/a&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; margin: 3px 0px;&quot;&gt;&lt;span&gt;Use the wrapper SocketStream instead of handling the Socket class directly.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;146&quot; style=&quot;font-size: 11px; line-height: 1.4em; padding-left: 20px; padding-top: 1px;&quot; valign=&quot;top&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;From:&lt;/span&gt;
&lt;a href=&quot;http://www.youtube.com/profile?user=gandysmedicineshow&quot;&gt;gandysmedicineshow&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;Views:&lt;/span&gt;
22&lt;/div&gt;
&lt;div style=&quot;white-space: nowrap; text-align: left;&quot;&gt;&lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 11px;&quot;&gt;0
&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;ratings&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;Time:&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-size: 11px; font-weight: bold;&quot;&gt;02:17&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;font-size: 11px; padding-left: 20px;&quot;&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;More in&lt;/span&gt;
&lt;a href=&quot;http://www.youtube.com/categories_portal?c=28&quot;&gt;Science &amp;amp; Technology&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</content>
		<author>
			<name>gandysmedicineshow</name>
			<uri>http://www.youtube.com/profile_videos?user=gandysmedicineshow</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Cycles in your software</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/cycles-in-your-software.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-7626873399955060012</id>
		<updated>2010-07-19T09:43:16+00:00</updated>
		<content type="html">Jannik Laval &lt;a href=&quot;http://lists.gforge.inria.fr/pipermail/pharo-project/2010-July/029468.html&quot;&gt;announced a new tool&lt;/a&gt; to see your software package structure and to fix cycles between packages. It is based on &lt;a href=&quot;http://pharo-project.org/home&quot;&gt;Pharo&lt;/a&gt; and &lt;a href=&quot;http://www.moosetechnology.org/&quot;&gt;Moose&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://lists.gforge.inria.fr/pipermail/pharo-project/2010-July/029468.html&quot;&gt;Read more&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-7626873399955060012?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Squeak-SSL</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/squeak-ssl.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-3191971166386155809</id>
		<updated>2010-07-19T08:59:25+00:00</updated>
		<content type="html">Andreas &lt;a href=&quot;http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-July/151983.html&quot;&gt;announced a new SSL interface&lt;/a&gt; for Squeak. &lt;br /&gt;&lt;br /&gt;The  &lt;a href=&quot;http://www.squeaksource.com/SqueakSSL.html&quot;&gt;project page&lt;/a&gt; can be found on squeaksource.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-3191971166386155809?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Andreas Raab: SqueakSSL released</title>
		<link rel="alternate" type="text/html" href="http://squeakingalong.wordpress.com/2010/07/19/squeakssl-released/"/>
		<id>http://squeakingalong.wordpress.com/?p=123</id>
		<updated>2010-07-19T06:37:48+00:00</updated>
		<content type="html">&lt;p&gt;I’ve just released a bit of work that I had been working on for a while. SqueakSSL is a plugin based interface to the native SSL/TLS facilities on your platform. On Windows, it uses the SChannel SSPI and on Unix it uses the OpenSSL implementation. The Mac’s still out there but I’m hoping that the OpenSSL version will work there too.&lt;/p&gt;
&lt;p&gt;The official announcement is here: &lt;a href=&quot;http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-July/151983.html&quot;&gt;[ANN] SqueakSSL – a platform interface for SSL/TLS&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/squeakingalong.wordpress.com/123/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/squeakingalong.wordpress.com/123/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/squeakingalong.wordpress.com/123/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/squeakingalong.wordpress.com/123/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/squeakingalong.wordpress.com/123/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/squeakingalong.wordpress.com/123/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/squeakingalong.wordpress.com/123/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/squeakingalong.wordpress.com/123/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/squeakingalong.wordpress.com/123/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/squeakingalong.wordpress.com/123/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=squeakingalong.wordpress.com&amp;amp;blog=13281507&amp;amp;post=123&amp;amp;subd=squeakingalong&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>andreasraab</name>
			<uri>http://squeakingalong.wordpress.com</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Self programming language</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/self-programming-language.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-9205352022329432161</id>
		<updated>2010-07-16T06:21:34+00:00</updated>
		<content type="html">Self 4.4. is released. Read &lt;a href=&quot;http://blog.selflanguage.org/2010/07/16/self-4-4-released/&quot;&gt;more&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-9205352022329432161?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>The Weekly Squeak: Smalltalk: the past, the present, and the future?</title>
		<link rel="alternate" type="text/html" href="http://news.squeak.org/2010/07/15/smalltalk-past-present-future/"/>
		<id>http://news.squeak.org/?p=804</id>
		<updated>2010-07-15T10:00:45+00:00</updated>
		<content type="html">&lt;p&gt;Anyone with an interest in the continuing role and development of Smalltalk has had lots to chew on over the past few days.&lt;/p&gt;
&lt;p&gt;As part of &lt;em&gt; &lt;/em&gt; a series of investigations  into the most widely-used programming languages, &lt;a href=&quot;http://www.computerworld.com.au&quot;&gt;&lt;em&gt;Computerworld Australia&lt;/em&gt;&lt;/a&gt; has published &lt;a href=&quot;http://www.computerworld.com.au/article/352182/z_programming_languages_smalltalk-80/&quot;&gt;a conversation with Alan Kay&lt;/a&gt; about his role in the development of the “foundation of much of modern programming today: Smalltalk-80″, Object-Oriented Programming, and modern software development.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.infoq.com/&quot;&gt;InfoQ&lt;/a&gt; is running a series of interviews recorded at &lt;a href=&quot;http://www.infoq.com/articles/qconlondon-2010-summary&quot;&gt;QCon London&lt;/a&gt;. One of these is a session with Ralph Johnson and Joe Armstrong discussing the &lt;a href=&quot;http://www.infoq.com/interviews/johnson-armstrong-oop&quot;&gt;Future of OOP&lt;/a&gt;, including their take on what Smalltalk got wrong and right.&lt;/p&gt;
&lt;p&gt;Finally, Gilad Bracha continues to &lt;a href=&quot;http://gbracha.blogspot.com/&quot;&gt;lay out his vision&lt;/a&gt; for what he sees as Smalltalk’s successor, &lt;a href=&quot;http://newspeaklanguage.org/&quot;&gt;Newspeak&lt;/a&gt;. His latest post contains &lt;a href=&quot;http://gbracha.blogspot.com/2010/07/converting-smalltalk-to-newspeak.html&quot;&gt;encouragement and advice&lt;/a&gt; for those interested in porting existing libraries and applications to Newspeak.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/weeklysqueak.wordpress.com/804/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/weeklysqueak.wordpress.com/804/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/weeklysqueak.wordpress.com/804/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/weeklysqueak.wordpress.com/804/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/weeklysqueak.wordpress.com/804/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/weeklysqueak.wordpress.com/804/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/weeklysqueak.wordpress.com/804/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/weeklysqueak.wordpress.com/804/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/weeklysqueak.wordpress.com/804/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/weeklysqueak.wordpress.com/804/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=news.squeak.org&amp;amp;blog=394922&amp;amp;post=804&amp;amp;subd=weeklysqueak&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>Michael Davies</name>
			<uri>http://news.squeak.org</uri>
		</author>
	</entry>

	<entry>
		<title>Smalltalk Medicine Show: Seaside - HTML Tags</title>
		<link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=tzSnFbQnLGY&amp;feature=youtube_gdata"/>
		<id>tag:youtube.com,2008:video:tzSnFbQnLGY</id>
		<updated>2010-07-12T15:32:35+00:00</updated>
		<content type="html">&lt;div style=&quot;color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-size: 12px; width: 555px;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;140&quot; rowspan=&quot;2&quot; valign=&quot;top&quot;&gt;&lt;div style=&quot;border: 1px solid #999999; margin: 0px 10px 5px 0px;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=tzSnFbQnLGY&amp;amp;feature=youtube_gdata&quot;&gt;&lt;img src=&quot;http://i.ytimg.com/vi/tzSnFbQnLGY/default.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;256&quot; valign=&quot;top&quot;&gt;&lt;div style=&quot;font-size: 12px; font-weight: bold;&quot;&gt;&lt;a style=&quot;font-size: 15px; font-weight: bold;&quot; href=&quot;http://www.youtube.com/watch?v=tzSnFbQnLGY&amp;amp;feature=youtube_gdata&quot;&gt;Seaside - HTML Tags&lt;/a&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; margin: 3px 0px;&quot;&gt;&lt;span&gt;Use the tests to learn the tags.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;146&quot; style=&quot;font-size: 11px; line-height: 1.4em; padding-left: 20px; padding-top: 1px;&quot; valign=&quot;top&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;From:&lt;/span&gt;
&lt;a href=&quot;http://www.youtube.com/profile?user=gandysmedicineshow&quot;&gt;gandysmedicineshow&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;Views:&lt;/span&gt;
34&lt;/div&gt;
&lt;div style=&quot;white-space: nowrap; text-align: left;&quot;&gt;&lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_full_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_full_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_full_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_full_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_full_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 11px;&quot;&gt;2
&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;ratings&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;Time:&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-size: 11px; font-weight: bold;&quot;&gt;01:13&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;font-size: 11px; padding-left: 20px;&quot;&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;More in&lt;/span&gt;
&lt;a href=&quot;http://www.youtube.com/categories_portal?c=28&quot;&gt;Science &amp;amp; Technology&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</content>
		<author>
			<name>gandysmedicineshow</name>
			<uri>http://www.youtube.com/profile_videos?user=gandysmedicineshow</uri>
		</author>
	</entry>

	<entry>
		<title>Gilad Bracha: Converting Smalltalk to Newspeak</title>
		<link rel="alternate" type="text/html" href="http://gbracha.blogspot.com/2010/07/converting-smalltalk-to-newspeak.html"/>
		<id>tag:blogger.com,1999:blog-2447174102813539049.post-9149510859663683241</id>
		<updated>2010-07-11T18:20:01+00:00</updated>
		<content type="html">One of the things that has surprised me working with Newspeak is how easy it is to convert Smaltalk code to Newspeak.  We have converted most of  the core libraries of Smalltalk (aka ‘The Blue Book Libraries’) into Newspeak. Most of the conversion was done by people who had never coded in Newspeak before. In some cases, they had never coded in Smalltalk before.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The syntactic differences are fairly trivial (though they will grow in time) and easily handled - either automatically by tools or by very simple transformations in a text editor. Semantically  moving from Smalltalk to Newspeak is easy (see this document for a detailed discussion of the mechanics), but the opposite is harder.&lt;div&gt;&lt;br /&gt;The main issues one has are API differences between libraries; but this is no different than converting from one Smalltalk implementation to another.&lt;div&gt;&lt;br /&gt;The converted code may not be the most idiomatic Newspeak. The easiest conversion path sticks a bunch of related Smalltalk classes inside a Newspeak module class, without creating any interesting substructure. Nevertheless, the converted code is invariably better than the original. It becomes very clear what the code’s external dependencies are, what the module boundaries should be, who is responsible for initialization etc.  There is no longer any static state.  It’s much easier to tie libraries together (or tear them apart), test them independently and so forth. Once we start enforcing access control, it should be much clearer what the public API really is. All this without losing the flexibility and power of the original.&lt;div&gt;&lt;br /&gt;This is very encouraging, because it means Newspeakers can take advantage of the large body of Smalltalk code that already exists. Any useful Smalltalk library that is publicly available can be converted to Newspeak in pretty short order. It also means that Smalltalkers can take the plunge and migrate to Newspeak relatively easily.&lt;div&gt;&lt;br /&gt;Of course, I don’t expect all the world’s Smalltalkers to instantly convert to Newspeak.   Even if they did, Newspeak would still be a niche language.  For Newspeak to be a success,  we need to reach out to programmers in a variety of communities.  This post, however, is aimed squarely at the Smalltalk community. &lt;div&gt;&lt;br /&gt;There are no doubt many Smalltalk projects that are tied to a specific Smalltalk. There are also Smalltalkers who are too conservative, and don’t want to deal with any language changes.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Still, if you are (or were, in some happier time) a Smalltalker and want to move into the future rather than dwelling on the glorious past, I assert that Newspeak is for you.  If you are using an open source Smalltalk, it is likely you could do better using Newspeak. Newspeak explicitly addresses Smalltalk’s weaknesses: modularity, security, interoperability. Of course, some people aren’t bothered by these weaknesses. &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;b&gt;Tangent:&lt;/b&gt; Arguably, the Smalltalk community is, by natural selection, composed largely of such people; if they were bothered by Smalltalk’s deficiencies, they wouldn’t use it.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Newspeak should interest those who appreciate the power of Smalltalk but want to move forward.&lt;div&gt;&lt;br /&gt;Of course, you have to be an early adopter by nature. Things will evolve and change under your feet. The syntax will become less Smalltalk-ish over time. Most importantly, you’ll have to learn something new. This is good for your neurons. You may have to port some libraries you rely on. You may have to make changes so that you do not rely on libraries you wouldn’t want to port (like Morphic). However, the result will likely be a product that is easier to deploy, more visually appealing and better integrated with its surrounding environment. Your code will be much more maintainable and better structured.&lt;br /&gt;&lt;br /&gt;I’ve written a simple &lt;a href=&quot;http://bit.ly/9kiZxr&quot;&gt;guide that highlights how to go about converting Smalltalk to Newspeak&lt;/a&gt;. Give it a try!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/2447174102813539049-9149510859663683241?l=gbracha.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Gilad Bracha (noreply@blogger.com)</name>
			<uri>http://gbracha.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>The Weekly Squeak: A newer, faster computer – for free!</title>
		<link rel="alternate" type="text/html" href="http://news.squeak.org/2010/07/08/a-newer-faster-computer-for-free/"/>
		<id>http://news.squeak.org/?p=799</id>
		<updated>2010-07-08T20:31:03+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://weeklysqueak.files.wordpress.com/2008/06/3d_cogs.jpg&quot;&gt;&lt;img src=&quot;http://weeklysqueak.files.wordpress.com/2008/06/3d_cogs.jpg?w=400&amp;amp;h=400&quot; title=&quot;cogs&quot; height=&quot;400&quot; width=&quot;400&quot; alt=&quot;&quot; class=&quot;alignnone size-full wp-image-441&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Eliot Miranda &lt;a href=&quot;http://forum.world.st/Teleplace-Cog-VMs-are-now-available-td2261896.html#a2261896&quot;&gt;has announced &lt;/a&gt;that his new Cog VM is now available for download, bringing Just-In-Time compilation and massive speed-ups to &lt;a href=&quot;http://squeak.org/&quot;&gt;Squeak&lt;/a&gt; and &lt;a href=&quot;http://www.pharo-project.org/&quot;&gt;Pharo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you’ve been following &lt;a href=&quot;http://www.mirandabanda.org/cogblog/&quot;&gt;Eliot’s blog&lt;/a&gt;, you’ll know that he’s been working on this new VM for quite a few months now; well, it’s now ready for public consumption, and it’s blisteringly fast: up to three times faster than the existing VMs.&lt;/p&gt;
&lt;p&gt;The VM selectively re-compiles code to native (Intel) machine-code, based on the size and complexity of the methods, and how often they’re called. This means that the benefits of the new VM vary from task to task, but Andreas Raab estimates that you should expect a 2-3x performance improvement generally, “more towards 2x when running primitive and I/O-bound stuff; more towards 3x when running ‘pure’ Smalltalk code”.&lt;/p&gt;
&lt;p&gt;Eliot is interested in hearing from developers on other platforms who want to port the new VM to those platforms. In the meantime, he has also released the “Stack VM”, a cross-platform interpreter that uses context-to-stack mapping to achieve more modest performance gains.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;http://forum.world.st/Teleplace-Cog-VMs-are-now-available-td2261896.html#a2261896&quot;&gt;Eliot’s original post&lt;/a&gt; and the following discussion for more details of the new VM, some notes of caution, and how to get your hands on it and use it.&lt;/p&gt;
&lt;p&gt;Thanks to Eliot for this great piece of work, and to &lt;a href=&quot;http://www.teleplace.com/&quot;&gt;Teleplace&lt;/a&gt; who have funded this work (and have been using it for the past year), and have agreed to release the new VM’s under the &lt;a href=&quot;http://www.opensource.org/licenses/mit-license.php&quot;&gt;MIT Licence&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/weeklysqueak.wordpress.com/799/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/weeklysqueak.wordpress.com/799/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/weeklysqueak.wordpress.com/799/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/weeklysqueak.wordpress.com/799/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/weeklysqueak.wordpress.com/799/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/weeklysqueak.wordpress.com/799/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/weeklysqueak.wordpress.com/799/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/weeklysqueak.wordpress.com/799/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/weeklysqueak.wordpress.com/799/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/weeklysqueak.wordpress.com/799/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=news.squeak.org&amp;amp;blog=394922&amp;amp;post=799&amp;amp;subd=weeklysqueak&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;</content>
		<author>
			<name>Michael Davies</name>
			<uri>http://news.squeak.org</uri>
		</author>
	</entry>

	<entry>
		<title>Dave Woodward: Response to &quot;Why Parents Hate Parenting&quot;</title>
		<link rel="alternate" type="text/html" href="http://futuremint.com/response-to-why-parents-hate-parenting"/>
		<id>http://futuremint.com/response-to-why-parents-hate-parenting</id>
		<updated>2010-07-07T18:18:02+00:00</updated>
		<content type="html">&lt;p&gt;
	I commented on this article when it was linked on Hacker News, and I realized that my comment was probably worthwhile to non-readers of Hacker News too.&lt;i&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;i&gt;Why Parents Hate Parenting&lt;/i&gt;&lt;br /&gt; &lt;a href=&quot;http://nymag.com/news/features/67024/&quot;&gt;http://nymag.com/news/features/67024/&lt;/a&gt;&lt;p&gt;&lt;/p&gt;  &lt;div class=&quot;comment&quot;&gt;The lens through which parenting is viewed in the above article is too narrow. Parenting isn't about being happier. It is about being a bigger and better person. Children make your life BIGGER. You feel moments of happiness like you've never felt before. You also feel moments of anger like you've never felt before.&lt;p&gt;It really is indescribable and not for the faint of heart or the selfish. The beautiful thing about parenting is that it shows you who you really are (not who you &lt;i&gt;think&lt;/i&gt; you are), and gives you chances every day to grow.&lt;/p&gt;&lt;p&gt;It makes you see what really matters in life, assuming you actually come to this realization. I've seen plenty of people not realize this and fight to keep their identity, their original idea of what they wanted for themselves while also trying to be a parent. That doesn't work.&lt;/p&gt;&lt;p&gt;Part of parenting is a certain amount of ego destruction. You &lt;i&gt;have&lt;/i&gt; to go through that if you want to genuinely care for another human being.&lt;/p&gt;&lt;p&gt;This is what makes the experience of parenting so great. It is a kind of Zen experience of making yourself better by destroying your concept of self (and putting another 'self' first more than your own self would like).&lt;br /&gt; &lt;/p&gt;&lt;/div&gt;
	
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://futuremint.com/response-to-why-parents-hate-parenting&quot;&gt;Permalink&lt;/a&gt; 

	| &lt;a href=&quot;http://futuremint.com/response-to-why-parents-hate-parenting#comment&quot;&gt;Leave a comment  »&lt;/a&gt;

&lt;/p&gt;</content>
		<author>
			<name>Dave Woodward</name>
			<uri>http://futuremint.com</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Boot Squeak</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/boot-squeak.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-3602368803930995403</id>
		<updated>2010-07-07T07:35:26+00:00</updated>
		<content type="html">Intersting alternative to SqueakNOS: Michael van der Gulik &lt;a href=&quot;http://securesqueak.blogspot.com/2010/07/squeakos-cheaters-way.html&quot;&gt;describes&lt;br /&gt;a way to boot Squeak&lt;/a&gt; on a tiny core linux.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-3602368803930995403?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Michael van der Gulik: SqueakOS the cheaters way</title>
		<link rel="alternate" type="text/html" href="http://securesqueak.blogspot.com/2010/07/squeakos-cheaters-way.html"/>
		<id>tag:blogger.com,1999:blog-2748388581844984599.post-2673730596342304174</id>
		<updated>2010-07-06T23:32:30+00:00</updated>
		<content type="html">Cold boot to Squeak under 6 seconds? Possible. I haven't actually automated it yet, but it is possible as described below.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.tinycorelinux.com/&quot;&gt;Tiny Core Linux&lt;/a&gt; is a mini Linux distribution that is, before boot, only two files. One is the Linux kernel. The other is the entire filesystem which is loaded into RAM. These two files are packaged up into a bootable .iso image for burning to a CD, although you can put them on any bootable medium and boot them using grub. You can put these files on an existing Linux partition on your hard disk, for example. The &quot;tiny&quot; version is 10MB and has a graphical interface and package manager! The &quot;micro&quot; version is 6MB and is only a command line. They boot &lt;span style=&quot;font-style: italic;&quot;&gt;really &lt;/span&gt;fast.&lt;br /&gt;&lt;br /&gt;Now, the micro version can be used to run Squeak:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Boot it up using one of the &quot;vga=&quot; command line parameters to get a working framebuffer. You could use grub to persist this setting.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Get Squeak into the filesystem somehow. I used wget to fetch an image and the Linux VM from &lt;a href=&quot;ftp://ftp.squeak.org/&quot;&gt;ftp://ftp.squeak.org/&lt;/a&gt;. A more permanent option would be mounting an existing filesystem.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Become root (sudo su) to run Squeak, or fix the permissions on /dev/input/mice. &lt;/li&gt;&lt;li&gt;Run squeak: &quot;bin/squeak -vm-display-fbdev&quot;.&lt;/li&gt;&lt;/ol&gt;This is not quite as cool as &lt;a href=&quot;http://wiki.squeak.org/squeak/1762&quot;&gt;SqueakNOS&lt;/a&gt;, but it is a practical, easy and stable way of running Squeak &lt;span style=&quot;font-style: italic;&quot;&gt;as if&lt;/span&gt; it were the OS with good hardware support and a filesystem.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/2748388581844984599-2673730596342304174?l=securesqueak.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>gulik (mikevdg@gmail.com)</name>
			<uri>http://securesqueak.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Smalltalk Medicine Show: Seaside - From Builder To Canvas</title>
		<link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=ygCCyQPPM10&amp;feature=youtube_gdata"/>
		<id>tag:youtube.com,2008:video:ygCCyQPPM10</id>
		<updated>2010-07-05T14:50:25+00:00</updated>
		<content type="html">&lt;div style=&quot;color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-size: 12px; width: 555px;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;140&quot; rowspan=&quot;2&quot; valign=&quot;top&quot;&gt;&lt;div style=&quot;border: 1px solid #999999; margin: 0px 10px 5px 0px;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=ygCCyQPPM10&amp;amp;feature=youtube_gdata&quot;&gt;&lt;img src=&quot;http://i.ytimg.com/vi/ygCCyQPPM10/default.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;256&quot; valign=&quot;top&quot;&gt;&lt;div style=&quot;font-size: 12px; font-weight: bold;&quot;&gt;&lt;a style=&quot;font-size: 15px; font-weight: bold;&quot; href=&quot;http://www.youtube.com/watch?v=ygCCyQPPM10&amp;amp;feature=youtube_gdata&quot;&gt;Seaside - From Builder To Canvas&lt;/a&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; margin: 3px 0px;&quot;&gt;&lt;span&gt;How the HTML was modelled in Smalltalk.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width=&quot;146&quot; style=&quot;font-size: 11px; line-height: 1.4em; padding-left: 20px; padding-top: 1px;&quot; valign=&quot;top&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;From:&lt;/span&gt;
&lt;a href=&quot;http://www.youtube.com/profile?user=gandysmedicineshow&quot;&gt;gandysmedicineshow&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;Views:&lt;/span&gt;
59&lt;/div&gt;
&lt;div style=&quot;white-space: nowrap; text-align: left;&quot;&gt;&lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif&quot; style=&quot;border: 0px none; margin: 0px; padding: 0px; vertical-align: middle; font-size: 11px;&quot; align=&quot;top&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 11px;&quot;&gt;0
&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;ratings&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;Time:&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-size: 11px; font-weight: bold;&quot;&gt;03:19&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;font-size: 11px; padding-left: 20px;&quot;&gt;&lt;span style=&quot;color: #666666; font-size: 11px;&quot;&gt;More in&lt;/span&gt;
&lt;a href=&quot;http://www.youtube.com/categories_portal?c=28&quot;&gt;Science &amp;amp; Technology&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</content>
		<author>
			<name>gandysmedicineshow</name>
			<uri>http://www.youtube.com/profile_videos?user=gandysmedicineshow</uri>
		</author>
	</entry>

	<entry>
		<title>Torsten Bergmann: Seaside 3.0 RC</title>
		<link rel="alternate" type="text/html" href="http://astares.blogspot.com/2010/07/seaside-30-rc.html"/>
		<id>tag:blogger.com,1999:blog-9604963.post-766141458033245877</id>
		<updated>2010-07-04T19:55:26+00:00</updated>
		<content type="html">Julian &lt;a href=&quot;http://blog.fitzell.ca/2010/07/seaside-3-release-candidate.html&quot;&gt;announced Seaside 3.0 RC&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/9604963-766141458033245877?l=astares.blogspot.com&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Torsten (noreply@blogger.com)</name>
			<uri>http://astares.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title>Julian Fitzell: Seaside 3 &quot;Release Candidate&quot;</title>
		<link rel="alternate" type="text/html" href="http://blog.fitzell.ca/2010/07/seaside-3-release-candidate.html"/>
		<id>tag:blogger.com,1999:blog-7664597274807100637.post-6603548242162309033</id>
		<updated>2010-07-02T23:47:55+00:00</updated>
		<content type="html">You could say it's been a long time coming.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://seaside.st/&quot;&gt;Seaside&lt;/a&gt; 3.0 began ambitiously and grew from there. We began (at least &lt;span style=&quot;font-style: italic;&quot;&gt;I&lt;/span&gt; did) with the goal of cleaning up the architecture, revisiting each aspect and asking what could be simplified, clarified, or standardized. As functional layers were teased apart, suddenly pieces became unloadable and a repackaging effort got under way. From this we realized we could make the process of porting Seaside much less painful. Along the way, we lowered response times and reduced memory usage, added 10x the number of unit tests (1467 at last count), standardized code and improved code documentation, added &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; support, and, oh, did you hear there's a &lt;a href=&quot;http://book.seaside.st/&quot;&gt;book&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;The result? This release runs leaner, on at least six Smalltalk platforms and is, I think, easier to learn, easier to use, and easier to extend. Seaside 3.0 is the best platform out there for developing complex, server-side web applications. Is it perfect? No, but I'll come to that part in a moment. It is the result of literally thousands of hours of work by a small group of people across all six platforms. But this release also exists only due to the generosity of Seaside users who tried it, filed bugs against it, submitted patches for it, and eventually deployed it.&lt;br /&gt;&lt;br /&gt;Deployed it?! Yeah, you see, not only have all the commercial vendors chosen to ship our alphas and betas, but our users have also used them to put national-scale commercial projects into production. I &lt;a href=&quot;http://blog.fitzell.ca/2010/06/berlin-product-management-and-smalltalk.html&quot;&gt;alluded last month&lt;/a&gt; to a conference session I attended, in which somebody made the statement that&lt;br /&gt;&lt;blockquote&gt;The best way to kill a product is to publicly announce a rewrite. Customers will immediately avoid investing in the &quot;old&quot; system like the plague, starving the product of all its revenue and eventually killing it.&lt;br /&gt;&lt;/blockquote&gt;It was a shocking moment as I realized we'd attempted just that. At first we justified the long release cycle because we were &quot;doing a major rewrite&quot;; then we just had &quot;a lot more work to do&quot;. Eventually there were &quot;just too many bugs&quot; and things &quot;just weren't stable enough&quot;.  And, finally, once we realized we desperately needed to release and move forward, we just ran out of steam (no quotes there—we really did).&lt;br /&gt;&lt;br /&gt;I still think the original architectural work needed doing and I'm really happy about where we ended up, but here's what I've learned:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When your wonderful, dedicated users start putting your code into production, they're telling you it's ready to be released. Listen to them.&lt;/li&gt;&lt;li&gt;We don't have the manpower to carry out the kind of QA process that goes along with an Development, Alpha, Beta, RC, Final release process.&lt;/li&gt;&lt;li&gt;We need to figure out how to get more users actively involved in the project. This could be by writing code but probably more importantly by writing documentation, improving usability, building releases, managing the website, doing graphical design, or something else entirely. The small core team simply can't handle it all.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Trying to apply these lessons over the past month, I asked for help from a few people (thank you!) and we closed some final bugs, ran through the functional tests, developed a brand new welcome screen, and managed to bundle everything up. We're releasing this today as 3.0RC.&lt;br /&gt;&lt;br /&gt;We're not planning a standard multi-RC process. The &quot;Release Candidate&quot; simply signifies that you all have one last chance to download it, try it , and &lt;a href=&quot;http://code.google.com/p/seaside/issues/list&quot;&gt;let us know&lt;/a&gt; about any major explosions before we do a final release, hopefully at the end of the month. From there we'll be reverting to a simpler process, using frequent point releases to fix bugs. 3.1 will have a smaller, better defined scope and a shorter cycle. I have some ideas but before we start thinking about that, we all need a breather.&lt;br /&gt;&lt;br /&gt;I also have some ideas about the challenges that potential contributors to the project may face. But I'd like to hear your thoughts and experiences. So, if you have any suggestions or you'd like to help but something is stopping you, send me an email or (better yet if you're there) pull me aside at &lt;a href=&quot;http://cslondon2010.eventbrite.com/&quot;&gt;Camp Smalltalk London&lt;/a&gt; or &lt;a href=&quot;http://www.esug.org/Conferences/2010&quot;&gt;ESUG&lt;/a&gt; and tell me about it.&lt;br /&gt;&lt;br /&gt;Ok, ok. You've waited long enough—thank you. Here's the &lt;a href=&quot;http://seaside.st/distributions/Seaside-3.0rc.app.zip&quot;&gt;3.0RC one-click&lt;/a&gt; image, based on &lt;a href=&quot;http://www.pharo-project.org/&quot;&gt;Pharo&lt;/a&gt; 1.1 RC3 and Grease 1.0RC (&lt;a href=&quot;http://seaside.st/distributions/Seaside-3.0rc.zip&quot;&gt;just the image&lt;/a&gt; here). Dale has promised an updated &lt;a href=&quot;http://code.google.com/p/metacello/&quot;&gt;Metacello&lt;/a&gt; definition soon. Enjoy!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/tracker/7664597274807100637-6603548242162309033?l=blog.fitzell.ca&quot; alt=&quot;&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Julian Fitzell (jfitzell@gmail.com)</name>
			<uri>http://blog.fitzell.ca/search/label/smalltalk</uri>
		</author>
	</entry>

</feed>
