Planet Smalltalk

October 30, 2014

Pharo Weekly - Pharo Days 2015 Pre-Announce

We are excited to announce the details so far for the Pharo Days 2015, to be held on Thursday January 29 and Friday January 30 at INRIA, Lille, France.

We’ll update this page moving forward. You can ask questions on the any of the Pharo mailing lists or you can email the Pharo Board. Official registration is not yet open, but there is a Doodle that should give an indication of who is coming and that can help us plan resources.

The Pharo Board

Torsten Bergmann - Swiki in Squeak 4.5

Swiki was and still is one of the best (and most easy to use/maintain) implementations of a wiki. It is written in Squeak Smalltalk and I usually use the Winterlong release back from 2005. With it a Swiki server is easy to setup (just unzip and run) and as it stores the files in XML they are easy to backup, repair or query.

Now Chris got Swiki working in a recent Squeak 4.5. image also. Nice!

Pharo News - Pharo Conf 2015

<p>We are excited to announce the details so far for the Pharo Days 2015, to be held on Thursday January 29 and Friday January 30 at INRIA, Lille, France.</p> <p><a href=""></a></p> <p>We’ll update this page moving forward. You can ask questions on the any of the Pharo mailing lists or you can email the Pharo Board.</p> <p>Official registration is not yet open, but there is a <a href="">Doodle</a> that should give an indication of who is coming and that can help us plan resources: <a href=""></a>  </p>

Pharo News - Pharo Conf 2015

<p>We are excited to announce the details so far for the Pharo Days 2015, to be held on Thursday January 29 and Friday January 30 at INRIA, Lille, France.</p> <p><a href=""></a></p> <p>We’ll update this page moving forward. You can ask questions on the any of the Pharo mailing lists or you can email the Pharo Board.</p> <p>Official registration is not yet open, but there is a <a href="">Doodle</a> that should give an indication of who is coming and that can help us plan resources: <a href=""></a>  </p>

Torsten Bergmann - Smalltalks 2014 conference schedule

Smalltalks 2014's preliminary conference schedule is now available, check it here.

Torsten Bergmann - Smalltalk cheat sheet

Need a litte Smalltalk cheat sheet - then look here.

Torsten Bergmann - PharoDays 2015

Read all the details about the upcoming Pharo conference and check the doodle.

Torsten Bergmann - Chat on AmberSmalltalk

October 29, 2014

Torsten Bergmann - PharoDays pre check participation

There is a conference planned in Lille the 29 and 30 of January called "PharoDays". Read here to find the Doodle.

Torsten Bergmann - Some postings on the Iliad framework

Iliad is a web framework for Pharo, some posts on it can be found here:

October 28, 2014

Andres Valloud - Smalltalks 2014 conference schedule

Hello from FAST.  Smalltalks 2014's schedule is now available at our website.  We are very pleased with this year's strong program.  See you at the conference!

Hernán Morales Durand - The Smalltalk Family Tree

Introduction : GraphViz in Pharo

GraphViz is a popular free graph visualization library currently used in many applications. In GraphViz you describe a graph in text format and the software draws a pretty picture of the graph.

A GraphViz package for Smalltalk was originally available in Squeak, but it was outdated in the current Pharo releases (3.0). The package facilitates the creation of graph descriptions in the DOT language of the Graphviz graphing tool. You write the graph using the beautiful Smalltalk syntax, and the GraphViz class generates the output in all available formats (dot,svg,png,jpg,gd,etc).

Now I have uploaded a new Metacello Configuration for GraphViz in Pharo 3.0, available in the Configuration Browser. To use it, GraphViz should be installed and present in the PATH environment variable. More useful information can be found in the original repository (Connectors compatibility is still missing until we get a Connectors version which loads in Pharo 3 or 4). The Configuration loads both stable versions of CommandShell and XML-Parser packages.

A Smalltalk Family Tree

I have collected the Smalltalk implementations I know and grouped them in a graph by what could be considered their "family". Some of them are not supported anymore, others are difficult to find or get executed again. Exotic or very old Smalltalks like Bricktalk, DuoTalk, Marvin, etc. were not included because there are too few references on the web. Now by looking at it in perspective, one could understand why Smalltalk is considered the most evolved and state-of-the-art programming environment. Anyway, ladies and gentlemen, I present you: The Smalltalk Family Tree :

Licencia Creative Commons
Smalltalk Family Tree por Hernán Morales Durand se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivar 4.0 Internacional.
Basada en una obra en

October 27, 2014

Craig Latta - the IDE app README

Here’s the current README for the IDE app. And oh yes, I’m considering renaming the project from “Spoon” to “Context”.

Context README

October 26, 2014

Torsten Bergmann - Substructure Random Fractal

Torsten Bergmann - Agile visulization

Torsten Bergmann - Pharo success stories

More and more Pharo success stories appear. Like this about the usage in a bank.

Torsten Bergmann - APL concepts in Pharo

Want to use APL (Array processing language) like concepts in Pharo. Then have a look here.

October 25, 2014

Marten Feldtmann - PUM 1.9….

Some days of work and now the version 2.0 is coming up at the horizon.

* The classes are now divided between API classes and domain classes. The domain classes are the classes holding the values within the Gemstone database. The API classes are the ones you are allowed to use in the REST specification. This idea has been introduced to make the external viewable API construct more stable from the rest of the application development. Copying data methods from/to domain/API classes are generated.

* REST APIs can now be modelled in the modelling tool. They can be arranged in APIs and in groups – allowing to create Swagger specification.

More work has to be done to make the GUI better, add some additional helper commands and to create source code which is really a create-and-run source code.

Filed under: Smalltalk Tagged: Gemstone, PUM, REST

October 24, 2014

Nicolas Petton - Watching file changes with buffer-watcher.el

October 24, 2014

buffer-watcher.el makes it easy to evaluate shell commands each time a buffer is saved in Emacs.

You can specify a mode and base path for which a specific script should be evaluated, and each time you save a buffer that matches the criteria, the hook will be run.

Here’s an example that runs lessc each time a less file is saved in the project proj:

(require 'buffer-watcher)
    (add-to-list 'buffer-watcher-commands '("Lessc hook" less-css-mode "~/projects/proj/" "lessc % > style.css"))

The command will be run from within the same folder as the save file, and % is expanded to the buffer’s file name.

If you’re into customize, you can M-x customize-group RET buffer-watcher to add your commands.


You can grab buffer-watcher from my emacs settings on GitHub.


Pharo Weekly - Continuous improvement at work…

14290 Menu translation should be the responsibility of menus (part 1)

14297 Kernel fixes for Spur

14302 Replace Announcer>>#on:send:to:s senders in NewValueHolder

14291 browse open a class side browser

14289 MNU in Finder>>computeWithMethodFinder:

14298 pre for 14297 Kernel fixes for Spur

14068 Should add spyFor: to systemProfiler

14296 Replace Announcer>>#on:send:to:s senders in NautilusCommon

14286 add a test for #sourceNode on Contexts for optimized blocks

14283 Slice for Spur integration

14284 fix #sourceNode for Blocks

14282 add SourceNode tab for IRInstruction and SymbolicBytecode

14276 Add UDPSocketEchoTest test/example

14222 Tests around KeyChain

14281 Replace Announcer>>#on:send:to:s senders in Nautilus

14241 add a inspector view for IRMethods

14254 AST method replaceWith: does not change source interval

14235 IRInterpreter should be replaced by IRVisitor

14272 #_foo: isBinary —> true

14221 Tests around Graphics

14271 RBCodeCruftLeftInMethodsRule>>initialize and RBAllAnyNoneSatisfyRule>>name have spelling errors

14269 Komitter: Improve layout for long repo names

14242 Installing a method is slow

14257 Replace Announcer>>#on:send:to:s senders in NativeBoost-Core

14240 evaluating nil and: [true] gives an infinite loop

14264 World Menu > Help > Pharo Zen DNU

14263 fix “search all source”

14262 small speedup of CompiledMethod>>#endPC

14270 Workaround: speed up code critique by not checking send messages for now

14228 critic rules running on all methods of a class extended by a package

14246 CompiledMethod>>hash can produce clashes

14257 Replace Announcer>>#on:send:to:s senders in NativeBoost-Core

14253 MC dependency warning should name which package is failing to load

14251 Add a scope browser: shows tree of scopes, corresponding source

14243 tiny refactoring in #compile:classified:withStamp:notifying:logSource:

14231 add “inspect method” to method menu in browser and everywhere

14218 Opal should be able to compile methods for SqueakV3PlusClosure and Spur

14177 Add properties to classes

14215 Fix for (Behavior new) compile:

14237 SymbolicBytecodeBuilder: rename #print to #addBytecode:

14239 add inspector view for byte code with source highlighting

13535 Class code wrongly styled in critic browser

14236 add #sourceInterval and #sourceNode to SymbolicBytecode

14238 Replace Announcer>>#on:send:to:s senders in NECompletion

14218 Opal should be able to compile methods for SqueakV3PlusClosure and Spur

14232 remove ByteCodeMethodConverter

14225 implement #symbolic by printing the SymbolicBytecode….

13318 no (strong) visual feedback for bytecode view while looking at a class definition

14217 GTTools version 1.0.7

14229 Replace Announcer>>#on:send:to:s senders in MonticelloGUI

14226 smallLintCritics optimisation is slow

14227 Replace Announcer>>#on:send:to:s senders in Monticello-Tests

13457 The Implementors of browser adds all methods added to its list

14204 OCStoreIntoReadOnlyVariableError: VersionnerProjectPanel>>#initializeGroupsWidget:

14224 add #symbolicBytecodes to CompiledMethod and clean up InstructionPrinter a little

14208 Move ByteArray close to WordArray, delete package Collection-Arrayed

14213 Replace Announcer>>#on:send:to:s senders in Monticello

14098 allClassesAndTraits significantly different from allClassesAndTraitsDo:

10288 Add a lint rule to check that class initialize method does not calls super initialize

14210 Replace Announcer>>#on:send:to:s senders in Komitter

14197 Little Morphic Package Reorganization

14198 Time>>print24 prints nanos, though it claims not to

14211 Replace Announcer>>#on:send:to:s senders in Manifest-CriticBrowser

14096 Rewrite lint rules to check classes and methods

6512 Traits should not use compiler

14203 OCStoreIntoReadOnlyVariableError: RecentMessageList>>#lastClasses

October 21, 2014

Cincom Smalltalk - Smalltalk Digest: October Edition

The October edition of The Cincom Smalltalk Digest is available now.

Cincom Smalltalk - Painting with Roassal2

We’re happy to announce that Alexandre Bergel of ObjectProfile has put out a new video showing how easy it is to analyze your Smalltalk code with Roassal.

Hernán Morales Durand - 10 simple survey questions about Smalltalk


So I did a short on-line Smalltalk survey to find out where is the technology today, and what could be expected in the future, by asking people about their experiences and expectations with Smalltalk. Any programmer could participate and answer. The survey was designed to a broad developer audience.
Why is important you take this survey? Because you could help to a small(talk) community to uncover answers, to gather feedback and meaningful opinions, and to evolve by telling what you need most. The survey is open until 31/10/2014 at 3:15 a.m.

The survey is not biased towards any particular Smalltalk flavor (I am not affiliated with any particular Smalltalk provider). The following Smalltalk platforms have been included (any other not listed flavor can be added):


I have collected a list of well-known forums containig "General Computer Programming" sub-forums, as most forums do not contain a Smalltalk sub-forum. I have rejected all programming sub-forums specific to a particular language, for example: JavaForum, PHPDevForum, "General C++ Forum", etc. Because:

  • Posts with surveys related to other programming language are not commonly accepted
  • They are marked as off-topic or closed.
  • It could be seen as promotion which is not the intent of this survey.


The survey is still running! You can come back after 31/10/2014 and check responses.

Torsten Bergmann - Amber 0.13 is released

October 20, 2014

Cincom Smalltalk - What on Earth is “Shellshock Honeypot”?

How to test your system for Shellshock vulnerability, how a simple attack against a web server can exploit it and how to build a quick and dirty honeypot using the Cincom® VisualWorks® 8.0 SiouX HTTP server.

Pharo Weekly - Building your own power tools: an Example

Using ZnLogEvents and GT Tools to look at HTTP traffic behind Monticello.

I love it when a plan comes together. Many small usability changes were added to GT Tools since they were included in Pharo 4. And a lot of small custom inspector presentations were added.  (be sure to select the 720p version)

This short screencast shows how to use ZnLogEvents and GT Tools in Pharo 4 to look at the HTTP traffic behing Monticello (more specifically, an MCSmalltalkhubRepository). This demonstrates how simple custom inspectors are combined to form a powerful tool - and how easy it is to learn about what is going on inside Pharo or inside your complex business app


October 19, 2014

Julian Fitzell - Declaring Seaside sub-components in the #children method

People often ask why they need to define the #children method on Seaside components. I wrote a long email today to the mailing list explaining how #children is currently used and why it's important and I thought it might be useful to post it here as well so it's easier to find and link to. 

When you render a child component you are implicitly defining a tree of components. #children simply allows the framework to walk the component tree explicitly. The reasons for needing to walk the tree explicitly have changed over time, which is part of the reason for the confusion.

At one point, for example, we used to walk the tree to give each component a chance to handle callbacks, so if your component wasn't in #children it would never even have seen its callbacks. That is no longer the case (which is actually a bit of a shame because decorations can no longer intercept them, but I digress).

If you look in the image for users of WAVisiblePresenterGuide and WAAllPresenterGuide, you will see the current cases where we need to traverse the tree:
  1. Calling #updateStates: for snapshotting/backtracking
  2. Calling #initialRequest: when a new session is started
  3. Executing tasks (they need to execute outside of the render phase to make sure the render phase does not have side effects)
  4. Calling #updateRoot:
  5. Calling #updateUrl:
  6. Displaying Halos for each component in development mode
  7. Generating the navigation path in WATree
  8. Detecting which components are visible/active to support delegation (#call:/#show:)
Keep in mind that basically all these things happen before rendering, so if you create new components inside #renderContentOn: they'll miss out: you should try to create your sub-components either when your component is initialized or during a callback. If your child component doesn't rely on any of the above (and doesn't use any child components itself that rely on any of these things) then technically everything will work fine without adding it to #children. But keep in mind that:
  • the framework may change in the future to traverse the tree for other reasons;
  • add-ons may depend on being able to walk the tree for other reasons; and
  • it's not great encapsulation to assume that, in the future, components you are rendering will never need any of the above nor start using sub-components that do. 
Finally, components are stateful by definition, so if you don't feel the need to persist your component between render phases, it probably shouldn't be a component. For stateless rendering you're better to subclass WAPainter directly or even WABrush: both of these are intended to be used and then thrown away and they will make it clearer in your mind whether or not you're using on things that depend on #children.

Pharo Weekly - Another week of effort in Pharo

13606 testSlotScopeParallelism is failing

14085 Image blocked when halt placed on setUp method and running a whole TestCase from Nautilus

14054 Cant load font from a path with accented characters

11021 MouseEvent>>blueButtonChanged

14075 Halt once in Rectangle>>setOrigin:corner:

14028 PluggableThreePhaseButtonMorph should be packaged with Morphic-Widgets-Basic

13668 remove the last StringHolder references

13635 Package Spec-Extensions just contains one accessor –> can be moved to the class

5625 TextDiffBuilder in System-FilePackage ?

14076 Move ProtocolRemovalException to Kernel-Exceptions

14048 two tests failing in EmbeddedFreeTypeFontInstallerTest

14079 Inconsistent information in debugger (pharo 4)

14061 windows systemfonts : wrong path in guessWindowsFontFolderPath

13131 Spec weirdness > MNU ToolDockingBarMorph>>popupEvent:in: on right click on button

14072 Failing test: BlockClosureTest>>#testTallyInstructions

14069 Finish cleaning RGFactory

14077 Move PseudoClassOrganization close to PseudoClass

13738 MNU: CompiledMethod>>hasRun

13705 Shared pool incorrectly defined as global

14071 OSWindow integration part1

13599 ClassOrganizer-Core: move to Kernel-Protocol

12111 (Date readFrom: 4.2.2013 readStream pattern: d.m.yy) ==>> 4 February 2020

13193 Regular expression field should not open debugger when making a syntax error

3841 FinderUI gets out of sync when more than one Finder open

10307 Monticello FTP repo should not keep username and should behave like MC HTTP

14067 More cleaning of Ring Factory

14034 add to Pharo3: substrings:

12828 Unfullfilled subclass responsibility in JPEGReadWriter

13879 Move Tests out of NECompletion

14065 Spec WorldModel should not change theme background

14057 fix the description and unique name RBFutureDeprecationWarningRule.

14062 Remove SmallInteger class>>#ccgCanConvertFrom:

14056 Missing DejaVu copyright notices

11996 Wrong exception handler problem (parrt 5/5)

11996 Wrong exception handler problem (4/5)

11996 Wrong exception handler problem (Part3)

11996 Wrong exception handler problem

14048 two tests failing in EmbeddedFreeTypeFontInstallerTest

11996 Wrong exception handler problem (Part1/5)

14055 Fix some failing tests related to Code Critics (due to accidental #halt)

13606 testSlotScopeParallelism is failing

14019 add critics rule for #withFirstCharacterDownshifted-> #uncapitalized

14049 add String>>substrings: and lint rule for #subStrings:

14035 openWorldWithSpec not taking over the world

14045 Categorize classes in System-Announcements

10572 Locking image with test icons (Glorp example)

13843 MOPTraitTes>>#testOrigin failing

14046 Deprecate SystemAnnouncement(class)>>fromInternal:

14044 Selfies shot with Pharo should give visual feedback

14008 Tests from Nautilus-Tests need to be moved to a nautilus test package

13949 stackAlignment on windows should be 16

14043 TabContainerMorph example gives DNU #instance

14037 #recompile does not recompile the classTrait

14038 #testSendersOfAt failing when running the tests in the image

14039 #testCurrent always fails when running all tests…

14041 Continue cleaning Ring Factory

14026 Cleanup System-Localization package and add tests

12873 IconicButton should absord property as instance variable

14032 Fix test cases and access singletons using slots

14030 MorphicTabManagerAdapter>>doesNotUnderstand: #tabSelected:

14018 backport #uncapitalized to Pharo3

14025 DateModel Broken in 3.0

14027 ensureTransparentColor is unused and looks dead

14029 Smart Suggestion Implementors does not work in Nautilus anymore

14023 Nautlilus: Jump to test class should not only work on instance side

14012 RGMetaclassDefinition and RGMetatraitDefinition DNU #category

14009 RBAddClassRefactoringTest should be moved close to the other refactoring tests

14007 DebuggerModelTest should be moved out of debugger package

14017 No senders of analyzeItemLabels

14022 Infinite loop in simple subclasses of SequenceableCollection

14020 Add test cases which check font installation process and registration on singletons

14006 3 tests fail for AsmJit in the Pharo4

13214 rename instance variable does not work on class side

14011 Many leftover methods after method announcement refactoring

October 17, 2014

Pharo Weekly - Phratch 40 is out

Phratch 4.0 is out of the box !
Phratch 4.0 is cleaner, faster and more stable than phratch 3.0.
After the version 3.0 that was a release for usability and stability, phratch 4.0 is released to prepare the future.
The new features are:
- phratch is more modular, eg having a kernel and lots of addons.
- cleaning a lot the source code
- customizable environment
- each block can be made visible or invisible
- each category can be made visible or invisible
- it is possible to add translation for addons with the pragma <phratchTranslation: ‘fr’> in the class PhratchTranslator. This make the translation more modular.
- first integration of phratch with the pharo environment. Using the pragma at the class side of any class in Pharo make the class visible and usable in phratch.
- There is a lot of things to do with phratch, you are welcome to contribute ! The documentation for new features will arrive soon.
See you on

Smalltalk Jobs - Smalltalk Jobs – 10/17/2014

Two ads for the same job for 5+ years of java/agile/etc.  Needs English.  Located somewhere in Germany but the location is unspecified.



Filed under: Employment