Planet Smalltalk

December 16, 2014

Benoit St-Jean - ESUG 2014

Tous les vidéos des conférences de ESUG 2014 sont maintenant disponibles ici.

Classé dans:Smalltalk Tagged: conférences, ESUG 2014, European Smalltalk User Group, présentations, vidéos

ESUG news - Smalltalks 2014 Videos

The videos for Smalltalks 2014 are now online here

Torsten Bergmann - Smalltalk2014 videos

Craig Latta - Smalltalk Reflections episode three is up

Benoit St-Jean - Quel Smalltalk?

December 14, 2014

Ricardo Moran - Robotics as a way of getting students closer to mathematical thinking

Today I’d like to share with you a fragment of “A Mathematician’s Lament”, by Paul Lockhart.

So how do we teach our students to do mathematics? By choosing engaging and natural problems suitable to their tastes, personalities, and level of experience. By giving them time to make discoveries and formulate conjectures. By helping them to refine their arguments and creating an atmosphere of healthy and vibrant mathematical criticism. By being flexible and open to sudden changes in direction to which their curiosity may lead. In short, by having an honest intellectual relationship with our students and our subject.

I think this post’s title and the cited fragment speak by themselves.

You can read the full piece here.

Hoy me gustaría compartir con ustedes un fragmento de “El lamento de un matemático”, escrito por Paul Lockhart.

De modo que ¿cómo deberíamos enseñar matemáticas a nuestros estudiantes? Escogiendo problemas naturales e interesantes, que vayan con sus gustos, personalidades y nivel de experiencia. Dándoles tiempo para hacer descubrimientos y formular conjeturas. Ayudándoles a refinar sus argumentos y creando una atmósfera de crítica matemática sana y saludable. Siendo flexibles y abiertos a cambios súbitos en la dirección a la que apunte su curiosidad. En resumen, manteniendo una relación intelectual honesta con nuestros estudiantes y las matemáticas.

Creo que el título de este post, en conjunto con el fragmento citado, hablan por sí solos.

Pueden leer la pieza entera acá


Andres Valloud - Smalltalks 2014 videos now available

All Smalltalks 2014 videos are now available here.  Enjoy, and happy holidays!

Mariano Martinez Peck - What is GemStone?

What is GemStone

When you ask a Smalltalker what Smalltalk is, you will find many different answers: a language, an environment, an object system, a platform or simply a combination of all of those or more. With GemStone, I have a similar feeling. I think different people will answer differently. To me, GemStone is an object system with two big concepts included: an object database and a language. Others will say that it’s a transactional or persistent Smalltalk, an object database, etc.

Before continuing, let me clarify a few things for this post and all the posts I will write after this one:
– I will not be discussing here relational databases vs object databases vs NoSQL. That’s a whole other discussion that I am not willing to write about right now.
– These posts are aimed mostly for Smalltalkers and GemStone newbies, but not for GemStone experts.

Ok…that being clarify…let’s start. When I refer to an object database, I mean exactly that: an Object Database Management System. Rather than dealing with tables as in relational databases, we can directly persist and query objects. Most of the OODB I have seen in other languages, are kind of an external piece of software that is only a database (just as relational databases are). For the moment, just imagine any of the relational databases you know but storing objects instead. In this case, you still need a language (and probably a VM running that language) for your application logic and you still must communicate to the database to perform the storage and retrieval of objects. I know… that should already be easier than dealing with relational databases but I personally think it could be better.

GemStone goes a step forward. What if the “database” would also include the language to run your application? Sounds cool, doesn’t it? So, this is the second concept GemStone has: it’s also a language implementation in itself. And which language? Smalltalk, of course!!! This means GemStone IS a Smalltalk dialect, just as any other dialect like Pharo, Visual Works, VisualAge, etc. So… GemStone is a Smalltalk dialect but also acts as an object database. You might be thinking “any Smalltalk can act as an object database because we have image persistency”. Fair enough. However, image persistency lacks lots of needed features to be a really scalable database (we will talk about this in other posts).

GemStone analogy to an image-based Smalltalk

As I said, the aim of these posts is to explain GemStone in a way that most readers can get it. And sometimes a good way to do so is by making a comparison to what we already know. So… let’s take an example with Pharo. Say we have one application running in one image. Soon, one image can start to be too little power and we need to scale. Smalltalk is cool and allow us to run the very same image with N number of VMs. Ok… so now we have 10 VMs running our app. Imagine this app needs persistency (as most apps do). If the database is outside Pharo (say a relational DB, NoSQL, etc), then we have no problem since the access to the database from multiple images will be correctly synchronized. But would you be allowed to use image persistency in this scenario? Of course not, because it’s not synchronized among all the VMs. But hell… that would be nice, wouldn’t it?

GemStone offers exactly what I would like: multiple (hundreds) Smalltalk VMs running and sharing the same “image” (repository/database of objects) in a synchronized fashion.

Note, however, that GemStone does NOT have a UI (it is headless) nor development tools (no IDE). So you still need another Smalltalk to develop your app code. And this is why the Pharo / GemStone combination is so great. But I will talk about this in another post.

To sum up

So you are the happiest programmer on the block. Your language has closures (have you ever try to imagine not using closures again???), an amazingly simple syntax, a small learning curve, decades of maturity, serious open-source and free dialects available, etc. Now I tell you can literally run hundreds of Smalltalk VMs all sharing the same repository of objects. But not only that… also imagine not having to write a simple mapping to SQL. Imagine that saving an object in the database is just adding an object to a collection (“clientList add: aClient”) and a query as a normal select (“clientList select: [:each | each age = 42 ]”). BTW… Did someone notice that, apart from selecting via an instance variable (‘age’ in this example), I can also send other domain specific messages? Say…. “clientList select: [:each | each associatedBankPollicy = BankPolicy strict ]”.

Ok, you might still not be convinced. What if I also tell you GemStone supports:

  • Multiple-user database support
  •  Indexes and reduce conflict Collection classes
  • Distributed env (imagine that your hundred VMs can also be running in different nodes!
  • Fault tolerance
  • Security at different levels (even at object level)
  • 64 bits VMs and multi-cpu VMs
  • Free license with generous limits

Ok…too much info for today. As you can note, I am very happy with these technologies so I will try to be objective… but I cannot promise you anything hahaha! I hope I have provoked and intrigued you enough to read on the future posts.

Stay tuned,

Tagged: GemStone, Smalltalk

December 13, 2014

Benoit St-Jean - RMapViewer

RMapViewer est un outil de chimie computationnelle permettant d’étudier l’isomérie de visualiser le comportement des réactifs. Le projet nécessite Pharo et est sur SourceForge ici.

Classé dans:Smalltalk Tagged: chimie, isomérie, Pharo, réactifs, réactions, RMapViewer, Smalltalk

Benoit St-Jean - GetOpt

Vous utilisez une foule d’arguments quand vous votre application (ou Pharo) démarre? Il existe (un autre!) package pouvant vous faciliter la tâche dans ce domaine : GetOpt.

Prenez toutefois note que ce package n’est fonctionnel que pour la version 3.0 de Pharo!

Classé dans:Smalltalk Tagged: arguments, GetOpt, ligne de commande, Pharo, Smalltalk

Benoit St-Jean - Diagrammes de Voronoï

Si votre application requiert des diagrammes de Voronoï et que, par chance, vous utilisez Pharo, ne désespérez pas!

Roassal possède maintenant un outil appelé RTVoronoyjDiagram développé par Natalia Tymchuk!

On peut trouver les 2 vidéos de sa présentation Mr. Voronoyj joins Roassal ici : première partie et deuxième partie. 2

La présentation slideshare utilisée dans les vidéos est disponible ici.

Mais au fait, qui était Gueorgui Voronoï ?



Classé dans:Smalltalk Tagged: décomposition de Voronoï, diagramme, Gueorgui Voronoï, mathématiques, Natalia Tymchuk, partition de Voronoï, Pharo, polygones de Thiessen, polygones de Voronoï, Roassal, RTVoronoyjBuilder, RTVoronoyjDiagram, Smalltalk, tesselation de Dirichlet, visualisation, Voronoï, Voronoyj

Benoit St-Jean - HoneyGinger

Si l’hydronamique vous intéresse et que vous avez besoin d’un outil pour simuler le flux de fluides avec la méthode SPH (Smoothed particle hydrodynamics), il existe HoneyGinger. C’est un outil interactif disponible sur Squeaksource ici.

Classé dans:Smalltalk Tagged: hydrodynamique, Pharo, simulation HoneyGinger, Smalltalk, Smoothed particle hydrodynamics, SPH, Squeak

Benoit St-Jean - Smalltalk et… l’art!


Un petit billet (en anglais) qui nous rappelle que bien avant Windows, Apple et tout ce que nous prenons aujourd’hui pour acquis, il y avait surtout Smalltalk et la joyeuse bande de rêveurs (fous?!?) du centre de recherche PARC de Xerox

Que ce soit de façon directe ou indirecte, les recherches qui portaient sur Smalltalk à l’époque ont eu des conséquences importantes dans nos vies actuelles.

C’est grâce à Smalltalk qu’aujourd’hui nous avons la téléprésence, la souris, le multimédia, les interfaces usager graphiques (GUI, on pense surtout aux fenêtrage de style Windows avec tout ce que ça suppose : fenêtre, onglets, menus, menus popup, raccourcis clavier, barres déroulantes, curseur de souris, les fontes, copier/coller/couper, éditeur graphique, etc), les tablettes (Dynabook), l’hypertexte, les fenêtres multiples, le concept du desktop, le concept de WYSIWYG (What You See Is What You Get), etc.

Tout le monde a entendu mille fois l’histoire de Steve Jobs qui a eu une révélation en assistant à une démo de Smalltalk chez PARC à l’époque.  On connait maintenant l’importance que ce bref moment allait avoir sur la vision de Steve Jobs et sur l’avenir de l’informatique et du multimédia!

Nous savons maintenant que Susan Fox, une artiste américaine, a elle aussi été marquée par Smalltalk à l’époque.

Classé dans:Smalltalk Tagged: Apple, art, barres déroulantes, coller, copier, couper, curseur, desktop, Dynabook, fenêtres, fontes, GUI, hypertexte, interface usager graphique, menus, multimédia, onglets, Palo Alto, PARC, Smalltalk, souris, Steve Jobs, tablettes, téléprésence, Windows, WYSIWYG, Xerox

Benoit St-Jean - VisualWorks 8.0 et ObjectStudio 8.6

Les toutes nouvelles versions de ces deux environnements de développement Smalltalk (VisualWorks et ObjectStudio) sont maintenant disponibles!  De quoi meubler vos temps libres pendant la période des Fêtes!

Classé dans:Smalltalk Tagged: Cincom, ObjectStudio, Smalltalk, VisualWorks

December 12, 2014

Pharo Weekly - HTML5 output for Roassal


We have worked very hard on a Roassal exporter for the Web.

Milton has produced the class RTHTML5Exporter, which may be simply invoked as: RTHTML5Exporter new export: aRoassalView.

Check this out:

Try moving the mouse above the circle or dots in the curve.

The html file you see from your web browser is the result of do-iting the following expression:
| c b c2 |
c := RTComposer new.

b := RTGraphBuilder new.
b view: c view.
b edges
connectFrom: #superclass;

b edges
if: [ :fromClass :toClass | toClass name beginsWith: ‘TR’ ];
connectTo: #dependentClasses;
color: (Color blue alpha: 0.3).

b nodes
if: [ :cls | cls name beginsWith: ‘RT’ ];
color: Color blue.
b nodes
color: Color red.
b layout cluster.

b global
normalizeSize: #numberOfMethods min: 5 max: 40 using: #sqrt;
alphaColor: 0.4.

b addAll: TRShape withAllSubclasses, RTShape withAllSubclasses.

b build.
c group.

c2 := RTCharterBuilder new.
c2 view: c view.

c2 interaction popup.
c2 extent: 300 @ 200.
c2 points: (RTShape withAllSubclasses sortedAs: #numberOfMethods).
c2 connectDotColor: Color blue.

c2 points: (TRShape withAllSubclasses sortedAs: #numberOfMethods).
c2 stackX.
c2 allY: #numberOfMethods.
c2 connectDotColor: Color red.

c2 axisX.
c2 axisY.
c2 build.
c group.

c layout: RTVerticalLineLayout new.
c propagateHighlightToAll.

legend := RTLegendBuilder new.
legend view: c view.
legend addText: ‘This is a demonsration of a combination of builders’.
legend addText: ‘The above visualization shows the dependencies between Roassal and Trachel shapes.’.
legend addText: ‘Curves indicate the distribution of the number of methods’.
legend build.

RTHTML5Exporter new export: c view.
c view

December 11, 2014

Cincom Smalltalk - Smalltalk Digest: December Edition

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

Cincom Smalltalk - Personal Use License Versions of Cincom® ObjectStudio® 8.6 and Cincom® VisualWorks® 8.0 Now Available

Torsten Bergmann - RMapViewer

Torsten Bergmann - GTSpotter - another new tool

A new tool in the GT (Glamorous Toolkit) to easily  spot objects. Read more here and here.
It is now part of upcoming Pharo 4.0.


Torsten Bergmann - HoneyGinger

HoneyGinger is an interactive simulation environment based on Smoothed Particle Hydrodynamics. Implemented in Pharo.

Torsten Bergmann - Dynamic Code Evolution VM

Found that on the web:

The Dynamic Code Evolution Virtual Machine (DCE VM) is a modification of the Java HotSpot(TM) VM that allows unlimited redefinition of loaded classes at runtime. The current hotswapping mechanism of the HotSpot(TM) VM allows only changing method bodies. Our enhanced VM allows adding and removing fields and methods as well as changes to the super types of a class.

Nice - should move Java a little bit closer to Smalltalk.

Benoit St-Jean - Scale

Utilisez Pharo Smalltalk pour exécuter des scripts à partir de l’invite de commande!  C’est ce que Scale vous permet de faire!

Classé dans:Smalltalk Tagged: command line, invite de commande, Pharo, script, shell, Smalltalk

December 10, 2014

Pharo Weekly - Talking to R from Pharo

Hello everyone,

I am glad to announce the first version of the RProjectConnector, a binding between Pharo and R using NativeBoost.

You can now call directly your R methods from Pharo:

data := (1 to: 1000) collect: #yourself.

res := (#acf asRFunctionWith: {data}) eval

To use it, you should copy the R libraries near the Pharo VM (see the documentation on SmalltalkHub to see how to proceed) and

Gofer it

smalltalkhubUser: ‘VincentBlondeau’ project: ‘RProjectConnector';



Don’t forget to relaunch Pharo after the installation to be able to use the connector.

The sources are available on Smalltalkhub:!/~VincentBlondeau/RProjectConnector

if you want to participate, just ask me!



December 09, 2014

Torsten Bergmann - Chalten - working with times in Pharo

Chalten: an interesting library to work with dates, you can load it from the config browser in Pharo.

Craig Latta - Context release 4 alpha 1

Context 4 alpha 1 is released. This one fixes loading errors in the welcome page, supports remote debugging and process browsing, and makes Naiad and remote messaging support available as Monticello packages. Thanks in advance for reporting bugs!

Benoit St-Jean - Stage en Smalltalk

Pour ceux que ça pourrait intéresser, une annonce de stage en Smalltalk (Pharo) ici.

Classé dans:Smalltalk Tagged: Pharo, Smalltalk, stage

Smalltalk Jobs - Smalltalk Jobs – 9/12/2014

Smalltalk job in LeMans France.  You need experience in Smalltalk, Cincom Visualworks and Jira.  This is with a contracting agency.

Filed under: Employment

Smalltalk Jobs - Smalltalk Jobs – 12/8/14

  • Wayzata, MNSmallTalk Developer – Consultant at Cargill
    • Required Skills:
      • Bachelor’s degree in Computer Science or equivalent experience
      • 7 + years of experience in SmallTalk VSE and/or Visual Works.
      • 3 + years experience working with RDBMS database environments including writing, navigating and executing T-SQL
      • Excellent communication skills and an ability to work with others at all levels of an organization.
      • Demonstrated experience identifying and improving development practices in a multi skillset team.
      • Demonstrated strong analytical, problem solving, and decision making skills in very complex environments.
      • Proven ability to evaluate and guide others through complex, ambiguous decisions.
      • Demonstrated experience working in Unix/Linux development environments.
    • Wanted Skills:
      • Experience with SAP
      • 3 + years experience working with Grain Contracting and Settlement activities
      • Demonstrated business analysis skills in complex, multiple business unit environments.
    • Additional listings: Cargill
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

Benoit St-Jean - Amber IRI

Amber IRI est une librairie pour Amber Smalltalk basée sur les standards RFC 3986 et RFC 3987 (URI/IRI) permettant de convertir et de parser (quelqu’un a une traduction française pour le verbe parse ?!?!).

Classé dans:Smalltalk Tagged: Amber, Amber IRI, Amber Smalltalk, convertir, IRI, parser, RFC, RFC 3986, RFC 3987, Smalltalk, URI

Benoit St-Jean - Un autre tri : LampSort


Pour les passionnés d’algorithmes et les nostalgiques des bibles (en particulier le volume 3!) de Donald Knuth, un nouvel algorithme de tri est maintenant disponible pour Pharo : LampSort.

Classé dans:Smalltalk Tagged: algorithme, Donald Knuth, LampSort, Pharo, quicksort, Smalltalk, tri