<?xml version='1.0' encoding='UTF-8' ?>
<rss version="2.0" xml:base="http://www.cincomsmalltalk.com/userblogs/arden/" xmlns:admin="http://webns.net/mvcb/" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:icbm="http://postneo.com/icbm" xmlns:includedComments="http://www.laudably.com/rss2-comments" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
	<channel>
		<title>[|] Less is More</title>
		<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView</link>
		<description>Arden Thomas</description>
		<webMaster>arden@optonline.com</webMaster>
		<lastBuildDate>Sat, 20 Jun 2009 10:15:42 EDT</lastBuildDate>
		<image>
			<url>http://www.cincomsmalltalk.com/images/cst_small.jpg</url>
			<title>[|] Less is More</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView</link>
			<height>50</height>
			<width>81</width>
		</image>
		<admin:generatorAgent rdf:resource="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/Silt"></admin:generatorAgent>
		<admin:errorReportsTo rdf:resource="mailto:arden@optonline.com"></admin:errorReportsTo>
		<dc:language>en-us</dc:language>
		<dc:creator>Arden Thomas</dc:creator>
		<dc:rights>Copyright 2006 Arden Thomas</dc:rights>
		<dc:date>2009-06-20T10:15:42-04:00</dc:date>
		<icbm:latitude>41.633333</icbm:latitude>
		<icbm:longitude>-73.916667</icbm:longitude>
		<item>
			<title>Tetris? Yes Tetris!</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Tetris_Yes_Tetris!&amp;entry=3415362157</link>
			<category>Development</category>
			<pubDate>Tue, 24 Mar 2009 15:42:37 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if !mso]>

<style>

v\:* {behavior:url(#default#VML);}

o\:* {behavior:url(#default#VML);}

w\:* {behavior:url(#default#VML);}

.shape {behavior:url(#default#VML);}

</style>

<![endif]--><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin:0in;

	mso-para-margin-bottom:.0001pt;

	mso-pagination:widow-orphan;

	font-size:10.0pt;

	font-family:"Calibri","sans-serif";}

</style>

<![endif]--> Tetris?&nbsp; Yes Tetris!<br /><br /> It had been awhile since I had actually picked up my own

product and really immersed myself in a coding project.&nbsp; Recently my Tivo had recorded a short history

of the game of Tetris (quite interesting), and this piqued my interest ..... why

not develop a game of Tetris? (for fun and personal use of course)&nbsp; Oh, I know, its' been done; &nbsp;it has even been used as an example for design

in Smalltalk for years, and there is even an example that ships with the

product &nbsp;.... So I set a few ground rules.<br /><br /> &middot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Don't look at existing implementations (no

cheating, eyes on your own monitor! ;-) )<br /><br /> &middot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Make it simple, less is more is a theme here<br /><br /> &middot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Use a recent VisualWorks 7.7 beta to develop in,

and experience our new changes to the environment. No enhancements, just the

stock, out of the box environment.<br /><br /> The result?&nbsp; Wow!&nbsp; The fast time to get something working reaffirmed

to me the power of Smalltalk, and the continued refinement in our

environments.&nbsp; Some notes:<br /><br /> &middot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Within half an hour I had a grid, a colored tetris

piece (stick) displayed on the grid, and the stick dropping down the grid. Then

I worked on:<br /><br /> o&nbsp;&nbsp;

moving the active piece left and right<br /><br /> o&nbsp;&nbsp;

recognizing when the activePiece could drop no

further, and making its cells static in the grid<br /><br /> o&nbsp;&nbsp;

pause and resume when pressing the escape key<br /><br /> o&nbsp;&nbsp;

&nbsp;rotation

of the object when pressing the up arrow<br /><br /> o&nbsp;&nbsp;

Dropping the activePiece when pressing the down

arrow<br /><br /> Within a relaxed two hours I had the basic functionality

complete, and continued to add remaining pieces, experiment with the nature and

direction of rotation, and play the game.<br /><br /> I had a total of a dozen classes; eight of them were the

seven pieces (shapes) and an abstract superclass. The remaining four:

TetrisApp, TetrisModel, TetrisView, GridCell.&nbsp;

<br /><br /> Some observations:<br /><br /> There is VERY little code.&nbsp;

There are half a dozen to a dozen methods in the major classes, and most

of those are one-liners.&nbsp; The more

complex methods were ones for reporting which cells a piece occupied for its

current orientation, and even most of those were a half dozen or less lines of

code.<br /><br /> The environment, Wow!&nbsp;

The improvements our tools team have continued to put in to our

environment pleasantly surprised me. &nbsp;How

could I be surprised?&nbsp; I frequently load

and run our beta versions of the product, and some changes are very obvious. But

until you sit down and <em>really</em> <em>use</em> <em>it</em>,

some changes may be hard to appreciate.&nbsp; Lots

of little refinements that make the experience more pleasant and productive

abound.&nbsp; The browser just conveys more

useful information than ever before. Many of the changes are new for 7.7, and some

are refinements from recent versions.&nbsp; Either

way, the development experience has made big strides in recent years, and

recent months.<br /><br /> There are still some minor errors in the behavior of the

application, which I may leave in there for instructional reasons.&nbsp; There are many, many improvements and

refinement that can be made.&nbsp; I will

publish this at some time, if you want to try it out, shoot me an email at:

athomas@cincom.com</p>

<p><img src="files/Tetris.jpg" border="0" alt="Tetris" width="768" height="1120" /></p>
</div>]]></description>
			<guid isPermaLink="false">3415362157</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3415362157</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3415362157</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Tetris_Yes_Tetris!&amp;entry=3415362157</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Tetris_Yes_Tetris!&amp;entry=3415362157</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2009-03-25T04:16:23-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Now if syntax highlighting and autocompletion could be a bit better :&amp;gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Tetris_Yes_Tetris!&amp;entry=3415362157</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Tetris_Yes_Tetris!&amp;entry=3415362157</includedComments:puid>
					<includedComments:author>Maarten</includedComments:author>
					<includedComments:pubDate>2009-03-26T08:02:49-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Arden,&lt;/p&gt;
&lt;p&gt;Why not refactor this to the Cairo API,&lt;/p&gt;
&lt;p&gt;The result could be much more appealing and you would love the API&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;@+Maartn&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Cairo</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Tetris_Yes_Tetris!&amp;entry=3415362157</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Tetris_Yes_Tetris!&amp;entry=3415362157</includedComments:puid>
					<includedComments:author>Arden</includedComments:author>
					<includedComments:pubDate>2009-03-26T12:12:56-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Maarten,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I considered doing it in Cairo initially, but decided I would start without it, and later try a version with it.&lt;/p&gt;
&lt;p&gt;Thank you for a great suggestion.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; Arden&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Cairo</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3415362157</wfw:comment>
		</item>
		<item>
			<title>Coming to a city near you!</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Coming_to_a_city_near_you!&amp;entry=3415250811</link>
			<category>general</category>
			<pubDate>Mon, 23 Mar 2009 08:46:51 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-fareast-font-family:"Times New Roman";

	mso-fareast-theme-font:minor-fareast;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> I mentioned in an earlier post that we would be taking our

message on the road, and visiting some cities in a seminar series.&nbsp; The first will be in <strong>Minneapolis, Minnesota, </strong><strong>on

April 29<sup>th</sup>.&nbsp; </strong><br /><br /> <strong>See more information <a href="../cincom/digest?content=2009-files-seminarseries">here.</a>&nbsp; Hope to see you there!</strong><br /></p>
</div>]]></description>
			<guid isPermaLink="false">3415250811</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3415250811</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3415250811</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Coming_to_a_city_near_you!&amp;entry=3415250811</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Coming_to_a_city_near_you!&amp;entry=3415250811</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2009-03-25T05:26:38-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;The more information link confuses me?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Link?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Coming_to_a_city_near_you!&amp;entry=3415250811</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Coming_to_a_city_near_you!&amp;entry=3415250811</includedComments:puid>
					<includedComments:author>
James Robertson</includedComments:author>
					<includedComments:pubDate>2009-03-25T06:09:35-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Comment by 
James Robertson&lt;/p&gt;

&lt;p&gt;


&lt;p&gt;I posted some information &lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;amp;printTitle=Cincom_Smalltalk_is_Coming_to_Minneapolis&amp;amp;entry=3415003585"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>
Re: Coming to a city near you!</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3415250811</wfw:comment>
		</item>
		<item>
			<title>Learning Smalltalk in Germany</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Learning_Smalltalk_in_Germany&amp;entry=3414296229</link>
			<category>general</category>
			<pubDate>Thu, 12 Mar 2009 07:37:09 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><span style="font-size: small;">Why learn Smalltalk?</span></p>

<p><span style="font-size: small;">First it is a great language to work in, but you can make that determination yourself.</span></p>

<p><span style="font-size: small;">Second, even if you dont plan to work in Smalltalk, learning it will make you a better OO programmer in ANY language.</span></p>

<p><span style="font-size: small;">One of the best ways to learn Smalltalk is to take a class.</span></p>

<p><span style="font-size: small;">I want to reiterate some good information from <a href="../../blog/blogView?showComments=true&amp;printTitle=Smalltalk_Training_in_Germany&amp;entry=3414174700">James

post</a>.</span><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--><!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-fareast-font-family:"Times New Roman";

	mso-fareast-theme-font:minor-fareast;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--></p>

<p><span style="font-size: small;"><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Verdana; font-size: 19px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 28px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">The Georg Heeg company is running a public Smalltalk class in Koethen, Germany, May 4-8. Interested?<span class="Apple-converted-space">&nbsp;</span><a href="http://www.heeg.de/dienste/main_seminar_aktuell.html">Head to their website and contact them.</a></span></span></p>

<p>&nbsp;</p>
</div>]]></description>
			<guid isPermaLink="false">3414296229</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3414296229</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3414296229</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3414296229</wfw:comment>
		</item>
		<item>
			<title>Leveraging Multi-Core Computers redux</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Leveraging_Multi-Core_Computers_redux&amp;entry=3411718636</link>
			<category>Development</category>
			<pubDate>Tue, 10 Feb 2009 11:37:16 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Leveraging Multi-Core Computers redux<br /><br /> A while back you may remember my <a href="blogArchive?month=11&amp;year=2008">series

of experiments</a> and observations with an experimental framework that allows

you to take advantage of multi-core computers with your Smalltalk applications.&nbsp;

It really comes down to approaches to concurrency.&nbsp; The goals I want us to attain in an approach are:<br /><br /> &middot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Keep it Smalltalk simple<br /><br /> &middot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Maximum gain with minimum pain<br /><br /> The framework offered allows easy implementation of large

grained concurrent processes, which can give big advantages (where it fits of course), can be done fairly simply, and usually steers clear of the worst issues that

can occur when using concurrency.<br /><br /> Threading is a alternative approach, which can be effective,

but can also bring out the worst and most difficult issues in concurrency.<br /><br /> A friend sent me a links to some articles of interest, and that support

this direction, one from the <a href="http://software.intel.com/en-us/blogs/2006/11/15/dont-thread-the-end-of-the-free-ride/">Intel</a> developer network, and another from <a href="http://www.computer.org/portal/site/computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&amp;pName=computer_level1_article&amp;TheCat=1005&amp;path=computer/homepage/0506&amp;file=cover.xml&amp;xsl=article.xsl">IEEE

Computer</a>.<br /><br /> If you would like to learn more about our approach to

leveraging multi-core in Smalltalk, please <a href="mailto:athomas@cincom.com">contact</a> us.<br /></p>
</div>]]></description>
			<guid isPermaLink="false">3411718636</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3411718636</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3411718636</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3411718636</wfw:comment>
		</item>
		<item>
			<title>Know someone who wants to learn Smalltalk?</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Know_someone_who_wants_to_learn_Smalltalk&amp;entry=3410608565</link>
			<category>general</category>
			<pubDate>Wed, 28 Jan 2009 15:16:05 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-fareast-font-family:"Times New Roman";

	mso-fareast-theme-font:minor-fareast;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Do you know someone looking to learn

Smalltalk, or who wants to lean the right way to do Object-Oriented?<br /><br /> Here are some links you can send

them, and a three step program to a successful start!<br /><br /> <strong><span style="text-decoration: underline;">Smalltalk - VisualWorks </span></strong><br /><br /> VisualWorks is a modern descendent

of the revolutionary work done at PARC, and a fantastic way to start learning, or

building, professional applications.<br /><br /> First go to&nbsp; <a href="../../">Cincom Smalltalk</a>,&nbsp; click on <a href="../cincom/blogView?content=smalltalk">downloads</a>,

and request a VisualWorks non-commercial CD be sent to you.&nbsp; Or fill out the forms and download it.<br /><br /> <strong><span style="text-decoration: underline;">Videos</span></strong><br /><br /> Next, click on the <a href="../cincom/blogView?content=developerGallery">"Developer's

Gallery" </a>&nbsp;icon, choose the <a href="../cincom/blogView?content=smalltalk_videos">"Cincom

Smalltalk Videos"</a> &nbsp;link followed by <a href="../cincom/blogView?content=smalltalk_videos_intro">"Introduction

to the Product Videos"</a> <br /><br /> <strong><span style="text-decoration: underline;">Books</span></strong><br /><br /> Here are some links to free PDF

versions of published books. &nbsp;They can be bought on Amazon if a hardcopy

is desired.<br /><br /> The nice thing about these books is

that they use VisualWorks as the example Smalltalk, so it makes it much easier

to get started. A thank you to Stephane Ducasse, for making these available.</p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 12pt;"></span><span style="font-size: 14pt; font-family: "></span></p>

<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-fareast-font-family:"Times New Roman";

	mso-fareast-theme-font:minor-fareast;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> <a href="http://stephane.ducasse.free.fr/FreeBooks/ByExample/SmalltalkByExampleNewRelease.pdf" title="blocked::http://stephane.ducasse.free.fr/FreeBooks/ByExample/SmalltalkByExampleNewRelease.pdf">Smalltalk by Example</a>: the Developer's GuideAlex

Sharp, McGraw Hill Text; ISBN: 0079130364<br /><br /> <a href="http://stephane.ducasse.free.fr/FreeBooks/Art/artAdded174186187Final.pdf" title="blocked::http://stephane.ducasse.free.fr/FreeBooks/Art/artAdded174186187Final.pdf">The Art and Science of Smalltalk</a>, by Simon Lewis,

Prentice-Hall&nbsp;<br /><br /><a href="http://stephane.ducasse.free.fr/FreeBooks/HopkinsHoran/HopkinsHoran.pdf" title="blocked::http://stephane.ducasse.free.fr/FreeBooks/HopkinsHoran/HopkinsHoran.pdf">Smalltalk An Introduction to Application Development using

VisualWorks</a>, Trevor Hopkins and Bernard Horan, Pearson Education<br /><br /><br /> There are many more resources and lots of information

available, from numerous blogs, weekly podcasts (avail at iTunes and other sources),

a very active Smalltalk community, and other Smalltalk environments!&nbsp;

(ObjectStudio8, Web Velocity).<br /><br /> <strong>Visit <a href="../../">Cincom Smalltalk</a></strong><br /><br /> &nbsp;</p>

<p>&nbsp;</p>
</div>]]></description>
			<guid isPermaLink="false">3410608565</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3410608565</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3410608565</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3410608565</wfw:comment>
		</item>
		<item>
			<title>Musings;  then and now</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Musings;__then_and_now&amp;entry=3408599459</link>
			<category>general</category>
			<pubDate>Mon, 05 Jan 2009 09:10:59 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-fareast-font-family:"Times New Roman";

	mso-fareast-theme-font:minor-fareast;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--></p>

<p>Musings;&nbsp; then and now ...</p>

<p>First, a Happy New Year to all!<br /><br /> A couple of years after I had started with ParcPlace Systems

(back in the early 1990's), I had entertained the notion of an investment

strategy comprised of investing in the public companies who were using VisualWorks (or

even any flavor of Smalltalk, but I was an SE advocating VisualWorks at the

time).&nbsp; It would have done <strong><em>really,

really </em></strong>well.&nbsp; It's just as fun to

ponder why this was;&nbsp; was it because the companies

were astute and competent (noted by their choice in language) and therefore did

well?&nbsp; Or was it because of the productivity

of the language itself that let them rise above their competitors?&nbsp; Random luck?&nbsp; There is no way of knowing for sure; probably

some combination of factors, but it makes for an interesting discussion.<br /><br /> Fast forward to recent times ... with all the chaos in the

credit and financial markets impacting the economy and companies directly, is there

any correlation with companies using Smalltalk?&nbsp;

Although somewhat anecdotal, the companies in the banking and financial sector

who are using VisualWorks and ObjectStudio (Cincom's major Smalltalk products)

seemed to have fared far better than those who don't.&nbsp;&nbsp; A major issue for many firms was there risk

&amp; exposure to certain financial instruments.&nbsp; One company, fairly well known to the

Smalltalk community, uses our products specifically to manage risk, and appears

to be doing rather well compared to their peers.<br /><br /> I like this as an example of why folks should consider using

our Smalltalk products.&nbsp; In this case the

advantage realized is probably a combination of its productivity, but

especially that it lets you get your arms around more difficult problems, more effectively

than about anything else.</p>
</div>]]></description>
			<guid isPermaLink="false">3408599459</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3408599459</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3408599459</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Musings;__then_and_now&amp;entry=3408599459</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Musings;__then_and_now&amp;entry=3408599459</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2009-01-14T01:54:20-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>Untitled</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3408599459</wfw:comment>
		</item>
		<item>
			<title>Smalltalk Solutions </title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Smalltalk_Solutions_&amp;entry=3406990490</link>
			<category>Conferences</category>
			<pubDate>Wed, 17 Dec 2008 18:14:50 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-fareast-font-family:"Times New Roman";

	mso-fareast-theme-font:minor-fareast;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Smalltalk Solutions<br /><br /> You may have seen the <a href="../sticBlog/blogView?showComments=true&amp;printTitle=2009:_Several_Smaller_Smalltalk_Events_instead_of_Smalltalk_Solutions&amp;entry=3406986122">announcement</a> by STIC (Smalltalk Industry Council) president, Georg Heeg, that Smalltalk

Solutions will be postponed this year, largely due to company travel restrictions

due to the economy.<br /><br /> Our Cincom Smalltalk Program Director has a response to

this:<br /><br /> <strong>&nbsp;

"If you can't come to us, we'll come to you!"</strong><br /><br /> We will be travelling in the USA and Europe to bring

Smalltalk news, information, upcoming product changes, and more, to a city near

you.<br /><br /> See initial information about Cincom's Smalltalk events <a href="../cincom/digest#objectstudio">here</a>.<br /><br /> More to come, stay tuned.</p>

<p>&nbsp;&nbsp; - Arden</p>
</div>]]></description>
			<guid isPermaLink="false">3406990490</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3406990490</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3406990490</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3406990490</wfw:comment>
		</item>
		<item>
			<title>Program Quality Rule</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</link>
			<category>general</category>
			<pubDate>Fri, 07 Nov 2008 20:00:00 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"

  DefSemiHidden="true" DefQFormat="false" DefPriority="99"

  LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"

   UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"

   UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"

   UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"

   UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"

   UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"

   UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"

   UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"

   UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"

   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"

   UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"

   UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"

   UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-fareast-font-family:"Times New Roman";

	mso-fareast-theme-font:minor-fareast;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE

  

   

   

   

   

   

   

   

   

   

   

   

  

  MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-fareast-font-family:"Times New Roman";

	mso-fareast-theme-font:minor-fareast;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Program Quality Rule<br /><br /> A post on a <a href="http://c0de517e.blogspot.com/2008/06/quality-rule.html">Quality Rule</a> for programming was brought to my attention (thanks Michael).<br /><br /> It gives a metric based on the skill of the coders and the

size. <br /><br /> No surprise here:<br /><br /> "The bottom line is: big programs suck. Beauty lies in

minimal complexity."<br /><br /> Well, with my blog titled "Less is More" that song is a

familiar tune&nbsp; :-)<br /></p>
</div>]]></description>
			<guid isPermaLink="false">3403540800</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3403540800</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3403540800</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</includedComments:puid>
					<includedComments:author>CaptainP</includedComments:author>
					<includedComments:pubDate>2008-12-03T13:28:45-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Here's an interesting post that &lt;a href="http://javadots.blogspot.com/2008/12/formalizing-paradox.html"&gt;reasons about software quality&lt;/a&gt;. The bottom line: static quality analysis and static typing is a&amp;nbsp; conundrum.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Can we reason about quality?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</includedComments:puid>
					<includedComments:author>browser</includedComments:author>
					<includedComments:pubDate>2009-01-14T18:12:11-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Note the end of the blog entry referred to:&lt;/p&gt;
&lt;p&gt;"&lt;span style="font-style: italic;"&gt;P.S. Of course, this is something I've completely made up, I wanted to see how I could embed math in my posts..."&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Made up</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</includedComments:puid>
					<includedComments:author>Jonn</includedComments:author>
					<includedComments:pubDate>2009-03-17T17:13:46-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>sfAdGdeJlE</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Program_Quality_Rule&amp;entry=3403540800</includedComments:puid>
					<includedComments:author>Jonn</includedComments:author>
					<includedComments:pubDate>2009-03-17T17:14:47-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>sfAdGdeJlE</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3403540800</wfw:comment>
		</item>
		<item>
			<title>Multi Core Playground - Wrap up and Observations</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</link>
			<category>Development</category>
			<pubDate>Fri, 07 Nov 2008 14:17:31 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Multi Core Playground - Wrap up and Observations<br /><br /> Adding back in the work from the prior two posts reduced the

overall load time to 35 seconds, utilizing concurrency.&nbsp; Going from 114 to 35 seconds without that

much work or difficulty, I view as a big win.<br /><br /> <span style="text-decoration: underline;">Some observations</span>:<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Measure the elapsed time of work - it helps to

know where the problems are in order to address them<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

There are multiple way to do concurrency.&nbsp; In one experiment, I backed off using the new

framework, because a simpler approach worked better. &nbsp;This was a pleasant surprise - the green

thread model was actually very well suited for that problem. &nbsp;I ended up combining both for a superior

solution.<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Strive for simplicity.&nbsp;&nbsp; Remember if it gets out of hand, concurrency

can get ugly and difficult very quickly.&nbsp;

Follow the KISS principle (Keep it Simple, Smalltalk&nbsp; ;-) ).&nbsp;

<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

The launch of drone images was faster than I

expected<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

As mentioned in the commentary, my measurements

included startup and shutdown of images, a (overly?) conservative approach

that may be atypical to how many use this technology.&nbsp; Results would be even better had I not

included that.<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

The experimental work has some pieces that I

think show a lot of foresight.&nbsp; Mechanisms

for handling some common issues.&nbsp; Like

what?&nbsp; If I had a dozen drone images

running and lost my references and the ability to close them, closing the main

image shuts everything down.&nbsp; Things like

that save a lot of time, avoid aggravation, and make it fun.<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

My expectations on the simplicity and robustness

of the experimental framework were surpassed!&nbsp;

(Thank you &nbsp;Michael and Martin!)&nbsp; All

the work and experiments were done in half a day.&nbsp; One of my goals as product manager is to make

this kind of concurrency easy for our customers.&nbsp; An overly complex or difficult solution would

be antithetical to the benefits of Smalltalk.&nbsp;

I'll steal one of James favorite lines (back when he had P.M. title -

"If the product manager can do it, how hard can it be?" J<br /><br /> I know I will get the question:&nbsp; "When will this code be available?"<br /><br /> When the initial tasks are completed and the responsible engineers

are happy with the stability of it, we will look at making it available.&nbsp; &nbsp;For what

I used it for, I found it rock stable.&nbsp; <br /><br /> Earlier versions may be made available to those who can commit to

trying it and giving us feedback.&nbsp; <br /><br /> If you are interested in getting the code when it does become available, &nbsp;<a href="mailto:athomas@cincom.com">let me

know</a> and I can send an email when available.<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Arden<br /></p>
</div>]]></description>
			<guid isPermaLink="false">3403520251</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3403520251</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3403520251</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</includedComments:puid>
					<includedComments:author>Isaac Gouy</includedComments:author>
					<includedComments:pubDate>2008-11-07T17:41:26-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&amp;gt; 114 to 35 seconds&lt;/p&gt;
&lt;p&gt;What was the memory use for each approach?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>memory use?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</includedComments:puid>
					<includedComments:author>Claus</includedComments:author>
					<includedComments:pubDate>2008-11-08T06:32:14-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;How about platform support? IIRC, this was supposed to be *nix world, mostly and using STDERR/STDOUT. Have you looked into using SharedMemorySegments?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Platform support?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</includedComments:puid>
					<includedComments:author>Arden</includedComments:author>
					<includedComments:pubDate>2008-11-08T12:52:10-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Claus;&lt;/p&gt;
&lt;p&gt;This solution runs on Windows, OSX, and unix flavors, IIRC.&lt;/p&gt;
&lt;p&gt;SharedMemory is being discussed, but was not part of this experiment.&lt;/p&gt;
&lt;p&gt;- Arden&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>platforms</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Wrap_up_and_Observations&amp;entry=3403520251</includedComments:puid>
					<includedComments:author>Geff</includedComments:author>
					<includedComments:pubDate>2009-05-01T18:26:49-04:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;You mentioned in one of the posts that the drone image was another instance of the same image file as the original image. While this is usefull and a simple approach.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I would also like the ability to choose which image file to drone off of. I.e I might have say a set of drones made for MonteCarolo simulations and another for rule based calculations where the two would be configured differently both in content and in runtime configuration parameters.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;regards&lt;/p&gt;
&lt;p&gt;Geff&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Custome Drone Images</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3403520251</wfw:comment>
		</item>
		<item>
			<title>Multi Core playground - Experiment 2b</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2b&amp;entry=3403508400</link>
			<category>Development</category>
			<pubDate>Fri, 07 Nov 2008 11:00:00 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Multi Core playground - Experiment 2b<br /><br /> Yesterday we improved the load time of Mutual Funds, making

it load more than twice as fast (80 seconds -&gt;&nbsp; 18 seconds), removing this code from the

bottleneck of the overall loading.<br /><br /> Stepping back, the reason the sequential code took so long,

was that, for each letter:<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

An http call was made<br />-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

A couple seconds passed for the data to come

back (wait)<br />-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

The data was quickly processed. <br /><br /> So the problem is essentially the wait in the second step.&nbsp; We could never get to the next letter, until

we completed waiting for, then processing the first.<br /><br /> But it was pointed out to me, that the vm is not blocked on

the wait for the data, and was suggested I should attempt to do the calls

concurrently.<br /><br /> So I did - Wow!&nbsp; I was

able to fire up a machine, and have it fire up 13 processes (using the simple message

#fork) to process my letter queue, and it resulted in bringing the time down to

a nominal 15 seconds.&nbsp; This solution also

more effectively utilized the cpu for the image it was running in (less wait,

more work).<br /><br /> I was very pleased - this was an area where the green

threads model (that Cincom Smalltalks use)&nbsp;

was of great benefit at reducing the time and increasing the

throughput.&nbsp; Combine this with the model

that allowed me to outsource that work from the current image to another (which

ran headlessly in the background) and I had a solution far, far superior to the

original.&nbsp; Outsourcing the loading work

to other images (which have no UI) offloads the work, and allows the current

image to remain responsive to the user - a big benefit.</p>

<p>- Arden</p>
</div>]]></description>
			<guid isPermaLink="false">3403508400</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3403508400</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3403508400</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3403508400</wfw:comment>
		</item>
		<item>
			<title>Multi Core playground - Experiment 2</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</link>
			<category>Development</category>
			<pubDate>Fri, 07 Nov 2008 02:00:00 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Multi Core playground - Experiment 2<br /><br /> In the last installment, we had improved load time of a

large amount of data from various source from 114 seconds to 80.&nbsp; But we noted that the overall time was almost

all due to one item taking about that long - a bottleneck that we should try to

improve.&nbsp; The item is the loading of

mutual funds, over 24,000 of them.&nbsp;&nbsp; What

it does is make 26 http calls: one for all funds beginning with &lsquo;A' and so on.&nbsp; This was simply the easiest and obvious way

to extract the data from a finance site.&nbsp;&nbsp;

So we conveniently have the problem already broken down into 26

sub-pieces.&nbsp; My first attempt was to fire

up three "machines" (images) and dole out a letter whenever they were ready for

more.&nbsp; This quickly dropped the time for

this part of the load to only 31 seconds, a huge improvement!&nbsp; But I had another question now; with 26

pieces, what was the optimal number of machines (drones I often call them) to

"fire up" at the problem?<br /><br /> Hey that's what loops are for!&nbsp; After a chat with an engineer (thanks

Michael!),&nbsp; I ended up with more

versatile code which you can see at the bottom, where I can pass in "n" for n

number of machines to try.<br /><br /> You can see in the tests below, 8 seemed to be the sweet

spot.&nbsp; <br />The upshot?&nbsp; This

section of the load no longer became the bottleneck.<br />Tomorrow:&nbsp; More than

one way too solve with concurrency.<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Arden<br /><br /> My workspace looked something like this:<br /><br /> 3 to: 20 do:[:n | <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectMemory

globalGarbageCollect.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ms :=

Time millisecondsToRun: [MutualFund loadMulti: n ].<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transcript

cr; show: 'Time with: ', n printString , ' drones: ' , ms printString ].<br /><br /> Results?<br /><br /> Time with: 3 drones: 30244<br />Time with: 4 drones: 22373<br />Time with: 5 drones: 20674<br />Time with: 6 drones: 18271<br />Time with: 7 drones: 18570<br />Time with: 8 drones: 17619<br />Time with: 9 drones: 17802<br />Time with: 10 drones: 17691<br />Time with: 11 drones: 19558<br />Time with: 12 drones: 18905<br />Time with: 13 drones: 17658<br />Time with: 14 drones: 19696<br />Time with: 15 drones: 21028<br />Time with: 16 drones: 19704<br />Time with: 17 drones: 21899<br />Time with: 18 drones: 19400<br />Time with: 19 drones: 19884<br />Time with: 20 drones: 20698<br /><br /> &nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queue

:= self aToZQueue.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; done :=

Semaphore new.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results

:= SharedQueue new.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; machines

:= VirtualMachine new: n.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; machines

do: [:machine |<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ |

next |&nbsp; [ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next

:= queue nextAvailable.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next

isNil] whileFalse: [results nextPut: (machine doit: 'MutualFund loadForChar:

char' with: (Dictionary new at: #char put: next ; yourself))].<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; machine

release.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; done

signal] fork].<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; machines

size timesRepeat: [done wait].<br /></p>
</div>]]></description>
			<guid isPermaLink="false">3403476000</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3403476000</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3403476000</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Boris</includedComments:author>
					<includedComments:pubDate>2008-11-07T11:29:11-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I certainly hope that passing code to a worker VM doesn't have to involve strings...?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Why Strings?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Arden</includedComments:author>
					<includedComments:pubDate>2008-11-07T12:15:34-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Boris;&lt;/p&gt;
&lt;p&gt;In this case it is mostly invoking code, and I cant think of a simpler more efficient means, than as a string.&lt;/p&gt;
&lt;p&gt;You get the object results returned.&amp;nbsp; What did you have in mind?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Strings</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Boris</includedComments:author>
					<includedComments:pubDate>2008-11-07T12:17:45-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;The obvious problem with strings is that they aren't subject to any of the tools in the IDE,&lt;/p&gt;
&lt;p&gt;- senders&lt;/p&gt;
&lt;p&gt;- references&lt;/p&gt;
&lt;p&gt;- rewrite&lt;/p&gt;
&lt;p&gt;- safe remove&lt;/p&gt;
&lt;p&gt;- ...&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Thorsten</includedComments:author>
					<includedComments:pubDate>2008-11-07T13:49:21-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I second Boris. Can't we use BlockClosures instead?&lt;/p&gt;
&lt;p&gt;This and your remark that objects are returned, leads to the question what state is shared between the calling Image and the VirtualMachine. MutualFund seems to be shared without having to do something about it, so is all global state shared? What about GC?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Shared state?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Thorsten</includedComments:author>
					<includedComments:pubDate>2008-11-07T13:59:38-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I second Boris. Can't we use BlockClosures instead?&lt;/p&gt;
&lt;p&gt;This and your remark that objects are returned, leads to the question what state is shared between the calling Image and the VirtualMachine. MutualFund seems to be shared without having to do something about it, so is all global state shared? What about GC?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Shared state?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Thorsten</includedComments:author>
					<includedComments:pubDate>2008-11-07T14:10:05-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I second Boris. Can't we use BlockClosures instead?&lt;/p&gt;
&lt;p&gt;This and your remark that objects are returned, leads to the question what state is shared between the calling Image and the VirtualMachine. MutualFund seems to be shared without having to do something about it, so is all global state shared? What about GC?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Shared state?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Arden</includedComments:author>
					<includedComments:pubDate>2008-11-07T15:15:46-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Thorsten;&lt;/p&gt;
&lt;p&gt;Nothing is shared explicitly, but the drone image started is another instance based off of the image you are in, so you know the code is there.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The images communicate through pipes.&lt;/p&gt;
&lt;p&gt;Objects are marshalled through the pipes with BOSS.&lt;/p&gt;
&lt;p&gt;This was an experiment, but for ease, and this class of problem, I am very pleased.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Share alike</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Boris</includedComments:author>
					<includedComments:pubDate>2008-11-07T17:34:20-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Still, the block of code to run should also be transferred via boss or something, but definitely not string, you really don't want to encourage this IMHO.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Arden</includedComments:author>
					<includedComments:pubDate>2008-11-07T18:11:48-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Blocks can be very tricky with Boss, as in many of them (non-full blocks maybe?) will not BOSS at all.&lt;/p&gt;
&lt;p&gt;I agree it would be nice to have the IDE references, but I dont know an appropriate solution, nor would I want the solution to be more complex than the value it added. &amp;nbsp;For this experiment this worked fine, was simple and reliable, and had only a relatively minor drawback that the two word "script" was not known by the IDE.&lt;/p&gt;
&lt;p&gt;I'm not sure what the strong aversion to strings is from. &amp;nbsp;Can you elaborate the concern? &amp;nbsp; Thanks&lt;/p&gt;
&lt;p&gt;- Arden&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>blocks</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Thorsten</includedComments:author>
					<includedComments:pubDate>2008-11-08T11:39:29-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;My aversion to putting code in strings stems from experience: in our productive systems we use a UI framework which uses magic method names for some actions which means that the callers of these methods build the method name from some fixed string combined with a runtime string. This has the exact same problem like using #doit:, that the calling sites are not browsable and not refactorizable and that the called methods do not have (in general) any callers at all which subjects them to be removed mistakenly.&lt;/p&gt;
&lt;p&gt;(Note: I have nothing against using #perform: where the argument has been assigned a literal symbol somewhere. The problem arises when the argument is built from a string.)&lt;/p&gt;
&lt;p&gt;The same problem has crept into the Java world by using more and more XML e.g. in the JSF framework.&lt;/p&gt;
&lt;p&gt;I'm fine with restricting the BlockClosures which can be used for executing code on a VirtualMachine to clean blocks, so the relevant part of your example would look like:&lt;/p&gt;
&lt;p&gt;machine do: [:char | MutualFund loadForChar: char] with: next&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Aversion to strings</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Thorsten</includedComments:author>
					<includedComments:pubDate>2008-11-08T11:45:36-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;&amp;gt;&amp;nbsp;&lt;span style="font-family: verdana; font-size: 13px; line-height: 19px;"&gt;Nothing is shared explicitly, but the drone image started is another instance based off of the image you are in, so you know the code is there.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;What do you mean by "you know the code is there". The code consists of objects which are reached through global class objects. So, does the VirtualMachine access the same objects? If yes, it could access arbitrary global objects, too, couldn't it? If not, how does it access the class MutualFund (together with its method objects) in your example?&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Share alike</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2008-11-08T14:46:07-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Thorsten;&lt;/p&gt;
&lt;p&gt;&amp;gt; What do you mean by "you know the code is there".&lt;/p&gt;
&lt;p&gt;What I mean is that the drone image I start will be based off of the image I am starting it from.&amp;nbsp; So if I have code that will run in my current image (from startup of my current image) , it should run in the drone image that gets started.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If I start up two copies of the same image, I "know" the second image instance has the same classes and methods as the first - this is what I meant - I hope this clarifies.&lt;/p&gt;
&lt;p&gt;Regards - Arden&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Thorsten</includedComments:author>
					<includedComments:pubDate>2008-11-09T03:49:16-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Arden,&lt;/p&gt;
&lt;p&gt;ah, now I understand: the VirtualMachine really gets started from the same image *file* as the running image, right? So it will share the code but not the current state of the running image (and probably it will not write to the changes file).&lt;/p&gt;
&lt;p&gt;Thanks for clarifying that!&lt;/p&gt;
&lt;p&gt;That leaves the question of using strings: what do you think about using clean blocks instead of strings (see my previous comment)?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Code sharing</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_playground_-_Experiment_2&amp;entry=3403476000</includedComments:puid>
					<includedComments:author>Geff</includedComments:author>
					<includedComments:pubDate>2009-05-01T18:16:39-04:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;In addition to the refactoring concerns.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you ask yourself what is the type of object I send to the drone image?&lt;/p&gt;
&lt;p&gt;The answer is not really String is it?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However if you answer a block of code to execute then that is much closer to the correct answer.&lt;/p&gt;
&lt;p&gt;Which gives two obvious solutions.&lt;/p&gt;
&lt;p&gt;1) use blocks and fix the boss issue (or use another serialization method)&lt;/p&gt;
&lt;p&gt;2) create a drone block that works with boss&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think also that it would be a easily understood paradigm you send some code over to execute.&lt;/p&gt;
&lt;p&gt;Just like when you pass a block to a method for execution.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>I second the concern with using Strings.</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3403476000</wfw:comment>
		</item>
		<item>
			<title>Multi Core Playground Experiment 1 elaboration</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_Experiment_1_elaboration&amp;entry=3403455542</link>
			<category>Development</category>
			<pubDate>Thu, 06 Nov 2008 20:19:02 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Multi Core Playground Experiment 1 elaboration<br /><br /> Here is some elaboration and clarification of the code

changes I needed to do in order to change my code from sequentially loading

data, to loading concurrently for my testing.<br /><br /> <span style="text-decoration: underline;">Original sequential load code</span>:<br /><br /> nyse := Security loadNYSE.<br />amex := Security loadAMEX.<br />nasd := Security loadNasdaq.<br />funds := MutualFund load.<br />etfs := ETF load.<br /><br /> <span style="text-decoration: underline;">Concurrent

load code</span>:<br /><br /> nyseLoad := self

&nbsp;promise: &lsquo;Security loadNYSE'.<br />amexLoad := self promise: &lsquo;Security loadAMEX'.<br />nasdLoad&nbsp; := self

promise: &lsquo;Security loadNasdaq'.<br />fundsLoad&nbsp; := self

promise: &lsquo;MutualFund load'.<br />etfsLoad := self promise: &lsquo;ETF load'.</p>

<p>nyse :=

nyseLoad value.<br />amex := amexLoad value.<br />nasd := nasdLoad&nbsp; value.<br />funds := fundsLoad&nbsp; value.<br />etfs := etfsLoad value.<br /><br /> Note that in the first 5 lines of the concurrent load

code,&nbsp; each line results in a headless

(no ui) image being started and given the instruction in quotes, these lines

execute immediately, so the 5 images are started and are executing concurrently.&nbsp; The second set of five lines say #value to a

promise object, which will wait until the data (from the "drone" image) is

available.&nbsp; The only other change was the

#promise: &nbsp;method which was in the last

post.</p>

<p>I hope this more complete example is clearer.&nbsp; - Arden</p>
</div>]]></description>
			<guid isPermaLink="false">3403455542</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3403455542</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3403455542</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3403455542</wfw:comment>
		</item>
		<item>
			<title>Multi Core Playground - Commentary</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Commentary&amp;entry=3403414378</link>
			<category>Development</category>
			<pubDate>Thu, 06 Nov 2008 08:52:58 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Multi Core Commentary<br /><br /> I had an interesting discussion about my timing tests.<br /><br /> The question was asked "do the times for the concurrent

solutions include drone image startup &amp; shutdown?"<br /><br /> My answer "Yes"<br /><br /> The person I had this discussion with felt this was wrong,

and I understand the point.<br /><br /> For doing a code benchmark, we don't include the time needed

to start the image. Likewise for a long, or always running application, we

would not include the few seconds needed to fire up the drone images, since it

would only be done once, and the resources would simply be there.&nbsp; And in my tests, startup times may be a

significant percent of the overall time.<br /><br /> So please note that my times are very conservative.<br /><br /> Why did I include them?&nbsp;

For this particular test, my perspective was that I could start and

release additional resources, on the fly, and still get a very significant increase

in performance - 3 fold.&nbsp; It might be

very likely that I would keep and use the resources, in which case I would not

include the startup times and the throughput and percentage improvement would measure

significantly higher.<br /><br /> I may do those measurements for added perspective.<br /><br /> Regards<br /><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Arden<br /></p>
</div>]]></description>
			<guid isPermaLink="false">3403414378</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3403414378</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3403414378</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3403414378</wfw:comment>
		</item>
		<item>
			<title>Multi Core Playground - Experiment 1</title>
			<link>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</link>
			<category>Development</category>
			<pubDate>Thu, 06 Nov 2008 08:36:07 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><!--[if gte mso 9]><xml> Normal

  0

  

  

  

  

  false

  false

  false

  

  EN-US

  X-NONE

  X-NONE </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--> <!--[if gte mso 10]>

<style>

 /* Style Definitions */

 table.MsoNormalTable

	{mso-style-name:"Table Normal";

	mso-tstyle-rowband-size:0;

	mso-tstyle-colband-size:0;

	mso-style-noshow:yes;

	mso-style-priority:99;

	mso-style-qformat:yes;

	mso-style-parent:"";

	mso-padding-alt:0in 5.4pt 0in 5.4pt;

	mso-para-margin-top:0in;

	mso-para-margin-right:0in;

	mso-para-margin-bottom:10.0pt;

	mso-para-margin-left:0in;

	line-height:115%;

	mso-pagination:widow-orphan;

	font-size:11.0pt;

	font-family:"Calibri","sans-serif";

	mso-ascii-font-family:Calibri;

	mso-ascii-theme-font:minor-latin;

	mso-hansi-font-family:Calibri;

	mso-hansi-theme-font:minor-latin;}

</style>

<![endif]--> Multi Core playground - Experiment 1<br /><br /> So I had 5 large grained tasks to perform - I felt this was

a good match for the tool I was about to experiment with.&nbsp; <br /><br /> Recall the code I am using is some experimental work done by

our engineering folks, aiming to make it easy to leverage the use of multiple

cpu cores (which are becoming ubiquitous).<br /><br /> What I was pleased with was the relative ease of divvying up

the work.&nbsp; Where I had :<br /><br /> nyse := Security loadNYSE.<br /><br /> I could now use:<br /><br /> nyseLoad := self

&nbsp;promise: &lsquo;Security loadNYSE'.<br />nyse :=

nyseLoad value.<br /><br /> The #promise method gave me a way to asynchronously fire up

all the loading.<br /><br /> Results?&nbsp; Good, but

not great (yet ;-) ) <br /><br /> Serial load : 114 seconds total time<br /><br /> Concurrent load:&nbsp; 80 seconds

total time (includes added resource startup and shutdown)<br /><br /> Which is an improvement, but this fails to tell the full

story.&nbsp; Much of the work finished in

under 20 seconds, but one, the bottleneck piece, took almost 80!&nbsp; We will address that in the next post....<br /><br /> -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Arden<br /><br /> For those who are curious about the #promise method I added, here it

is:<br /><br /> promise:&nbsp; aString<br />| machine |<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; machine := VirtualMachine new.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^[ | val |<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; val := machine

doit:&nbsp; aString.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; machine release.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; val] promise</p>
</div>]]></description>
			<guid isPermaLink="false">3403413367</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIPBServlet?guid=3403413367</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/arden/blogView?guid=3403413367</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</includedComments:puid>
					<includedComments:author>Henry</includedComments:author>
					<includedComments:pubDate>2008-11-06T10:28:49-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Neat example, I'd really like to know a few more details though :)&lt;/p&gt;
&lt;p&gt;"nyseLoad := self  promise: &amp;lsquo;Security loadNYSE'.&lt;br /&gt;nyse := nyseLoaded value."&lt;/p&gt;
&lt;p&gt;I take it there's a typo and the second line should read "nyseLoad value".&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And doesn't the promise method suspend execution when you call value, and it's not done computing yet?&lt;/p&gt;
&lt;p&gt;I can't see how this would yield better concurrency, unless your code was like:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;nyseLoad := self  promise: &amp;lsquo;Security loadNYSE'.&lt;/p&gt;
&lt;p&gt;nasdaqLoad := self  promise: &amp;lsquo;Security loadNASDAQ'.&lt;/p&gt;
&lt;p&gt;nyse := nyseLoad value.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;nasdaq := nasdaqLoad value.&lt;/p&gt;
&lt;p&gt;ie. explicit parallellization, not loadNYSE implicitly being parallellized, resulting in a speedup, as one might wrongfully(?) conclude from the example.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Clarifications please?</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2008-11-06T13:27:46-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Henry;&lt;/p&gt;
&lt;p&gt;Thanks for catching my typo.&lt;/p&gt;
&lt;p&gt;The way you show at the bottom is exaclty how I am doing it.&lt;/p&gt;
&lt;p&gt;I create a promise for each of the 5, and then I ask for their values - and I do it in order from which is quickest to complete to the slowest, since that seemed to make sense.&lt;/p&gt;
&lt;p&gt;- Arden&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</includedComments:puid>
					<includedComments:author>Claus</includedComments:author>
					<includedComments:pubDate>2008-11-06T15:34:52-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Basically, what you are doing is a fork(), right?&lt;/p&gt;
&lt;p&gt;So simplistic view, you iterate over a collection and have each element start its own VM, and then you iterate again over the collection to collect the values, having to wait if the one you are waiting for is not yet finished, right?&lt;/p&gt;
&lt;p&gt;For in many cases, I doubt it is possible to foresee which process is fastest ...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>So</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</includedComments:guid>
					<includedComments:puid>http://www.cincomsmalltalk.com/userblogs/arden/blogView?showComments=true&amp;printTitle=Multi_Core_Playground_-_Experiment_1&amp;entry=3403413367</includedComments:puid>
					<includedComments:author></includedComments:author>
					<includedComments:pubDate>2008-11-06T17:35:17-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Claus;&lt;/p&gt;
&lt;p&gt;What it is doing is sending a message to do some work (#loadNYSE) to another "drone" image which it quickly starts (a headless image - no ui).&amp;nbsp; So this solution starts up 5 vms and requests each to do one of five loads.&amp;nbsp; My promise method provides a promise object, that will wait until the result is back in the main image,&amp;nbsp; then closes down the drone image, then returns the results in response to the #value message.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The code following starts three vms and asks each one to load something different.&lt;/p&gt;
&lt;p&gt;When you send #value to one of the xxxxLoad (a promise object), it will wait until it has the data before it responds. So in this example three headless images would be working concurrently.&lt;/p&gt;
&lt;p&gt;nyseLoad := self
&amp;nbsp;promise: &amp;lsquo;Security loadNYSE'.&lt;/p&gt;
&lt;p&gt;amexLoad := self promise: 'Security loadAMEX'.&lt;/p&gt;
&lt;p&gt;nasdLoad := self promise: 'Security loadNasdaq'.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;HTH - Arden&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/arden/servlet/CommentAPIServlet?guid=3403413367</wfw:comment>
		</item>
	</channel>
</rss>
