<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>Discovering the Smalltalk language until the coffee runs out</description><title>Smalltalk Labs</title><generator>Tumblr (3.0; @smalltalklabs)</generator><link>http://smalltalklabs.tumblr.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SmalltalkLabs" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="smalltalklabs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><item><title>Small status update on my Smalltalk &amp; Newspeak projects</title><description>&lt;p&gt;I don&amp;#8217;t have time right now to keep working on my Smalltalk &amp;amp; Newspeak projects because one of my commercial software projects has reached beta status and I&amp;#8217;m trying to get it ready for release in January (bills sadly don&amp;#8217;t pay themselves).&lt;/p&gt;

&lt;p&gt;I will however work full time on my Newspeak and Smalltalk projects over the holidays, between Christmas and New Year&amp;#8217;s which should allow me to get a lot done.&lt;/p&gt;

&lt;p&gt;The current plan is to release an update to SL Browser which fixes a few annoyances and improves the code editor and an update for SLBfb which fixes a few annoyances but doesn&amp;#8217;t introduce anything new, add Squeak and Newspeak support to SLBfb and release an initial version of the interactive Newspeak tutorial, Speaktorial. There is still a bug in Newspeak which keeps me from putting the code evaluation aspect into Speaktorial, but instead I&amp;#8217;ll add a few screencasts to the tutorial and fake Newspeak code evaluation with JavaScript for now. I think the combination of a text tutorial and short screencast videos scattered in the text can be pretty good if it&amp;#8217;s done right, we&amp;#8217;ll see how it works out. Speaktorial will also make use of SLBfb where it makes sense.&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/2197917963</link><guid>http://smalltalklabs.tumblr.com/post/2197917963</guid><pubDate>Mon, 13 Dec 2010 11:01:22 +0100</pubDate></item><item><title>Smalltalk Labs Browser for blogs released!</title><description>&lt;p&gt;Smalltalk Labs Browser for blogs is available&amp;#8230;. NOW!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://slbrowserfb.appspot.com"&gt;&lt;a href="http://slbrowserfb.appspot.com"&gt;http://slbrowserfb.appspot.com&lt;/a&gt;&lt;/a&gt; interactive installation instructions are at the very bottom (click on &amp;#8220;configuration&amp;#8221;).&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s free and open source, licensed under the Apache License Version 2.0 (both the client and the server). I had originally planned to release this under the MIT license but the Apache License was a better fit for reasons too numerous to name here.&lt;/p&gt;

&lt;p&gt;You can try it out right here, just click on one of these classes (if you use a WebKit or Mozilla web browser that is): &lt;a href="http://slbrowserfb.appspot.com/code/pharo/1.1/ByteString"&gt;ByteString&lt;/a&gt;, &lt;a href="http://slbrowserfb.appspot.com/code/pharo/1.1/SmallInteger"&gt;SmallInteger&lt;/a&gt;, &lt;a href="http://slbrowserfb.appspot.com/code/pharo/1.1/OrderedCollection"&gt;OrderedCollection&lt;/a&gt;. You can move the window around by dragging the title bar, or just let the auto positioning do it&amp;#8217;s job which always tries to center the window over the clicked class name while not going over the window/document edges.&lt;/p&gt;

&lt;p&gt;If you click on a class name with a web browser not supported by Smalltalk Labs Browser for blogs (let&amp;#8217;s just call it slbrowserfb or SLBfb), or if you&amp;#8217;re viewing the blog post in an RSS reader or on Planet Smalltalk, you are directed to the SLBfb website which then displays the class instead. You can try this by right clicking and choosing &amp;#8220;open in new tab&amp;#8221; on one of the class names, when doing that the code browser doesn&amp;#8217;t open up. This was just a quick hack, there can be done a lot more with the layout by adding a few more interactive/dynamic elements here and there, but I think it&amp;#8217;s pretty neat already.&lt;/p&gt;

&lt;p&gt;This is only the beginning, at the moment there&amp;#8217;s a lot left to be desired although initial reactions were quite positive. Next up is making the window resizable and providing a public API so that you can better integrate it with your blog&amp;#8217;s / website&amp;#8217;s design and hook into all the events to modify the functionality. I hope that as soon as the design can be easily changed, people will contribute some better looking default designs to the project as I&amp;#8217;m not a designer and can only do so much (although IMHO it looks quite good like it is, but taste differs). The design is completely done in CSS 3, no images, so it&amp;#8217;s modifiable completely without having to use an image editor.&lt;/p&gt;

&lt;p&gt;One last thing and then I&amp;#8217;m off. This is the first release so I&amp;#8217;m the only one who tested it, aside from the pre-release that was available on Pharocasts. I advise you that if you include this on your website, try it out thoroughly to see if it messes up your website&amp;#8217;s design in any way. It shouldn&amp;#8217;t, it didn&amp;#8217;t in my tests, but I might have missed something. The widget is sandboxed in an iframe so that outside CSS doesn&amp;#8217;t mess it&amp;#8217;s design up (the pre-release version wasn&amp;#8217;t, so Pharocasts&amp;#8217; design changed the fonts used), the CSS is prefixed with slb_ and the JavaScript is namespaced with SLB, so there &lt;em&gt;should&lt;/em&gt; be no clashes. JavaScript doesn&amp;#8217;t technically have namespace support but there&amp;#8217;s a neat trick to tack it on. Also, at the moment if there should be an error when communicating with the database server (timeout, etc.), SLBfb gets stuck. This will be fixed soon, probably tomorrow.&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/1557829586</link><guid>http://smalltalklabs.tumblr.com/post/1557829586</guid><pubDate>Sat, 13 Nov 2010 04:06:32 +0100</pubDate><category>slbrowser</category></item><item><title>SLBfb in action at Pharocasts</title><description>&lt;p&gt;I&amp;#8217;ve worked over the weekend to get a pre-release version of Smalltalk Labs Browser for blogs (I should really have chosen a shorter name for this one although really long product names are kind of funny) ready, exclusively for the newest episode of Pharocasts.&lt;/p&gt;

&lt;p&gt;Head on over there now with a WebKit or Mozilla powered browser if you&amp;#8217;d like to play around with it: &lt;a href="http://www.pharocasts.com/2010/11/lightsout-game.html"&gt;http://www.pharocasts.com/2010/11/lightsout-game.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you use an unsupported browser, you won&amp;#8217;t even notice that SLBfb is there, because then the class names that would usually be clickable to open the browser are replaced with pure text. This means if you put this on your website or blog you don&amp;#8217;t have to tell your readers that it only works in WebKit and Mozilla browsers, they won&amp;#8217;t even notice it&amp;#8217;s there if their browser isn&amp;#8217;t supported. I think that&amp;#8217;s a rather nice solution. I might add support for Opera later on.&lt;/p&gt;

&lt;p&gt;The design changed a bit since the last video I posted. I removed the area at the top that displayed the class comment so that there is more space for the list, which now holds the class comment, class definition, instance and class methods.&lt;/p&gt;

&lt;p&gt;You can click on &amp;#8220;hide list&amp;#8221; and the list slides out of the way so that the full view space can be used to browse code. The public release version will probably allow you to move around in the list by using your keyboard in this view and additionally I might display small clickable controls to do that without the keyboard, so that even in full code view you can switch to the next or previous method.&lt;/p&gt;

&lt;p&gt;This Pharocasts exclusive pre-release version doesn&amp;#8217;t yet communicate with a backend server which holds all the source code for Pharo and other Smalltalks, that part I got only finished today. Thanks to the awesomeness that is Google App Engine, I barely had to do write any code which is nice ^^&lt;/p&gt;

&lt;p&gt;You&amp;#8217;ll be able to add this to your own blog (or any kind of website) very soon, probably even tomorrow. As always, never believe release dates when they come from me or any programmer for that matter, but it should be ready tomorrow. It works on most popular free blog hosts, including Tumblr and Blogger, the only requirement is that you are able to include custom JavaScript in your blog or website&amp;#8217;s theme. SLBfb itself is hosted on Google servers so it should always be blazingly fast to load. Gzipped it&amp;#8217;s only a bit over 1&amp;#160;kb in size, 6&amp;#160;kb uncompressed. Adding this to your website is so easy a two year old could do it although I&amp;#8217;m sure I&amp;#8217;ll manage to make the instructions look seriously complicated (it&amp;#8217;s a gift).&lt;/p&gt;

&lt;p&gt;I had wanted to make jQuery an optional requirement but since then I&amp;#8217;ve used it for so many parts of SLBfb that making jQuery optional isn&amp;#8217;t really that good a decision anymore. But I made sure that if you use some other JavaScript framework already, jQuery won&amp;#8217;t interfere with it. jQuery is served from Google&amp;#8217;s servers and cached in the user&amp;#8217;s browser. Most websites do that now and this means that usually, jQuery does not have to be downloaded more than once so this doesn&amp;#8217;t really add to the page size since people usually already have jQuery cached from visiting some other website in the past. So all in all, even though jQuery is now a requirement, it doesn&amp;#8217;t really matter and you can regard it as a non-issue.&lt;/p&gt;

&lt;p&gt;If you have any issues with the pre-release version on Pharocasts or have suggestions for improvement or additional features, feel free to comment here or send me a Tweet @HaiColon or an email, HaiColon at gmail dot com.&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/1464398646</link><guid>http://smalltalklabs.tumblr.com/post/1464398646</guid><pubDate>Tue, 02 Nov 2010 22:17:13 +0100</pubDate><category>slbrowser</category></item><item><title>Smalltalk Labs Browser for blogs preview video</title><description>&lt;p&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9t28e2sAWcc?fs=1&amp;amp;hl=en_US&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/9t28e2sAWcc?fs=1&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;This video shows how Smalltalk Labs Browser for blogs opens up when you click on a Smalltalk class in a blog post.&lt;/p&gt;

&lt;p&gt;The animations use jQuery so you won&amp;#8217;t see them if you don&amp;#8217;t add jQuery to your blog, everything will be displayed instantly then.&lt;/p&gt;

&lt;p&gt;The class loading is simulated, I haven&amp;#8217;t written the backend on Google App Engine for that yet. Syntax highlighting isn&amp;#8217;t shown here because it&amp;#8217;s a pain to use it while working on the code since Google Chrome has very strict local file JavaScript security settings and the syntax plugin for jQuery loads JavaScript on demand to keep the size as small as possible.&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/1423578261</link><guid>http://smalltalklabs.tumblr.com/post/1423578261</guid><pubDate>Thu, 28 Oct 2010 15:50:58 +0200</pubDate><category>slbrowser</category><category>video</category></item><item><title>Smalltalk Labs Browser for blogs</title><description>&lt;p&gt;I thought it would be cool if a reader could click on any Smalltalk class I mention in a blog post and then a mini version of my Smalltalk Labs browser would pop up as a floating div and display this class for him so that he can browse the docs or the methods and hopefully understand my blog post better, without the need to have a Smalltalk image at hand. Could be pretty handy for tutorials too. Well, I started working on it right away, which means today :)&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s a first screenshot:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://min.us/i09zq/SLBrowserForBlogs.png" alt="Smalltalk Labs Browser for blogs"/&gt;&lt;/p&gt;

&lt;p&gt;(The design and layout is subject to change, the class/instance method selector is missing and I&amp;#8217;ll have to put the displayed code&amp;#8217;s copyright and License info somewhere, probably as a hyperlink to the license)&lt;/p&gt;

&lt;p&gt;You&amp;#8217;ll be able to use this on any blog, it&amp;#8217;s a JavaScript widget so you don&amp;#8217;t need to use a blog written in Seaside. I&amp;#8217;ll probably provide instructions on how to add this to Tumblr, Wordpress and Blogger.&lt;/p&gt;

&lt;p&gt;It will probably take about a week (or longer if something else comes in between) before this is ready for use. I already got pretty far today though.&lt;/p&gt;

&lt;h3&gt;How it&amp;#8217;s done&lt;/h3&gt;

&lt;p&gt;(Unless I change my mind about an implementation detail of course ^^)&lt;/p&gt;

&lt;p&gt;I will have a webservice running on Google App Engine (yay free hosting!) which has all the standard Smalltalk classes and some popular libraries in a database, which are created beforehand by a Smalltalk script.&lt;/p&gt;

&lt;p&gt;The browser widget connects to this service and then fetches all the information about a class it needs (method names, method code, class doc) as JSON and then displays it.&lt;/p&gt;

&lt;p&gt;If you want to use the browser for a class that is not in the database, when you write a blog about your own projects for example, you can add this class easily to the browser as JSON, only for your blog. You don&amp;#8217;t have to write this JSON code yourself, I&amp;#8217;ll provide a Smalltalk class that outputs the necessary code that you then only need to copy and paste into your blog. You&amp;#8217;ll probably just do something like this in a Workspace:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SLBrowserForBlogs convertClasses: #('MyOwnClass' 'MyOtherClass')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br/&gt;
At first the database will have only Pharo classes, then I&amp;#8217;ll add Squeak and other Smalltalks where the license permits code redistribution (meaning no commercial smalltalks). Newspeak should work too.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m not yet sure how you will use the browser in a blog post. You&amp;#8217;ll probably use an html tag like&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;span class="slbrowser squeak"&amp;gt;ByteString&amp;lt;/span&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br/&gt;
which then gets automatically turned into a clickable link that opens the browser on the ByteString class of Squeak Smalltalk, positioned just above the link.&lt;/p&gt;

&lt;p&gt;The syntax highlighting is done through a jQuery plugin right now. Adding this to your blog will be optional as some people might use a different JavaScript framework on their blog (now why would you do that? ^^). Maybe I&amp;#8217;ll even do the syntax highlighting server side, we&amp;#8217;ll see, both options have their upsides and downsides.&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/1410167496</link><guid>http://smalltalklabs.tumblr.com/post/1410167496</guid><pubDate>Wed, 27 Oct 2010 01:30:03 +0200</pubDate><category>slbrowser</category></item><item><title>Render static HTML with Seaside</title><description>&lt;a href="http://forum.world.st/Generating-static-html-pages-td3008554.html"&gt;Render static HTML with Seaside&lt;/a&gt;: &lt;p&gt;Found this on the Seaside mailing list. If you want to generate html code but don’t want to use it to drive a Seaside website, to save it as a file for example, you can easily do this and still use all the cool html brushes Seaside provides to write the html in Smalltalk.&lt;/p&gt;

&lt;p&gt;Print or inspect the code in a Workspace and you’ll get a ByteString with the html code.&lt;/p&gt;

&lt;p class="gist"&gt;&lt;a href="http://gist.github.com/642973"&gt;&lt;a href="http://gist.github.com/642973"&gt;http://gist.github.com/642973&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/1385635692</link><guid>http://smalltalklabs.tumblr.com/post/1385635692</guid><pubDate>Sun, 24 Oct 2010 04:12:56 +0200</pubDate><category>Seaside</category><category>snippet</category></item><item><title>Search as you type with Seaside &amp; jQuery example code</title><description>&lt;p&gt;Before I implemented search as you type filtering in Smalltalk Labs Browser, I wrote a little test app to try it out. I had done something like this before but that was a year ago so I wasn&amp;#8217;t sure if I still knew how to do it :)&lt;/p&gt;

&lt;p&gt;The code for this test app is very short so I thought I&amp;#8217;d share it so that you can easily see how to integrate search as you type into your own Seaside apps, without having to browse through the Smalltalk Labs Browser code.&lt;/p&gt;

&lt;p&gt;Just create a new Seaside application and replace the renderContentOn: code with this snippet. This snippet makes use of jQuery so you will have to add the JQDeployment or JQDevelopment library to your application with the /config tool to make it work. I wrote this using Pharo so I&amp;#8217;m not sure if the method asWords I use to create the test data is available in all Smalltalk implementations, it probably only works in Squeak and Pharo.&lt;/p&gt;

&lt;p class="gist"&gt;&lt;a href="http://gist.github.com/642173"&gt;&lt;a href="http://gist.github.com/642173"&gt;http://gist.github.com/642173&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/1380968488</link><guid>http://smalltalklabs.tumblr.com/post/1380968488</guid><pubDate>Sat, 23 Oct 2010 15:51:00 +0200</pubDate><category>seaside</category><category>snippet</category></item><item><title>Smalltalk Labs Browser first version released!</title><description>&lt;a href="http://code.google.com/p/smalltalklabsbrowser/"&gt;Smalltalk Labs Browser first version released!&lt;/a&gt;: &lt;p&gt;I spent the last week fixing all the bugs I could find in SL-Browser, my web based code browser for the Seaside web framework, and now it’s finally here, the first release is available for download for Pharo and Squeak.. NOW! ^^ I call it version 1.0 beta since I was the only tester, there might still be bugs I just never encountered myself.&lt;/p&gt;

&lt;p&gt;As this is my first real Smalltalk project it might not be that good yet but I hope people will find it useful and I am going to improve it as I learn more about Smalltalk and Seaside.&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/1376459882</link><guid>http://smalltalklabs.tumblr.com/post/1376459882</guid><pubDate>Sat, 23 Oct 2010 01:26:00 +0200</pubDate><category>slbrowser</category><category>seaside</category></item><item><title>Oh no, a new blog! But it's about Smalltalk (and Newspeak).</title><description>&lt;h3&gt;The reason&lt;/h3&gt;

&lt;p&gt;I never had good experiences with blogs. I never update them, I&amp;#8217;m way too lazy for that. But I also want to document my experience with learning and using the Smalltalk and Newspeak programming languages, so I will try again. I will fail, there&amp;#8217;s no question about that, but that&amp;#8217;s half the fun, isn&amp;#8217;t it?&lt;/p&gt;

&lt;h3&gt;The path&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;&amp;#8220;I tried out Squeak before, many years ago, but I was quickly turned off by&amp;#8230; Well, everything I guess. Nowadays it looks a lot better.&amp;#8221;&lt;/p&gt;
  
  &lt;p&gt;&amp;#8220;Gilad Bracha&amp;#8217;s vision for Newspeak and software development in general is just too cool to miss out on.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I started learning Smalltalk about six months ago (has it been really &lt;em&gt;that&lt;/em&gt; long?). I tried out Squeak before, many years ago, but I was quickly turned off by&amp;#8230; Well, everything I guess. Nowadays it looks a lot better. Since I did a lot of Objective-C and Ruby development I always wanted to check out Smalltalk which heavily influenced those languages and Newspeak, which is kind of a successor to Smalltalk, intrigued me. Gilad Bracha&amp;#8217;s vision for Newspeak and software development in general is just too cool to miss out on.&lt;/p&gt;

&lt;p&gt;I didn&amp;#8217;t have much time to do Smalltalk and Newspeak stuff since I&amp;#8217;m always swamped with work on other projects, but in the little free time I had I started reading through the Newspeak tutorial, the Pharo and Squeak by Example books and then watched a few screencasts from Smalltalk Television and Pharocasts. There was a comment on one of the Pharocast videos that asked for someone to record his voice for the screencasts. I thought why not use this as a neat way to both help out and learn more about Smalltalk, so from then on I did the voice for all the Pharocast episodes and also contributed two screencasts myself.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&amp;#8220;I was very intrigued by the idea of editing a website&amp;#8217;s code from within the browser.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After writing only a very tiny amount of Smalltalk code and mainly trying out the different Smalltalk implementations, I started my first real Smalltalk project about a month ago, for the Seaside web framework using Pharo. Seaside comes with a code browser that lets you edit your website&amp;#8217;s code from within the web browser, but it&amp;#8217;s missing a lot of functionality and since it doesn&amp;#8217;t make use of AJAX, every click reloads the whole website which is annoying since this also resets the scroll position in all the lists. I was very intrigued by the idea of editing a website&amp;#8217;s code from within the browser.&lt;/p&gt;

&lt;p&gt;I had already started creating a web based interactive tutorial for Newspeak, called Speaktorial, where I have to create development tools as JavaScript widgets, so doing the same thing for Seaside fits together nicely since what I learn while doing this can be applied to both projects.&lt;/p&gt;

&lt;h3&gt;Smalltalk Labs Browser&lt;/h3&gt;

&lt;p&gt;Which is why I started writing a web based code browser for Seaside, called Smalltalk Labs Browser, or SL-Browser for short. Since I wanted to write this mainly to learn Smalltalk, I wrote it completely from scratch instead of basing it on the browser that comes with Seaside. It was very tricky to figure out how to do this, being completely new to Smalltalk and all (and my experience with JavaScript is also limited), but I learned a lot of stuff along the way by browsing through the Pharo and Seaside code, so it was well worth the effort. Sometimes it was really frustrating, there was absolutely no documentation on how to use JQuery together with Seaside for example so I had to do a lot of trial &amp;amp; error.&lt;/p&gt;

&lt;p&gt;I did manage to pull it off though and the first beta release is going to be available for download later today. There&amp;#8217;s already a huge page of information and an overview and tutorial video, available on the projects site (in the menu to the left).&lt;/p&gt;

&lt;h3&gt;What I learned about Smalltalk this far&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;&amp;#8220;It&amp;#8217;s really hard for me now to use a language that doesn&amp;#8217;t give me this kind of power&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I love the Objective-C syntax so the Smalltalk syntax is a natural fit for me since Smalltalk just removes the square brackets around methods calls and terminates a line with a dot instead of a semi-colon.&lt;/p&gt;

&lt;p&gt;I usually write code in text editors instead of IDEs. XCode is the only IDE I ever liked, NetBeans, IntelliJ Idea and Eclipse always turn me off after a while because they are so huge and slow even though they can be very, very helpful. The more I used the Squeak/Pharo tools though, the more I started to like them. The refactoring is awesome and the ability to always be able to look up an object&amp;#8217;s methods and the method&amp;#8217;s implementation is very helpful. And Squeak/Pharo always starts in under a second thanks to being image based and since I can save the image where I left off, it&amp;#8217;s just as quick as opening a text editor on some file but gives me all the power of an IDE and more.&lt;/p&gt;

&lt;p&gt;Being able to change the tools you use so easily is something very powerful. The first thing I did in Smalltalk after only about half an hour of reading the Squeak By Example book was implementing Windows 7 style window docking (move a window to the left, maximize the window so that it fills the left half of the screen, same for the right side..). I think it took me 10 minutes to do this and that included figuring out how Squeak handles windows, the inspector tool was very handy for that.&lt;/p&gt;

&lt;p&gt;Then, yesterday, I wanted to see a version by version comparison of a monticello package (diff of version 1 to version 2, 2 to 3, 3 to 4 and so on) but I wasn&amp;#8217;t able to find a tool that did that. In just five lines of Smalltalk code, I quickly wrote a script that did the job by recombining already available tools and objects.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s really hard for me now to use a language that doesn&amp;#8217;t give me this kind of power :)&lt;/p&gt;</description><link>http://smalltalklabs.tumblr.com/post/1371522610</link><guid>http://smalltalklabs.tumblr.com/post/1371522610</guid><pubDate>Fri, 22 Oct 2010 07:24:48 +0200</pubDate></item></channel></rss>
