Wednesday, December 19, 2018

Dispatching tasks to multiple Pharo VMs using SystemProcess

is described here.

MachineLearning in #Pharo

Want to check out MachineLearning in Pharo? Then use this awesome list of projects, books, booklets, papers, and applications related to machine learning, AI, data science in Pharo


Releaser is a new tool for releasing nested #pharo projects residing in multiple repositories. Read more.

TimeMachine in Pharo

Funny experiment of Manuel Leuenberger about using Bloc and Pharo to get a déjà vu

Glamorous Toolkit v0.4.0

Glamorous Toolkit v0.4.0 is out. Read more.

Maizo and Pharo

Maizo - a Chemistry project developed with Pharo.

To quote research gate:

Maizo is aimed toward molecular- and reaction discovery based on big data of quantum mechanical global reaction route mappings. The global reaction data includes equilibrium structures (EQs), dissociation channels (DCs), and transition structures (TSs), which are automatically calculated by a global search on a potential energy surface using the GRRM (global reaction route mapping) method. Applications to molecular- and synthesis design are an important part of the project. Machine learning and visualization techniques as well as chemoinformatics methods are essential to acquire useful information from the large reaction data space. The team developed an RMapViewer, which was developed to visualize and analyze the GRRM outputs.  

Read the PDF on "Maizo"-chemistry Project: toward Molecular- and Reaction Discovery from Quantum Mechanical Global Reaction Route Mappings".

Pharo Git Thermite

A visual tool developed in Pharo for assessing Git commits and GitHub Pull Requests

The project is available on GitHub:

and now also integrates with Iceberg:

Read more details here.


JupyterTalk makes good progress - nice!

 Project is on GitHub:

Exploring Pharo

There is a nice blog post about his initial experience with Pharo from Konrad Hinsen. He overall likes Pharo and especially the explorability but also has two primary points to criticize:

  1. he mentions that Pharo is not reproducible and can not be bootstrapped from its own source code 
  2. it is not easy for beginners to follow Pharo
The first point is actually invalid. Konrad seem to have missed that Pharo since two years IS ACTUALLY  BOOTSTRAPPED - so we can build a image from scratch and from our own source code. This is actualy in place and used to build Pharo now. Even smaller images (like the minimal one) beside what is provided in the default Pharo download.

People interested in this topic should read this blog post from 2014 and check the "bootstrap" folder in the Pharo github project. This is based on the PharoBootstrap work. Someone interested in this topic might also be interested in this video.

For the second point I agree as Pharo is moving fast it might not be easy to follow. Also the community is small. Due to this we can not invest our sparce resources into making things easy for newbees - but rather will continue to focus on moving forward. Especially with the upcoming Pharo 7 including better git support and the new Calypso browser many things have changed compared to Pharo 6.

But there are books available and there is the mailinglists as well as the Discord chat to ask questions and get answers. Situation is far better than in 1994 when I dived into Smalltalk and where it was not easy to get informations or even a free system to enjoy the openess and productivity of such a system.

Nonetheless - as one of the primary contributors of the Pharo project I really enjoy such blog posts. It shows we are on the right track. There is still a long way to go - but step by step it goes...

GeoSphere in Pharo

A project to compute distances, parse coordinates, etc. using Pharo.


How to use Extensions in Pharo

In Pharo it was always possible for a package to extend a class within another Package. So far it was done by putting a * in front of the method name.

In Pharo 7 this changes a little bit as you can directly select the extension from the new Calypso system browser.

Here is a description about the differences.

Mobile Apps Development with PharoJS

A new description on how to use PharoJS is available.

Friday, November 02, 2018

Dynamic creation of compiler plugins in Pharo

A new class (merged this week into Pharo 7) called "OCCompilerDynamicASTPlugin" allows for the dynamic creation of compiler plugins

Object compiler
   newFromTransformBlock: [ :ast | (RBParseTreeRewriter replaceLiteral: 42 with: 'meaning of life') executeTree: ast. ast. ]
   andPriority: 0
 evaluate: '42'.
This would give 'meaning of life'

Friday, October 05, 2018

Reshaping the Development Experience

feenk wants to "Reshape the Development Experience" with a new GT Toolkit.

The project is online at

The slides from ESUG 2018 are now also available:


3D Print your own Pharo Lighthouse

You have a 3D printer and would like to print out the Pharo logo lighthouse? Here is how - just visit this page for all the details.

Parser performance in Smalltalk

Some insights into Parser performance in Smalltalk

Pharo totally bootstraps

Rather unnoticed but is now finally working:

Pharo images are now build from NOTHING. Not a single byte of image exists before: During build process, a very small image is first bootstrapped using a technique developed by Guille Polito during his PhD. Then the rest of the packages are loaded in a regular way.

This is how Pharo 7 (which is intended to be released around November) is now built!

Truly object oriented test

How to find out if a system is truly object oriented. In this old video Dan Ingalls explains how you can simply test this.

In Smalltalk systems like Squeak and Pharo you can do it.


I like Go as a programming language. It is open source, has a funny mascot and supports easy creation of executables. Still it is not the same as working with a nice Smalltalk system like Pharo.

I guess others see it the same way. That's why a simplistic Smalltalk code interpreter written in Golang is available here:

To quote: Why Smalltalk Smalltalk is beautiful dynamic language with a concise and readable syntax. Also we are smalltalkers so that's why.

Stylesheet for Pharo

When writing stylesheets (CSS) for the web it is not recommended to hard code the colors in each stylesheet rule - because often it is a tedious task to adopt or change them afterwards.

Therefore often people use CSS preprocessors like LESS or SaaS or Stylus where you can define variables or other to ease the job.

If you already work in Pharo you might want to easily write your stylesheets in Smalltalk. Thats the idea behind "Stylesheet" - a project to define CSS like stylesheet in Pharo applications.

The project was now migrated from SmalltalkHub to GitHub and can be found on:

Pharo Artefact migrated to GitHub

The Artefact PDF generation library written in Pharo was migrated to GitHub (including the STHub history):

Here is an old video on it:

Pharo IoT Hackathon

There is an Pharo IoT Hackathon on 19th of October 2018 in Cologne by zweidenker Pharo company. Details are here.


Docker and Pharo @ZWEIDENKER

The Zweidenker company gave some insights on ESUG 2018 in their usage of Pharo and Docker:


MetaLinks Lecture from ESUG 2018

Pharo provides advanced reflection including MetaLinks. You can find more details on all the possibilities in my Pharo wiki collection.

The slides on this topic from ESUG 2018 are available online now:


Pharo and IoT - ESUG 2018 slides

Hacktivismo de datos en Smalltalk

The MadridSUG (Madrid Smalltalk user group) started a new event called "Hacktivismo de datos en Smalltalk". Details are here and here

Cormas in 10 years

Cormas is an agent-based modelling and simulation platform. The project can be found on with a webpage on

The system is currently implemented in VisualWorks Smalltalk with a port started to Pharo Smalltalk.

There is a funny video of the CORMAS guys where they see Cormas in 10 years:


Gemstone support for Pharo

Gemstone is a very nice object oriented database. At ESUG 2018 there was native Support for Pharo (GemBuilder for Pharo) announced. Read the details in the slides.

Do you really understand git

Another presentation from ESUG 2018 about git:

Pharo in Corner Cases of the Enterprise

Slides from ESUG 2018 presentation on doing business projects using Pharo. The title is "Pharo in Corner Cases of the Enterprise"


Pharo and SendGrid v3 API

The SendGrid Smalltalk project is now gradually supporting the v3 API of SendGrid email delivery service. More on

Pharo Script of the Day

there is a new series of posts on a "Pharo script of the day" by Hernán Morales Durand. So far the following topics were covered:

Thursday, October 04, 2018

ESUG 2018 Conference Report

is available here.

ARCOS - Augmented Reality Collabroative Operating System

Several times within this blog I reported about Croquet. It was written in Squeak Smalltalk and supported communication, collaboration, resource sharing, and synchronous computation among multiple users. Basically it was a followup of ideas from Morphic - but all in 3D. You could create and visit portals to interactively collaborate.

 If I remember correctly it was later open sourced and ended up in OpenCobalt.NET - there are still some infos are on the Squeak wiki and a video on Youtube.

 It was also continued as OpenQwaq platform and used to form solutions for a company named 3dicc
(started by Ron Teitelbaum, David A Smith and Andreas Raab).

I also reported on the Lively Kernel project - a JavaScript based Kernel and IDE to also followup on these ideas allowing dynamic and linked worlds within your web browser. There is also a video available.

Now it seems there is a fully new web based implementation of these historic ideas available. It is called ARCOS - Augmented Reality Collabroative Operating System and if you check it out you will find many similarities.

Fully written in JavaScript and based on LivelyKernel but with a similar UI as in Squeak Croquet. If you check out the source code you will even find that the classes are prefixed with a "T" - which was back in the time the prefix for TeaTime (a specific framework for Croquet).

You can try it instantly in your browser using the following link or watch the following videos for a demo: