Planet Smalltalk

June 22, 2018

Pharo Weekly - Dr. Geo release 18.06

We are please to announce the Dr. Geo release 18.06. It follows the 
release 17.07 in July 2017.
A large part of the effort was to port Dr. Geo from the Pharo 3 to Pharo 
7 Smalltalk development environment.
In addition to usual bug fixes several features were added.

*Mini changelog:*
- Dedicated Script browser
- Inspector on Smalltalk Sketch
- Positioning zoom
- Unit tests based on Smalltalk sketch
- Lan share
- Graphic user interface theme
- Fullscreen option
- Lots of bug fixes

Read the complete announcement <>

Dr. Geo is always looking for volunteers to translate 
<> its user interface.

Hilaire Fernandes

ESUG news - ESUG 2018 Innovation Technology Awards: Call for Submissions

The 15th edition of the ESUG Innovation Technology Awards is now officially open. As for every year, you can submit software based on any Smalltalk flavor, to attempt to win one of the three prizes.

All you have to do is to provide a 3-5min video demo.

More info and a link to the submission server is at:

ESUG news - ESUG 2018 Innovation Technology Awards: Call for Submissions

The 15th edition of the ESUG Innovation Technology Awards is now officially open. As for every year, you can submit software based on any Smalltalk flavor, to attempt to win one of the three prizes.

All you have to do is to provide a 3-5min video demo.

More info and a link to the submission server is at:

June 21, 2018

ESUG news - ESUG 18: Registration is open

The conference registration is open. Pay attention the 13th of July is the deadline for the early registration

Cincom Smalltalk - Cincom Smalltalk Helps Texas Instruments Meet Defense Department Requirements

Learn about the goals, challenge and results of Texas Instruments' semiconductor project and how Cincom Smalltalk helped meet the Defense Department requirements.

The post Cincom Smalltalk Helps Texas Instruments Meet Defense Department Requirements appeared first on Cincom Smalltalk.

Torsten Bergmann - June release of Web-stack

There is a new June release of Web-stack for Seaside and Pharo

Torsten Bergmann - Daywork

Torsten Bergmann - Pharo TechTalk Dates second half 2018

You can find the Pharo TechTalk Dates second half 2018 here

Pharo Weekly - PharoLauncher V1.2

Hi all,

I just released PharoLauncher 1.2. It includes a new windows installer that you can use without administrator privileges as well as binary signing for OS X and Windows. Also, Pharo Launcher is not anymore identified as ‘Pharo’ application and comes with its own icon.

Here is the changelog (details on <>):
New features:
	#21 Bless the DMG
	#46 sign pharo launcher app for windows
	#103 No way to rename a local template
	#107 Unable to add a description for the image using the Launcher UI
	#121 You can't see/sort images by last modified date
	#69 Import command should also import pharo-local directory
	#70 Import command should delete origin folder if empty
	#73 Managers of Download of VMs and images should be in their own packages
	#76 Use https instead of http to requests the pharo file server
	#82 Official Distributions loads 32bit versions on 64bit System (i.e. provide better information on templates architecture)
	#86 Sort Existing Images Case-Insensitive
	#98 Copy and subfolders problem (contents no copied)
	#101 Templates from a local image are listed in "downloaded". "local" would be a better name
	#102 Template Cleared at Startup setting is enabled, making it weird when trying to use the template feature
	#106 Import could work if we select the parent folder of an image
	#109 Use latest pre-Spur VM to determine the image version
	#122 The Run without settings icon looks like a funny grey/which blob (missing alpha correction)
Bux fixes:
	#41 #selectedMorphList was sent to nil
	#67 bash is not a command usable under windows
	#68 Does not launch images on Windows
	#85 Double click on an existing image open a file selector
	#88 Pharo Launcher on Windows > Failing
	#104 GUI bug makes Launcher unusable
	#110 Image launch not reliable on Windows
	#119 MessageNotUnderstood exception on launch
	#123 The status bar of the Launcher is broken, so can't easily show image descriptions 

Big thanks to all contributors: code, issues report, comments, advices.
You can get platform bundles from pharo download page or <>: <>

Smalltalk Jobs - Smalltalk Jobs – 6/20/18

  • Bangalore, IndiaApplications Development (Job ID 180054169) through J.P. Morgan
    • Required Skills:
      • 5-12 years of experience
      • Bachelor degree/Master degree in engineering preferably in computer science/Information technology.
      • An understanding of an object oriented programming language and their underlying principles.
      • Smalltalk
      • Excellent analytical, problem solving and organizational skills and ability to work independently.
      • Understanding of software skills such as business analysis, development, maintenance and software improvement.
      • Should have enthusiasm for increasing the knowledge of financial markets and products.
      • Willingness to adopt to an agile development process.
    • Wanted Skills:
      • Java
      • Python
  • Salem, ORInformation Systems Specialist 8 UX Analyst (OYA18-0058oc) at Oregon Youth Authority
    • Required Skills:
      • Seven (7) years of information systems experience in: (agency will specify specific experience); OR
      • An Associate’s degree or higher in Computer Science, Information Technology, or related field, OR
        completion of a two (2) year accredited vocational training program in information technology or related field; AND 5 years of information systems experience in: (agency will specify specific experience); OR
      • A Bachelor’s degree in Information Technology, Computer Science, or related field AND three (3) years of information systems experience in: (agency will specify specific experience); OR
      • Master’s degree in Information Technology, Computer Science, or related field AND one (1) year of information systems experience in: (agency will specify specific experience);
      • Smalltalk
    • Pay: $67,944.00 – $98,220.00 USD Annually
  • Brisbane, AustraliaSenior Developer through Trapeze Group
    • Required Skills:
      • Smalltalk experience or willingness to learn Smalltalk
      • COBOL experience or willingness to learn COBOL
      • Scrum
      • Kanban
    • Wanted Skills:
      • Linux
      • PostgreSQL
      • Apache server
      • Microsoft Window
Good luck with your job hunting,
James T. Savidge

View James T. Savidge's profile on LinkedIn

This blog’s RSS Feed

June 20, 2018

Pharo Weekly - Web-stack new version: June release


RenoirSt 6.0.0

  • Extended Seaside tag brushes to allow sending setStyleTo: and use the Renoir facilities to provide an inline style.
  • The library now automatically performs the lookup of constants.

Full changelog and migration notes here.

Willow 10.1.0

Changes since last announcement (v 8.0.2 ):

  • Improved table support
  • Implemented apply: in the tag brushes. Now you can use the same command interface used for Willow components in standard seaside tags.
  • Implemented with:applying: in tag brushes.
  • Added #interactUsing: to tag brushes so it’s easier to apply a WebInteractionInterpreter.
  • setStyleTo: in the commands now lookups the CSS property values automatically (so the second parameter in the block is no longer supported)
  • Access to constants in the commands now uses >> and symbols instead of message sending, to ease the extension in dependent projects.
  • Added command to ease the ARIA roles setup.
  • Fixed some bugs
  • Internal clean-ups

Full changelog and migration guide: v9.0.0, v10.0.0 and v10.1.0.

Willow Bootstrap 10.1.0

Changes since last announcement (v 8.0.2):

  • Bootstrap plugins now automatically convert constants.
  • Improved internals using the new ARIA role API.
  • Updated dependencies.
  • Internal clean-ups

Full changelog and migration guide: v10.0.0 and v10.1.0.

Willow JQueryUI 9.0.0

Changes since last announcement (v 7.1.0):

  • Internal clean-ups
  • Updated dependencies

Full changelog and migration guide here.

Willow SpinKit 6.0.0

Updated dependencies.

Willow Mixpanel 2.0.0

Updated dependencies.

Willow Playground 7.0.0

Changes since last announcement (v 5.0.0):

  • Use the new table interaction affordances.
  • Provide an AJAX error handler example.
  • Updated dependencies.
  • Use the new RenoirSt and Willow affordances.

Cincom Smalltalk - The Extra Value for Cincom Smalltalk™ Customers Using Cincom SupportWeb®

One of the benefits of being a Cincom Smalltalk customer is having the ability to use Cincom SupportWeb to solve issues that may come up using our products. But, do […]

The post The Extra Value for Cincom Smalltalk™ Customers Using Cincom SupportWeb® appeared first on Cincom Smalltalk.

Cincom Smalltalk - Smalltalk Digest: June Edition

Welcome to the June 2018 edition of the Cincom Smalltalk™ Digest. In this edition, we look at support benefits for customers, using MongoDB and Smalltalk together and monitoring Windows processes with Cincom® ObjectStudio®.

The post Smalltalk Digest: June Edition appeared first on Cincom Smalltalk.

Torsten Bergmann - Pharo Launcher v1.2 released

June 19, 2018

Cincom Smalltalk - Hidden Gems: How Cincom® ObjectStudio® Helps Monitor Windows Processes

This screencast demonstrates a tool that can explore Windows processes and resources and shows how to access low level Windows functionality from Smalltalk.

The post Hidden Gems: How Cincom® ObjectStudio® Helps Monitor Windows Processes appeared first on Cincom Smalltalk.

Cincom Smalltalk - Summer Fun with Cincom Smalltalk™ Objects and MongoDB

What Is NoSQL? In the old days, database normalization was the thing. Data was to be broken apart into its tiniest constituent pieces, with each being a component stored in […]

The post Summer Fun with Cincom Smalltalk™ Objects and MongoDB appeared first on Cincom Smalltalk.

Cincom Smalltalk - How To Use Version Control with Cincom Smalltalk™

Version control is an important part of software configuration management and typically deals with changes to documentation, computer programs and other forms of information that is collected. So why is […]

The post How To Use Version Control with Cincom Smalltalk™ appeared first on Cincom Smalltalk.

June 18, 2018

Pharo Weekly - [Ann] Iceberg V1.1.1

Hi everybody,

This week we have a small patch release of Iceberg, version v1.1.1.
This version will be available in the next Pharo build.

In summary, this release fixes two issues with the new credentials manager,
and introduces a couple of other enhancements/bugfixes.

Below you will find the detailed changes log.

Integrate Iceberg 1.1.1

#864 <> Repairing Missing
repositories lead to wrong source directory
#861 <> update tonel to
#836 <> DefaultBackendType
class variable is unused
#862 <> Iceberg tests are
not running in Pharo 7
#852 <> Make error dialogs
#858 <> IceTipReadOnlyTextMorph
does not allow select and copy anymore
#850 <> Change Detached head
status from error to warning if we are on a tag
#853 <> Clone dialog
"username" is confusing
#860 <> CredentialStore API
#854 <> Error in History

Pharo Weekly - Collecting sensor data with PharoThings

On this page you can see the temperature, humidity and pressure data of my room in Inria, in real time (or almost real, 10 min between the data …)

Allex Oliveira

Screen Shot 2018-06-18 at 14.03.53.png

Pharo Weekly - News from PharoThings

The first words of PharoThings on LCD HD44780.

The breadboard is to better organize the components. It’s easier manipulate the wires using it.

In that breadborad, I has 3 sensors (MCP9808, BME280, ADXL345), 2 leds, 2 buttons and 1 LCD. The potentiometer is to control the energy power to LCD.
More volts is more contrast on LCD.
Allex Oliviera


June 15, 2018

Pharo Weekly - 1500 pull requests closed :)


As of today, we closed 1500 pull requests: <>

These of course range from trivialities to merging sub-systems with hundreds of commits…


June 14, 2018

Pharo Weekly - [Ann] Gt Documenter


We are happy to announce a new leap of GToolkit Documenter, the tool for manipulating live documents directly in the development environment:

Documenter is part of the second generation GToolkit project, it is based on Bloc and works with the latest Pillar. It is mainly developed by Juraj Kubelka.

Attached you can see a preview of how documents look like:

At its core it offers a live editor for manipulating Pillar documents. The interaction happens seamlessly directly in the text editor, and it can be combined with different types of previews to serve several classes of use cases:
	• code documentation
	• tutorials
	• interactive data notebook

Code documentation
Documenter complements the GToolkit Examples engine to redefine code documentation. When practicing example-driven development, examples get written as part of the typical development. Once examples exist, they can be quickly put together in a document to form documentation. For example, the linked picture shows the comment of a class containing a visual explanation:

You can see a live example of documentation by inspecting the following snippet:
	GtDocumenter editorForText: BrToggleExamples comment. 

Documenter offers a new experience of writing tutorials for Pharo by enabling the creation and embedding of Epicea change sessions directly in the document. For example, take a look at the following animation:

The document shows a method on top, and a change preview at the bottom showing both the code and the associated diff to the state from the image. Applying the change updates both the change view (no more diff), and method preview. This speeds up significantly the process of going through a tutorial. Furthermore, given that now the document shows the diff to the current image, the reader can safely explore alternative scenario and come back to the tutorial at any time without losing the overview.

The size of the preview can also be adjusted live:

You can see a live tutorial by inspecting:
	IceRepository repositoriesLocation / 'feenkcom'/ 'gtoolkit-examples' / 'doc' / 'tutorial' / 'examples-tutorial.pillar’.

Interactive data notebook:
A Documenter document can also be used as an interactive notebook. Internally it essentially acts as a playground:
	• it supports defining variables in code snippets, and
	• the execution of code shows an embedded inspector.

For example:

An example, can be seen by inspecting:
	IceRepository repositoriesLocation / 'feenkcom'/ 'gtoolkit' / 'doc' / 'gtoolkit' / 'gtoolkit.pillar'. 

As always, please do let us know what you think.

The feenk team

Andres Valloud - Stuck keys since the 1990s

Recently, I ran into another instance of one of the shift, alt, or ctrl keys getting logically stuck.  That is, any keyboard press you make gets a gratuitous instance of shift, alt, or ctrl, as if they were held down continuously.  This is similar to the problem described here and elsewhere.

A solution to this problem is to press and hold the offending stuck key, then pressing the delete key (not backspace).  Releasing both then restores the stuck key to its working state.  If you're not sure which key is stuck, you just go through ctrl+del, alt+del, shift+del, and so on, perhaps doing both left and right keys, until you get good behavior.

I am at a loss on how to form an opinion on the problem.  I first observed this behavior in the early 1990s on machines running MS-DOS --- and the delete fix I discovered back then still works today.  What are some possible explanations for this phenomenon?

One is that keyboards today use the same hardware controller as in the 1990s, that this interface has some random race condition in it, and that nobody fixed it since then.  Another is that essentially the same keyboard software driver has been ported along since the MS-DOS era into Windows, bugs and all, and this is why the problem replicates in modern as well as museum configurations.

The software explanation seems more likely because I've seen this happen on virtualized Windows machines: while the guest OS sees stuck keys, the host keyboard behavior is correct.  It's really weird to have to type e.g. alt+del on your machine, which is working correctly, so that the guest OS also sees alt+del, so that the guest keyboard behavior is thus restored.

In other words, the museum configurations where this problem manifests itself may be real (as in the 1990s) as well as emulated (as in today).  Specifically, the latest instance of this problem occurred while running DOSBox inside Windows XP inside VMware inside OS X, and I was called to correct the issue via Skype with screen sharing.  The symptom was that pressing 'e' resulted in a new Windows Explorer window rather than the character 'e' appearing on the screen.

However, different software is not a guarantee policy against stuck keys.  I see this weird keyboard behavior happen about once a year in Windows land.  I have also seen this on OS X, although much less frequently --- perhaps once every 5 years.  I saw this happen once on Linux, too.  I've tried to find reasonable bug reports for this problem several times, but alas I haven't found a good explanation for why this happens (much less a patch or a definitive fix). 

Could anyone please find and correct this bug?  I'd be also interested in a good diagnosis that determines where the problem actually is, even if the analysis does not come with a fix.

June 12, 2018

Cincom Smalltalk - How Cincom Smalltalk™ Helps Recover Lost Code

What does Cincom Smalltalk do for code recovery? What happens to your Cincom Smalltalk code when you are writing and the power goes out and your computer goes down?  What […]

The post How Cincom Smalltalk™ Helps Recover Lost Code appeared first on Cincom Smalltalk.

Pharo Weekly - [Ann] Iceberg 1.1.0

Time for the weekly Iceberg update.
Thanks to all brave users, issue reporters and contributors :).

Key changes: we have introduced some tag support, a new credential manager to manage keys and passwords per host or repository, a new version of tonel, and made a first step towards a simplified contribution to Iceberg by listing it as Pharo's repository.

Guille in behalf of all Iceberg contributors

Following, the detailed changes log.

New Features
#842 <> Adding Credentials
#843 <> Update Tonel to 1.0.7
#823 <> Iceberg repository
should be listed as Pharo's one
#841 <> Basic tag support (
#372 <>)

#787 <> Add Windows ci with
Appveyor (not yet green!)

#827 <> Add package dialog
has some glitches
#833 <> replace #asIcon with
#832 <> Move Iceberg from
MostUsedTools to Tools
#830 <> Better handling of
not github remote urls
#825 <> Enhance Migrate to
tonel commit message
#637 <> Show tag version
instead of "Detached HEAD"
#829 <>

Bug Fixes
#835 <> Compare file
definitions by their binary uninterpreted content
#838 <> Clone from incorrect
github repository fails with DNU
#826 <> Pushing to virgin
repository raises a DNU


June 10, 2018

Pierce Ng - World Cup 2018 with Glorp

I last wrote about football.db in a Jul 2014 blog post. Four years have gone by, and the World Cup is here again. This time around, I've started building a Glorp descriptor system for the World Cup data.

football.db's data is described in YAML files which are assembled into SQLite databases using tools written in Ruby. From the constructed 2014 and 2018 World Cup databases, I've created SQL dumps and placed them in the repo. To get an SQLite database from the 2018 SQL dump file:

% sqlite3 wc2018.db < wc2018.sql

In its current state, footballdb-Glorp allows querying the initial World Cup first round group membership.

| login sess |
login := Login new
  database: UDBCSQLite3Platform new;
  host: '';
  port: '';
  username: '';
  password: '';
  databaseName: '/tmp/wc2018.db';
sess := OFDescriptor sessionForLogin: login.
sess login.
[   Transcript clear.	
    (sess read: OFTournamentTeam) do: [ :ea |
      Transcript show: ea group title , ' - ', ea team title; cr ]
] ensure: [ sess logout ].

This Glorp descriptor may not be completed in time for this World Cup which is starting in a few days, but will be in time for the next one for sure! :-) Load it thusly:

Metacello new 
  repository: 'github://PierceNg/footballdb-Glorp:master/repo';
  baseline: 'OpenFootball';

June 07, 2018

Clément Béra - Free chunk management in the Cog VM

Hi all,

Recently I have been working on a new compactor algorithm for the Cog VM. The full GC is right now a stop the world Mark-Compact algorithm. In heaps of 1-2Gb, Between 30 and 50% of the full GC pause time is currently spent in the compaction phase. The rest of the pause is mostly due to the marking phase, but also some other things (managing mmap, etc.). I am currently trying to decrease the compaction time by a factor of 4 (according to preliminary results) while using only in the common case an extra memory region (defaulted to 16Mb) whichever heap size is used. The new compaction algorithm is a hybrid Mark-Sweep-Compact, which compacts only part of the heap at each full GC based on the current occupation of the memory regions.

But! This post is not about the new compaction algorithm. It is about the recent changes I am introducing in the free chunks management to support efficient free chunks merges.

Free chunks are all referenced from a freelists object, known by the VM, as shown on the following figure. Since small free chunks are the most common, the freelists object includes a fixed number of fields to optimize free chunks allocation / deallocation of small free chunks. The exact number is based on the numFreeLists VM setting, X on the figure, currently 32 or 64 fields depending on word size.


Slots 1 to X for the freelists objects refers to the first free chunk of the given size, in allocationUnits (currently 64 bits). Since in Spur every object has at least a single field to support the forwarding object scheme, each free chunk has at least 1 field. This first field of each free chunk is abused to organize the chunks as a linked list. The first free chunk of size 1 points to the next one, etc.

With the linked list design, allocation is very efficient, but detaching a free chunk from the list may cost a lot (the VM may need to iterate over the whole list). Because of my new compaction algorithm, I needed to be able to detach efficiently free chunks to merge unmarked objects and free chunks to larger chunks during the sweep phase.

To solve this issue, I made today the free chunk linked list a double linked list. To do so, I needed 2 fields per objects. In 32 bits, that’s not a problem since the allocation unit is 64 bits and each object requires at least a field for the forwarding object scheme. In 64 bits, I had to keep free chunks of size 1 in a single linked list, and detaching a free chunk of this specific size still requires to iterate over the whole linked list. The figure shows the 64 bits case, where free chunks of size 1 are organized as a single linked list, and larger free chunk as double linked lists.

Free chunks larger that X are managed differently, they’re managed through a simplified version of the AVL tree with naive rebalancing which in practice is very efficient. For large free chunks, the first 5 fields are abused (we assume X >= 5). Each node in the tree is a double linked list with the free chunks of the specific size, re-using the first two fields as for the small chunks. The next three fields are used to represent the binary tree connections, parent is the parent in the tree (0 for the root), smallerIndex is the first child (a chunk with a smaller size) and largerIndex the second child (a chunk with a larger size).

With the double linked list scheme, detaching a free chunk does not require any more to walk linked list of the tree, the VM can just check the prev/parent relationships and remove the chunk. This sped-up drastically the sweep phase (most of the time was in detachFreeObject:) but it addition it improved the current production compactor which was also trying to merge free chunks in some cases.

I hope you enjoyed the post.