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 (https://launchpad.net/~pharo/). 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: https://github.com/pharo-project/pharo-ubuntu.

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!

Advertisements

Blog translator

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

All,
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 http://readthesourceluke.blogspot.de/2014/09/block-translators-parsing-magic.html
Maybe that’s old stuff for some of you – but I hope it’s interesting for some at least 🙂
Comments and feedback appreciated.

CU,

Udo

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:
https://github.com/SergeStinckwich/SciSmalltalk/wiki/Math-FunctionFit
and math accuracy framework:
https://github.com/SergeStinckwich/SciSmalltalk/wiki/Math-AccuracyFramework

SciSmalltalk project web page is here:
https://github.com/SergeStinckwich/SciSmalltalk
All the code is available under the MIT licence.

We have more than 506 green unit tests and we run a CI job here:
https://ci.inria.fr/pharo-contribution/job/SciSmalltalk/

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 :
https://groups.google.com/forum/#!forum/scismalltalk
Tagged , ,

Network latency analysis with Pharo

Lionel Morino from the University of Bern announced his work on understanding network latency!
PastedGraphic-6
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’;
        load.
(ConfigurationOfNetworkLatency project version: ‘0.1’) load.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=–=-=-=-=
To execute the visualisation:
NLVisualise new open
PastedGraphic-4
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’;
load.
(Smalltalk at: #ConfigurationOfRoassal2) load

and you need S2py:
MCHttpRepository
location: ‘http://smalltalkhub.com/mc/ObjectProfile/S2py/main’
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 http://bergel.eu/download/papers/Berg12c-HapaoSCP.pdf
We are daily using Hapao to help us understand our tests.
Cheers,
Ricardo, Alejandro & Alexandre


_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.

Datatable support for Seaside

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

Hi folks,

This mail is just a heads-up to anybody already using DataTables
(https://datatables.net/) 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
(https://datatables.net/manual/server-side).

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';
  load.

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

The STHub is:
http://smalltalkhub.com/#!/~emaringolo/DataTables/

Regards!

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.

40224
14000 FilterTest needs to be moved to a Debugger test package
https://pharo.fogbugz.com/f/cases/14000

14004 SpecLayout>>asArray(result is shadowed)
https://pharo.fogbugz.com/f/cases/14004

14001 MethodModified>>newMethod: (newMethod is Undeclared)
https://pharo.fogbugz.com/f/cases/14001

14010 Small code critics clean of Ring
https://pharo.fogbugz.com/f/cases/14010
40223
13924 Adding a new method to a trait triggers a MethodRecategorized announcement for each user
https://pharo.fogbugz.com/f/cases/13924
40222
13971 clean asReactiveVariable -> asValueHolder
https://pharo.fogbugz.com/f/cases/13971

40221
13997 Small code critic clean of Collections-Streams
https://pharo.fogbugz.com/f/cases/13997

13992 NautilusRefactoring stores into method argument
https://pharo.fogbugz.com/f/cases/13992

13994 AJx86AssemblerTests>>testRegistersOf:(asm is shadowed)
https://pharo.fogbugz.com/f/cases/13994
40220
13901 move DoubleLinkedListTests, LRUCacheTests and TTLCacheTests from Tests
https://pharo.fogbugz.com/f/cases/13901

13996 RBSentNotImplementedRule wrong
https://pharo.fogbugz.com/f/cases/13996
40219
13993 remove two undeclared in System-Announcemetns
https://pharo.fogbugz.com/f/cases/13993

13990 RBImplementedNotSentRule slow
https://pharo.fogbugz.com/f/cases/13990
40218
13205 Temporary variable declaration in blocks
https://pharo.fogbugz.com/f/cases/13205

13989 Temporary variables not read and writen in Gofer-Core
https://pharo.fogbugz.com/f/cases/13989

13837 remove TextEditorDialogWindow autoaccept preference
https://pharo.fogbugz.com/f/cases/13837

13987 remove empty package Settings-Tools
https://pharo.fogbugz.com/f/cases/13987
40217
13985 OrderedCollection>>#do: and #reverseDo: are not consistent with the other enumerations
https://pharo.fogbugz.com/f/cases/13985

13986 move DebugSystemSettings to DebuggerModel package
https://pharo.fogbugz.com/f/cases/13986

13981 Nautilus should allow to compare two methods
https://pharo.fogbugz.com/f/cases/13981
40216
13979 PragmaMenuBuilder relies on modifying a collection while iterating over it.
https://pharo.fogbugz.com/f/cases/13979

13983 Temporary variables not read AND written in LinkedList
https://pharo.fogbugz.com/f/cases/13983

13984 Temporary variables not read and written in ByteString class>>#initialize
https://pharo.fogbugz.com/f/cases/13984
40215
13421 Problem in Monticello and the cached packages
https://pharo.fogbugz.com/f/cases/13421

40214
13955 Rewrite Lint rules to use common tools
https://pharo.fogbugz.com/f/cases/13955

40213
13928 Failing test: RBSearchTest>>#testAllSearches
https://pharo.fogbugz.com/f/cases/13928

13865 Cleaning menuMorph
https://pharo.fogbugz.com/f/cases/13865

40212
13977 Temporary variable list is not read nor write in AnnouncementSpy>>#build
https://pharo.fogbugz.com/f/cases/13977

13976 MNU formattedCode on EyeSyntaxTreeInspector showing a RBLiteralNode
https://pharo.fogbugz.com/f/cases/13976

13962 canPerform: same as canUnderstand:
https://pharo.fogbugz.com/f/cases/13962

13943 Nautilus Refactoring 8: rename “showHierarchy”
https://pharo.fogbugz.com/f/cases/13943
40211
13974 creating menus for ListModels is broken
https://pharo.fogbugz.com/default.asp?13974
40210
13888 Clean the use of spec to initialize widget in the morphicAdapter hierarchy
https://pharo.fogbugz.com/f/cases/13888

40208
13964 The examples in class WidgetExamples should be on the class side
https://pharo.fogbugz.com/f/cases/13964

13966 Cleanup MorphicTests package
https://pharo.fogbugz.com/f/cases/13966

13963 Cleanup Morphic-Widgets-Tree package
https://pharo.fogbugz.com/f/cases/13963

13968 Provide clickable examples for Athens
https://pharo.fogbugz.com/f/cases/13968

13970 Fix category typo in ProtoObject
https://pharo.fogbugz.com/f/cases/13970

40207
13937 Unused methods in Slot package
https://pharo.fogbugz.com/f/cases/13937

13961 Job examples should be executable
https://pharo.fogbugz.com/f/cases/13961

13965 Clean method announcements : fix Monticello-Tests bug
https://pharo.fogbugz.com/f/cases/13965

40206
13956 Clean method announcements – step 3
https://pharo.fogbugz.com/f/cases/13956

40205
13954 Clean method announcements – step 2
https://pharo.fogbugz.com/f/cases/13954

40204
13953 Clean method announcements – step 1
https://pharo.fogbugz.com/f/cases/13953

40203
13927 Failing test: #testCurrentPackagesDoesNotContainScriptLoader
https://pharo.fogbugz.com/f/cases/13927

13960 Growl example in comment deprecated
https://pharo.fogbugz.com/f/cases/13960

7591 in 4.0, unskip #testMethodsWithUnboundGlobals
https://pharo.fogbugz.com/f/cases/7591

40202
13849 PointerExplorer item menu needs PointerEyeElement to implement #accessorCode
https://pharo.fogbugz.com/f/cases/13849

12503 unreferenced parameter in SortHierarchically>>buildHierarchyForClasses:fromPackage:
https://pharo.fogbugz.com/f/cases/12503

13861 make NOCController default OController
https://pharo.fogbugz.com/f/cases/13861

40201
13952 Pool access lookup crash
https://pharo.fogbugz.com/f/cases/13952

13811 Improve Pharo Environment Help Text
https://pharo.fogbugz.com/f/cases/13811

13929 RBBasicLintRuleTest class implements protocols
https://pharo.fogbugz.com/f/cases/13929

13930 remove empty packages NOCompiletion and NECompletion-Tests
https://pharo.fogbugz.com/f/cases/13930

40200
13915 Remove apparently unneeded reference to ThreadSafeTranscript
https://pharo.fogbugz.com/f/cases/13915

13951 Small Settings Cleanup
https://pharo.fogbugz.com/f/cases/13951

40197
13938 Opal, custom compilers and class side methods
https://pharo.fogbugz.com/f/cases/13938

Seaside 3.1.3 is released

Seaside one of the most exciting web frameworks http://www.seaside.st 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

[1] https://code.google.com/p/seaside/wiki/Seaside313Changelog

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... http://smalltalkhub.com/#!/~BenComan/PointerDetective cheers -ben
attachment-0001

Another week of improvements in PharoLand

40196
13941 [FEATURE]: Configuration Browser: Switch to Any Repository
https://pharo.fogbugz.com/f/cases/13941

13938 Opal, custom compilers and class side methods
https://pharo.fogbugz.com/f/cases/13938

40194
13897 check for argument assignments (block and method argumentts)
https://pharo.fogbugz.com/f/cases/13897

40193
13413 Support string operations in AsmJit
https://pharo.fogbugz.com/f/cases/13413

13926 Assign to args in RBRefactoryTestDataApp>>#demoRenameMethod:PermuteArgs:
https://pharo.fogbugz.com/f/cases/13926

40192
13153 Comment of FreeTypeProvider refers to FileDirectory and it should not
https://pharo.fogbugz.com/f/cases/13153

13726 Forward port Pharo4: 13725 NativeBoost crashes when reading null pointer field in a structure
https://pharo.fogbugz.com/f/cases/13726

13390 Support NB options with non-boolean values
https://pharo.fogbugz.com/f/cases/13390

40191
13911 Metacello test packages not properly unload
https://pharo.fogbugz.com/f/cases/13911

40190
13721 Failing test: RBRenameMethodTes>>#testRenameTestMethod1
https://pharo.fogbugz.com/f/cases/13721

13631 Deprecate method refactoring
https://pharo.fogbugz.com/f/cases/13631

13916 RBLiteralArrayNode uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13916

40189
13918 RBMessageNode uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13918

40188
13885 Integration report is not showing the changes integrated
https://pharo.fogbugz.com/f/cases/13885

40187
13566 should remove this kind of isKindOf:
https://pharo.fogbugz.com/f/cases/13566

40186
13865 Cleaning menuMorph
https://pharo.fogbugz.com/f/cases/13865

30855
13902 inconsistent behaviour when debugging Pharo3.0
https://pharo.fogbugz.com/f/cases/13902

13858 Backport 3.0 case 13857
https://pharo.fogbugz.com/f/cases/13858

40185
13910 Add return to Magnitude>>compareWith:ifLesser:ifEqual:ifGreater:
https://pharo.fogbugz.com/f/cases/13910

13880 store into method argument: can not recompile standardizeDevVersionString:
https://pharo.fogbugz.com/f/cases/13880

13881 Refactoring to PSMCPatchMorph to allow dispatching
https://pharo.fogbugz.com/f/cases/13881

40182
13908 RBPragmaNode uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13908

13906 Move to class refactoring gives DNU
https://pharo.fogbugz.com/f/cases/13906

13909 Instance variable previous in RBProgramNodeTest is not referenced
https://pharo.fogbugz.com/f/cases/13909

13894 Class side initialize methods should be runnable in Nautilus
https://pharo.fogbugz.com/f/cases/13894

13907 RBSequenceNode uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13907