Planet Squeak

blogs about Squeak, Pharo, Croquet and family
planet squeak - planet squeak es - planet squeak jp - planet croquet - planet squeak code - planet smalltalk

June 29, 2016

The Weekly Squeak

PLATEAU – Evaluation and Usability of Programming Languages and Tools Call For Papers


7th Workshop on the Evaluation and Usability of Programming Languages and Tools (PLATEAU)

Co-located with SPLASH 2016

Amsterdam, Netherlands



Programming languages exist to enable programmers to develop software effectively. But how efficiently programmers can write software depends on the usability of the languages and tools that they develop with. The aim of this workshop is to discuss methods, metrics and techniques for evaluating the usability of languages and language tools. The supposed benefits of such languages and tools cover a large space, including making programs easier to read, write, and maintain; allowing programmers to write more flexible and powerful programs; and restricting programs to make them more safe and secure.

PLATEAU gathers the intersection of researchers in the programming language, programming tool, and human-computer interaction communities to share their research and discuss the future of evaluation and usability of programming languages and tools.


Some particular areas of interest are:

PLATEAU encourages submissions of three types of papers:

Research and position papers: We encourage papers that describe work-in-progress or recently completed work based on the themes and goals of the workshop or related topics, report on experiences gained, question accepted wisdom, raise challenging open problems, or propose speculative new approaches. We will accept two types of papers: research papers up to 8 pages in length; and position papers up to 2 pages in length.

Hypotheses papers: Hypotheses papers explicitly identify beliefs of the research community or software industry about how a programming language, programming language feature, or programming language tool affects programming practice. Hypotheses can be collected from mailing lists, blog posts, paper introductions, developer forums, or interviews. Papers should clearly document the source(s) of each hypothesis and discuss the importance, use, and relevance of the hypotheses on research or practice. In addition, we invite language designers to share some of the usability reasoning that influenced their work. These will serve as an important first step in advancing our understanding of how language design supports programmers.Papers may also, but are not required to, review evidence for or against the hypotheses identified. Hypotheses papers can be up to 4 pages in length.

Submission site: PLATEAU papers should be submitted via HotCRP.

Format: Submissions should use the SIGPLAN Proceedings Format (, 10 point font. Note that by default the SIGPLAN Proceedings Format produces papers in 9 point font. If you are formatting your paper using LaTeX, you will need to set the 10pt option in the \documentclass command. If you are formatting your paper using Word, you may wish to use the provided Word template that supports this font size. Please include page numbers in your submission. Setting the preprint option in the LaTeX \documentclass command generates page numbers. Please also ensure that your submission is legible when printed on a black and white printer. In particular, please check that colors remain distinct and font sizes are legible.

All types of papers will be published in the ACM Digital Library at the authors’ discretion.


Alan Blackwell


Computer Laboratory

University of Cambridge

Cambridge, United Kingdom


Submission deadline: August 1, 2016


Kelly Blincoe, Auckland University of Technology, New Zealand

Jeff Carver, University of Alabama, USA

Kathi Fisler, Worcester Polytechnic Institute, USA

Tudor Gîrba, Independent, Switzerland

Stefan Hanenberg, University of Duisburg-Essen, Germany

Andrew Ko, University of Washington, USA

Brad Myers, Carnegie Mellon University, USA

Peter-Michael Osera, Grinnell College, USA

Janet Siegmund, University of Passau, Germany

Jeremy Singer, University of Glasgow, United Kingdom

Emma Söderberg, Google, USA

Andreas Stefik, University of Nevada, Las Vegas, USA

Ian Utting, University of Kent, United Kingdom

Philip Wadler, University of Edinburgh, United Kingdom


Craig Anslow, Middlesex University, UK

Thomas LaToza, George Mason University, USA

Joshua Sunshine, Carnegie Mellon University, USA

by Ron Teitelbaum at June 29, 2016 12:02 AM

June 28, 2016

Torsten Bergmann


From Blocks to BlockClosures now to FullBlockClosures. It is nice that Clément Béra summarizes current activities for Sista on his blog.

by Torsten ( at June 28, 2016 12:48 PM

June 24, 2016

Torsten Bergmann

Walls, Pillars and Beams: A 3D Decomposition of Quality Anomalies

A video demonstration of a 3D approach (in Pharo) from the paper with the same title.

by Torsten ( at June 24, 2016 11:18 AM

Functional callbacks on all Cog platforms

Pharo as well as Squeak are based on a common virtual machine implementation (Squeak VM, later Cog). This virtual machine source code recently was moved over to GitHub as OpenSmalltalk VM to better maintain the (small but existing) differences in the virtual machines for Squeak, Pharo, Newspeak and Cuis Smalltalk.

Within all open source Smalltalks derived from Squeak (Squeak, Pharo, Newspeak) historically and initially there was a mechanisms to call external code outside the Smalltalk environment. This mechanism was called FFI - which is the abbreviation for foreign function interface. So you could call external libraries to perform an action.

Later there was another mechanism called Alien FFI that also allowed to pass a callback function to the ouside world. Alien was provided in 2007 by Eliot Miranda and old docu could be found here and here.

In Pharo later there was another mechanism called "NativeBoost" (provided by Igor Stasenko) to call external functions. NB allowed to be using native code directly and really fast as the native code was attached to a compiled method and lived within the image. Relying on assembler (provided by a package called ASMJit) the NativeBoost solution is very fast - but also hard to maintain because NB was not as portable as the initial FFI solutions.

Later Pharo decided to resynch all these efforts into what is now known as UFFI (Unified Foreign Function Interface) provided by Esteban Lorenzano. UFFI unifies and also borrows from FFI, Alien and even NativeBoost.

Also with the more aligned OpenSmalltalk VM the different open source Smalltalks come closer together. Current work in progress on the virtual machine side is to allow for 64 bit Smalltalk systems and to better support ARM architecture beside x86 one.

Eliot now announced that Alien now has functional callbacks on all x86 platforms, ARM32 platforms and x86_64 platforms. This is another major step in having a portable interface to the outside world as we can use callbacks on all these platforms. Great stuff!!!

by Torsten ( at June 24, 2016 08:21 AM

June 23, 2016

Torsten Bergmann

CuboidMatrix: Exploring Dynamic Structural Connections in Software Components using Space-Time Cube

A demonstration video of the VISSOFT paper by Teseo Schneider, Yuriy Tymchuk, Ronie Salgado and Alexandre Bergel. Done in Pharo.

by Torsten ( at June 23, 2016 09:58 PM

June 21, 2016

Torsten Bergmann

SmallWorlds for Pharo

Interactive Fiction framework in Smalltalk is released. Read more

by Torsten ( at June 21, 2016 11:43 AM

June 20, 2016

Torsten Bergmann

Talking Small

Another newbee is discovering Smalltalk. Looks like he tries to learn a language each month and also stumbled over Pharo.

If he really wants to learn Smalltalk and find out more he for sure will need more time than just a simple month. Initial steps in Smalltalk are easy, also syntax is easy to learn - but learning what power it contains requires more time and a deeper understanding. Also it takes a while to understand why things are the way they are. Often learning to deal with pure OO also means to unlearn (bad) things from the mainstream programming languages...

Nonetheless nice summary of his early steps.

by Torsten ( at June 20, 2016 04:35 PM

LRP - Live Robot Programming in Pharo

How does a PR2 move through a door opening? By using LRP of course! Live Robot Programming (LRP) is a live programming language designed for the creation of the behavior layer of robots. It is implemented in Pharo.

by Torsten ( at June 20, 2016 04:21 PM

June 18, 2016

Göran Krampe

Fowltalk - a new Smalltalk

In my quest making Spry I also learned about other efforts in the Nim community to construct Smalltalk-like dynamic languages. The most ambitious one may be Fowltalk by "fowl" who typically hangs out in the #nim channel on Freenode. Fowltalk started out written in Nim but since fowl wanted to learn more C++ it's now written in C++17.

At the moment he is rewriting the parser and code generator parts in the language itself, following a similar bootstrapping style as Ian Piumarta's idst. For example, here is the method parsing keyword messages.

At the moment Fowltalk is nowhere near usefulness but its fun stuff!

It's interesting to look at these bootstrap* files - we can immediately notice some syntactic differences to Smalltalk-80:

Block arguments are written like [| :x :y | ... ] and you can mix both locals and params there: [| :aParam aLocalHasNoColon | ... ]. Instinctively I can agree with the combination, but I would probably then make the first | optional.

Some messages have been changed, like ifTrue:ifFalse: is instead ifTrue:else:. I have done similar simplifications in Spry. And just like in Spry ivars are referenced using @myIvar.

There isn't any documentation on Fowltalk yet, but it's clearly a rather elaborate implementation. It compiles to bytecodes, uses numbered primitives (I think) and there is an image mechanism.

It was also quite easy to get the REPL up and running, but just as with Spry, it's hard to know how to use it! On Ubuntu I installed boost sudo apt-get install libboost1.58-dev and then it was easy to get it running following the instructions, as long as you change to

The image constructed by the bootstrap process is 67Mb in size. Then we can do the canonical Smalltalk test in the REPL:

``` bash gokr@yoda:~/fowltalk/idk$ ./bin/oop -i oop.img --mmap --repl

(3 + 4) print 7

!quit gokr@yoda:~/fowltalk/idk$ ```

Fowl mentioned that the new parser can be loaded using !read bootstrap.1 but... at the moment that causes errors.

It will be interesting to see where this goes! Fowltalk is very early in its evolution, and it's not a JIT, but it's a real bytecode VM with an image and we can never have enough Smalltalk-like languages! :)

June 18, 2016 10:00 PM

June 17, 2016

Torsten Bergmann

Pharo Launcher

was updated to Pharo 5. Cool!!!

by Torsten ( at June 17, 2016 11:15 AM

June 16, 2016

Torsten Bergmann

Iceberg - better Git for Pharo

Iceberg, the future git integration for Pharo 6.0. Read more

by Torsten ( at June 16, 2016 12:09 PM

Pharo and 3D

The nice work of Ronie Salgado with Pharo and 3 summarized on his page. Nice!

by Torsten ( at June 16, 2016 11:53 AM

Voyage with Unqlite support

For relational databases there is the tiny SQLite database solution that just requires a simple linked library (DLL/SO file) including the full database engine.

There is a similar tiny database called Unqlite in the NoSQL world. Pharo already had a Unqlite binding in the past. Before Pharo 5 this "PUnqlite" project was based on Native Boost. It was provided by Masashi Umezawa and I extended the project with a spec based UI to provide a database browser for Unqlite.

During the Pharo 5 development I discussed with Esteban many issues on #Slack about porting several of my projects to UFFI. We also discusssed about Unqlite and Esteban quickly ported the PUnqlite binding over from NB to UFFI. This was done on GitHub. Additionally I remigrated the changes back to the original repo of PUnqlite on STHub and made it loadable from Catalog in Pharo 5 again. So with Pharo 5 you again have a package "PUnqlite" that you can load from Catalog. Just open Spotter and type in the name.

During these #Slack sessions we also discussed about Estebans Voyage framework. Voyage is a layer that allows for very simple persistence in Pharo. It is explained here and here.

So far Voyage only worked with MongoDB as backend. Often Mongo requires some setup which might be overkill for simple deployable applications that you want to build with Pharo. So we also discussed about using UnQlite as a backend for Voyage.

Esteban wanted to work on this for a project and now first results are available: Voyage is now restructured with a second backend to support also UnQlite beside MongoDB.

Cool - thanks Esteban!

by Torsten ( at June 16, 2016 10:20 AM

VM support switching from SVN to Git

The Cog subversion repository is moved over to GitHub

by Torsten ( at June 16, 2016 07:04 AM

More than 15 arguments

support is on its way. But I guess if you have need more than 15 arguments in a method you should think about your design. Possibly an argument object would be applicable.

by Torsten ( at June 16, 2016 07:03 AM


haltOnce was improved in Pharo 6

by Torsten ( at June 16, 2016 05:52 AM

June 15, 2016

Torsten Bergmann

Playing with MetaLinks in Pharo

Yuriy is playing with MetaLinks in Pharo. Read more.

by Torsten ( at June 15, 2016 08:51 AM

Slack Client

Interesting, there is an implementation of a Slack client on SmalltalkHub.

by Torsten ( at June 15, 2016 07:45 AM

June 12, 2016

Torsten Bergmann

File Dialog

A simple replacement for Pharo's native file/folder selection dialog. Code is here.

by Torsten ( at June 12, 2016 10:36 PM

Updates for Ubuntu Pharo VM

Read more here.

by Torsten ( at June 12, 2016 10:34 PM

PassBy[ME] from Pharo

Use 2 factor authentication service PassBy from Pharo with PBMAuthenticator

by Torsten ( at June 12, 2016 06:45 PM

Pharo NoSQL on GitHub

MongoTalk and Voyage frameworks are now on GitHub

by Torsten ( at June 12, 2016 06:42 PM

Enterprise Pharo Book

Enterprise Pharo book is out

by Torsten ( at June 12, 2016 06:39 PM

June 09, 2016

Torsten Bergmann

Update on Sista

Interesting update on Sista.

by Torsten ( at June 09, 2016 06:48 PM

June 08, 2016

Torsten Bergmann

MPDClient in Pharo

Client side interface to the Linux Music Player Daemon written in Pharo. Project is here.

by Torsten ( at June 08, 2016 08:05 PM

Smalltalkers seriously not kidding

Like this ycombinator thread: "When they say that in Smalltalk, everything's an object, they're seriously not kidding. Everything is an object, including compiled code, stack frames, execution contexts, threads, etc. "

by Torsten ( at June 08, 2016 01:22 PM

June 06, 2016

Torsten Bergmann


A simple objects analysis tool. Read more.

by Torsten ( at June 06, 2016 05:52 PM

June 03, 2016

Torsten Bergmann

inline if in Smalltalk

No! No! No! Dont extend Smalltalk with things like that.

Just because you can extend Smalltalk does not mean you should do on all ends. So unlearn your traditional syntax thinking before starting with it. Code should tell a story to be maintenable and not end up in deciphering cryptic syntax sugar.

Lets think in objects and stay readable with: #ifTrue;ifFalse: please!

by Torsten ( at June 03, 2016 04:17 PM

64Bit support progresses

64Bit virtual machine for Pharo, Squeak, ... are in the pipe - VM developers move forward on this frontier. There is now also 64bits image generation for Pharo.

While in the last century it was hard to run dynamic systems like Smalltalk times have changed a lot.
But now Hardware and software become faster and even smaller each day. This leads to suprising results.

by Torsten ( at June 03, 2016 03:06 PM

Ubuntu Ambiance Theme for Pharo

A theme for Pharo to look like Ubuntu. Looks nice. Code is here.

by Torsten ( at June 03, 2016 07:18 AM