Tuesday, March 03, 2020

Analysis of Coronavirus using Pharo

Analysis of Coronavirus outbreak data using Pharo


Read more here.

ReStore relational persistence for Pharo

ReStore - a relational persistence project for Pharo got some more documentation.

Check it out on https://github.com/rko281/ReStoreForPharo

PragmaCompatibility for Pharo

A tiny project call PragmaCompatibility for Pharo:

Multiple changes of API happened through Pharo 6 to Pharo 8 making it hard to get the keyword of a pragma on all those versions. This project help to deal with this case.


Telescope Cytoscape v2.2.0 for Pharo

v2.2.0 of Telescope Cytoscape was released, a framework to build interactive web visualizations with Seaside and Pharo

Release notes are here: https://github.com/TelescopeSt/TelescopeCytoscape/releases/tag/v2.2.0

The main highlights are the box selection and stabilization of mouseover events.

Pharo and Lint

lint, or a linter, is a tool that analyzes source code to flag programming errors, bugs, stylistic errors, and suspicious constructs. In elder Smalltalks you often find a tool called Smalllint.

Pharo also includes lint rules by default - integrated into the toolset - and they are very helpful. You can even add you own rules.

Pharo Reflectivity

This Reflectivity paper - describe the latest, up-to-date version of Reflectivity that is shipped with Pharo 8


Link to PDF: https://arxiv.org/abs/2002.06182

Krendrick epidemiology modeling for Pharo

More infos on Krendrick epidemiology modeling - which is based on Pharo, nice: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-2843-0

Image Processing in Pharo

Nice project providing a small Pharo library for basic image processing:


Look here for a demo.

Monday, March 02, 2020

Teachable for Pharo moved to GitHub

I moved Teachable project for Pharo now to GitHub:


You can easily load via catalog within Pharo 8.


The project shows the power of Smalltalk meachanisms within Pharo and is useful for mock object building in unit tests.

Pomodoro Timer for Pharo 8

Pomodoro Timer for Pharo is now easily loadable from Catalog in Pharo 8.


Project is available on:


An old video is here:

QuickAccess for Pharo 8

My QuickAccess project for Pharo is now available in catalog for Pharo 8 so you can easily load.


An old video explaining it is here:


YUMLGenerator for Pharo

I published some old code for Pharo on


to easily generate links for YUML to get a class hierarchy image. Helps to include simple class hierarchy pictures into your (markdown or other) documentation.

Example:     YUMLGenerator open: String


Harbour for Pharo

My Harbour file browser experiment for Pharo is now loadable from Catalog:


 Now I need to find the time to add more functionality to make it more useful...

Thursday, February 13, 2020


Pharo-VistaCursors is a older project I wrote in the early days of Pharo to have a better cursor on Windows.

I moved it over from SmalltalkHub to GitHub.


 It is easy to load via Pharo catalog or load instructions from https://github.com/astares/Pharo-VistaCursors

Casino - Java to Angular migration using Pharo

Casino: A Pharo smalltalk project that migrates web projects from Java to Angular


Tuesday, January 07, 2020

Smalltalk with the GraalVM

If you have followed Smalltalk history (or some of the posts in this blog) you might already know about the Strongtalk system.

It is a Smalltalk environment with optional static typing support. Strongtalk can make some compile time checks, and offer stronger type safety guarantees; this is the source of its name. It is non-commercial, though it was originally a commercial project developed by a small startup company named LongView Technologies (trading as Animorphic Systems). Strongtalk is freely available on http://www.strongtalk.org

Programmers of the Strongtalk VM were later responsible at Sun Microsystems to make Java running faster by implementing the so called Java HotSpot virtual machine.

The HotSpot VM (now owned by Oracle) was primarily a Java only virtual machine - thats why it is called "JVM".

But the work continued to provide a new polyglot virtual machine called "GraalVM" which is able to host and run other programming languages (like JavaScript, Python and even C) on a new single virtual machine too.

You can find more informations about GraalVM on https://www.graalvm.org

All this is based on a Graal compiler and Truffle language implementation framework as well as a language interop framework called Polyglot that allows Truffle languages to call each other.

Now the Software Architecture Group at HPI provides even a Smalltalk on the GraalVM which is primarily using Squeak as the hosted Smalltalk environment.

Using the Polyglot functionality of the GraalVM you can interoperate easily from Smalltalk with other languages of the GraalVM as it can be seen in this demo video:

Practical Agile AI with Pharo

Apress seems to have already a page on upcoming book "Practical Agile AI with Pharo" which will be available in 2020

Docker and Pharo

Pierce is playing with a minimal Docker image including Pharo.

I experimented with docker and Pharo too - some of my notes are here

Smalltalk / Web Camp Lake Constance

Nice summary report from Joachim about the Smalltalk / Web Camp Lake Constance test run - a meeting of some companies using Smalltalk for web development.

Cuis-Smalltalk-Chip8 in Cuis Smalltalk

A Chip 8 emulator (interpreter) written in Cuis Smalltalk:


SQLite3 for Pharo updated and moved

In the past PierceNG and me were maintaining SQLite3 driver for Pharo. As in 2019 another Pharo community member (Julien Delplanque) contributed to the project it was better to align and move the project to a more community owned location.

So SQLite3 for Pharo was reworked to be fully standalone and it was moved to community owned "pharo-rdbms" location:


Additional Docu and CI support was added with green builds for Pharo 6.1, Pharo 7 and Pharo 8.

The old locations were marked deprecated.

MoreVMs 2020

In 2020 there is a workshop on Modern Language Runtimes, Ecosystems, and VMs in Portugal. Maybe the topic is interesting for you. Read more here.

Grouper for Pharo

Grouper is a nice package to group data in Pharo:

ReStore for Pharo

ReStore - an object relational database framework originally available for Dolphin Smalltalk was ported to Pharo.

Nice - I should give it a try.

Pharo XML support packages moved to GitHub

In November 2019 some time was spend to move the XML Support for Pharo from old SmalltalkHub to a community managed location on GitHub:


For the detailed packages this means

Fortunately there is a nice tool from Peter Uhnak called "git-migration" that helped a lot in this transition and preserved original commit history as much as possible. 

Additionally some more cleanups were applied and a continuous integration (CI) was established.

The move to GitHub should help to better maintain contributions to these projects and also verify that the XML support runs on newer Pharo versions.

Towards Machine Learning in Pharo: Visualizing Linear Regression

A nice medium article from Oleksandr Zaitsev on Machine Learning in Pharo. Note that he used the new Roassal 3 package for the visualizations.

TF-Login for Seaside 3.3.x on Pharo 7

Pierce ported TF-Login to latest Seaside 3.3.x on Pharo 7. Read more here.

Run PierCMS in Pharo 7

You want to use PierCMS with latest stable Pharo release Pharo 7? Then check out this resource from John Borden. I guess this also works for Pharo 8.

Hunter - Hunter Useful and Nice Tool for ECMAScript Reengineering

Hunter (standing for Hunter Useful and Nice Tool for ECMAScript Reengineering) is a tool to help understanding JavaScript applications via interactive visualizations.

Project page is here:   https://github.com/dorellang/hunter

It runs on top of Pharo.


SplitMix64: This is an implementation of the SplitMix64 pseudo-random number generator. It is very fast, has a period of 2^64 and passes the Big Crush (160 tests).

Currently only an simple fileout ST file on the GitHub page - maybe Benoît St-Jean (the author) can in the future provide it as a properly packaged Pharo git project.

ESUG 2019 Videos

All ESUG 2019 conference videos are uploaded and available in "ESUG 2019 Playlist" on Youtube

MaterialDesignLite v2.2.0

Old news from October I only shared via my twitter account - but nonetheless now also here on the blog: MaterialDesignLite v2.2.0 is available as a release. Some more details here.

Monday, October 28, 2019

Pharo with Style

Pharo with Style explains the difference between code that runs and code that talks to the reader. Found the book on several places:

The books source is on GitHub in https://github.com/SquareBracketAssociates/Booklet-PharoWithStyle

Rotten Green Tests

Rotten Green Tests explained
There is also a paper called "Rotten Green Tests A First Analysis"

Pharo Bootstrapping Challenges

In the beginning of the year 2019 I already wrote that Pharo is able to bootstrap the image. This is based on the Pharo Bootstrap project from Guille and already used in the Pharo Bootstrap process itself to form images like Pharo 7 and Pharo 8 for the releases.

If you look in the Pharo project repository you will find a bootstrap folder with the code that is used to bootstrap the standard pharo image if you are interested.

But sometimes you want to build and bootstrap an own fully custom image. There are new tools helping you to do this like the nice Pharo Bootstrapper project. This project allows you to use Pharo build small images and bootstrap own Smalltalk systems if you like.

I can also recommend to read the paper: "Challenges in Debugging Bootstraps of ReflectiveKernels"

Sindarin - advanced debugging in Pharo

Sindarin: is a Versatile Scripting API for the PharoDebugger. Watch the videos below from ESUG 2019 or read the following working paper.

Wednesday, August 21, 2019

Pharo Headless - Beta

An early preview - but you can already get real headless vm and image from zero-conf and play with it. This is work from the Pharo Consortium Team from the last couple of months.

Some interesting features:

  • Image handles creation of main world - so the Pharo world instantiation and handling is even more shifted to the image side - allows to play with new ideas on world and window creation This will provide more backends: the regular VM support (compatibility with non-headless VMs), and OSWindow with two additional backends: SDL and GTK3+ (implemented using UFFI calls)
  • Handling of events on the image side - which will hopefull allow for better event handling as we can process events directly within the image and not the VM
  • VMMaker code migrated to Tonel and update on VMMaker to execute in Pharo 7 and 8 - this allows for easier VM building of the Pharo virtual machine (which is based on OpenSmalltalk VM)
  • Removing GPL code from the VM repository - to be more license clean
And the one I like most: the virtual machine is now a dynamic library. Which is the first but an important step towards embedding Pharo into other applications!

If you want to try it out check the headless branch within the OpenSmalltalk VM repository:


There is also a Continuous integration (CI) job available.

Read the full announcement.

Pharo bindings to the LLVM disassembler and Unicorn library

Guille Polito wrote bindings to the LLVM disassembler and Pharo bindings to the Unicorn library. Both projects are available on GitHub:


This should allow for better machine code simulation directly within Pharo.



The UI framework in Pharo receives an update. Spec2 will replace Spec over time - it is already included within upcoming Pharo 8 (which is still in development). Both run in parallel to ease migration.

Source code is also on GitHub: https://github.com/pharo-spec/Spec

It is possible to load Spec2 into latest Pharo release - Pharo 7. You will find a script on the project page. Some early documentation on Spec2 is already available as PDF booklet - but as the framework itself work in progress.

Spec2 will also allow for a binding to other backends like Gtk (which is based on Mars project from Esteban):


Booklet - Testing in Pharo

An upcoming new booklet for Pharo. It is about "Testing in Pharo" including SUnit, DrTest and other. Still work in progress but PDF is already here

Event Music Manager for Pharo - ESUG2019.

The project Event Music Manager (EMM) for Pharo from Benoît Verhaeghe allows us to play with music and video in Pharo. It will also be shown on ESUG 2019 conference.

Source code is available on GitHub: https://github.com/badetitou/EMM

It uses Seaside web framework and a special UFFI binding to the VLC lib which is also available on GitHub;


VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols.

 Go check the trailer:

GistBrowser for Pharo

There is a nice GistBrowser for Pharo - now also including Gist Press support.
Code is on GitHub:


Pharo Chip Designer

Pavel released a new project: Pharo Chip Designer - a Silicon chip layout design game written in Pharo Code is on GitHub:


Sample Video is here:

Woden 3D engine for Pharo - ESUG 2019 Demo

ESUG 2019 conference is ahead and Ronie Salgado is preparing a demo of his 3D engine Woden - written in Pharo.


The page http://vastgoodies.com allows to browse VAST ENVY goodies.

The "Spider" project from Jan van de Sandt (http://github.com/jvdsandt/spider) seems to allow similar but for the ST source graph of git and MC projects. Work in progress - but nice example for P3/Glorp, Seaside and Pharo  usage if you have a deeper look at the code. Nice!

Thursday, July 04, 2019

PolySLAM and Pharo

PolySLAM (Polygon based Simultaneous Localization And Mapping) is a solution for multi-robot exploration of indoor environments.

Pharo Smalltalk was used to implement and simulate it.

Read more here or watch the video:

Smalltalk and the largest MIDI instrument

Mariano has a nice story on using Smalltalk to control the largest MIDI instrument of the world. Nice and well done.

Smalltalk always rocks!

Pharo Compiler: add the concept of a Production Environment

In Pharo so far the Compiler compiled into instances of class CompiledMethod. Now, there might be the case that the result of the compiler (the compiledMethod) should not be an instance of the class CompiledMethod from the environment in which we compile, but from some other environment.

The Pharo compiler is now able to support that as Marcus explains here.

This is more flexible and should allow for cross compiling locally or into remote environments. One could use it to build up a new environment within the existing one, ...