Thursday, June 13, 2019

Tuesday, April 23, 2019

Pharo Sprint April 26

Read for more details.

Moose for Pharo 7

is now available. Check the webpage:

Type Checking Pharo methods

Manuel Leuenberger reported that he improved performance on his type checker for GT Tools.

Code is here:

I wonder if it would work also without GT / Bloc / Brick and could be used already in a standard out of the box Pharo image...


Geranium is an Energy consumption simulator for participatory modelling and decision making, taking into account: urban, social and micro-climate data. It is written in Pharo available on github on

They are currently looking for a Pharo Developer for 4 months, based in La Rochelle France. Check the jobs channel on Pharo Discord if you are interested. Or check here.

Thursday, April 18, 2019

Pharo and native UIs - from Mars to Spec

Pharo 7 (beside many other features) was focused on being able to bootstrap an image right from the source as well as the transition to using git. Also stabilizing Iceberg tool with Git binding to have an improved source code management and give Pharo and its source code more exposure to the outside non-Smalltalk world.

Now Pharo 8 (which is currently in development) will focus on an updated version of Spec called "Spec 2.0". To build abstractions and prove that other backends (beside Morphic) could be used there is a plan to have a GTK binding as a second backend. This goes back to the old "Mars" project from Esteban - a native user interface framework which aimed to bring the native UI into Pharo. If I remember correctly back at the time it used an ObjectiveC Bridge.

This was already discussed on PharoDays 2019 and now Esteban gives some more detailed infos about the background on the Pharo mailinglist.

Wednesday, April 17, 2019

Workflow engine written in Pharo

In 2017 Netstyle open sourced a workflow engine for Pharo. I reported about this here.

Now in 2019 there is another Workflow engine written in Pharo from Sebastijan Kaplar:

Still in early development. But you can also join if you like

Data Analysis of UCI Heart Disease Dataset using Pharo

Data Analysis of UCI Heart Disease Dataset using Pharo - a short tutorial by Dhanya Sreekumar

Thursday, April 11, 2019

Wednesday, April 10, 2019

Pharo language track on

An language track for Pharo can be found here:

Pharo DataFrame v2.0

Pharo DataFrame release v2.0 is available:

Read here what it can do for you.

Pharo graphics using Roassal

Milton shows some nice graphics examples on his twitter stream (using Pharo and Roassal):

Pharo Newsletter April 2019

Pharo Newsletters for each month are available at:

PharoDays 2019 in Lille

Some impressions from Pharo Days 2019 in Lille

Debugger driven development in Pharo

Some work Vincent Blondeau and Stephan Eggermont have been doing on the Taskbar have inspired Stephan me to make some screencasts showing how to do debugger driven development, and take the first steps towards refactoring the TaskBarMorph in Pharo, driven by tests.

Friday, March 29, 2019

ComputedSlots in Pharo

In Pharo 8 it is now possible to use ComputedSlots. Beside the regular instance variable (slots) we add a computed slot with a block.

Let's assume I would like to implement a Person class with a name and firstName but also get a fullName.

Object subclass: #Person
 slots: { #name. #firstName. #fullName => ComputedSlot with: [ :obj | obj firstName asString , ' ' , obj name asString ] }
 classVariables: {  }
 package: 'Simple-Example'

so when you test
p := Person new.
p name: 'Adams'.
p firstName: 'Douglas'.
p fullName 

it would return the full name 'Douglas Adams'.

When you now add an additional class side method #firstName:name: like

firstName: firstName lastName: lastName

 ^(self new)
  firstName: firstName;
  name: lastName;

you can simply write with our small english like DSL:

 (Person firstName: 'Douglas' lastName: 'Adams') fullName

to get the same result.

For sure we could have implement the getter method #fullName like this:


 ^self firstName asString , ' ' , self name asString

to achieve the same - but a computed slot shows up really in the inspector as if it would be a real variable and is recomputed if you for instance would change the name or firstName.

Wednesday, February 13, 2019

v2.1.0 Material Design Lite for Seaside

New version v2.1.0 is available now. Check it here.

Glamorous Toolkit v0.5.1

is out now - and it is based on latest Pharo 7.

Reactive data bindings framework for Pharo

A small Vue.js-inspired reactive data bindings framework for Pharo.

Registration for Pharo Days 2019 open

Just check this page if you want to participate.

New (bugfix) release of PetitParser v2.1.2

is available here.


Marvin - a Prototype system based on Self for Pharo from Pavel.

P3 V1.2 - PostgreSQL client for Pharo

A new release 1.2 of P3, the modern, lean and mean PostgreSQL client for Pharo.

ObservableSlots for Pharo

A language extension for Pharo to have slots that announce changes. This is useful expecially in UI projects.

The computational notebook of the future

This screencast shows an idea of how computational notebooks should work in the future. For pointers to the technologies being used, see the accompanying blog post

Tuesday, January 22, 2019

TravisCI and Smalltalk

SmalltalkCI was integrated with Travis. To set up continuous integration for your Smalltalk project, you need a .travis.yml and a .ston configuration file for SmalltalkCI. It is easy to setup and works great in many Squeak and Pharo projects already. Read the docu for more.

Pharo 7.0 released

Smalltalk systems influenced computing like no other technology in the world. You will find many of its ideas in all modern software systems ranging from graphical user interfaces up to mobile devices.

With Pharo-Project we continue with this tradition to provide an inspiring lively object-oriented system but also move Smalltalks ideas to the next level.

Today is the day we release Pharo 7.0 into the wild and again as a free open source gift to the world.

This is yet another major step towards a brighter future for dynamic development approaches. Pharo 7.0 was realized by a worldwide community of 75 people - taking us over one year of distributed development.

Pharo advanced on many sides. Now we can fully bootstrap into a custom image - including Slots, Metalinks and other meta facilities. New books and tutorials were written about it, it is used in web development, IoT and other. It's already a business driver for several companies worldwide with a growing number of users.

2142 issues solved in general - 762 commits done from my side (astares) alone. Mostly trivial stuff but each still important to cleanup and form a well structured core. Dont know if I could be proud to have climbed to the top in github contribution statistics in this release - personally I will remember the PR's primary as 762 times fighting with the CI infrastructure ;)

Pharo 8 work already started now ... so come in - the water is just fine. Step by step it goes...