<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Software Engineering Matters : Category squeak, everything about squeak</title>
    <link>/category/squeak.rss</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>giving a little more thought...</description>
    <item>
      <title>Newspeak Prototype</title>
      <description>&lt;p&gt;&lt;a href="http://gbracha.blogspot.com/2009/02/newspeak-prototype-escapes-into-wild.html"&gt;Room 101: Newspeak Prototype Escapes into the Wild&lt;/a&gt;:
&lt;/p&gt;

&lt;blockquote cite="http://gbracha.blogspot.com/2009/02/newspeak-prototype-escapes-into-wild.html" title="Room 101: Newspeak Prototype Escapes into the Wild"&gt; "The Newspeak prototype is now available at http://newspeaklanguage.org/downloads/ . "
&lt;/blockquote&gt;

&lt;div style="text-align:center;"&gt;&lt;img src="/files/newspeak.png" alt="Newspeak, first boot on my machine." width="50%" /&gt;&lt;/div&gt;

&lt;p&gt;
Yes, the long awaited Newspeak is finally released! It's far from being complete but at least something that runs is out. I was in a class about Actor Programming Languages and Systems last semester and we were supposed to talk about Newspeak (and possibly do a group project on it if people were interested). Unfortunately, at that time, only the language specifications were released. And it's not as fun just reading about the specs and proving things about it.
&lt;/p&gt;

&lt;p&gt;
The other good news? It runs on an Intel Mac. I was initially under the impression that it would only run on Windows.
&lt;/p&gt;

&lt;p&gt;
Other initial impression: the UI is much improved compared to other Squeak implementations (which it is based on). Like the &lt;a href="http://www.pharo-project.org/home"&gt;Pharo&lt;/a&gt; project, Newspeak is probably aiming at creating an professional, open-source Smalltalk platform. Unlike Pharo, it still has remnants of eToys though.
&lt;/p&gt;

&lt;p&gt;
Looks like I might be canceling some initial reading plans to play around with this over the weekend.
&lt;/p&gt;



</description>
      <pubDate>Sat, 28 Feb 2009 09:48:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:4e95747a-aeca-49e4-8e36-a8b2209b62c3</guid>
      <comments>http://softwareengineering.vazexqi.com/2009/02/28/newspeak-prototype#comments</comments>
      <category>squeak</category>
      <link>http://softwareengineering.vazexqi.com/2009/02/28/newspeak-prototype</link>
    </item>
    <item>
      <title>OOPSLA '08: Seaside and Squeak BOF</title>
      <description>&lt;h2&gt;Seaside BOF&lt;/h2&gt;

&lt;p&gt;
I didn't get to take any pictures in this session because I came in late and was sitting at an awkward spot. James Robertson from Cincom was there and has posted some pictures on his &lt;a href="http://tinyurl.com/chrruj"&gt;blog&lt;/a&gt;. I am actually in one of those pictures :)
&lt;/p&gt;

&lt;p&gt;
Michael Lucas-Smith did a demo of WebVelocity &#8211; Cincom's new in-your-web-browser development environment for Seaside. I missed the first 10 minutes of it but it's similar to the &lt;a href="http://tinyurl.com/6h2kwn"&gt;screencast&lt;/a&gt; that he had done before. WebVelocity is cool but there are &lt;strong&gt;two&lt;/strong&gt; things that I really like about it.
&lt;/p&gt;

&lt;p&gt;
First, it has &lt;em&gt;ample&lt;/em&gt; documentation provided for Seaside. Besides the base library from Cincom, I think that this is one of the best documented Smalltalk project ever. Not only do they have comments for the classes and method, but they also have a nice getting started guide all built-in and easily accessible. That was really fantastic! And to make it even better, they had an integrated search widget that allowed you to search through the class names, methods names and, now, comments! Something that was missing from Smalltalk before.
&lt;/p&gt;

&lt;p&gt;
Second, WebVelocity bravely goes where no Smalltalk has gone before: it lets you edit your source code inside &lt;strong&gt;a single&lt;/strong&gt; window &#8211; in this case, your web browser. You can actually see all your methods in one editor without having to open multiple windows! I think this is one of the most interesting (and smart) approaches that Cincom can take to get people to use Smalltalk. I believe that they have reduced the entry barrier for Smalltalk by presenting it in a more familiar environment to newcomers. Hopefully they get some positive feedback and comments on this and use that to help them structure their tools to suit both new and veteran users.
&lt;/p&gt;


&lt;h2&gt;Squeak BOF&lt;/h2&gt;

&lt;div style="text-align:center;"&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2962730393" title="View 'Squeak BOF' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3002/2962730393_bc0d845032_m.jpg" alt="Squeak BOF" border="0" width="240" height="180" /&gt;
&lt;/a&gt;&lt;a href="http://www.flickr.com/photos/37092324@N00/2963574328" title="View 'Squeak BOF' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3233/2963574328_c5555967b2_m.jpg" alt="Squeak BOF" border="0" width="240" height="180" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;I took the pictures using my iPhone so they are all pretty bad actually. The only way I could salvage them was by turning them into black and white pictures....&lt;/small&gt;
&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;
There were three presentations in this year's Squeak BOf.
&lt;/p&gt;

&lt;p&gt;
First Goran presented his project on creating a a lightweight Simple-CGi replacement for Seaside development in Squeak. He calls it Blackfoot and at the time of the demo he still had some bugs in getting Seaside to function. However, he is confident that he will be able to fix it and publish the code soon. His primary goal with this project was to create a replacement that was small, simple and fast. And the micro-benchmarks that he had showed that it was about twice as fast.
&lt;/p&gt;

&lt;p&gt;
Next, Dave Ungar presented &lt;em&gt;The Birth of Manycore Squeak&lt;/em&gt;. Basically he demonstrated what he and Sam Adams have been working on at IBM Research: writing a new Squeak VM that could run on top of the &lt;a href="http://www.tilera.com/products/TILE64.php"&gt;Tilera 64&lt;/a&gt; multicore chip. Right now he has hacked the VM so that it can actually run the MVC UI in Squeak. It's also able to do simple object migration from core to core. However, as he emphasized, this is still work in progress and there's lots of things to be done. In particular, it might require adding some new primitives to Smalltalk to make multicore concurrent programming easier. And it might also require changing the programming model to make it easier to program things concurrently.
&lt;/p&gt;

&lt;p&gt;
And finally, Jecel Assumpcao Jr. talked about &lt;em&gt;Issues in Smalltalk Hardware Design&lt;/em&gt;. He gave a lengthy introduction to the various attempts at creating specialized hardware to execute Smalltalk throughout the years. Most (if not all) of those projects are now dead and obsolete. However, he is interested in creating a modern implementation for Squeak. From the looks of it he already has a draft of the architecture and ISA that he is planning to support. The spec for his Squeak bytecode processor, Plurion, is available from his &lt;a href="http://siliconsqueak.org/"&gt;Siliconsqueak&lt;/a&gt; web page. It wasn't clear from his presentation if he intents to create a multicore bytecode processor or just a single core one.
&lt;/p&gt;

&lt;p&gt;
There weren't as many people at this year's BOF as I had expected. It was cool that the Cincom guys were there this time around though.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;update:&lt;/strong&gt; The videos are now available from Goran's &lt;a href="http://goran.krampe.se/blog/OOPSLA/OOPSLA08-more.rdoc"&gt;site&lt;/a&gt;.
&lt;/p&gt;

</description>
      <pubDate>Tue, 21 Oct 2008 21:53:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:a811655c-41c2-4caa-9cce-23e5724af982</guid>
      <comments>http://softwareengineering.vazexqi.com/2008/10/21/oopsla-08-seaside-and-squeak-bof#comments</comments>
      <category>oopsla</category>
      <category>squeak</category>
      <link>http://softwareengineering.vazexqi.com/2008/10/21/oopsla-08-seaside-and-squeak-bof</link>
    </item>
    <item>
      <title>OOPSLA '08: Seaside and Squeak BOF</title>
      <description>&lt;h2&gt;Seaside BOF&lt;/h2&gt;

&lt;p&gt;
I didn't get to take any pictures in this session because I came in late and was sitting at an awkward spot. James Robertson from Cincom was there and has posted some pictures on his &lt;a href="http://tinyurl.com/chrruj"&gt;blog&lt;/a&gt;. I am actually in one of those pictures :)
&lt;/p&gt;

&lt;p&gt;
Michael Lucas-Smith did a demo of WebVelocity &#8211; Cincom's new in-your-web-browser development environment for Seaside. I missed the first 10 minutes of it but it's similar to the &lt;a href="http://tinyurl.com/6h2kwn"&gt;screencast&lt;/a&gt; that he had done before. WebVelocity is cool but there are &lt;strong&gt;two&lt;/strong&gt; things that I really like about it.
&lt;/p&gt;

&lt;p&gt;
First, it has &lt;em&gt;ample&lt;/em&gt; documentation provided for Seaside. Besides the base library from Cincom, I think that this is one of the best documented Smalltalk project ever. Not only do they have comments for the classes and method, but they also have a nice getting started guide all built-in and easily accessible. That was really fantastic! And to make it even better, they had an integrated search widget that allowed you to search through the class names, methods names and, now, comments! Something that was missing from Smalltalk before.
&lt;/p&gt;

&lt;p&gt;
Second, WebVelocity bravely goes where no Smalltalk has gone before: it lets you edit your source code inside &lt;strong&gt;a single&lt;/strong&gt; window &#8211; in this case, your web browser. You can actually see all your methods in one editor without having to open multiple windows! I think this is one of the most interesting (and smart) approaches that Cincom can take to get people to use Smalltalk. I believe that they have reduced the entry barrier for Smalltalk by presenting it in a more familiar environment to newcomers. Hopefully they get some positive feedback and comments on this and use that to help them structure their tools to suit both new and veteran users.
&lt;/p&gt;


&lt;h2&gt;Squeak BOF&lt;/h2&gt;

&lt;div style="text-align:center;"&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2962730393" title="View 'Squeak BOF' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3002/2962730393_bc0d845032_m.jpg" alt="Squeak BOF" border="0" width="240" height="180" /&gt;
&lt;/a&gt;&lt;a href="http://www.flickr.com/photos/37092324@N00/2963574328" title="View 'Squeak BOF' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3233/2963574328_c5555967b2_m.jpg" alt="Squeak BOF" border="0" width="240" height="180" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;I took the pictures using my iPhone so they are all pretty bad actually. The only way I could salvage them was by turning them into black and white pictures....&lt;/small&gt;
&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;
There were three presentations in this year's Squeak BOf.
&lt;/p&gt;

&lt;p&gt;
First Goran presented his project on creating a a lightweight Simple-CGi replacement for Seaside development in Squeak. He calls it Blackfoot and at the time of the demo he still had some bugs in getting Seaside to function. However, he is confident that he will be able to fix it and publish the code soon. His primary goal with this project was to create a replacement that was small, simple and fast. And the micro-benchmarks that he had showed that it was about twice as fast.
&lt;/p&gt;

&lt;p&gt;
Next, Dave Ungar presented &lt;em&gt;The Birth of Manycore Squeak&lt;/em&gt;. Basically he demonstrated what he and Sam Adams have been working on at IBM Research: writing a new Squeak VM that could run on top of the &lt;a href="http://www.tilera.com/products/TILE64.php"&gt;Tilera 64&lt;/a&gt; multicore chip. Right now he has hacked the VM so that it can actually run the MVC UI in Squeak. It's also able to do simple object migration from core to core. However, as he emphasized, this is still work in progress and there's lots of things to be done. In particular, it might require adding some new primitives to Smalltalk to make multicore concurrent programming easier. And it might also require changing the programming model to make it easier to program things concurrently.
&lt;/p&gt;

&lt;p&gt;
And finally, Jecel Assumpcao Jr. talked about &lt;em&gt;Issues in Smalltalk Hardware Design&lt;/em&gt;. He gave a lengthy introduction to the various attempts at creating specialized hardware to execute Smalltalk throughout the years. Most (if not all) of those projects are now dead and obsolete. However, he is interested in creating a modern implementation for Squeak. From the looks of it he already has a draft of the architecture and ISA that he is planning to support. The spec for his Squeak bytecode processor, Plurion, is available from his &lt;a href="http://siliconsqueak.org/"&gt;Siliconsqueak&lt;/a&gt; web page. It wasn't clear from his presentation if he intents to create a multicore bytecode processor or just a single core one.
&lt;/p&gt;

&lt;p&gt;
There weren't as many people at this year's BOF as I had expected. It was cool that the Cincom guys were there this time around though.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;update:&lt;/strong&gt; The videos are now available from Goran's &lt;a href="http://goran.krampe.se/blog/OOPSLA/OOPSLA08-more.rdoc"&gt;site&lt;/a&gt;.
&lt;/p&gt;

</description>
      <pubDate>Tue, 21 Oct 2008 21:53:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:a811655c-41c2-4caa-9cce-23e5724af982</guid>
      <comments>http://softwareengineering.vazexqi.com/2008/10/21/oopsla-08-seaside-and-squeak-bof#comments</comments>
      <category>oopsla</category>
      <category>squeak</category>
      <link>http://softwareengineering.vazexqi.com/2008/10/21/oopsla-08-seaside-and-squeak-bof</link>
    </item>
    <item>
      <title>OOPSLA '08: Smalltalk Superpowers</title>
      <description>&lt;div style="text-align:center;"&gt;&lt;a href="http://www.flickr.com/photos/37092324@N00/2960998338" title="View 'Smalltalk Superpowers' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3252/2960998338_d1325d59bf.jpg" alt="Smalltalk Superpowers" border="0" width="500" height="375" /&gt;&lt;/a&gt;
&lt;br/&gt;
&lt;small&gt;It seems like John (in the green shirt) is about to use some of his superpowers and fly off into the screen....&lt;/small&gt;
&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;
&lt;a href="http://smalltalk-superpowers.org/"&gt;Smalltalk Superpowers&lt;/a&gt; has to be one of the better workshops at OOPSLA that I have attended - well, I have only attended two so far so that doesn't say too much. What I liked about the workshop was the abundance of actual code (mostly short snippets) that were actually used in real systems. There wasn't the usual nonsense hand-waving; on the other hand we saw actual code that people wrote and had used. Some of the code snippets were beautiful, some were atrocious, and some were just too damn heretical that they should remain as skeletons in the closet. However, all of them had a purpose (though some were rather questionable and were just used to demonstrate the Smalltalk-hackery-kung-fu).
&lt;/p&gt;

&lt;p&gt;
I was already familiar with most of the main concepts that were used but I lacked the ingenuity to use those concepts as others had done. The usual suspects include using &lt;tt&gt;become:&lt;/tt&gt;, &lt;tt&gt;changeClassTo:&lt;/tt&gt;, &lt;tt&gt;doesNotUnderstand:&lt;/tt&gt; and the &lt;tt&gt;thisContext&lt;/tt&gt; variable. So I could easily grasp the main ideas behind those superpowers even though I haven't attempted trying them for myself (I have used &lt;tt&gt;doesNotUnderstand&lt;/tt&gt; and &lt;tt&gt;thisContext&lt;/tt&gt; before though).
&lt;/p&gt;

&lt;p&gt;
Many of the code snippet aren't actually published (for good reason too) since you really don't want to write such code. However, they are useful nonetheless for those dire situations that require a quick throw-away solution.
&lt;/p&gt;

&lt;p&gt;
There were a couple of Javascript, Self and Ruby programmers in the group so we had a good mix of different superpowers. Michael Lucas-Smith made an interesting observation about the state of doing "meta-programming" in Smalltalk and how it differs from what the Ruby (and Rails) people were doing -- &lt;strong&gt;transient generated code&lt;/strong&gt; where we can always return to a &lt;em&gt;clean&lt;/em&gt; slate and remove all the generated code from the image (or program). Smalltalk doesn't really encourage such techniques (see the &lt;em&gt;Dynamic Code Generation&lt;/em&gt; section of my article on &lt;a href="http://softwareengineering.vazexqi.com/articles/2008/05/28/dwemthys-array-in-smalltalk"&gt;Dwemthy's Array&lt;/a&gt;) and it will be nice to see what superpowers people will acquire once Smalltalk makes this easier to do. He suggested something simple like marking/annotating the code that has been generated (I just put mine in a category called &lt;em&gt;generated&lt;/em&gt;) and being able to completely clear it when the system is saved/loaded (so it can start from a clean slate). The code should remain for &lt;em&gt;some&lt;/em&gt; duration so that we can use the existing Smalltalk browser tools to navigate through the code for testing and debugging.
&lt;/p&gt;

&lt;p&gt;
I only stayed for the morning session but I picked up enough little tricks to add to my bag of tricks. And there is enough interesting things that I should be able to play around for some time.
&lt;/p&gt;

&lt;p&gt;
Goran was doing a video recording of the workshop and that should be on the web some time soon. &lt;strong&gt;update:&lt;/strong&gt; The links to the torrent are already up on his &lt;a href="http://goran.krampe.se/blog/OOPSLA/OOPSLA08.rdoc"&gt;site&lt;/a&gt;. The videos (albeit at lower quality) is also available from &lt;a href="http://www.veoh.com/videos/v163138695pJEMGmk"&gt;veoh&lt;/a&gt;. Thanks Goran!
&lt;/p&gt;

</description>
      <pubDate>Mon, 20 Oct 2008 23:12:38 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:9bcc1769-e15b-435f-a39d-5c3634cb01c9</guid>
      <comments>http://softwareengineering.vazexqi.com/2008/10/20/oopsla-08-smalltalk-superpowers#comments</comments>
      <category>oopsla</category>
      <category>squeak</category>
      <link>http://softwareengineering.vazexqi.com/2008/10/20/oopsla-08-smalltalk-superpowers</link>
    </item>
    <item>
      <title>Better Code Browsing in Squeak</title>
      <description>&lt;small&gt;
I am planning a series of articles to help people get accustomed to &lt;em&gt;new&lt;/em&gt; and &lt;em&gt;better&lt;/em&gt; tools in Squeak. This is mostly written just for fun and hopefully it would be useful to students taking Ralph's object-oriented course with Squeak over summmer. Squeak is a very &lt;strong&gt;different&lt;/strong&gt; way of programming when compared to other programming languages and IDE. So, while I am not hoping for some miraculous conversion, I do hope to make it easier for people to work more comfortably within Squeak after using some of the current state-of-the-art IDEs.
&lt;/small&gt;

&lt;p&gt;
Many people hear that the code browser in Squeak (or any Smalltalk for that matter) is designed for &lt;em&gt;code browsing&lt;/em&gt;. In other words, the browser is &lt;em&gt;optimized&lt;/em&gt; to help you read code.
&lt;/p&gt;

&lt;p&gt;
However, I have found that reading code in the regular Squeak environment can quickly become a big mess especially if you are trying something out for the first time and need to read multiple implementations in different classes. Usually, when this happens, you end up with a proliferation of browser windows that quickly clutter your screen. I am assuming that veteran Smalltalkers don't find this a problem because:
&lt;ul&gt;
	&lt;li&gt;they know most of the methods so well that there isn't much need to refer to it&lt;/li&gt;
	&lt;li&gt;they have LARGE monitors so 20 open browsers is not a problem&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;they are just disorganized and don't give a damn about it&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;
In this article, I am going to show you how to use the &lt;a href="http://smallwiki.unibe.ch/hermion/"&gt;OmniBrowser with some new enhancements&lt;/a&gt;. The same group that made the OmniBrowser has also created a whole bunch of very nifty tools. I'll try to get to each one in separate articles. But before that, let me divert your attention to this very relevant message:
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://onsmalltalk.com/programming/smalltalk/a-squeak-smalltalk-development-example/"&gt;A Squeak Smalltalk Development Example&lt;/a&gt;:
&lt;/p&gt;

&lt;blockquote cite="http://onsmalltalk.com/programming/smalltalk/a-squeak-smalltalk-development-example/" title="A Squeak Smalltalk Development Example"&gt; "Most developers who use Squeak would have a plethora of extra tools and utilities installed that make developing a much nicer experience than what you see in this tutorial. Do yourself a favor and start your Squeaking with a real developer&#8217;s image loaded with all the proper goodies like the SqueakDev image maintained by Damien Cassou."
&lt;/blockquote&gt;

&lt;p&gt;
So at this moment, I am going to insist that you download one of the excellent images maintained by Damien over at his &lt;a href="http://damien.cassou.free.fr/squeak-dev.html"&gt;webpage&lt;/a&gt;. Don't even bother using the &lt;a href="http://squeak.org/Download/"&gt;basic squeak image&lt;/a&gt;. The basic image is pretty disheartening and discouraging to any new developer who is trying Squeak for the first time. Since Squeakers are usually developers, I have always found it mind-boggling that the standard Squeak image does not include better support for developers &lt;strong&gt;out-of-the-box&lt;/strong&gt;. Instead, it is cluttered with a lot of stuff that most developers don't care about.
&lt;/p&gt;

&lt;p&gt;
For this tutorial I am using the squeak-web/beta version from &lt;a href="http://squeak.ofset.org/squeak-web/beta/"&gt;here&lt;/a&gt;. Don't forget to grab the SqueakV39.sources file from &lt;a href="http://squeak.ofset.org/squeak-dev/"&gt;here&lt;/a&gt; as well.
&lt;/p&gt;

&lt;p&gt;
Here's our scenario: we want to see how to actually implement the relevant methods so that two objects can be compared to one another for sorting purposes. Here's a step-by-step guide to how I would use the OmniBrowser + enhancements to do it.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2379630720" title="View 'Open the SmartGroup Browser' on Flickr.com"&gt;&lt;img src="http://farm3.static.flickr.com/2418/2379630720_850deb861d.jpg" alt="Open the SmartGroup Browser" border="0" width="500" height="322" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;small&gt;Open the SmartGroup Browser&lt;/small&gt;&lt;/strong&gt;
&lt;br /&gt;
&lt;small&gt;Bring up the World Menu in Squeak and select the SmartGroup Browser.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2379630798" title="View 'Type in the '&amp;lt;' selector' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3173/2379630798_a57aeed05a.jpg" alt="Type in the '&amp;lt;' selector" border="0" width="500" height="322" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;small&gt;Type in the '&amp;lt;' selector&lt;/small&gt;&lt;/strong&gt;
&lt;br /&gt;
&lt;small&gt;In the top pane of the SmartGroup Browser type in '&amp;lt;'. The top pane is called the Mercury Pane and it lets you type in class/selector names and quickly displays it in the current browser for you. For more information about the Mercury Pane see &lt;a href="http://lists.squeakfoundation.org/pipermail/seaside/2007-January/010397.html"&gt;this&lt;a&gt;.&lt;/a&gt;&lt;/a&gt;&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2378793781" title="View 'New window showing the implementors of '&amp;lt;'' on Flickr.com"&gt;&lt;img src="http://farm4.static.flickr.com/3003/2378793781_f30e186658.jpg" alt="New window showing the implementors of '&amp;lt;'" border="0" width="500" height="322" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;small&gt;New window showing the implementors of '&amp;lt;'&lt;/small&gt;&lt;/strong&gt;
&lt;br /&gt;
&lt;small&gt;A new windows pops-up showing the implementors. I think it is OK to have a new window pop-up with the search results. Also notice that this actually shows the classes in a hierarchical manner (by tabs). So you can see that Character is a subclass of Magnitude.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2378793945" title="View 'Search for Float' on Flickr.com"&gt;&lt;img src="http://farm3.static.flickr.com/2352/2378793945_6a40baaccd.jpg" alt="Search for Float" border="0" width="500" height="322" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;small&gt;Search for 'Float'&lt;/small&gt;&lt;/strong&gt;
&lt;br /&gt;
&lt;small&gt;Now back in the SmartGroup Browser, I am going to search for the Float class since I am interested in seeing the definition of the method for it. I am going to enter 'Float' in the Mercury Pane.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2379630998" title="View 'Split panes in the Browser!' on Flickr.com"&gt;&lt;img src="http://farm3.static.flickr.com/2016/2379630998_4f399fd40c.jpg" alt="Split panes in the Browser!" border="0" width="500" height="322" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;small&gt;Split Panes in the Browser!&lt;/small&gt;&lt;/strong&gt;
&lt;br /&gt;
&lt;small&gt;By doing a Shift+Click on a class/method you split a new pane with it!&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2379631048" title="View 'Multiple Split Panes showing all the methods' on Flickr.com"&gt;&lt;img src="http://farm3.static.flickr.com/2306/2379631048_5f7bdcdedb.jpg" alt="Multiple Split Panes showing all the methods" border="0" width="500" height="322" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;small&gt;Multiple Split Panes showing all the methods&lt;/small&gt;&lt;/strong&gt;
&lt;br /&gt;
&lt;small&gt;By repeating the Shift+Click process, we can create as many split panes as we want. Usually it's enough to have about 4 of them.

Also, don't forget that you can browse back using the '&amp;lt;&amp;lt;' button.&lt;/small&gt;
&lt;/p&gt;



&lt;p&gt;
For comparison, this is what it would look like if we had to use the normal tools from the standard Squeak image. Look at the wasted screen estate and how I don't see any nice hierarchical information between the classes.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/37092324@N00/2378778609" title="View 'Finding out how to implement &amp;lt; in Squeak 3.10' on Flickr.com"&gt;&lt;img src="http://farm3.static.flickr.com/2156/2378778609_80f4c9c4bb.jpg" alt="Finding out how to implement &amp;lt; in Squeak 3.10" border="0" width="500" height="322" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;This is roughly what it would look like to find the '&amp;lt;' method in Squeak 3.10 without the new tools. 

We start by trying to look for the '&amp;lt;' selector in the Method Finder and then clicking on each method to see its definition.

Notice that there can be no end to the list of new windows!&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
So I claim that by using the new tools, reading code in Squeak is much more organized. Good organization not only helps the developer focus but also makes it more approachable (and less intimidating) for a new user. &lt;strong&gt;Personally, I advocate that any new tutorial about Squeak be written with reference to these new tools&lt;/strong&gt;. These new tools are hidden gems that need to be exposed to the world! Only by getting more people to use them can we:
&lt;ul&gt;
	&lt;li&gt;improve existing tools based on user feedback and experience
	&lt;/li&gt;
	&lt;li&gt;actually get new tools to appear for Squeak - after all what's the motivation of creating new tools if everyone is just using the &lt;em&gt;old&lt;/em&gt; way?
	&lt;/li&gt;
	&lt;li&gt;change people's perception that Squeak's tools are 20-years outdated compared to more polished tools such as Eclipse&lt;/li&gt;
	&lt;li&gt;make it easier for first-time developers to use Squeak. Seaside has already done a fantastic job garnering attention for Squeak and we should take this opportunity to make it easier for developers to get started&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;
I also hope that people will be less close-minded about enhancing Smalltalk as evident from some of the comments in the following posts:
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3273165966"&gt;Extending Smalltalk Syntax&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=How_should_we_view_methods&amp;entry=3381673662"&gt;How Should We View Methods?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;
Of course, changes should be implemented judiciously but without an open-minded attitude toward change, &lt;em&gt;nothing will change&lt;/em&gt;.
&lt;/p&gt;


</description>
      <pubDate>Mon, 31 Mar 2008 23:01:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:885ac652-544a-414e-a210-a15d49740107</guid>
      <comments>http://softwareengineering.vazexqi.com/2008/03/31/better-code-browsing-in-squeak#comments</comments>
      <category>squeak</category>
      <category>squeak</category>
      <category>smalltalk</category>
      <category>OmniBrowser</category>
      <link>http://softwareengineering.vazexqi.com/2008/03/31/better-code-browsing-in-squeak</link>
    </item>
    <item>
      <title>OOPSLA '07: BOFs</title>
      <description>&lt;p&gt;
BOFs or &lt;em&gt;Birds of a Feather Sessions&lt;/em&gt; allow people with common interests to gather and just talk about anything and/or everything about their common interest! This time I went for three BOFs, all of them focused around Squeak and Smalltalk.
&lt;/p&gt;

&lt;p&gt;
The first one was on Tuesday evening and it featured several short talks by various people. I have to say that the highlight of that BOF was about the by-now-well-known &lt;a href="http://laptop.org/"&gt;XO laptop&lt;/a&gt; (formerly known as the OLPC laptop). We even had two demo units available for us to try out if we wanted. The XO laptop is a marvelously piece of technology for its price. Undeniably, it is built to withstand all the harsh conditions that it might suffer through. However, as mentioned by the presenters the biggest roadblock for this project might not be technology but the lack of actual educational contents to put onto the device itself. Right now, there are no official educational materials that will be installed onto the machines yet. And for a machine that is supposed to function as the all-in-one textbook replacement, this is a major predicament. In fact, it might be a serious blow toward the success of this system. And no one knows what is the best solution to this problem.
&lt;/p&gt;

&lt;p&gt;
There were also two presentations on language tools for Squeak: &lt;a href="http://map.squeak.org/package/dea7935d-2497-45df-936c-69f0daedd136"&gt;OMeta&lt;/a&gt; and CAT. OMeta is a project by &lt;a href="http://www.cs.ucla.edu/~awarth/"&gt;Alessandro Warth&lt;/a&gt; and is already available from SqueakMap. It's pretty compact and has some nice features for parsing languages. Alessandro has actually implemented a Javascript interpreter on top of it but the source is not yet available. CAT is another tool for language recognition by Jamie Douglas. It has more features compared to OMeta -- can support PEG &lt;strong&gt;and&lt;/strong&gt; CFG, has better error messages, automatic AST generation and some AST rewriting. It's currently not released yet but from what I have seen during the BOF demo it is as good as ANTLR and I will definitely be looking into it. It might be fun and useful to create a simple IDE for CAT in Squeak like what &lt;a href="http://www.antlr.org/works"&gt;AntlrWorks&lt;/a&gt; does.
&lt;/p&gt;

&lt;p&gt;
At another BOF that I attended, &lt;a href="http://www.squeakland.org/community/biography/ingalls.html"&gt;Dan Ingalls&lt;/a&gt; did a presentation of the &lt;a href="http://research.sun.com/projects/lively/"&gt;Lively Kernel&lt;/a&gt; project at Sun. Basically the project shows an implementation of a Squeak-like system in Javascript. Since Javascript is &lt;em&gt;supposed&lt;/em&gt; to be cross-platform and runs on all modern web browsers, it is one of the best choices to implement this project in. And by taking advantage of the latest SVG features in new web browsers, one can actually create a lot of graphics without all the overhead of loading images. The demo for the Lively Kernel project is available from its website and runs fine on the Safari 3.0 and above.
&lt;/p&gt;

&lt;p&gt;
The final BOF I attended was the Seaside BOF organized by Roger Whitney who is currently on sabbatical at UIUC. Unfortunately I arrived late for this BOF since I thought I have misplaced my keys and had to go to the lost-and-found office to check on that. I must have arrived more than halfway through the BOF since they were already going into the QA session. The attendees had very different backgrounds: there were some newbies like myself who have read about Seaside but have never used it and there were clearly some veterans who have worked extensively on Seaside. It would have been good if a quick walkthrough demo could have been done to introduce the newbies to Seaside development. Some attendees did raise some interesting questions. For instance, how many projects were using Seaside; what is needed to set it up quickly; which databases did it work with; what hosting options were available (besides hosting it yourself). Fortunately there is an up-to-date website, appropriately named &lt;a href="http://www.seaside.st/"&gt;seaside.st&lt;/a&gt;, that addresses those questions. I must say based on the short demo that web development with Seaside certainly has a different feel. It requires the developer to use all the tools from Squeak (or some other Smalltalk version). However, like Rails, once you have accepted the philosophy of Seaside, web development is certainly better than what it used to be. 
&lt;/p&gt;

</description>
      <pubDate>Mon, 29 Oct 2007 20:57:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:d500a1cd-39a9-4e06-ad1c-8e84a1865f26</guid>
      <comments>http://softwareengineering.vazexqi.com/2007/10/29/oopsla-07-bofs#comments</comments>
      <category>squeak</category>
      <category>oopsla</category>
      <category>oopsla</category>
      <category>squeak</category>
      <category>smalltalk</category>
      <category>seaside</category>
      <trackback:ping>http://softwareengineering.vazexqi.com/trackbacks?article_id=2228</trackback:ping>
      <link>http://softwareengineering.vazexqi.com/2007/10/29/oopsla-07-bofs</link>
    </item>
    <item>
      <title>Squeak by Example - The Book</title>
      <description>&lt;p&gt;&lt;a href="http://www.iam.unibe.ch/~scg/SBE/"&gt;Squeak by Example&lt;/a&gt;:
&lt;/p&gt;

&lt;blockquote cite="http://www.iam.unibe.ch/~scg/SBE/" title="Squeak by Example"&gt; "This book presents the various aspects of Squeak, starting with the basics, and proceeding to more advanced topics. This book will not teach you how to program. The reader should have some familiarity with programming languages. Some background with object-oriented programming would be helpful."
&lt;/blockquote&gt;

&lt;p&gt;
An updated book for Squeak is long overdue and &lt;i&gt;Squeak By Example&lt;/i&gt; will fill that void. The book is still work in progress though a beta version of the pdf will be available soon. The Subversion repository of the LaTeX sources is available though and whoever is interested could generate the .pdf from that.
&lt;/p&gt;

&lt;p&gt;
I find this book to be a positive step in introducing people to Squeak. I have commented before that a book is a physical manifestation of the quality and maturity of an open source project. If you dealing with a close source project then the company backing that project up could easily invest money into making documentation or even publishing a book in that technology. However, when dealing with an open source project -- where &lt;i&gt;all&lt;/i&gt; documentation is freely available in the form of code as the proponents would claim -- the commitment to create a book shows just how much the community loves the product and want to get other people excited about it too. 
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;A book shows commitment to the project&lt;/i&gt;. After all, why waste time writing a book if the project is going to die some time down the road. Now, this does not mean that the project will not die in the future. But it shows that the people behind it are committed enough that they don't foresee this project shutting down anytime soon. In short, the project has enough momentum to sustain itself for some time.
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;A book shows excitement for the project&lt;/i&gt;. And this book practically bubbles with it since it is co-authored by one of the most prominent figures in the Squeak Community, Stephen Ducasse. If a project leader is excited enough about the product to write a book then you can be certain that it's an exciting product.
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;A book shows the maturity of your project&lt;/i&gt;. After all, it's too risky to write a book if things are going to change. Maturity is a sign of stability -- meaning that this product is unlikely to undergo a capricious change in the near future. Thus, if your product depends on Squeak, it is probably not going to suddenly be incompatible in the future.
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;A book shows that other people are interested&lt;/i&gt;. Why write when you don't even have an audience? This is actually a catch-22 since you wouldn't write a book if there is no audience but you wouldn't really have an audience if you don't really have good documentation to inform them adequately in the first place. 
&lt;/p&gt;

&lt;p&gt;
In short, I think an updated book is a good sign that the Squeak community is committed and excited about how much quality and maturity Squeak has achieved. I will be looking forward to this book and hopefully be able to incorporate it in the Smalltalk class that I am teaching assistant for.
&lt;/p&gt;

</description>
      <pubDate>Mon, 03 Sep 2007 21:09:11 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:b2a5975f-3afe-432c-9036-881b3f8287f8</guid>
      <comments>http://softwareengineering.vazexqi.com/2007/09/03/squeak-by-example-the-book#comments</comments>
      <category>squeak</category>
      <trackback:ping>http://softwareengineering.vazexqi.com/trackbacks?article_id=2223</trackback:ping>
      <link>http://softwareengineering.vazexqi.com/2007/09/03/squeak-by-example-the-book</link>
    </item>
    <item>
      <title>Finding Code in Squeak</title>
      <description>&lt;p&gt;
&lt;em&gt;This post is inspired by the contents of this &lt;a href="http://wiki.squeak.org/squeak/783" title="FAQ: Finding Code in an Image"&gt;entry&lt;/a&gt; at the Squeak Wiki FAQ. I just added some pictures to make it more clear.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Squeak is an interesting system. All the source code for the system is embedded in the system itself. This means that you can actually go ahead find the code where a certain feature has been implemented rather easily. And if you desire, you can even change that behavior to suit yourself. Of course, before either of that could happen, you need to know &lt;strong&gt;how&lt;/strong&gt; to look for the code first. I am going to show you three methods for locating code in Squeak. As our example, we will be looking at ways to find where the "Save and Quit" functionality is implemented.
&lt;/p&gt;

&lt;p&gt;
The first method requires the use of the Method Finder (or selector Browser). You can drag an instance of the Method Finder from the tools flap in Squeak. Or you can create a new instance from the World Menu. Just as its name implies, you can use the Method Finder to find methods. You just need to enter a fragment of the method name in the search box and look for it. Sometimes this requires guessing the method name. Fortunately the naming convention in Squeak is fairly consistent and most of the time your guess will help you find the method.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/522194745/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/254/522194745_1772493c33.jpg" width="500" height="371" alt="Finding code in Squeak - 1" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Here I am guessing that there must be a method called "saveandquit" so I enter that into the Method Finder (or Selector Browser) and try to find it. The results show that there is indeed such a method and that two classes have it: TheWorldMainDockingBar and TheWorldMenu.&lt;/small&gt;
&lt;/p&gt;



&lt;p&gt;However, the Method Finder is useful for other things as well. It has a very cool feature that is missing in a lot of other languages. You can actually pass parameters for a method and the return value and it will list all the methods that will satisfy those constraints! You do not even need to know the name of the method. Look at the examples below:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/522194753/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/221/522194753_921b6d7bac.jpg" width="500" height="371" alt="Finding code in Squeak - 2" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Here I am trying to find out if Squeak already has a method to sum up an array for me. So I enter #(1 2 3 4). (remember the dot!) as the input and 10. (remember the dot!) as the output.

Sure enough, it returns that the method sum can sum a collection for me.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/522194761/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/220/522194761_ffc6ee6c74.jpg" width="500" height="371" alt="Finding code in Squeak - 3" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Another useful example is when you cannot remember the name of a function. If you program in multiple languages, some methods might be named differently. For instance the method could be called 'toUpperCase' or 'upperCase!'. Instead of hunting for the name, just enter the input and the output and the Method Finder will spit out the proper name for you.
&lt;/small&gt;	
&lt;/p&gt;

&lt;p&gt;
The second method is actually even more neat. You can usually just select the morph itself to find out what code it is implementing! This works for most of the Morphic menus. Try doing that in your normal programming language environment!
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/vazexqi/522194763/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/238/522194763_c321a0694a.jpg" width="500" height="371" alt="Finding code in Squeak - 4" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Right-click on the World Menu. You will see the halo appear with the text "Menu" at the bottom.&lt;/small&gt; %&gt;&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/522194765/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/229/522194765_8058553ed9.jpg" width="500" height="371" alt="Finding code in Squeak - 5" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Right-click directly on the "save and quite text" again. It should now change to a smaller halo with the text "MenuItem" at the bottom. Click on the menu button (it is the red icon).&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/522194769/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/214/522194769_f84bdab195.jpg" width="500" height="371" alt="Finding code in Squeak - 6" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Select "explore morph" from the debug submenu.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/522192144/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/236/522192144_4a4b8d54d9.jpg" width="500" height="371" alt="Finding code in Squeak - 7" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;Check out the highlighted text. It shows you the information that you were looking for. This method requires some hunting for the information because it has a lot more other information about the morph itself.
&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
The final method is actually the most powerful but least interesting. This is just like the normal search command that you have in your IDE. It is going to search through &lt;em&gt;everything&lt;/em&gt; for the text.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/522211575/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/237/522211575_4160d911f1.jpg" width="500" height="371" alt="Finding code in Squeak - 8" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;
Type the text "save and quit" into a new workspace window. Highlight it and then middle click on it. Search for the "more..." submenu right at the bottom of the menu. Another menu will pop-up. In this menu, select "method source with it". You can use the other options as well depending on your needs.
&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/522192146/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/204/522192146_f49a8e4f1a.jpg" width="500" height="371" alt="Finding code in Squeak - 9" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;small&gt;It gives you a whole list of methods with that text in it. You will have to hunt the information that you want down but this is the most detailed way to find "everything" that is related to the text. &lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
And those are the three methods for finding code in Squeak. The first two methods are the most useful and the final one should be used when all else fails.	With these methods, you should feel be able to satisfy your curiosity and find out &lt;em&gt;everything&lt;/em&gt; that you want to know about Squeak.
&lt;/p&gt;</description>
      <pubDate>Wed, 30 May 2007 15:45:21 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:9b1dde54-4e7e-49de-8a1f-fc49dcba0d41</guid>
      <comments>http://softwareengineering.vazexqi.com/2007/05/30/finding-code-in-squeak#comments</comments>
      <category>squeak</category>
      <trackback:ping>http://softwareengineering.vazexqi.com/trackbacks?article_id=2221</trackback:ping>
      <link>http://softwareengineering.vazexqi.com/2007/05/30/finding-code-in-squeak</link>
    </item>
    <item>
      <title>Installing packages in Squeak</title>
      <description>&lt;p&gt;
In my previous &lt;a href="http://softwareengineering.vazexqi.com/articles/2007/05/25/getting-acquainted-with-squeak"&gt;post&lt;/a&gt; I mentioned some useful packages that do not come installed by default in normal distribution of Squeak. There are two ways that you can get hold of those packages in your image.	
&lt;/p&gt;

&lt;p&gt;
The first way is to download a specially packaged image that contains most of the developer tools. You can get that image from &lt;a href="http://damien.cassou.free.fr/squeak-dev/"&gt;here&lt;/a&gt;. The advantage is that you get all the tools that Squeak developers usually use. The disadvantage is that if this is your first time using Squeak, you might not know all the tools. Hence you end up with an image that contains a lot of things that you will not use. And documentation for tools are usually pretty sparse so it is a good idea to start small and selectively choose the tools that you will use.
&lt;/p&gt;

&lt;p&gt;
Thus, I present the second method to get hold of those tools: installing them as individual packages. For this process, I am going to start with a clean image to show you how it is done. I will install the &lt;a href="http://map.squeak.org/package/e5c1aec2-0eb9-492d-8cb1-44f64c5b631a"&gt;Shout workspace&lt;/a&gt; package which gives you syntax highlighting in the workspace.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515145938/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/214/515145938_e9f9810d59.jpg" width="500" height="375" alt="Installing packages in Squeak - 1" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Bring up SqueakMap Package loader first.
&lt;/small&gt;
&lt;/p&gt;





&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515145944/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/220/515145944_99f4620b7a.jpg" width="500" height="375" alt="Installing packages in Squeak - 2" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;It's a good idea to update the list of packages from the net every time you want to install a package. This gets you the latest version.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515145948/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/195/515145948_ddb2408bc1.jpg" width="500" height="375" alt="Installing packages in Squeak - 3" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Notice how we now have 694 packages instead of 667. We also want to upgrade any installed packages before installing new ones. In this example, the SqueakMap Package loader itself will be upgraded.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515145954/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/212/515145954_72676ffd72.jpg" width="500" height="375" alt="Installing packages in Squeak - 4" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;In the newly upgraded SqueakMap Package Loader, search for "shout workspace".&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515145958/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/197/515145958_31db711918.jpg" width="500" height="375" alt="Installing packages in Squeak - 5" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;If you read the description, you will notice that it requires Shout to be installed first. As this example shows, it is always a good idea to actually read the description before installing anything.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515145998/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/198/515145998_f52fa6599f.jpg" width="500" height="375" alt="Installing packages in Squeak - 6" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Here we install the prerequisite: Shout. Just middle-click on the package name and it will automatically install the package that is most compatible with your system (if it can find one).&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515179619/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/196/515179619_e5d56fabf2.jpg" width="500" height="375" alt="Installing packages in Squeak - 7" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Now we select Shout Workspace. You will get a bunch of warnings at this time saying that Shout Workspace might not be compatible with your system. When you get a warning like that, use your own judgment on whether to install it. You can always try to install it first and if it does not work then you can just quit the image without saving.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515179623/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/232/515179623_72a5b04a9f.jpg" width="500" height="375" alt="Installing packages in Squeak - 8" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Now, when you bring up the open menu you see Shout Workspace as an option.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515179627/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/205/515179627_dd4453b9ac.jpg" width="500" height="375" alt="Installing packages in Squeak - 9" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;This is the syntax highlighting that you get from the Shout workspace. 
Because you have installed Shout as well, you will get syntax highlighting in the normal class browser.
&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
Installing packages in Squeak 3.9 still has some caveats. Some packages do not work together well. This will change for the better in Squeak 3.10 with the introduction of a more standardized package universe where all packages in that universe &lt;i&gt;must&lt;/i&gt; work together.
&lt;/p&gt;

&lt;p&gt;
This brings me to the second part of the post. Uninstalling the packages that you do not want. There are two ways to do so. First, if you discover that the package that you install does not work well (or if you do not like it) then you can quit the image &lt;b&gt;without&lt;/b&gt; saving it. The next time you start the image that package will not be in it.
&lt;/p&gt;

&lt;p&gt;
The second method involves using Monticello browser as illustrated below.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515179629/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/236/515179629_a78df5b6da.jpg" width="500" height="375" alt="Uninstalling packages in Squeak - 1" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Bring up the Monticello browser. Monticello is the name of a version control system in Squeak. Most new packages are stored in the Monticello format.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/vazexqi/515179633/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/191/515179633_14a1c36866.jpg" width="500" height="375" alt="Uninstalling packages in Squeak - 2" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Find "Shout Workspace" and select unload packages.

This only works if the package was installed as a Monticello package. Most new packages are but some of the older packages are installed as changesets and cannot be removed so easily.&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
However, uninstalling packages is not always a clean process. In our example, even after unintalling Shout workspace, some of its side effects remain. For instance, if you click on desktop to get the World Menu and click open... you still see Shout Workspace in the list even though it has been removed. Clicking on Shout Workspace only produces an instance of a normal workspace that does not have syntax highlighting. Unfortunately, to remove Shout Workspace from the list, you have to murk with some of the other classes in Squeak. Take a look at the &lt;code&gt;TheWorldMenu&lt;/code class.
&lt;/p&gt;</description>
      <pubDate>Sat, 26 May 2007 15:09:23 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:5a85250f-0032-4c63-a803-a2a031c1c633</guid>
      <comments>http://softwareengineering.vazexqi.com/2007/05/26/installing-packages-in-squeak#comments</comments>
      <category>squeak</category>
      <trackback:ping>http://softwareengineering.vazexqi.com/trackbacks?article_id=2220</trackback:ping>
      <link>http://softwareengineering.vazexqi.com/2007/05/26/installing-packages-in-squeak</link>
    </item>
    <item>
      <title>Creating projects in Squeak</title>
      <description>&lt;p&gt;
One way to reduce the clutter in Squeak is to create projects. Contrary to its name, a project is more of a organized view of the image. Every project shares the same code in the image; changes made in one project affect code in another project that reside in the same image. So why would anyone want to do this? Like I mentioned, projects are a nice way to organize the things that you are working on. 

&lt;p&gt;
A similar analogy is the &lt;a href="http://www.polarhome.com/vim/manual/v70/usr_21.html#21.4"&gt;&lt;code&gt;mksession&lt;/code&gt;&lt;/a&gt; command in gVim. It allows you to record the current state of your files, which files are opened, etc. Eclipse has a similar feature called &lt;a href="http://wbeaton.blogspot.com/2005/11/leanin-on-working-sets.html"&gt;working sets&lt;/a&gt; but it is not as useful since it does not remember the files that are opened in the editor.
&lt;/p&gt;

&lt;a href="http://www.flickr.com/photos/vazexqi/513914762/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/225/513914762_971d50989e.jpg" width="500" height="372" alt="Creating a project in Squeak part 1" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Click on the &lt;i&gt;desktop&lt;/i&gt; to get the World Menu and select projects...&lt;/small&gt;
&lt;br /&gt;
&lt;br /&gt;

&lt;a href="http://www.flickr.com/photos/vazexqi/513914766/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/207/513914766_a9290802a9.jpg" width="500" height="372" alt="Creating a project in Squeak part 2" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;small&gt;Select create new morphic project.&lt;/small&gt;
&lt;br /&gt;
&lt;br /&gt;

&lt;a href="http://www.flickr.com/photos/vazexqi/513914768/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/230/513914768_441b8cdf17.jpg" width="500" height="372" alt="Creating a project in Squeak part 3" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;small&gt;Click on the window menu (it looks like a stack of drawers and is on the top left) to select change title...&lt;/small&gt;
&lt;br /&gt;

&lt;p&gt;
Give the project a name and then hit accept. You can now click on the project to enter it. You can even drag it around. Explore the project... menu to see what else you can do. One quick way to see all the projects and quickly navigate to them is projects... &gt; jump to project...
&lt;/p&gt;

&lt;p&gt;
An easier way if you have the navigator flap open is to select it and click the "NEW" button.
&lt;/p&gt;


&lt;p&gt;
Once you get used to using projects, you will wish that every IDE has this feature. The ability to remember the &lt;b&gt;exact&lt;/b&gt; state of all your open windows and their layout is actually pretty useful to get your brain back into the context it was in while working on your code.
&lt;/p&gt;

</description>
      <pubDate>Fri, 25 May 2007 15:32:56 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:ed97b8bd-85d6-4e8d-b7a2-19b714f291fa</guid>
      <comments>http://softwareengineering.vazexqi.com/2007/05/25/creating-projects-in-squeak#comments</comments>
      <category>squeak</category>
      <trackback:ping>http://softwareengineering.vazexqi.com/trackbacks?article_id=2219</trackback:ping>
      <link>http://softwareengineering.vazexqi.com/2007/05/25/creating-projects-in-squeak</link>
    </item>
  </channel>
</rss>

