Planet Smalltalk

November 21, 2014

Pharo Weekly - [ANN] Hubcap – a SmalltalkHub API and browser for Pharo


as I wanted to browse the SmalltalkHub contents directly from within Pharo image
I wrote a simple browser:

  Gofer it
     url: '';
     configurationOf: 'Hubcap';

Attached is a screenshot. Works on Pharo 4.0. Still not finished but maybe it is 
already useful to others as well.

One can access the tool from the world menu, implementation lives in 
"Hubcap-Tools" package. The UI shows and allows to filter users, shows
their projects and packages. Special icons display the state (loaded, 
modified, public writable, ...). One can load from the UI or open Monticello tools.

The "Hubcap-Core" package includes an API to query STHub and write
expressions like:

   HubClient new allProjectsForUserNamed: 'TorstenBergmann' 

   HubClient new hasUserNamed: 'TorstenBergmann'

So "Hubcap-Core" may be usefull to people who want to build other tools
that depend on STHub infos. Basic documentation lives on!/~TorstenBergmann/Hubcap

and as class comment on ConfigurationOfHubcap.

Beware: the tool is sill not optimized, any clicking involves a query 
to STHub (hope STHub will not crash when many people use it). API
may still undergo changes in the future.

Also teams are not yet supported as STHub still returns an MNU error 
in the REST interface:
Anyone able to fix that?

Thanks to Stephan Eggermonts who gave me the initial idea with some code
I've found in "Deprecation finder" and to Sven for the easy to use NeoJSON

Contributors can just commit, the project is public.

Torsten Bergmann - Hubcap - a SmalltalkHub API and browser for Pharo

Hubcap - a tool to browse and access SmalltalkHub contents from within the Pharo image. Read the


Torsten Bergmann - Kiviat support in Roassal

Roassal for Pharo now supports Kiviat-Diagramms. Read more here and have a look at the picture.

November 20, 2014

Torsten Bergmann - Spur 64

Spur VM for Pharo, Squeak and Newspeak is also progressing in the 64 bit area. Another milestone is described here.

The Weekly Squeak - Spur in 64!


From Eliot Miranda:

Hi All,

I’m pleased to say that today the simulator got as far as redrawing the
entire display and finishing the start-up sequence for a bootstrapped
64-bit Spur image. That means it correctly executed over 26 million
bytecodes. So at least a 64-bit Spur Stack VM is not too far off.


ESUG news - [ANN] Cincom ObjectStudio 8.6 and VisualWorks 8.0

"It is our pleasure to bring you the current version of Cincom Smalltalk. Cincom continues to provide high value and low cost with a rapid return on investment at low risk, allowing you to win more business, operate efficiently and deliver as promised.

The current releases of ObjectStudio 8.6 and VisualWorks 8.0 are major releases and contain recent past improvements as well as new “millennial” changes that include revamped frameworks that were originally done before 2000, but are now being overhauled for big improvements in the products. These “millennial” changes include Text2, SourceCode Editor 2 and UISkinning (Look & Feel 2) for the Foundation tools as well as VisualWorks applications. ObjectStudio also has a “millennial” change in its next generation user interface."

More information here

Torsten Bergmann - Wireless Sensors Network simulation in Pharo

A demonstration of a sensor network overlayed over a map and animated. Read more about it here.

Torsten Bergmann - OpenStreetMap Roassal extension for Pharo

Hernán Morales Durand - Smalltalk Survey Report


The content of this post is a survey report of a Smalltalk questionnaire. The purpose of this report is to determine the opinion of developers about Smalltalk related topics. A limit of 10 questions was imposed to the survey because of the SurveyMonkey Free Account limitations.

The survey was anonymous and contained partially structured questions with open-ended questions where participants could add thoughts or missing options. The survey was conducted from 11/10/2014 to 30/10/2014. Only the first week of the survey non-smalltalk forums were privileged. The information below summarize statistics:

Survey Statistics

(Click the following figures to open the whole image)

Question 1 highlights

  • Smalltalk was not listed as an option in the valid responses.
  • This question was mostly directed to non-smalltalkers.

Question 2 highlights

  • Goal of the question was to determine a general attitude towards the technology.
  • There is a good reception of Smalltalk, although respondents where scarce (22).
  • This question was mostly directed to non-smalltalkers.

Question 3 highlights

  • The idea was the same as Question 2, but focused towards a professional level of choice.
  • This question was directed to both smalltalkers and non-smalltalkers.

Question 4 highlights

  • The question tried to determine the Smalltalk platforms most used.
  • This question was mainly directed to smalltalkers.
  • Unsurprisingly, Pharo, VisualAge and VisualWorks seem to be the most deployable environments.
  • More recent or commercial projects like S8, Smalltalk MT or LSW are almost unknown.
  • The respondents also noted Amber as ocasionally used or prototyped/deployed a product.

Question 5 highlights

  • This question is similar to Question 4, but focused on the current use.
  • Products like VisualSmalltalk and Smalltalk/X, both considered (technically) excellent Smalltalk flavors, keep almost unused.

Question 6 highlights

  • This question addressed four technology aspects: Usability, Speed, Community Health and Overall.
  • There is a notable unsatisfaction at the Community level for most Smalltalk communities.
  • The old fallacy of Smalltalk being slow seems to be almost refuted by a general satisfaction in execution speed.
  • Maybe unexpectedly, the usability award was for VisualSmalltalk.

Question 7 highlights

  • All respondents answered this question.
  • Besides the expected noise towards libraries for common application scenarios, there is a considerable interest in Data Science (Visualization, Mining, etc).
  • Some respondents noted missing options like X-language invocation: SOAP, CORBA, MQ, REST and Good modern library support - easy call outs to native code or library wrappers.


Screengrab is a Firefox add-on which saves complete pages as images. And if you ever create a SurveyMonkey and don't want to pay to download results, is better to bookmark Screengrab.

Craig Latta - debugging remote exceptions works

a debugger for a remote unhandled exception

a debugger for a remote unhandled exception

I have debugging working for remote unhandled exceptions. My motivating use case was debugging messages not understood by the Context console’s embedded web server. The console is a headless app. In development, I run it with a remote-messaging connection to a headful system. Now, when there is an unhandled exception (like a message not understood), the exception requests that the headful system open a debugger (as its default action).

Before opening the debugger, the headful system replaces the sender of the first relevant context on the headless system with the last relevant context on the headful system, hiding all the remote-messaging-related contexts in between. The picture above shows an example of this. On the headful system, I sent “zork” to an object on the headless system. The debugger shows a continuous context stack which spans the two systems. This all works with little special handling in the debugger because of the complete transparency of remote messaging. It doesn’t matter that the contexts and methods that the debugger is manipulating happen to be remote.

November 18, 2014

Torsten Bergmann - Cincom ObjectStudio 8.6 and Cincom VisualWorks 8.0

Torsten Bergmann - SciSmalltalk v0.16

ESUG news - [ANN] SciSmalltalk v0.16

we are to happy to announce SciSmalltalk v0.16

SciSmalltalk is a Smalltalk project, similar to existing scientific libraries like NumPy, SciPy for Python or SciRuby for Ruby. SciSmalltalk already provide the following basic functionalities:

  • complex and quaternions extensions,
  • random number generators,
  • fuzzy algorithms,
  • Didier Besset's numerical methods,
  • Ordinary Differential Equation (ODE) Solver.

Version 0.16 includes updates from Werner Kassens to several packages, the work Nicolas Cellier about arbitrary precision floats.

SciSmalltalk project web page is here. All the code is available under the MIT licence. We have more than 563 green unit tests and we run a CI job here

This version should work on Pharo 3.0/4.0 and also Squeak 4.5 (to be confirmed).

We are looking for more code contributions and also tests, documentation ! Join the mailing-list.

Cincom Smalltalk - Cincom ObjectStudio 8.6 and Cincom VisualWorks 8.0 Are Here!

It is our pleasure to bring you the current version of Cincom Smalltalk. Cincom continues to provide high value and low cost with a rapid return on investment at low risk, allowing you to win more business, operate efficiently and deliver as promised.

Cincom Smalltalk - New Product Information Readily Available on the Cincom Smalltalk™ Website

The Cincom Smalltalk product line, which includes Cincom® ObjectStudio® and Cincom® VisualWorks®, is constantly being updated and improved upon so that the products stay competitive and technologically advanced to attract and bring in new accounts, and to help our clients achieve their goals and simplify the complexity of their businesses.

Torsten Bergmann - Smalltalk-on-Rails

The goal of this project is to provide an object-oriented scripting environment for web applications running on Ruby-on-Rails.

Torsten Bergmann - Treap - a new collection

Benoit St-Jean - Smalltalk en vrac…

Quelques-une des nouvelles des dernières semaines dans notre merveilleux monde!  Un peu de tout ce que j’ai noté ici et là mais que j’ai omis de vous rapporter par manque de temps!  Alors, voici les nouvelles en vrac!







Smalltalk on Rails

Amber Smalltalk


Classé dans:Smalltalk Tagged: 8.0, 8.6.1, Amber, Amber Smalltalk, AmberSmalltalk, épidémiologie, Cincom, courbes de Bézier, EToys, gemstone, Gemstone/S, Instantiations, Journées Pharo, Kendrick, lambda, lambda-calcul, Minecraft, Nim, Pharo Days, Programmable Minecraft, Rails, rapports, Roassal, Ruby, Shellshock Honeypot, Smalltalk Digest, Smalltalk on Rails, Squeak, Treap, VA Smalltalk, VisualWorks

November 17, 2014

Cincom Smalltalk - Focusing on the User — Introducing a Revamped User Portal

To the Cincom Smalltalk Team, there’s nothing more important than serving the needs of its users. Complete customer satisfaction is something that we continuously strive for.

Cincom Smalltalk - Smalltalk Digest: November Edition

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

Torsten Bergmann - Arbitrary Precision Float in Pharo

November 16, 2014

Smalltalk Jobs - Smalltalk Jobs – 11/15/14

  • Minneapolis, MNSenior Smalltalk Developer through Precision System Design
    • Required Skills:
      • Ability to work independently and multi task effectively.
      • 10 + years of application development and implementation experience using Smalltalk (Object Studio Version 8.2 or greater).
      • Advanced Client Server knowledge.
      • Ability to solve highly complex problems.
      • Ability to perform multiple tasks and meet deadlines.
      • Excellent verbal and written communication skills for diverse audiences.
      • Attention to detail and follow-through.
      • Ability to collaborate effectively with others.
      • Advanced knowledge about Microsoft SQL data bases.
      • Knowledgeable about IBM MQ Series.

Updates on 11/17/14: Corrected the date in the title of the posting. (sorry about that).

Good luck with your job hunting,
James T. Savidge

View James T. Savidge's profile on LinkedIn

This blog’s RSS Feed

Filed under: Employment Tagged: jobs, Smalltalk, Smalltalk jobs

November 14, 2014

David Buck (Simberon) - Pharo Days 2015

Torsten Bergmann has announced Pharo Days 2015 to be held January 29 and 30, 2015 in Lille France. Here's part of his announcement:

Start the year in the right spirit by joining the Pharo community for the Pharo Days 2015 on Thursday January 29 and Friday January 30 at INRIA, Lille, France. Meet your online colleagues, programmers and hackers in real life and experience how much you can pick up in just two days. Learn about key technologies, talk to core developers and other users, pair program and contribute to Pharo. Have fun and enjoy yourself.
It sounds like fun.  Check it out.

David Buck (Simberon) - Essence# in InfoQ

There's a great interview in InfoQ with Alan Lovejoy - the author of Essence#.  Essence# is Alan's ANSI-compliant Smalltalk running on .NET.  Check it out.

Thanks to Peter William Lount for the pointer.

Joachim Tuchel - VA Smalltalk 8.6.1 – first impressions

Instantiations released VA Smalltalk 8.6.1 yesterday. We haven’t ported our project code to the new version yet, but given the fact that this is “just” an update to 8.6, I don’t expect to experience a lot of problems here. The Migration Guide, an often undervalued but very helpful resource, doesn’t really mention a lot that […]

Cincom Smalltalk - A New Collection!

We have a new type of collection that’s available in both of our Cincom Smalltalk products— Cincom® ObjectStudio and Cincom® VisualWorks®.

Arden Thomas - A new Collection!

We have a new type of collection, available in both our Cincom Smalltalk products, ObjectStudio and VisualWorks.

The name of it is …. (drum-roll please)  “Treap” …..   What?!

I know, it doesn’t exactly roll off the tongue.

So what exactly is a “Treap”?

The name Treap is a contraction of the names “Tree” and “Heap”, and is a type of balanced binary tree.   It is not new as a computer science data structure, but as a new addition to our products, you may want to know where and how it can be used effectively.

What is it, and how does it compare with more traditional Smalltalk collections?

Treap is more of a hybrid collection, which makes it very versatile and useful, in the right context.

It has fast keyed lookup (like a Dictionary).

It can use ordered access (like an Array or an OrderedCollection) with enumeration, but the objects are ordered or sorted based on the key.

It also allows bidirectional access to the ordered list.

Treap is structured as a balanced binary tree of nodes.  Each node holds the key and value objects and are also linked as a bi-directional linked list.

In what circumstances might a Treap be useful?

If you are using a Dictionary for lookup and also enumerate through the sorted keys of the dictionary, a Treap might be a better solution, since it already maintains a sorted order based on the keys.

Alternatively if you are using a SortedCollection, but need faster random look-up speed, a Treap might just be the best choice.

Another use is if you have to find an object (quickly), and then access the objects just before or after it. In this scenario you would look-up the node, and then get the prior or following node with #previous or #next respectively, to navigate the linked list forward and backwards.

Are there any drawbacks?

Just like using any Collection or data-structure, there are advantages and trade-offs to using each one.  For Treap, the main drawback is probably the space and overhead to have and maintain the nodes and their links.   My suggestion would be to only consider using it only where you are getting the benefit of the order and look-up speed, and possibly navigation.

Finding Treap.  Treap came into the products as a means for supporting the performance of Text2. You can use it as Text2.Treap for access.  In the future Treap may move into the Collection hierarchy where you would expect to find it.

Performance:  In some simple bench-marking, I find look-up speed using Treap comparable to a dictionary.  If you then have to enumerate through the elements based on the sorted dictionary keys, using a Treap is significantly faster, since it essentially skips the sort by already maintaining that order.

In the meantime, I have made some additions and tweaks for Treap that you may find of use and interest. The methods add in some of the enumerators for a collection class (#do: #select: #collect: #keysDo: ) that were either missing, or could perform better.   See the methods (for the instance side of Treap) below.

I look forward to any feedback, particularly if you have a good use for Treap in your applications!


Arden Thomas

Cincom Smalltalk Product Manager

do: aBlock

“Evaluate aBlock for each of the receiver’s values.”

| node |

node := self minimumNode.

[node isNil] whileFalse:[

aBlock value: node value.

node := node next].

keysDo: aBlock

“Evaluate aBlock for each of the receiver’s keys.”

| node |

node := self minimumNode.

[node isNil] whileFalse:[

aBlock value: node key.

node next].

select: aBlock

“Evaluate aBlock with each of the receiver’s elements as the argument.

Collect into a new collection like the receiver, only those elements for which

aBlock evaluates to true.  Answer the new collection.”

| newCollection |

newCollection := self species new.

self keysAndValuesDo: [:key :value | (aBlock value: value) ifTrue: [newCollection at:key put: value]].


collect: aBlock

“Evaluate aBlock with each of the values of the receiver as the

argument.  Collect the resulting values into a collection that is like

the receiver.  Answer the new collection.”

| newCollection |

newCollection := self species new.

self keysAndValuesDo: [:key :value | newCollection at:key put: (aBlock value: value) ].


ESUG news - [ANN] VisualAge Smalltalk 8.6.1

VisualAge Smalltalk 8.6.1 has been released:

Download here

Torsten Bergmann - Lambda Calculus in Pharo

another nice article from Sven. Read more.

Torsten Bergmann - InfoQ article on Essense# Smalltalk