Monthly Archives: September 2014

Ubuntu packages and their PPA looking for a maintainer

Damien Cassou the maintainer of Ubuntu package is looking for a maintainer.

He announced the following:

I’ve recently switched my Linux distribution from Ubuntu to NixOS. This means I can no longer maintain the Ubuntu packages and their PPA ( These packages need a maintainer! The good side of it is that it is not a lot of work as I did all the automating infrastructure:

Basically, the maintainer will have to launch a few shell scripts regularly (once a month for example). I will obviously be available to help the new maintainer. The community needs *you*.

Good news is: I packaged the Pharo VM for the Nix package manager which can be installed on many Unix (e.g., Linux, MacOS X, FreeBSD). And NixOS will have the Pharo VM package in its next release in October!

Blog translator

Udo Schneider wrote a nice blog article on how to use block as translators.

I just finished a blog entry. It shows how to use Smalltalk blocks as parsers/translators. E.g. translating a Block
[:customer | (customer joinDate year is: Date today year)]
into an SQL-like String
(YEAR(customers.joinDate) = 2014)
The SQL stuff is just an example – you can create nearly any output.
Check out
Maybe that’s old stuff for some of you – but I hope it’s interesting for some at least 🙂
Comments and feedback appreciated.



New release of SciST

Dear all,

we are to happy to announce SciSmalltalk v0.14

SciSmalltalk is a new Smalltalk project, similar to existing
scientific libraries like NumPy, SciPy for Python or SciRuby for Ruby.
SciSmalltalk already provide the following basic functionalities:

- complex and quaternions extensions,
- random number generators,
- fuzzy algorithms,
- Didier Besset's numerical methods,
- Ordinary Differential Equation (ODE) Solver.

Version 0.14 includes new work from Werner Kassens about function fittings:
and math accuracy framework:

SciSmalltalk project web page is here:
All the code is available under the MIT licence.

We have more than 506 green unit tests and we run a CI job here:

This version should work on Pharo 3.0/4.0 and also Squeak 4.5 (to
be confirmed).

We are a small community, we are looking for more volunteers to
contribute code and documentation. Please join us at :!forum/scismalltalk
Tagged , ,

Network latency analysis with Pharo

Lionel Morino from the University of Bern announced his work on understanding network latency!
Here is his announce!
Hi All,

I have been working on a visualisation of latency on a network. I found an interesting dataset with latency information of 140 cities around the world.
In the visualisation I show different metrics regarding latency such as from each city which other has the best/worst latency; cities that geographically are close but have high latency; far cities that have low latency; and average latency for each city.
When visualising the worst latency for each city I found that, for this network (at least), Valencia and in a minor extent Nairobi represent the worst endpoint for connections (in terms of latency). Also in the visualisation of far cities with low latency, Newmarket in Canada and Toledo in Spain concentrate the best endpoint for connections coming from Europe and North-America respectively.
Here there is a screencast:
If you want to load the code:
Gofer new smalltalkhubUser: ‘merino’
        project: ‘NetworkLatency’;
        package: ‘ConfigurationOfNetworkLatency’;
(ConfigurationOfNetworkLatency project version: ‘0.1’) load.
To execute the visualisation:
NLVisualise new open
I would be glad to have your comments and suggestions.
Best regards,
Leonel Merino

Master your tests with Hapao2

Hapao2 a great test analysis tools was released by ObjectProfile! Here is their announce:

We are happy to release Hapao2 for Pharo. Ricard Jacas and Alejandro Infante put quite some work on Spy2 (an über cool profiling framework for Pharo) and Hapao2.
Hapao2 is about assessing the test coverage of your code and is a major revamp of Hapao1, which was presented a couple of years ago by Vanessa.
Hapao2 does not only list covered and uncovered methods, as most test coverage tool on Earth will do. Hapao gives a great visualization to easily navigate in your code, assess its complexity, and give you a great visual output telling its coverage.
You need Roassal in your image:

Gofer new smalltalkhubUser: ‘ObjectProfile’
project: ‘Roassal2’;
package: ‘ConfigurationOfRoassal2’;
(Smalltalk at: #ConfigurationOfRoassal2) load

and you need S2py:
location: ‘’
user: ”
password: ”

You can run the test coverage on :
– the class classes you have modified,
– on a particular
– on a particular class category
– on the last class categories you have modified

 – on the last packages you have modified
Here is a portion of a large coverage:
Screen Shot 2014-09-16 at 12.00.11 PM
A technical description of Hapao may be found on
We are daily using Hapao to help us understand our tests.
Ricardo, Alejandro & Alexandre

Alexandre Bergel

Datatable support for Seaside

Esteban Maringolo announced the support of for Seaside.
Here is his announce. 

Hi folks,

This mail is just a heads-up to anybody already using DataTables
( or that developed a Seaside wrapper for it.
I just uploaded my initial working version of DataTables to STHub. If
your current wrapper is better than mine we can merge our efforts.

This initial version supports the basic features to instantiate a
DataTables jQuery object, plus support for AJAX+JSON responses and
also Server-side Processing

I still have to write a proper example of how to use it, but if you
load the DataTables-Magritte package it will include a
DTMagritteReport that you can use to replace the "stock" MAReport.

Once I have time I'll try to set up an example to show the different
ways it can be used. Meanwhile look at the DTMagritteReport class to
see a particular use case. It includes support for server side sorting
(multiple columns), filtering, pagination, search.

To load it with all the dependencies run:

Gofer it
  smalltalkhubUser: 'emaringolo' project: 'DataTables';
  package: 'ConfigurationOfDataTables';

(Smalltalk at: #ConfigurationOfDataTables)project development load: 'Magritte'.

The STHub is:!/~emaringolo/DataTables/


There is no such thing as an unworthy change

Every time we improve the system with a little change, the system gets better. And in Pharo we do it daily. Thank you all for all your changes and enhancements. **You** make Pharo cool.

14000 FilterTest needs to be moved to a Debugger test package

14004 SpecLayout>>asArray(result is shadowed)

14001 MethodModified>>newMethod: (newMethod is Undeclared)

14010 Small code critics clean of Ring
13924 Adding a new method to a trait triggers a MethodRecategorized announcement for each user
13971 clean asReactiveVariable -> asValueHolder

13997 Small code critic clean of Collections-Streams

13992 NautilusRefactoring stores into method argument

13994 AJx86AssemblerTests>>testRegistersOf:(asm is shadowed)
13901 move DoubleLinkedListTests, LRUCacheTests and TTLCacheTests from Tests

13996 RBSentNotImplementedRule wrong
13993 remove two undeclared in System-Announcemetns

13990 RBImplementedNotSentRule slow
13205 Temporary variable declaration in blocks

13989 Temporary variables not read and writen in Gofer-Core

13837 remove TextEditorDialogWindow autoaccept preference

13987 remove empty package Settings-Tools
13985 OrderedCollection>>#do: and #reverseDo: are not consistent with the other enumerations

13986 move DebugSystemSettings to DebuggerModel package

13981 Nautilus should allow to compare two methods
13979 PragmaMenuBuilder relies on modifying a collection while iterating over it.

13983 Temporary variables not read AND written in LinkedList

13984 Temporary variables not read and written in ByteString class>>#initialize
13421 Problem in Monticello and the cached packages

13955 Rewrite Lint rules to use common tools

13928 Failing test: RBSearchTest>>#testAllSearches

13865 Cleaning menuMorph

13977 Temporary variable list is not read nor write in AnnouncementSpy>>#build

13976 MNU formattedCode on EyeSyntaxTreeInspector showing a RBLiteralNode

13962 canPerform: same as canUnderstand:

13943 Nautilus Refactoring 8: rename “showHierarchy”
13974 creating menus for ListModels is broken
13888 Clean the use of spec to initialize widget in the morphicAdapter hierarchy

13964 The examples in class WidgetExamples should be on the class side

13966 Cleanup MorphicTests package

13963 Cleanup Morphic-Widgets-Tree package

13968 Provide clickable examples for Athens

13970 Fix category typo in ProtoObject

13937 Unused methods in Slot package

13961 Job examples should be executable

13965 Clean method announcements : fix Monticello-Tests bug

13956 Clean method announcements – step 3

13954 Clean method announcements – step 2

13953 Clean method announcements – step 1

13927 Failing test: #testCurrentPackagesDoesNotContainScriptLoader

13960 Growl example in comment deprecated

7591 in 4.0, unskip #testMethodsWithUnboundGlobals

13849 PointerExplorer item menu needs PointerEyeElement to implement #accessorCode

12503 unreferenced parameter in SortHierarchically>>buildHierarchyForClasses:fromPackage:

13861 make NOCController default OController

13952 Pool access lookup crash

13811 Improve Pharo Environment Help Text

13929 RBBasicLintRuleTest class implements protocols

13930 remove empty packages NOCompiletion and NECompletion-Tests

13915 Remove apparently unneeded reference to ThreadSafeTranscript

13951 Small Settings Cleanup

13938 Opal, custom compilers and class side methods

Seaside 3.1.3 is released

Seaside one of the most exciting web frameworks got a new release.

Hi Seaside users,

We have released Seaside 3.1.3 [1].

A big thanks to everyone involved for making this release happen!

best regards,
The Seaside Team


Pointer Detective

Ben Coman proposed a new pointer analysis tool :)

greetings all, I had an itch to scratch... I find it difficult using the tree list of the standard Pointer Explorer to track down why objects aren't garbage collected. I always fear I'm not going to notice getting caught in a reference loop. So I created a tool presenting an alternative view as a directed graph. The graph incrementally builds out from the target object as you explore it. Nodes are colourised to help manage complexity. The attached snapshot is produced from evaluating the following Workspace script... testObject := 'END5'. ref1 := { testObject. nil }. ref2 := { ref1 }. ref3 := PDTestResource new heldObject: ref2. ref1 at: 2 put: ref3. "note the reference loop this creates" PointerDetective openOn: testObject. Now I expect I'm duplicating something done before, but I couldn't find anything quickly and it was an opportunity for some goal direct learning of Morphic. Thanks to Roassal an option for a spring-force layout is provided. That code was copied rather than create a dependency, and might need to be rationalized later. The code is a bit rough from hacking around learning how to make things work, but its functional, so its time to get it out in the open. For more information please refer to the repository home page...!/~BenComan/PointerDetective cheers -ben

Another week of improvements in PharoLand

13941 [FEATURE]: Configuration Browser: Switch to Any Repository

13938 Opal, custom compilers and class side methods

13897 check for argument assignments (block and method argumentts)

13413 Support string operations in AsmJit

13926 Assign to args in RBRefactoryTestDataApp>>#demoRenameMethod:PermuteArgs:

13153 Comment of FreeTypeProvider refers to FileDirectory and it should not

13726 Forward port Pharo4: 13725 NativeBoost crashes when reading null pointer field in a structure

13390 Support NB options with non-boolean values

13911 Metacello test packages not properly unload

13721 Failing test: RBRenameMethodTes>>#testRenameTestMethod1

13631 Deprecate method refactoring

13916 RBLiteralArrayNode uses #to:do: instead of #with:do: (Coding Idiom Violation)

13918 RBMessageNode uses #to:do: instead of #with:do: (Coding Idiom Violation)

13885 Integration report is not showing the changes integrated

13566 should remove this kind of isKindOf:

13865 Cleaning menuMorph

13902 inconsistent behaviour when debugging Pharo3.0

13858 Backport 3.0 case 13857

13910 Add return to Magnitude>>compareWith:ifLesser:ifEqual:ifGreater:

13880 store into method argument: can not recompile standardizeDevVersionString:

13881 Refactoring to PSMCPatchMorph to allow dispatching

13908 RBPragmaNode uses #to:do: instead of #with:do: (Coding Idiom Violation)

13906 Move to class refactoring gives DNU

13909 Instance variable previous in RBProgramNodeTest is not referenced

13894 Class side initialize methods should be runnable in Nautilus

13907 RBSequenceNode uses #to:do: instead of #with:do: (Coding Idiom Violation)