<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: How to Design a Smalltalk UI Framework</title>
	<atom:link href="http://blog.3plus4.org/2008/11/13/how-to-design-a-smalltalk-ui-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.3plus4.org/2008/11/13/how-to-design-a-smalltalk-ui-framework/</link>
	<description>The neighbourhood of 7</description>
	<lastBuildDate>Wed, 11 Nov 2009 12:08:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: D</title>
		<link>http://blog.3plus4.org/2008/11/13/how-to-design-a-smalltalk-ui-framework/comment-page-1/#comment-1405</link>
		<dc:creator>D</dc:creator>
		<pubDate>Wed, 10 Dec 2008 15:50:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.3plus4.org/?p=58#comment-1405</guid>
		<description>Thank you, presenters &amp; fragments are clearer now. I am looking forward to more posts. Some sample code of subject + presenter would be useful.</description>
		<content:encoded><![CDATA[<p>Thank you, presenters &amp; fragments are clearer now. I am looking forward to more posts. Some sample code of subject + presenter would be useful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vassili Bykov</title>
		<link>http://blog.3plus4.org/2008/11/13/how-to-design-a-smalltalk-ui-framework/comment-page-1/#comment-1373</link>
		<dc:creator>Vassili Bykov</dc:creator>
		<pubDate>Mon, 08 Dec 2008 08:02:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.3plus4.org/?p=58#comment-1373</guid>
		<description>Thanks, these are very good questions. The first and the last are hard to answer in a  comment, but I hope to write a proper explanation sometime soon. To answer the other two:

It&#039;s not only normal, but very common for a presenter to contain other presenters. For example, a method is displayed by a MethodPresenter which can be contained by either a ClassPresenter or a SelectorPresenter (showing senders and implementors or a selector). Subjects may create other subjects--for example a class subject has factory methods that create subjects for class and instance methods. However, there usually is no explicit containment of subjects, and no need for it since containment is already tracked by presenters.

The type of the various subexpressions is something called Fragment. Presenter is one of the subclasses of Fragment, notable for having a subject and defining its composition in terms of other fragments (that&#039;s what the #definition method is, and why its type is Fragment). Other Fragments are either simple atomic things such as labels or links, or &quot;generic composers&quot; such as rows, columns or expandable/collapsible things.</description>
		<content:encoded><![CDATA[<p>Thanks, these are very good questions. The first and the last are hard to answer in a  comment, but I hope to write a proper explanation sometime soon. To answer the other two:</p>
<p>It&#8217;s not only normal, but very common for a presenter to contain other presenters. For example, a method is displayed by a MethodPresenter which can be contained by either a ClassPresenter or a SelectorPresenter (showing senders and implementors or a selector). Subjects may create other subjects&#8211;for example a class subject has factory methods that create subjects for class and instance methods. However, there usually is no explicit containment of subjects, and no need for it since containment is already tracked by presenters.</p>
<p>The type of the various subexpressions is something called Fragment. Presenter is one of the subclasses of Fragment, notable for having a subject and defining its composition in terms of other fragments (that&#8217;s what the #definition method is, and why its type is Fragment). Other Fragments are either simple atomic things such as labels or links, or &#8220;generic composers&#8221; such as rows, columns or expandable/collapsible things.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: D</title>
		<link>http://blog.3plus4.org/2008/11/13/how-to-design-a-smalltalk-ui-framework/comment-page-1/#comment-1371</link>
		<dc:creator>D</dc:creator>
		<pubDate>Fri, 05 Dec 2008 23:57:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.3plus4.org/?p=58#comment-1371</guid>
		<description>Hope you don&#039;t mind some questions, I&#039;m trying to understand the Hopscotch architecture better, in particular the presenter &amp; subject bits.

- You mention subject = location marker + viewpoint (+ stand-in + utility methods). Might a common subject be something like this?

  Loc Marker = 
	Some Starting Domain Object + 
	Accessor (path) To Target Domain Object

  Viewpoint = Subset of attribute &amp; action on Target Domain objects

- It is normal for a presenter to contain other presenters; how about a subject containing other subjects?

- What are the types (Subject, Presenter, Widget, etc.) of the subexpressions in your definition example:

  definition = (

    ^column: {

	majorHeading: (label: subject model name) .

	include: (Inspector on: subject model).

	etc.

- Can you share any thoughts on how your architecture compares with some elements of the IDE patterns in http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf ? In particular, some of the methods you might add on a subject, they would advocate adding as interface (forwarding) methods on the corresponding domain model itself.

Thanks!</description>
		<content:encoded><![CDATA[<p>Hope you don&#8217;t mind some questions, I&#8217;m trying to understand the Hopscotch architecture better, in particular the presenter &amp; subject bits.</p>
<p>- You mention subject = location marker + viewpoint (+ stand-in + utility methods). Might a common subject be something like this?</p>
<p>  Loc Marker =<br />
	Some Starting Domain Object +<br />
	Accessor (path) To Target Domain Object</p>
<p>  Viewpoint = Subset of attribute &amp; action on Target Domain objects</p>
<p>- It is normal for a presenter to contain other presenters; how about a subject containing other subjects?</p>
<p>- What are the types (Subject, Presenter, Widget, etc.) of the subexpressions in your definition example:</p>
<p>  definition = (</p>
<p>    ^column: {</p>
<p>	majorHeading: (label: subject model name) .</p>
<p>	include: (Inspector on: subject model).</p>
<p>	etc.</p>
<p>- Can you share any thoughts on how your architecture compares with some elements of the IDE patterns in <a href="http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf" rel="nofollow">http://web.cecs.pdx.edu/~black/publications/ModelExtensions.pdf</a> ? In particular, some of the methods you might add on a subject, they would advocate adding as interface (forwarding) methods on the corresponding domain model itself.</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Igor Stasenko</title>
		<link>http://blog.3plus4.org/2008/11/13/how-to-design-a-smalltalk-ui-framework/comment-page-1/#comment-1349</link>
		<dc:creator>Igor Stasenko</dc:creator>
		<pubDate>Tue, 25 Nov 2008 23:15:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.3plus4.org/?p=58#comment-1349</guid>
		<description>Each time i asking , why FFI is not in a VM core, but instead going as addon - a dynamic library, the answer was that FFI is security hole. And thus, it is very dangerous thing to come by default (bundled with VM).

I&#039;m not sharing this view: i cannot understand, how well-tested application which using FFI to talk directly with OS could be more dangerous than same application which using primitives? 
What the difference between bugs in primitive or your code that using FFI? 
They both could lead to VM crash or memory corruption. The real difference is where you go when need to find the bug: 
- into gdb to debug VM (where you see an object pointers)
- into debugger in your language environment (where you can explore &amp; inspect any object you may need)

make your choice.</description>
		<content:encoded><![CDATA[<p>Each time i asking , why FFI is not in a VM core, but instead going as addon &#8211; a dynamic library, the answer was that FFI is security hole. And thus, it is very dangerous thing to come by default (bundled with VM).</p>
<p>I&#8217;m not sharing this view: i cannot understand, how well-tested application which using FFI to talk directly with OS could be more dangerous than same application which using primitives?<br />
What the difference between bugs in primitive or your code that using FFI?<br />
They both could lead to VM crash or memory corruption. The real difference is where you go when need to find the bug:<br />
- into gdb to debug VM (where you see an object pointers)<br />
- into debugger in your language environment (where you can explore &amp; inspect any object you may need)</p>
<p>make your choice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anthony Lander</title>
		<link>http://blog.3plus4.org/2008/11/13/how-to-design-a-smalltalk-ui-framework/comment-page-1/#comment-1336</link>
		<dc:creator>Anthony Lander</dc:creator>
		<pubDate>Fri, 14 Nov 2008 16:08:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.3plus4.org/?p=58#comment-1336</guid>
		<description>Vassili,

I really like the principled approach that you bring to the frameworks you design. I can&#039;t wait to see what this one looks like &quot;under the hood&quot;.

all the best,

  -Anthony</description>
		<content:encoded><![CDATA[<p>Vassili,</p>
<p>I really like the principled approach that you bring to the frameworks you design. I can&#8217;t wait to see what this one looks like &#8220;under the hood&#8221;.</p>
<p>all the best,</p>
<p>  -Anthony</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lorenz Pretterhofer</title>
		<link>http://blog.3plus4.org/2008/11/13/how-to-design-a-smalltalk-ui-framework/comment-page-1/#comment-1335</link>
		<dc:creator>Lorenz Pretterhofer</dc:creator>
		<pubDate>Fri, 14 Nov 2008 06:19:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.3plus4.org/?p=58#comment-1335</guid>
		<description>I thought I might like to add, this doesn&#039;t just apply to Smalltalk either. In just about every language I&#039;ve looked at, the UI consists of either a platform independent library, a command line (unix or not) or a consistantly alien UI (Morphic, DrScheme, Tk, ...)

This and the FFI comments are something that probably all programming languages need to improve in.

It&#039;s also always fun to watch the Mac guys tear a UI framework or application apart for failing to understand the Mac OS conventions and philosophy. That is, if any developer intends to write a high quality port to Linux or Mac OS (or Windows), they will always need someone well versed in the conventions of that platform, and have to change the behavior of their UI anyway.

Even making portability simpler isn&#039;t enough to actually port a UI or application. Its great to see a Smalltalk derivative taking the lead and making the porting process simpler rather than hiding platform differences and making it impossible.

Thanks for the always, fun and interesting posts on Smalltalk, Newspeak and language stuff in general and I eagerly await the release of Newspeak when it&#039;s completed.

-- Lorenz</description>
		<content:encoded><![CDATA[<p>I thought I might like to add, this doesn&#8217;t just apply to Smalltalk either. In just about every language I&#8217;ve looked at, the UI consists of either a platform independent library, a command line (unix or not) or a consistantly alien UI (Morphic, DrScheme, Tk, &#8230;)</p>
<p>This and the FFI comments are something that probably all programming languages need to improve in.</p>
<p>It&#8217;s also always fun to watch the Mac guys tear a UI framework or application apart for failing to understand the Mac OS conventions and philosophy. That is, if any developer intends to write a high quality port to Linux or Mac OS (or Windows), they will always need someone well versed in the conventions of that platform, and have to change the behavior of their UI anyway.</p>
<p>Even making portability simpler isn&#8217;t enough to actually port a UI or application. Its great to see a Smalltalk derivative taking the lead and making the porting process simpler rather than hiding platform differences and making it impossible.</p>
<p>Thanks for the always, fun and interesting posts on Smalltalk, Newspeak and language stuff in general and I eagerly await the release of Newspeak when it&#8217;s completed.</p>
<p>&#8211; Lorenz</p>
]]></content:encoded>
	</item>
</channel>
</rss>
