Planet Smalltalk

May 06, 2015

Torsten Bergmann - Example of a dynamic stacked grapher in Pharo

May 05, 2015

Benoit St-Jean - Smalltalk en vrac (18)


Un excellent papier intitulé An Object-Oriented Approach to Algebra System Design.


Quelques vidéos montrant HoneyGinger (dont nous avions parlé ici) en action : une simulation de stall (terme aéronautique), une simulation de corde, puis finalement une simulation de jets d’eau.

Annonce d’un Pharo Sprint le 22 mai 2015 à Lille en France.

MorphicDraw : une application toute simple pour comprendre Morphic!

Un sondage sur l’utilisation de Code Critics : participez-y!

Un nouveau package pour les GlyphIcons.

SimplePersistence : un outil de persistance simple et efficace.  À preuve, cette démo!

Idea Icons : de nouvelles icônes pour Pharo 3.x et 4.x.

TMM (Teapot, Mustache, Mongo) : un Web/CRUD framework simple à utiliser.

Un screencast sur l’utilisation de Versionner. Un autre screencast sur les nouvelles fonctionnalités de Versionner.

Classé dans:Pharo, Smalltalk Tagged: aéronautique, algèbre, Algebra, Code Critics, corde, GlyphIcons, HoneyGinger, icônes, Idea Icons, jets d'eau, Lille, Mongo, Morphic, MorphicDraw, Mustache, persistance, Pharo, SimplePersistence, Smalltalk, sondage, Sprint, stall, Teapot, TMM, Versionner

Torsten Bergmann - Pharo Sprint May 22nd

Torsten Bergmann - Tiny Pharo Persistence Helper Tool

From Sean, here is what it does and here is a video to explain:


Torsten Bergmann - Build pharo vm on windows

Need to build the Pharo developer VM on Windows. Check that you have a proper mingw distribution.

Torsten Bergmann - HoneyGinger in Pharo videos

More videos from HoneyGinger in Pharo:

May 04, 2015

Pharo News - Pharo Sprint May 22nd

<p>The RMoD team at Inria Lille is inviting for a Pharo Sprint May, 22nd:</p> <p>&quot;We propose a Pharo sprint / Moose dojo on Friday, 22nd May, starting at 10:00am. (Local Time Lille).</p> <p>It will be at the Inria Lille. Remotely, you can join us on the official IRC channel #pharo on server. During the sprint, we will try to synchronize local and remote Pharo sprinters.&quot; </p> <p><a href="">more infos</a></p>

Pharo News - Pharo Sprint May 22nd

<p>The RMoD team at Inria Lille is inviting for a Pharo Sprint May, 22nd:</p> <p>&quot;We propose a Pharo sprint / Moose dojo on Friday, 22nd May, starting at 10:00am. (Local Time Lille).</p> <p>It will be at the Inria Lille. Remotely, you can join us on the official IRC channel #pharo on server. During the sprint, we will try to synchronize local and remote Pharo sprinters.&quot; </p> <p><a href="">more infos</a></p>

May 03, 2015

Andres Valloud - Windows 95 still flies today

Remember the days of Windows 95?  After 49.7 days of continued operation, the system would crash.  That was before the Y2K bug, when nobody knew or even expected that a counter would overflow.  We should have learned our lesson by now: even seriously defective software can hang around for a very long time.

Unfortunately, we can't quite start feeling warm and fuzzy yet.  Recently, it was discovered that a Boeing 787's electrical system will shut down after 248 days of continued operation.  The result?  Among other things, the cockpit controls no longer work.  And with fly by wire, that means pilots can become irrelevant at any time.

The Federal Aviation Administration on Friday issued a directive mandating "a repetitive maintenance task" for that model of airliners due to issues with its power supply. Specifically, the FAA explained testing revealed that 787s could lose all AC electrical power after being continuously powered for 248 days, a problem that -- if left unchecked -- would leave an aircrew unable to control the plane.

In other words, please make sure you periodically reboot the 787 until that software bug is fixed.  If the problem is ever fixed.

At least this is a bit of technology we all understand.  That is, rebooting makes flaky programs appear to work for a bit longer.  The underlying assumption is deeply problematic.  The message is that this is the extent to which we are supposed to participate in our technological adventure.  You yearn of concerning yourself with whether the maintenance crew hit ctrl-alt-del before take off, don't you?  Wait, why isn't the expert doing that in the first place?  Or even better: how is it that a simple counter overflow can completely disable a modern airplane?  How are these machines being designed such that these failure modes are even possible?

But forget wondering what other 787 bugs could exist when that kind of defect went undetected.  What's next?  Cars that drive themselves (except when they don't)?  Smart electric meters, traffic lights, and gasoline pumps connected to the internet securely (except when security isn't --- really --- there)?  Everything will be just fine, right?

Seriously, these are not toys or apps.  Please demand reliable software.

May 02, 2015

Pharo Weekly - Pharo 50 is starting fast…

15457 Update Zinc to handle some deprecations in Pharo 5

15463 Rubric turns text to transparent when styling
15164 Misleading error message for nonexisting Package (String>>asPackage)

15373 forward port 15322 “Save As” does not properly save filenames with dots in them, like “one.two” or “one.two.image”

15458 fix #mustBeBoolean handling for #or:

15451 AST Shout: should recognize incomplete class names and color them correctly

15446 Enhance RadioButtonGroup

15448 remove package Play

15430 Integrate new versionner
15422 SHTextStyler>>#styleInBackgroundProcess: should not set the text if styling process was terminated

15443 AST based highlighter: DNU sometimes

15437 remove writeToSlot:of:

15447 Links with MetaContext

15436 emitStore: should not send writeToSlot:of:

15444 OldClassBuilderAdapter: move checks into SlotClassBuilder (first step)

15438 Update Rubric

15440 remove deprecated references to #allRangesOfSubString: in TextMorphForEditView

14080 Nuke remaining subStringXyzs

15435 MetaLink: invalidate all methods when state of link ist changed

15429 remove coupling from monticello GUI with metacello

15433 issue 15426 breaks NEC-Completion

15235 Faster Morphic>>removeHalo

15426 SHRBTextStyler does not work for all predefined styles

15427 Link Condition: Test + fix conditions for links

15259 Remove paintTabIcon

15426 SHRBTextStyler does not work for all predefined styles

15427 Link Condition: Test + fix conditions for links

15259 Remove paintTabIcon
15421 fix offset in SHRBTextStyler

15300 MNU: Association>>adaptToNumber:andSend:

15398 Deprecated StartupLoader should present migration instructions

15405 Suggestion menu SystemNavigation(Object)>>doesNotUnderstand: #browseClassRefsOf:

15420 Forward port 15417 TestRunner does not offer the RunCoverage functionality

15419 Pharo3Theme installFullTheme background is too dark

15424 #removeInstVarNamed: should just call #removeSlot:

15416 Load new Athens configuration (3.4)

15414 TxText Cleanup for Pharo 5.0 #1
15249 Comment RBEnvironment classes

15412 SHParserST80 class>#new not needed

15413 fix AST based syntax colouring
15395 Cleanup #1: Lots of little things

15401 MessageNotUnderstood: Association>>translated

15400 comment window announcement classes

15388 RBRepeteadMethodsInTheSuperclassRule duplicates RBEquivalentSuperclassMethodsRule

12595 Add Morph>>#asText

15338 OrderedDictionary changes to merge
15372 forward port pharaoh: 15339 Monticello with spotter extension methods throws MNU errors when browsing packages in repos that don

15380 Failing test: ClassTest.testClassRespectsPolymorphismWithTrait
15384 kommiter throws DNU when browsing remotes

15380 Failing test: ClassTest.testClassRespectsPolymorphismWithTrait

15379 Failing Test: MatrixTest>>#testOneColumnOnly

15378 Pharo5 0003: Nautilus start with pre-set filter
15385 Improving ParseTreeSearcher and RewriterTests

15386 Clean up OldClassBuilderAdapter (first step)
15387 Put back simplistic link code generation support+ enable test

15332 [Spec Help] protocol and protocol-events dont exist anymore

15349 The menu in the PharoTutorial has an erroneous label

15377 StartupLoader leftovers in StartupPreferencesLoader

15354 Add <script> to #open in Monticello tools

15355 Add MetaRepo for Pharo 40 in 5.0 config browser, also fix example method

15330 NumberParser>>#isNumber:

15368 unload Deprecate40 in Pharo5

15288 Shortcuts in text editor are hardcoded

Smalltalk Jobs - Smalltalk Jobs – 5/1/15

  • Buenos Aires, ArgentinaCIB – Kapital Financial Developer Lead (Job ID 150043735) at J.P. Morgan
    • Required Skills:
      • Application development using Object Orientated technology (Smalltalk, Java, C#, Python etc), preferably on large scale systems.
      • Previous experience of Financial Services, preferably in Investment Banking.
      • Good communication and organizational skills, build good client relationships and takes ownership of issues.
      • Self motivated to learn and ask questions to produce the best technology solutions
    • Additional listings: J.P. Morgan
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

Yoshiki Ohshima - [本] 最近読んだ本

なぜかSFが多かったです。 The Swarm: The Swarm: A Novel 作者: Frank Schatzing 出版社/メーカー: William Morrow 発売日: 2006/05/23 メディア: ハードカバー この商品を含むブログを見る 文明崩壊もので、深海に哺乳類以前から住んでいた生物が人類を狙って蜂起するという話です。充実のリサーチに基づいている、ということもあるのでしょうがなにしろ長い。テクニカルな話だけではなくロシア文学のように、登場人物の内省が延々と ...

April 30, 2015

Pharo Weekly - 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


Pharo Weekly - 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

Pharo Weekly - 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 :)

Pharo Weekly - 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’.

April 29, 2015

Torsten Bergmann - ARM Cog fires up

Interesting to hear from Tim that he managed to compile a Cog virtual machine for ARM. Still work in progress but step by step we will get a fast Squeak and Pharo Cog VM for ARM architecture.


Torsten Bergmann - IntelliJ icons in Pharo

Eye candy IntelliJ icons in Pharo are available now. Read more here. If you are on Pharo 4.0 you can download the package from Config browser and then use the settings to switch to this new icon theme.

April 28, 2015

Pharo Weekly - 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.


Stefan Marr - Zero-Overhead Metaprogramming

Runtime metaprogramming and reflection are slow. That’s a common wisdom. Unfortunately. Using refection for instance with Java’s reflection API, its dynamic proxies, Ruby’s #send or #method_missing, PHP’s magic methods such as __call, Python’s __getattr__, C#’s DynamicObjects, or really any metaprogramming abstraction in modern languages unfortunately comes at a price. The fewest language implementations optimize these operations. For instance, on Java’s HotSpot VM, reflective method invocation and dynamic proxies have an overhead of 6-7x compared to direct operations.

But, does it have to be that way? No it doesn’t!

And actually, a solution is rather simple. In a paper that Chris Seaton, Stéphane Ducasse, and I worked on, and which recently got accepted for presentation at the PLDI conference, we show that a simple generalization of polymorphic inline caches can be used to optimize metaprogramming so that it doesn’t have any performance cost after just-in-time compilation.

You might wonder, why do we care? Since it is slow, people don’t use it in performance sensitive code, right? Well, as it turns out, in Ruby it is used everywhere, because it is convenient and allows for straightforward and general solutions. So, making metaprogramming fast will benefit many applications. But that’s not all. For my own research on concurrency, I proposed the ownership-based metaobject protocol (OMOP) as a foundation for implementing a wide range of different concurrent programming abstractions. Unfortunately, such metaobject protocols have been inherently difficult to optimize. But instead of finding a solution, researchers gave up on it and instead focused on designing aspect-oriented programming languages, which sidestep the performance issues by applying only to a minimal set of program points instead of pervasively throughout the whole program. For my use case, that wasn’t good enough. However, now, by generalizing polymorphic inline caches, we solved the performance issues of metaobject protocols as well.

The abstract of the paper and the PDF/HTML versions, as well as the artifact with all experiments are linked below.


Runtime metaprogramming enables many useful applications and is often a convenient solution to solve problems in a generic way, which makes it widely used in frameworks, middleware, and domain-specific languages. However, powerful metaobject protocols are rarely supported and even common concepts such as reflective method invocation or dynamic proxies are not optimized. Solutions proposed in literature either restrict the metaprogramming capabilities or require application or library developers to apply performance improving techniques.

For overhead-free runtime metaprogramming, we demonstrate that dispatch chains, a generalized form of polymorphic inline caches common to self-optimizing interpreters, are a simple optimization at the language-implementation level. Our evaluation with self-optimizing interpreters shows that unrestricted metaobject protocols can be realized for the first time without runtime overhead, and that this optimization is applicable for just-in-time compilation of interpreters based on meta-tracing as well as partial evaluation. In this context, we also demonstrate that optimizing common reflective operations can lead to significant performance improvements for existing applications.

  • Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and without Compromises; Stefan Marr, Chris Seaton, Stéphane Ducasse; in ‘Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation’ (PLDI’ 15), to appear.
  • Paper: PDF, HTML
  • BibTex: BibSonomy
  • DOI: 10.1145/2737924.2737963
  • Online Appendix: artifacts and experimental setup

April 27, 2015

April 25, 2015

Benoit St-Jean - Smalltalk en vrac (17)


Un nouveau vidéo montrant les possibilités  de HoneyGinger (dont nous parlions ici) lorsque couplé avec Jun4Pharo.

Un excellent article (pour une fois en français!!!) sur la sortie de Pharo 4.0 dans

La version 0.4 de QualityAssistant est arrivée!  L’annonce n a été faite ici!

CORMAS est maintenant porté sur Pharo! Les détails ici.

Votre application utilise des caractères japonais?  Il vous faut donc Tekka! Un courte démo ici. Tekka fonctionne aussi avec Squeak!

Un petit vidéo mettant en vedette VirtualGPU, un framework pour le traitement en parallèle.

Quelques démos d’activités possibles (en français!) avec Dr. Géo.

Un très intéressant (et surprenant) vidéo qui montre comment explorer une base de données PostgreSQL avec le GTInspector.

Kendrick, dont nous avons parlé à plusieurs reprises, a maintenant son propre projet sur le serveur CI et fonctionne sur les versions 3.0 à 5.0 (inclusivement) de Pharo!

Un article en français sur la sortie de Pharo 4.0 sur

TinyChat : une petite application web sympa pour vous faire les dents!

Roll, un petit utilitaire de Read-Eval-Print-Loop pour Pharo.

VariableTracker est un outil permettant d’étudier les différents types attribués à une variable en cours d’éxécution.  Cet outil est le fruit de la thèse de Roger Stebler, Evaluating the dynamic behavior of Smalltalk applications.

De nouvelles extensions sont maintenant disponibles pour Aconcagua!  L’annonce a été faite ici!

Il y a de nouveaux chapitres pour les divers livres sur Pharo : TinyChat, Teapot et Mustache entre autres.

Il semble bien que Huw Collingborne de Bitwise Magazine soi maintenant un enthousiaste de Pharo!

Avis aux intéressés, Versionner a changé d’emplacement!


Le projet SqueakSSL a changé d’emplacement.  En plus, il existe une nouvelle version avec plusieurs correctifs!


Smalltalk Digest, édition d’avril 2015.

Une alternative au Transcript.


Classé dans:Pharo, PostgreSQL, Smalltalk, Squeak, VisualWorks Tagged: Aconcagua, avril 2015, base de données, Bitwise Magazine, CORMAS, Dr Geo, enseignement, Evaluating the dynamic behavior of Smalltalk applications, géométrie, GTInspector, HoneyGinger, Huw Collingborne, japonais, Jun4Pharo, Kendrick,, Mustache, parallèle, parallélisme, Pharo, PostgreSQL, TinyChat, QualityAssistant, Read-Eval-Print-Loop, Roger Stebler, Roll, Smalltalk Digest, Squeak, SqueakSSL, Teapot, Tekka, TinyChat, Transcript, utilitaire, VariableTracker, Versionner, VirtualGPU, VisualWorks

April 24, 2015

Cincom Smalltalk - ESUG 2015 Early Registration Going On Now

The European Smalltalk User Group (ESUG) Conference 2015 will take place in Brescia, Italy on July 13-17, and we’re happy to announce that early registration has begun and will end on Monday, June 1.

April 23, 2015

Smalltalk Jobs - Smalltalk Jobs – 4/22/15

  • Richardson, TXSoftware Engineer Equipment Control through Rudolph Technologies
    • Required Skills:
      • BS degree in Computer Science or Computer Engineering required
      • 0-5 years’ of software development experience.
      • Understanding of hardware interface and controls
      • Strong Object Oriented development skills required.
      • Strong ability to learn quickly and work with a distributed core software team.
      • Knowledgeable of software development concepts, practices and procedures.
      • Willing to travel ~10% of time at customer locations in Asia in support of software releases.
      • Professional attitude and the ability to work across many levels of the organization including Management, Technical Support, Applications, Customers as well as the core software development.
    • Wanted Skills:
      • Real time control experience using VxWorks or other RTOS
      • Experience with C#, .NET, or Smalltalk is a plus.
      • Experience in manufacturing/semiconductor capital equipment industry
      • SEMI Standards
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

April 22, 2015

Ricardo Moran - Acelerómetro / Giróscopo con Arduino

Hola a todos!
Les cuento que hemos adquirido un kit de sensores y accesorios para Arduino. Hay de los más variados: leds RGB, emisores láser, sensores de temperatura y humedad, de presencia, emisor y receptor de infrarrojo, encoders, acelerómetro, etc.
Uno de los más interesantes es el acelerómetro. Lo probamos con una Arduino Nano y un código que nos devuelve el Yaw, Pitch y Roll.

El sensor al que nos referimos se lo conoce como IMU (Inertial Measurement Unit). Consta de un acelerómetro y un giróscopo. Estos miden la fuerza ejercida por la gravedad y la velocidad.
En este caso, el MPU-6050 es una IMU de 6DOF (“6 Degrees Of Freedom“). Esto significa que lleva un acelerómetro y un giroscopio, ambos de 3 ejes (3+3 = 6DOF).

La conexión con Arduino, se realiza de la siguiente manera:

El MPU-6050 utiliza el protocolo de comunicación I2C, por lo que vamos a requerir descargar la siguiente librería:
(Si no saben cómo instalar una librería adicional para Arduino, pueden consultarlo en

Les paso el código utilizado, que fué extraído de

Finalmente, una captura del sistema funcionando:
Acelerómetro y Arduino

Espero que les haya sido de utilidad. Éxitos!

Cincom Smalltalk - Smalltalk Digest: April Edition

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

Torsten Bergmann - CORMAS CI job on pharo-contribution

CORMAS - an agent-based simulation framework is currently ported to Pharo.

As of today it is available as a new CORMAS CI job on the continuous integration server (pharo-contribution CI) which is green now as well!

Torsten Bergmann - Kendrick on CI

Kendrick is a Domain-Specific Language and Simulation Plaform for mathematical epidemiology modeling.

The Kendrick project now since today has a Kendrick CI job on the pharo-contribution CI server and runs on Pharo 3.0, 4.0 and 5.0 with all tests green.

This also means you can easily download it using PharoLauncher.