<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>self halt</title>
	<atom:link href="http://philemonworks.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://philemonworks.wordpress.com</link>
	<description>things i work on, puzzles i solve and don't want to remember</description>
	<lastBuildDate>Sun, 29 Nov 2009 19:15:16 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='philemonworks.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/dc537208b43c3cd19d79758cb46beece?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>self halt</title>
		<link>http://philemonworks.wordpress.com</link>
	</image>
			<item>
		<title>soek.goodies.st &#8211; exploring open-source Smalltalk libraries</title>
		<link>http://philemonworks.wordpress.com/2009/11/13/soek-goodies-st-exploring-open-source-smalltalk-libraries/</link>
		<comments>http://philemonworks.wordpress.com/2009/11/13/soek-goodies-st-exploring-open-source-smalltalk-libraries/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 21:48:13 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[coding4fun]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[seaside]]></category>
		<category><![CDATA[soek]]></category>
		<category><![CDATA[WebVelocity]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=317</guid>
		<description><![CDATA[Soek is a Smalltalk application that provides a different way to navigate through documentation and source code of a Smalltalk library. Instead of the classic multi-list browser view in an image, Soek offers a flat view on all methods and classes and is build using the Seaside Web framework.

I discovered this way of publishing a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=317&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Soek is a Smalltalk application that provides a different way to navigate through documentation and source code of a Smalltalk library. Instead of the classic multi-list browser view in an image, Soek offers a flat view on all methods and classes and is build using the Seaside Web framework.</p>
<p><img class="alignleft" style="border:4px solid white;" title="Soek-Seaside-3a3" src="http://philemonworks.files.wordpress.com/2009/11/screen-shot-2009-11-13-at-6-33-24-pm.png?w=300&#038;h=259" alt="Soek documenting Seaside" width="300" height="259" /></p>
<p>I discovered this way of publishing a framework when I worked with Rails and did most of my searches on <a href="http://railsbrain.com">Railsbrain.com</a>. Not only I could easily find a particular class or method, it also showed me similar methods, other implementations, classes and their sources. The learning effect was great and it became my standard search tool and recommendation to others.</p>
<p>Wanting this for the Smalltalk community too, I started creating the application Soek in Cincom WebVelocity to have a similar view on libraries such as Seaside, Glorp, Cloudfork and even my own projects. I figured out how to parse the comment, declaration and body of a method, defined new <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter" target="_blank">syntax highlighting</a> rules for Smalltalk and integrated the client-side search javascript functions from RailsBrian.com, kindly provided by Brian Chamberlain.</p>
<p>Because most libraries that I use are pretty stable, those documentation pages can very well be cached. So to make this happen, I developed a Publisher component that can generate all static pages to files creating a documentation set for each library. Next, I created a public Amazon S3 bucket to host all these documentation sets. Finally, I added a Launcher application as the front-end for this bucket to select which library documentation to explore. Available library information (name,version, s3-url,site-url) is accessed from a Amazon SimpleDB domain using Cloudfork ActiveItem.</p>
<p>The result is now available at <strong><a href="http://soek.goodies.st">soek.goodies.st</a></strong></p>
<p>The Soek application is made open-source under MIT license and published in the Cincom WebVelocity Community.</p>
<p><strong>Update:</strong> Current version fails to work in IE (6+). Use any of Firefox, Safari, Chrome instead for the time being.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/317/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=317&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/11/13/soek-goodies-st-exploring-open-source-smalltalk-libraries/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>

		<media:content url="http://philemonworks.files.wordpress.com/2009/11/screen-shot-2009-11-13-at-6-33-24-pm.png?w=300" medium="image">
			<media:title type="html">Soek-Seaside-3a3</media:title>
		</media:content>
	</item>
		<item>
		<title>Making a package visible to WebVelocity</title>
		<link>http://philemonworks.wordpress.com/2009/09/12/making-a-package-visible-to-webvelocity/</link>
		<comments>http://philemonworks.wordpress.com/2009/09/12/making-a-package-visible-to-webvelocity/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 19:13:21 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[WebVelocity]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=305</guid>
		<description><![CDATA[If you want an existing package to register as a WebVelocity one and as a result make it visible to the browser page, you can evaluate this script:

(Store.Registry packageNamed: 'Your-Package-Name')
	propertyAt: #application put: true;
	propertyAt: #namespace put: 'Your-Namespace';
	propertyAt: #velocityThemeName put: 'Default'.

which I found when looking for the newApplication functionality in the image.
      [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=305&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>If you want an existing package to register as a WebVelocity one and as a result make it visible to the browser page, you can evaluate this script:</p>
<pre class="brush: ruby;">
(Store.Registry packageNamed: 'Your-Package-Name')
	propertyAt: #application put: true;
	propertyAt: #namespace put: 'Your-Namespace';
	propertyAt: #velocityThemeName put: 'Default'.
</pre>
<p>which I found when looking for the <strong>newApplication</strong> functionality in the image.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/305/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=305&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/09/12/making-a-package-visible-to-webvelocity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>
	</item>
		<item>
		<title>HypertextLogger for server application logs</title>
		<link>http://philemonworks.wordpress.com/2009/06/22/hypertextlogger-for-server-application-logs/</link>
		<comments>http://philemonworks.wordpress.com/2009/06/22/hypertextlogger-for-server-application-logs/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 19:53:39 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Open source]]></category>
		<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[monitoring]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=278</guid>
		<description><![CDATA[Logging can be very helpful in analyzing the (faulty) behavior of a server application in response to client requests. HypertextLogger is a simple component that produces HTML in response to logging instructions.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=278&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Logging can be very helpful in analyzing the (faulty) behavior of a server application in response to client requests. HypertextLogger is a simple component that produces HTML in response to logging instructions. Its main purpose it to provide a better readable log file. By choosing you favorite CSS, you can highlight what is important and leave other information unfocused (timestamps).</p>
<div id="attachment_283" class="wp-caption alignnone" style="width: 795px"><img class="size-full wp-image-283" title="hypertextlogger" src="http://philemonworks.files.wordpress.com/2009/06/hypertextlogger.png?w=785&#038;h=284" alt="HTML log file" width="785" height="284" /><p class="wp-caption-text">HTML log file</p></div>
<p>Upon creation of the logger, it produces a new .html file to which logging events are written. Because most Browsers can deal with open-ended (i.e. not properly closed by tags) HTML files, a single page can be used to collect lots of events. And if you let e.g. Apache serve these log files, you can monitor server applications remotely.</p>
<p>Features of the HypertextLogger are:</p>
<ul>
<li>the log can be custom CSS styled  (info,warn and error levels may have different emphasis)</li>
<li>the log can have a custom pattern for each event (write your own formatBlock)</li>
<li>you can use any HTML markup (e.q. links to other resources)</li>
<li>by choosing a FileRollingPolicy you can control how many events are logged onto a single HTML file</li>
<li><strong>[update]</strong> can capture Transcript output and include it in the log
</ul>
<h3>Using the logger</h3>
<pre class="brush: ruby;">
| logger |
logger := Philemon.HypertextLogger onFileNamed: 'myproject.log'.
logger debug: 'This is debugging info only shown if level == #debug'.
logger link: 'http://blog.doit.st' title: 'Smalltalk in the Cloud'.
</pre>
<h3>Logger API</h3>
<p>Some examples using the logging api. See class methods for tests.</p>
<pre class="brush: ruby;">
logger blue: 'Text in Blue'.
logger escaped: '&lt;escaped&gt;'.
logger red:[ logger strong: 'Bummer' ].  &quot;use blocks to combine the api&quot;
logger logException: aSignal. &quot;writes a stack&quot;
logger enabled: true.
logger printTimestamp.
logger printCurrentProcess.
</pre>
<h3>Customizing the logger</h3>
<p>You can override the CSS styles and the format of each log entry.</p>
<pre class="brush: ruby;">
logger css: aDictionary. &quot;mapping between css-class and its definition&quot;
logger formatBlock: [:logger :logLevel :content | logger print: content ]. &quot;provide your own entry formatting&quot;
</pre>
<h3>Setup the FileRollingPolicy</h3>
<p>Instead of producing one single big file, you can specify a policy to control log file creation.</p>
<pre class="brush: ruby;">
logger daily. &quot;every day create a new log (unless no events)&quot;
logger maximumSize: 100000. &quot;if size reaches limit then create a new log&quot;
logger maximumEntries: 1000. &quot;limit on the number of events&quot;
logger refreshEvery: 10.  &quot;10 seconds auto refresh by the browser&quot;
</pre>
<p>HypertextLogger is implemented in VisualWorks Smalltalk and is available from the Cincom Public Store under MIT License.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/278/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=278&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/06/22/hypertextlogger-for-server-application-logs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>

		<media:content url="http://philemonworks.files.wordpress.com/2009/06/hypertextlogger.png" medium="image">
			<media:title type="html">hypertextlogger</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting started with Glare-DataServices</title>
		<link>http://philemonworks.wordpress.com/2009/05/26/getting-started-with-glare-dataservices/</link>
		<comments>http://philemonworks.wordpress.com/2009/05/26/getting-started-with-glare-dataservices/#comments</comments>
		<pubDate>Tue, 26 May 2009 19:30:41 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[dataservices]]></category>
		<category><![CDATA[Glare]]></category>
		<category><![CDATA[visualworks]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=195</guid>
		<description><![CDATA[Glare-DataServices is a framework for building Flex Remoting services in VisualWorks Smalltalk. In this post, I will guide you through the steps for creating a small application that demonstrates the use of the framework.
Install the bundle
First, you have to connect to the Cincom Public Store Repository. Then open the list of Published Items and load [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=195&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://glare.googlecode.com">Glare-DataServices</a> is a framework for building Flex Remoting services in <a href="http://www.cincomsmalltalk.com">VisualWorks Smalltalk</a>. In this post, I will guide you through the steps for creating a small application that demonstrates the use of the framework.</p>
<h4>Install the bundle</h4>
<p>First, you have to connect to the <a href="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/PostgreSQL+Access+Page">Cincom Public Store Repository</a>. Then open the list of Published Items and load the bundle GlareDataServices. It includes the Glare bundle and Glare-DataServices packages. The required dependencies AT MetaNumerics and Opentalk are automatically loaded if not present.</p>
<h4>Start the server</h4>
<p>Class <strong>GlareServer</strong> has a singleton instance that will dispatch messages sent from a Flex application to Smalltalk services. To start the server, evaluate:</p>
<pre class="brush: ruby;">
GlareServer current start
</pre>
<p>Now, you can visit http://localhost:8888 to see the current class registrations. You can change the portNumber on which the server is listening. For more settings and run actions, see the GlareServer class methods.</p>
<h4>Create Smalltalk class: MethodFinderService</h4>
<p>In this example, we are going to create a small AIR application called MethodFinder. Its GUI will have a search box and a list of method names that match the search criteria. The search itself will be performed by a Smalltalk service called MethodFinderService.</p>
<p>These are the steps for creating the service:</p>
<ol>
<li>New Package: <strong>MethodFinder</strong></li>
<li>New Class: <strong>MethodFinderService</strong> with superclass Glare.RemoteObject</li>
<li>Add instance method category <strong>operations</strong></li>
<li>Define the method <strong>getSelectorsMatching</strong></li>
</ol>
<pre class="brush: ruby;">
getSelectorsMatching

  ^(self function: #getSelectorsMatching)
    argument: #pattern type: String
    ; returns: SortedCollection
    ; body:[ :pattern |
		| sortedMatches |
		sortedMatches := SortedCollection new.
		&quot;to keep things simple, we enumerate all symbols&quot;
		Symbol allSymbolsDo:[ :e | (pattern match: e) ifTrue:[sortedMatches add: e]].
		sortedMatches]
</pre>
<p>Registration of this service to the GlareServer is required and done by evaluating:</p>
<pre class="brush: ruby;">
MethodFinderService install
</pre>
<h4>Create Flex application: MethodFinder</h4>
<p>Now that the Smalltalk service is up and running, it is time to build the client application. Using the <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flexbuilder3">Adobe Flex/Flash Builder</a>, create a new Flex AIR project called GlareMethodFinder. Open the GlareMethodFinder application component and paint a List (id=methods), a TextInput (id=pattern) and some Labels. On every change of the pattern, a new search will be requested.</p>
<div id="attachment_264" class="wp-caption alignnone" style="width: 198px"><img class="size-medium wp-image-264" title="Glare Method Finder" src="http://philemonworks.files.wordpress.com/2009/05/picture-6.png?w=188&#038;h=300" alt="Glare Method Finder" width="188" height="300" /><p class="wp-caption-text">Glare Method Finder</p></div>
<p>Your MXML file may look like this.</p>
<pre class="brush: ruby;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; width=&quot;344&quot; height=&quot;508&quot;&gt;
	&lt;mx:TextInput id=&quot;pattern&quot; x=&quot;63&quot; y=&quot;40&quot; width=&quot;246&quot; change=&quot;doSearch()&quot;/&gt;
	&lt;mx:List id=&quot;methods&quot; x=&quot;10&quot; y=&quot;70&quot; width=&quot;299&quot; height=&quot;403&quot;&gt;&lt;/mx:List&gt;
	&lt;mx:Label x=&quot;10&quot; y=&quot;10&quot; text=&quot;Glare Method Finder&quot; fontSize=&quot;18&quot;/&gt;
&lt;/mx:WindowedApplication&gt;
</pre>
<h4>Configure Flex Remoting</h4>
<p>The Flex compiler of the application needs to known about which AMF channels and destinations are going to be used. For this, two configuration files must be added. In the folder <strong>src</strong> of the project, add the file <strong>services-config.xml</strong> with:</p>
<pre class="brush: ruby;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;services-config&gt;
    &lt;services&gt;
        &lt;service-include file-path=&quot;remoting-config.xml&quot; /&gt;
    &lt;/services&gt;
    &lt;channels&gt;
        &lt;channel-definition id=&quot;my-amf&quot; class=&quot;mx.messaging.channels.AMFChannel&quot;&gt;
            &lt;endpoint uri=&quot;http://localhost:8888/amf&quot; class=&quot;flex.messaging.endpoints.AMFEndpoint&quot;/&gt;
        &lt;/channel-definition&gt;
    &lt;/channels&gt;
&lt;/services-config&gt;
</pre>
<p>In the same folder (src) add the file <strong>remoting-config.xml</strong> with:</p>
<pre class="brush: ruby;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;service id=&quot;remoting-service&quot;
    class=&quot;flex.messaging.services.RemotingService&quot;
    messageTypes=&quot;flex.messaging.messages.RemotingMessage&quot;&gt;
    &lt;default-channels&gt;
        &lt;channel ref=&quot;my-amf&quot;/&gt;
    &lt;/default-channels&gt;
    &lt;destination id=&quot;MethodFinderService&quot; /&gt;
&lt;/service&gt;
</pre>
<p>Now that we have the configuration files in place, we need to add a Flex compiler option. Open the Project properties and select &#8220;Flex Compiler&#8221; in the list. Change the options to the following line. (Windows developers need to change the path separator)</p>
<pre class="brush: ruby;">
-locale en_US  -services ${DOCUMENTS}/GlareMethodFinder/src/services-config.xml
</pre>
<h4>From Button click to Service call</h4>
<p>Add the following script (using mx:Script) that implements the <strong>doSearch</strong> function. It creates a RemoteObject that will bind to the Smalltalk MethodFinderService. Using this remoteObject, you can send it the message <strong>getSelectorsMatching</strong> with the pattern argument.</p>
<pre class="brush: ruby;">
private function doSearch():void {
	if (pattern.text.length == 0) return
	var service:RemoteObject = new RemoteObject(&quot;MethodFinderService&quot;)
	service.addEventListener(ResultEvent.RESULT, handleSearchResult)
	service.getSelectorsMatching(pattern.text + '*')
}
private function handleSearchResult(event:ResultEvent):void {
	methods.dataProvider = event.result as Array
}
</pre>
<p>Now the application is ready to find some methods. Run the application and start entering a pattern.</p>
<p>For this application to be really useful, we can add two buttons &#8220;Browse Implementors&#8221; and &#8220;Browse Senders&#8221;. We want these to open Smalltalk browsers in our running image. For this to work we can add two more operations to the MethodFinderService like browseImplementorsOf and browseSendersOf.</p>
<p>As can be expected, this exercise is left to reader.</p>
<p>Flex <a href="http://code.google.com/p/glare/source/browse/trunk/GlareMethodFinder/src/GlareMethodFinder.mxml">source code of this example</a> can be found on <a href="http://glare.googlecode.com">glare.googlecode.com</a>. The Smalltalk source code is available in the <a href="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/PostgreSQL+Access+Page">Cincom Public Store Repository</a> in the package Glare-Examples-MethodFinder.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=195&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/05/26/getting-started-with-glare-dataservices/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>

		<media:content url="http://philemonworks.files.wordpress.com/2009/05/picture-6.png?w=188" medium="image">
			<media:title type="html">Glare Method Finder</media:title>
		</media:content>
	</item>
		<item>
		<title>VAStGoodies.com services API</title>
		<link>http://philemonworks.wordpress.com/2009/04/24/vastgoodiescom-services-api/</link>
		<comments>http://philemonworks.wordpress.com/2009/04/24/vastgoodiescom-services-api/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 16:01:37 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[vastgoodies]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=219</guid>
		<description><![CDATA[To make the VAStGoodies client work right from the VA image, I needed a service API in addition to the Seaside application that is running on VAStGoodies.com. Requirements for that service include &#8220;get all available configuration map names&#8221; and &#8220;get a download url for a particular version of a configuration map&#8221;.
Instead of implementing a full-blown end-to-end [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=219&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>To make the VAStGoodies client work right from the VA image, I needed a service API in addition to the Seaside application that is running on <a href="http://vastgoodies.com">VAStGoodies.com</a>. Requirements for that service include &#8220;get all available configuration map names&#8221; and &#8220;get a download url for a particular version of a configuration map&#8221;.</p>
<p>Instead of implementing a full-blown end-to-end SOAP based Webservice, I decided to implement a much leaner RPC-style design that simply returns Smalltalk expressions.</p>
<p>If you <a href="http://vastgoodies.com/services">visit the service</a> with your browser then you will see something like the following plain text:<br />
<code><br />
((Set new)<br />
	add: 'configurationMapNames';<br />
	add: 'configurationMapVersions';<br />
	add: 'index';<br />
	add: 'downloadUrl';<br />
	yourself)<br />
</code><br />
An experienced Smalltalker directly recognizes this as being the storeString of a Set object. Most Smalltalk objects can represent themselves as an expression by sending the #storeString message. </p>
<p>Unmarshalling this content is simply done by a Smalltalk compiler. So in order to <a href="http://vastgoodies.com/services/configurationMapNames">get all available configurationMap names</a>, the client uses code like this:</p>
<pre class="brush: ruby;">
expression := HttpClient new fetch: 'http://vastgoodies.com/services/configurationMapNames'.
avaliableConfigmapNames := EsCompiler evaluate: expression.
</pre>
<p>Sending the &#8220;index&#8221; request returns all available service selectors (as shown in the first example). Sending any other message will return an error page to protect the service from unwanted messages such as #halt</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/219/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=219&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/04/24/vastgoodiescom-services-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting Monticello package changes into VisualWorks</title>
		<link>http://philemonworks.wordpress.com/2009/04/23/getting-monticello-package-changes-into-visualworks/</link>
		<comments>http://philemonworks.wordpress.com/2009/04/23/getting-monticello-package-changes-into-visualworks/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 09:09:45 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[monticello]]></category>
		<category><![CDATA[visualworks]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=213</guid>
		<description><![CDATA[The Cloudfork project is available for the three larger Smalltalk implementations: Squeak/Pharo, VA Smalltalk and VisualWorks. For maintaining the ports based on the Squeak implementation, we use the Package-Exporters package.
For porting to VA Smalltalk, we are using the VAPackageExporter as explained by Adriaan van Os. One important feature is the ability to maintain the port [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=213&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The <a href="http://cloudfork.googlecode.com">Cloudfork</a> project is available for the three larger Smalltalk implementations: Squeak/Pharo, VA Smalltalk and VisualWorks. For maintaining the ports based on the Squeak implementation, we use the <a href="http://www.squeaksource.com/Seaside">Package-Exporters</a> package.</p>
<p>For porting to VA Smalltalk, we are using the VAPackageExporter as <a href="http://www.a3aan.st/sunrise/porting+from+squeak+to+va+smalltalk+(or+how+to+keep+your+va+smalltalk+seaside+up-to-date)">explained</a> by Adriaan van Os. One important feature is the ability to maintain the port based on the changes to a project rather than repeating the all-in-one export.</p>
<p>For maintaining the VisualWorks port of Cloudfork, I extended the Package-Exporters project with a VWPatchExporter that can be used to export changes in the VisualWorks XML format. Having this feature, I can write the following expression to export only the additions/removals and changes to our project:</p>
<pre class="brush: ruby;">
VWPatchsetExporter
	fileOutPackageNamed: 'Cloudfork-AWS'
	relativeTo:  'Cloudfork-AWS-emm.76'
	withNamespace:  'Cloudfork'
</pre>
<p>There is still one issue related to namespaces. Because Squeak does not have namespaces support (yet?), extensions to classes that are not part of the project may be exported using the wrong namespace. Therefore, I always load the export first as a Change list to review the extensions and fix the namespaces by hand.</p>
<p>A possible solution to overcome this is to provide the VWPatchsetExporter with a mapping of qualified class names. Implementing the visualworksName as suggested by Package-Exporters, is not what I prefer.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/213/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/213/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/213/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=213&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/04/23/getting-monticello-package-changes-into-visualworks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>
	</item>
		<item>
		<title>Changing the browser font in VisualWorks</title>
		<link>http://philemonworks.wordpress.com/2009/04/10/changing-browser-font-in-visualworks/</link>
		<comments>http://philemonworks.wordpress.com/2009/04/10/changing-browser-font-in-visualworks/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 20:07:58 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[dina]]></category>
		<category><![CDATA[visualworks]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=197</guid>
		<description><![CDATA[Today I spent some time figuring out if and how I could change to default text font of the Smalltalk browsers in VisualWorks (76nc). For years I have been using my favorite coding font Dina (Win only) in any other tool such as Eclipse. Having this font also in VisualWorks would be very pleasing.
So I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=197&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today I spent some time figuring out if and how I could change to default text font of the Smalltalk browsers in VisualWorks (76nc). For years I have been using my favorite coding font <a href="http://www.donationcoder.com/Software/Jibz/Dina/">Dina</a> (Win only) in any other tool such as Eclipse. Having this font also in VisualWorks would be very pleasing.</p>
<p>So I browsed through the source code of Look policies, Font policies and Font descriptions to find any clues. I was prepared to hack any method for this cause. Then I stumbled upon a little tool to assign Fonts to text styles:</p>
<h2>NamedFontSelector new open</h2>
<p>I picked my installed Dina font from the right list and assigned it to the style &#8220;fixed&#8221;. Then I opened the Settings tool and changed the Tools::textSize to <strong>Fixed</strong>. I gently hit Apply and saw my wish come true <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=197&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/04/10/changing-browser-font-in-visualworks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>
	</item>
		<item>
		<title>Executable operation specifcations in Glare-DataServices</title>
		<link>http://philemonworks.wordpress.com/2009/04/05/executable-operation-specifcations-in-glare-dataservices/</link>
		<comments>http://philemonworks.wordpress.com/2009/04/05/executable-operation-specifcations-in-glare-dataservices/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 21:51:18 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[execution]]></category>
		<category><![CDATA[Glare]]></category>
		<category><![CDATA[specification]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=171</guid>
		<description><![CDATA[Glare is a Flex Remoting and Messaging server written in VisualWorks Smalltalk by Philipp Bunge. I am extending his work with Glare-DataServices which basically provides a HttpServlet that dispatches operation invocations send from a AMF client (Flex,AIR) to Smalltalk objects.
To work with Glare-DataServices, you need Smalltalk classes that implement operations and ActionScript classes that have [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=171&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.ox9.org/projects/glare">Glare</a> is a Flex Remoting and Messaging server written in <a class="wiki" href="http://www.ox9.org/projects/glare/wiki/VisualWorks">VisualWorks</a> Smalltalk by Philipp Bunge. I am extending his work with Glare-DataServices which basically provides a HttpServlet that dispatches operation invocations send from a AMF client (Flex,AIR) to Smalltalk objects.</p>
<p>To work with Glare-DataServices, you need Smalltalk classes that implement operations and ActionScript classes that have corresponding methods in which these operations are invoked remotely. Because both classes (client and server-side) must have the same signature, it is clear that code generation can be very helpful.</p>
<p>One of the requirements, also applied to the <a href="http://pocogese.googlecode.com">Pocogese</a> framework (Flex on Rails), is that methods of each Service class must have metadata such as function name and argument types. Using the metadata of each operation, a code generation tool is able to generate ActionScript classes with the correct signature.</p>
<p>For Glare-DataServices,  I am exploring a different approach that combines both the specification and implementation of each operation using a Block. Let me illustrate using a simple example:</p>
<pre class="brush: ruby;">

SampleService&gt;&gt;computeSum
  &quot; Answer a RemoteMethod that both specifies and implements the sum computation&quot;

  ^( self function: 'computeSum' )
         comment: 'Returns the sum of two numbers'
       ; argument: 'left' type: Number
       ; argument: 'right' type: Number
       ; returns: Number
       ; body: [ :left :right |  left + right ]
</pre>
<p>You will notice that sending the message &#8220;computeSum&#8221; to an instance of this service will <strong>not</strong> perform the operation but instead returns a RemoteMethod with a body. </p>
<p>Having the operation metadata, a RemoteMethod can easily be translated to the ActionScript function implementation:</p>
<pre class="brush: ruby;">
public function computeSum ( left : Number, right : Number , resultHandler : Function ) : void {
    var ro:RemoteObject = new RemoteObject ( &quot;SampleService&quot; )
    ro.computeSum.addEventHandler(ResultEvent.RESULT,resultHandler)
    ro.computeSum(left,right)
}
</pre>
<p>When Glare-DataServices receives a request from Flash (running ActionScript), it will lookup the RemoteMethod using the name of the function and evaluate the body of that method like this:</p>
<pre class="brush: ruby;">
serviceOperation: functionName withArguments: aCollection
    &quot; Find the registered RemoteMethod and evaluates its body using the arguments.&quot;

    ^ (self lookUp: functionName) body valueWithArguments: aCollection asArray
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=171&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/04/05/executable-operation-specifcations-in-glare-dataservices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>
	</item>
		<item>
		<title>Method Categorization and Browse Unsent for VA Smalltalk</title>
		<link>http://philemonworks.wordpress.com/2009/03/27/method-categorization-and-browse-unsent-for-va-smalltalk/</link>
		<comments>http://philemonworks.wordpress.com/2009/03/27/method-categorization-and-browse-unsent-for-va-smalltalk/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 12:15:21 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[vasmalltalk]]></category>
		<category><![CDATA[vastgoodies]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=162</guid>
		<description><![CDATA[Method categorization is an important part of documenting the interface of classes, which is quite unique to Smalltalk to my knowledge. Therefore most developers spent time reorganization their methods in commonly known categories such as initialize-release, accessing and instance creation.
PhilemonToolMethodCategories is a goodie that contains some extensions to the standard browsers that deal with categorization. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=162&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Method categorization is an important part of documenting the interface of classes, which is quite unique to Smalltalk to my knowledge. Therefore most developers spent time reorganization their methods in commonly known categories such as <strong>initialize-release</strong>, <strong>accessing </strong>and <strong>instance creation</strong>.</p>
<p>PhilemonToolMethodCategories is a goodie that contains some extensions to the standard browsers that deal with categorization. In particular, it offers a different &#8220;Move to category&#8230;&#8221; menu item that pops up a menu with existing categories and another submenu with suggested category names. You can change the default list on a per-user basis like this:</p>
<pre>EmUser current storeObject: #( 'initialize-release' 'accessing' ) as: 'PreferredInstanceProtocolNames'</pre>
<p><strong>Browse Unsent Methods&#8230;</strong><br />
The Browser Class menu will have this new item that will search the image for methods defined in the selected class for which no senders could be found.You can use it to cleanup your class once it is more stable.</p>
<p><strong>New Method Template</strong><br />
Furthermore, this goodie adds a nice little event hook that obsoletes the use of &#8220;New Method Template&#8221; ; just select the category to which you want to add a method and the template will be shown <strong>and </strong>selected for you to replace immediately.</p>
<p>This goodie is part of the “Philemon Tools” configuration map and can be downloaded from <a href="http://vastgoodies.com">VAStGoodies.com</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=162&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/03/27/method-categorization-and-browse-unsent-for-va-smalltalk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>
	</item>
		<item>
		<title>Class Search Browser for VA Smalltalk</title>
		<link>http://philemonworks.wordpress.com/2009/03/25/class-search-browser-for-va-smalltalk/</link>
		<comments>http://philemonworks.wordpress.com/2009/03/25/class-search-browser-for-va-smalltalk/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 16:02:44 +0000</pubDate>
		<dc:creator>Ernest Micklei</dc:creator>
				<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[vasmalltalk]]></category>
		<category><![CDATA[vastgoodies]]></category>
		<category><![CDATA[visualage]]></category>

		<guid isPermaLink="false">http://philemonworks.wordpress.com/?p=142</guid>
		<description><![CDATA[The Classes Interface Browser is a small search tool to quickly find a Smalltalk class or one of its methods. The two inputs fields on top provide filters for class names and method names of that class. From a selected class or method, you can open a Class Browser by double-clicking. Using the list popup [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=142&subd=philemonworks&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The Classes Interface Browser is a small search tool to quickly find a Smalltalk class or one of its methods. The two inputs fields on top provide filters for class names and method names of that class. From a selected class or method, you can open a Class Browser by double-clicking. Using the list popup menus, you can navigate (superclass, subclasses&#8230;) in the class hierarchy, add a breakpoint and navigate (redefined, overridden) in the method implementation hierarchy.</p>
<p>The &#8220;dots&#8221; button will popup a menu with the latest selections. De &#8220;inst&#8221; button will switch between instance and class methods. Another nice little detail is the method signature at the bottom of the window.<br />
<img class="alignnone size-full wp-image-143" title="classes_interface_browser" src="http://philemonworks.files.wordpress.com/2009/03/classes_interface_browser.png?w=375&#038;h=393" alt="classes_interface_browser" width="375" height="393" /></p>
<p>This goodie is part of the “Philemon Tools” configuration map and can be downloaded from <a href="http://vastgoodies.com">VAStGoodies.com</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philemonworks.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philemonworks.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philemonworks.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philemonworks.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philemonworks.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philemonworks.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philemonworks.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philemonworks.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philemonworks.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philemonworks.wordpress.com/142/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philemonworks.wordpress.com&blog=1360762&post=142&subd=philemonworks&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://philemonworks.wordpress.com/2009/03/25/class-search-browser-for-va-smalltalk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae4660044c0bb7b590e3de213011a458?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emicklei</media:title>
		</media:content>

		<media:content url="http://philemonworks.files.wordpress.com/2009/03/classes_interface_browser.png" medium="image">
			<media:title type="html">classes_interface_browser</media:title>
		</media:content>
	</item>
	</channel>
</rss>