Monthly Archives: April 2015

MorphicDraw: A mini application to understand Morphic

To better understand Morphic, I’ve started writing a small application that can draw shapes and connect them.

A pdf documenting what I’ve done is at

Code is on smalltalkhub,

Suggestions, fixes and improvements are welcome


New Idea Icon Pack


I made a configuration to install the  from configurations browser for Pharo 4.
You can install it and then choose your new icon set in settings.
You can also manual install them by:
Gofer it
smalltalkhubUser: ‘Pharo’ project: ‘MetaRepoForPharo40’;
configurationOf: ‘IdeaIcons’;
ThemeIcons current: #IdeaUIThemeIcons asClass new.
 “In Pharo 4, you might need to execute this”
AbstractNautilusUI resetIconCaches.
This icon pack works also for Pharo 3
If you lost it, here a couple of screenshots:
Screen Shot 2015-04-30 at 12.01.20Screen Shot 2015-04-30 at 12.01.57

New screencast about Versionner


I made a small video on how to use Versionner.
Versionner allows you to manage project configurations in a smooth way.
I know… is not “Kilon’s quality”… but I hope it will help 🙂

Versionner new features

Hi again,

Now I made a small video on how to use Versionner to help you manage your releases and commits.
This is new stuff, so you will need latest Pharo 5 to use it, alternatively you can install latest Versionner into Pharo 4 (I don’t know how it will work on Pharo 3, you’ll probably need to load Glamour as well others).
In Pharo 4, you can install it executing:
Gofer it
smalltalkhubUser: ‘PharoExtras’ project: ‘Versionner’;
loadVersion: ‘2.12.2’.

TMM: a simple to use Web/CRUD framework

TMM (Teapot, Mustache, Mongo) is a simple to use Web/CRUD framework built on Pharo.


I cleaned up and released some demo code I put together for a Smalltalk user group meeting. The code was extracted from a project I’ve been working on. It also uses Magritte3, Voyage, and ZincSSO, but that’s too many pieces to include in the web-app-stack name

I was working in Pharo3, so I took the opportunity to upgrade to Pharo4. I had no problems with Pharo4 itself, but I had some minor issues with the updated Teapot and VoyageMongo versions:

- VoyageMongo - <mongoContainer> pragma is now expected on class-side, not the instance-side
- Teapot - To read/parse template files on each request (which is convenient during development) I had intercepted an internal API. This API changed slightly, which needed a simple fix, but it was hard to find

I also decided to use a “git” repository. This turned out to be one of the hardest parts, but I think it was worth the effort.

To try TMM, follow the instructions at:

Enhancements are welcome, but I don’t quite know how this git workflow will pan out. I’ve already got a few changes to port over:
- a more integrated file upload example
- an email/passwordHash stored in the User object in mongo.


Aconcagua extensions

I pushed some Aconcagua extensions to

One part consists of tiny (so far) Aconcagua models of various domains -
Time*, Money, and Weight at the moment.

The other is the Aconcagua-Magritte package. This gives you
MAMeasureDescription, which represents an Aconcagua Measure. It mostly acts
like a number field mapped to its amount. You just have to tell it which
unit to use to convert the amount number into a Measure.

Example usage:
	MAMeasureDescription new
		accessor: #replacementPrice;
		label: 'Replacement Price';
		unit: AmDollar new;

Then, you can type 100 in a Magritte form and "100 dollars" will be saved to
the model. Enjoy!


The VirtualGPU is a simple DSL/framework for parallel algorithms.

In this quick video I try to show the performance and the simplicity of this framework, by using as an example simple vectorial and image processing operations.

The structure of this DSL is inspired by the VirtualCPU made by Igor Stasenko et al, and numerical programming such as Matlab and GNU Octave.

This DSL works by composing simple OpenCL kernels.

HoneyGinger mixed with Jun4Pharo

HoneyGinger is a fluid dynamics and visualization library which can simulate moves of liquid caused by obstacles and visualize refraction by estimating angles of water surface from distribution of pressure.

This is rendered by Jun4Pharo in conjunction with HoneyGinger, a fluid
dynamics simulator written in pure Smalltalk 🙂

Tomohiro Oda

Pharo 40 is released

Dear World,
Pharo 4.0 ( is here. Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback.
Pharo Team

Testing unsafe operations

Clément Béra

For the runtime optimizer (Sista) I am working on, Eliot Miranda and I added new operations (we call them unsafe operations) in Cog’s interpreter and JIT compiler. Before testing them directly by running the optimizer and looking for crashes, I wrote tests to check that each unsafe operation works as expected. I’d like to discuss a bit the design of those tests in this post.

I’ll discuss a specific operation in the post, but all the unsafe operations are handled in a similar way. The operation I chose to described is called USmiLessOrEqual. This operation corresponds to <= but assumes the 2 operands are SmallIntegers, else the behavior of the instruction is undefined. The optimizer uses it only when it can ensure that the two operands are SmallIntegers.

What to test

To test USmiLessOrEqual, one could think I’m going to take an important range of integers and…

View original post 2,352 more words