Monthly Archives: September 2015

Multiple Desktops for Pharo

Julien Delplanque provided this week a goodie to switch between 
"desktops" - but his initial solution was more or less hiding windows
and not really switching between real Pharo worlds/desktops.

I gave him some tips what could be done on the pharo-user list. Havent heard
from him afterwards.

Now I was able to spend a few hours on this topic myself and implemented 
a full multiple desktop solution myself.

This works in Pharo 5 only (currently) and requires latest VM (at least on Windows)
from files.pharo.org to get the keyboard shortcuts right.

To try:

  Gofer new
    smalltalkhubUser: 'TorstenBergmann' project: 'DesktopManager';
    configuration;
    loadDevelopment.

The goodie has some nice features like keyboard navigation, world menu
integration and even a custom spotter with preview of the desktops.

Quick start:
===========
 - evaluate the above expression in a Pharo 5 image
 - check the world menu "Desktop"
 - you can press CTRL + D and then CTRL + A (= Desktop Add) to add a new desktop 
 - you can press CTRL + D and then CTRL + D (= Desktop Desktop) to open the overview
 - you can press CTRL + D and then CTRL + P (= Desktop Previous) to navigate to the previous desktop
 - you can press CTRL + D and then CTRL + N (= Desktop Next) to navigate to the next desktop

The code is hopefully a good example on how to build a custom spotter, shortcuts, inspector extensions, ...
Additionally all this is described in a new article including screenshots
and a guide on how to use this new goodie:

   https://medium.com/@astares/multiple-desktops-for-pharo-5cbc46f3179f

Actually the article took more time to write than coding but I hope 
it helps explaining Pharo and why it is a power tool. 

Project is on http://www.smalltalkhub.com/#!/~TorstenBergmann/DesktopManager
Article and code is still subject to change.

Have fun
T.

Ephemeric Cloud to a MongoDB hosted at Digital Ocean

Hello,

Good news everyone! :)

Today I have successfully connected an application published in
Ephemeric Cloud to a MongoDB hosted at Digital Ocean!

http://eph-f2e2bcac.swarm.pharocloud.com/todo

It became possible due to a stunnel support implemented in Ephemeric
Cloud runtime – the utility allows to create secure tunnels between
applications. Thus the communication between an ephemeric instance and
a droplet is encrypted and safe. Configuration is extremely simple –
just put a stunnel.conf and the certificate files to your Image
archive before publishing it.

This approach is universal and it allows to connect Pharo Images to
any service providers or dedicated servers. Therefore Ephemeric cloud
becomes more than just Pharocloud but an universal tool to develop and
publish Pharo web applications. Another good thing is that it has a
free tier :)

Please try it out and tell me what you think.

You can find some documentation here:
https://www.pharocloud.com/kb/tutorial/connect_ephemeric_to_digital_ocean

Cheers,
Mike

Steady improvements….steadily

50327
16500 Remove senders of subscribe:send:to: in the image
https://pharo.fogbugz.com/f/cases/16500

16564 Remove senders of Announcer>>#subscribe:send:to: in Tool-Workspace
https://pharo.fogbugz.com/f/cases/16564

16562 Remove senders of Announcer>>#subscribe:send:to: in Tool-FileList
https://pharo.fogbugz.com/f/cases/16562

16553 TabModel/TabModelManager are not setting owner:
https://pharo.fogbugz.com/f/cases/16553

50326
16420 Remove #changeRecordsAt: from TBehavior
https://pharo.fogbugz.com/f/cases/16420

16580 #after block sequence
https://pharo.fogbugz.com/f/cases/16580

16579 parentScopeFor: not used
https://pharo.fogbugz.com/f/cases/16579

50325
16576 more tests for Primitives
https://pharo.fogbugz.com/f/cases/16576

14294 request: should be in charge of its argument translation and not its clients
https://pharo.fogbugz.com/f/cases/14294

16572 Fix “-override” method unload
https://pharo.fogbugz.com/f/cases/16572

50324
16561 Remove senders of subscribe:send:to: in GToolkit
https://pharo.fogbugz.com/f/cases/16561

16501 Remove senders of subscribe:send:to: in Glamour
https://pharo.fogbugz.com/f/cases/16501

50323
16566 Replace WriteStream with writeStream message send in AST-Core
https://pharo.fogbugz.com/f/cases/16566

16556 Nautilus selection announcements intersect as they are in a hierarchy
https://pharo.fogbugz.com/f/cases/16556

16539 System-Changes and Compression should not depend on Graphics-Display Objects
https://pharo.fogbugz.com/f/cases/16539

50322
16557 FileSystem-Core should not depend on Regex-Core
https://pharo.fogbugz.com/f/cases/16557

16550 Bad BlueInk block formatting
https://pharo.fogbugz.com/f/cases/16550

16558 Collections-Abstract should not depend on Regex-Core
https://pharo.fogbugz.com/f/cases/16558

50321
16559 fix for #instead links
https://pharo.fogbugz.com/f/cases/16559
50320
16546 Integrate Versionner
https://pharo.fogbugz.com/f/cases/16546

50319
16503 Remove senders of subscribe:send:to: in Rubric
https://pharo.fogbugz.com/f/cases/16503

50318 https://github.com/pharo-project/pharo-core/commit/235654f721ea98534fb69ba6f532dae458fe738a

16545 Improve #after on sequence node
https://pharo.fogbugz.com/f/cases/16545

16498 unrecoverable changes
https://pharo.fogbugz.com/f/cases/16498

16548 Undeclared ivar in PragmaCollector
https://pharo.fogbugz.com/f/cases/16548
50317
https://github.com/pharo-project/pharo-core/commit/4cfe70b2c80c49214510341c61034174732b4633
16541 type relase vs release in SyntaxErrorDebugger
https://pharo.fogbugz.com/f/cases/16541

16526 CubeHelix class example throws assertion error
https://pharo.fogbugz.com/f/cases/16526

16509 MenuTitleMorph for MenuMorph
https://pharo.fogbugz.com/f/cases/16509

50316
https://github.com/pharo-project/pharo-core/commit/ebeab31b72394e8f5bd6d5d690db851572d95b03
15845 Integrate DependencyAnalyzer
https://pharo.fogbugz.com/f/cases/15845

16530 Monticello setting weird
https://pharo.fogbugz.com/f/cases/16530
50315
https://github.com/pharo-project/pharo-core/commit/0bb6eae9be8c71f528a174d29e948387d4e910b1
16533 Multilingual-Languages and Multilingual-Encondings should not depend on Text-Scanning
https://pharo.fogbugz.com/f/cases/16533

16520 Help topic for how to contribute to Pharo basecode
https://pharo.fogbugz.com/f/cases/16520
50314
https://github.com/pharo-project/pharo-core/commit/8afa388a82651c08ea4af40f346923593f6868ce
16524 Assignment is misspelled in RBAssignmentInIfTrueRule>>#rationale
https://pharo.fogbugz.com/f/cases/16524

16515 Adding an instance variable to Model broken by QualityAssistant
https://pharo.fogbugz.com/f/cases/16515

16454 BlueInk block formatting
https://pharo.fogbugz.com/f/cases/16454

16521 Help topic for contributing to the catalog
https://pharo.fogbugz.com/f/cases/16521

50313
16512 “Save As” should increment a version number
https://pharo.fogbugz.com/f/cases/16512

16517 Update manifest for the bootstrap
https://pharo.fogbugz.com/f/cases/16517

16411 implementors of announcer not subclass of Model should be subclass of Model
https://pharo.fogbugz.com/f/cases/16411
50312 https://github.com/pharo-project/pharo-core/commit/cb634202202449e568ea5a8ee049fa49b43dcaed
16496 Provide context menu icons in Catalog browser
https://pharo.fogbugz.com/f/cases/16496

15374 exception handling when running tests in Nautilus
https://pharo.fogbugz.com/f/cases/15374

16511 Smalltalk saveAs should include the current image name as the initial text in the file dialogue
https://pharo.fogbugz.com/f/cases/16511
50311
16504 NewVersionBrowser and RGMethodDefinition vs. CompiledMethod
https://pharo.fogbugz.com/f/cases/16504

16496 Provide context menu icons in Catalog browser
https://pharo.fogbugz.com/f/cases/16496

16487 Dropping methods on empty areas of class/method category pane raises SubscriptOutOfBounds
https://pharo.fogbugz.com/f/cases/16487

http://files.pharo.org/image/50/50311.zip
50310
https://github.com/pharo-project/pharo-core/commit/d9bb19202f1c607107a3a1b7d6ba3c9d5b8c4b0a
16493 Syntax highlighting in Rubric need to highlight characters
https://pharo.fogbugz.com/f/cases/16493

16507 Simplify test running of Nautilus
https://pharo.fogbugz.com/f/cases/16507

16506 Ensure wrapping #after for MethodNode
https://pharo.fogbugz.com/f/cases/16506

16502 simple nautilus cleans
https://pharo.fogbugz.com/f/cases/16502

50309
16499 Reflectivity and Primitive: Unwrap when destroying Twin, copy over links to wrapper
https://pharo.fogbugz.com/f/cases/16499
50308 https://github.com/pharo-project/pharo-core/commit/56e3cce6d903a8bdca1427aad2d90eb15627d7e6
16495 Reflectivity: Wrap primitive methods
https://pharo.fogbugz.com/f/cases/16495

16039 put a space between numbers and units
https://pharo.fogbugz.com/f/cases/16039

50307 https://github.com/pharo-project/pharo-core/commit/96f3ceffe16fa3c72e2ba9e7c7590e00118c4d2f

16483 AST-Core should not depend on System-Localization
https://pharo.fogbugz.com/f/cases/16483

16472 Minor improvements to MenuMorph (2)
https://pharo.fogbugz.com/f/cases/16472

16492 no syntax highlighting if last expression is invalid code
https://pharo.fogbugz.com/f/cases/16492

50306
16485 Class panes not refreshed when changing package
https://pharo.fogbugz.com/f/cases/16485

16479 Creating a class in an empty environment
https://pharo.fogbugz.com/f/cases/16479

16481 #instead for Block
https://pharo.fogbugz.com/f/cases/16481

50305
16413 Model should be packaged outside System-Support
https://pharo.fogbugz.com/f/cases/16413

16482 Better default size for MCBrowser
https://pharo.fogbugz.com/f/cases/16482

16460 I fileout a package does not fileout metaclass extension
https://pharo.fogbugz.com/f/cases/16460
50304
16475 Nautilus sends too many announcements for a single action
https://pharo.fogbugz.com/f/cases/16475

16477 Fixes: #before on sequence, after on Block
https://pharo.fogbugz.com/f/cases/16477
50302
16452 Improve Morph>>layoutProportionallyIn:
https://pharo.fogbugz.com/f/cases/16452

16471 Pass over #after: make after work for assignment
https://pharo.fogbugz.com/f/cases/16471

50301
14432 FreeTypeTests package should be FreeType-Tests
https://pharo.fogbugz.com/f/cases/14432

14427 CompressionTests package should be Compression-Tests
https://pharo.fogbugz.com/f/cases/14427

14434 MorphicTests package should be Morphic-Tests
https://pharo.fogbugz.com/f/cases/14434

50300
16461 ChunkFileParser
https://pharo.fogbugz.com/f/cases/16461

16459 Refactoring remove method parameter doesnt work
https://pharo.fogbugz.com/f/cases/16459

16457 Minor improvements to MenuMorph
https://pharo.fogbugz.com/f/cases/16457

50299
ConfigurationOfRubric
16464 Smart suggestion is broken
https://pharo.fogbugz.com/f/cases/16464

16458 #instead for MethodNode
https://pharo.fogbugz.com/f/cases/16458

16455 Spotter dying on not understanding #canUnderstand:
https://pharo.fogbugz.com/f/cases/16455

http://files.pharo.org/image/50/50299.zip
50298
14426 BalloonTests package should be Balloon-Tests
https://pharo.fogbugz.com/f/cases/14426

14437 NetworkTests package should be Network-Tests
https://pharo.fogbugz.com/f/cases/14437

16449 update bootstrap dependencies v2
https://pharo.fogbugz.com/f/cases/16449

11461 TabModel not really removed tabs
https://pharo.fogbugz.com/f/cases/11461
50297
ConfigurationOfRubric

50296
16448 #instead for Array
https://pharo.fogbugz.com/f/cases/16448

16444 ASt-Core should not have a BlueInk rpackage tag
https://pharo.fogbugz.com/f/cases/16444

16438 Deprecate Color>>printHtmlString and Color>>asHTMLColor
https://pharo.fogbugz.com/f/cases/16438

14765 Missing calls of “super release” in #release methods
https://pharo.fogbugz.com/f/cases/14765

50295
Jobs-Tests

50294
16442 ShoreLine Reporter version 0.2.0
https://pharo.fogbugz.com/f/cases/16442

15307 Error message not clear when trying to create a class with a name without the first letter in upper case
https://pharo.fogbugz.com/f/cases/15307

50293
16391 Switching hierarchy visually removes selection of a protocol
https://pharo.fogbugz.com/f/cases/16391

14268 RBSentNotImplementedRule: checking for general senders is disabled
https://pharo.fogbugz.com/f/cases/14268
50292
15941 Color>>printHtmlString and Color>>asHTMLColor are similar
https://pharo.fogbugz.com/f/cases/15941

16416 spec predebug notification window should use text without code highlighting
https://pharo.fogbugz.com/f/cases/16416

16267 Fasttable isnt visible in athens (in bloc)
https://pharo.fogbugz.com/f/cases/16267

50291
16370 retryOnCredentialRequest: introduces a lot of repeated code and dependencies into monticello
https://pharo.fogbugz.com/f/cases/16370

16248 Remove unused ClassCategoryReader and ClassCommentReader
https://pharo.fogbugz.com/f/cases/16248

16439 improve #isUsed a little
https://pharo.fogbugz.com/f/cases/16439
50290
16435 add Context>>#sourceNodeExecuted
https://pharo.fogbugz.com/f/cases/16435

16434 can not inspect block methods (RBUnpackagedRule)
https://pharo.fogbugz.com/f/cases/16434

16426 new OSWindow integration to clean up wrong merge
https://pharo.fogbugz.com/f/cases/16426

50289
16340 ExternalBrowser or “Recover lost changes” broken
https://pharo.fogbugz.com/f/cases/16340

16432 add Color>>#asHexString
https://pharo.fogbugz.com/f/cases/16432

16421 ChunkWriter does not save correctly wideStrings
https://pharo.fogbugz.com/f/cases/16421

16433 simplify #unreferencedKeys
https://pharo.fogbugz.com/f/cases/16433
50288
16431 Announcements with QualityAssistant
https://pharo.fogbugz.com/f/cases/16431

16417 instant Syntax Error Notification
https://pharo.fogbugz.com/f/cases/16417

16423 Replace == nil with isNil in AST-Core
https://pharo.fogbugz.com/f/cases/16423

16419 nil sourcePointer on Active Ring methods
https://pharo.fogbugz.com/f/cases/16419

Phratch 4.1

Based on Phratch 4.0 we made some bug fixes and added new small features. Phratch is now on top of Pharo 4.0.
The new features are:
– languages are more stable. Thanks to the community for the feedback and the enhancement of the language files.
– Add a “follow” option that allows one to see which block is currently executed.
Phratch 4.1 is already available on phratch.com.
If you detect an issue, you can submit a description on https://github.com/janniklaval/phratch/issues
And you can always download the latest build on the continuous integration server: https://ci.inria.fr/pharo-contribution/view/Phratch/
See you on phratch.com

“pharo get” to load catalog published software

Hi, 

This functionality is in fact in Pharo 5 since a couple of months (I added it during ESUG), but I forget to send the ANN, then probably people does not know it and then is not using it. 
This is a catalog command line handler to prepare your images from command line. For example, if I want an image with Seaside3:  

./pharo Pharo.image get Seaside3

or if you want a version:

./pharo Pharo.image get Seaside3 —version=3.1.2

since this tool is part of catalog, just catalog projects are available… but I find it very useful for prepare my images (and a lot less verbose than the config command line who is still available for non-catalog projects)

cheers, 
Esteban

New Tool: Flow message browser

A new tool to browse and dive deep into the flow of messages
using a tree representation (messages, senders, implementors, ...)
and further on. I know such a tool from Smalltalk/MT and it is really
helpful to trace a message flow without running in the debugger.

See the attached screenshot, the best is to try it: 

In a latest Pharo 5.0 image (Pharo5.0 Latest update: #50314)
you can evaluate:

  Gofer new
     url: 'http://smalltalkhub.com/mc/TorstenBergmann/MessageFlowBrowser/main';
     package: 'Tool-MessageFlowBrowser';
     load

to load it.

Then open whatever method in Nautilus and choose "Message Flow" from the context
menu. The nice thing is that you can dive into senders, implementors, messages sent 
deeper and deeper (or up again) and you do not open more and more windows but stay 
in a single window !!!

Alternatively you can start the tool from the playground:

 MessageFlowBrowser openOn: #inspect "open the flow browser on a selector"

 MessageFlowBrowser openOn: (Compiler>>#evaluate) "open the flow browser on a method"
 
 MessageFlowBrowser openOn: Object   "open the flow browser on a class"

 1 messageFlow.                      "open the flow browser on the class of an instance"


If someone with GT knowledge and time could help to correct the syntax highlighting 
in the code pane this would be super cool (see method MessageFlowBrowser #openOn:). 
Also selection could be improved to show/highlight the messages sent directly
in the code. Unfortunately I'm not so familar with the current code editors - so
any help is appreciated.

Repo is open for contribution. 

Thanks
T.

Pillar 1.1.0 is out :)

Cyril Ferlicot and I have polished Pillar 1.0.0 a little. Here is 1.1.0
changelog:

- add shebang to generated pillarPostExport.sh
- improve pillarPostExport.sh messages a little
- HTML exporter
  - output a <figure> if and only if the Pillar figure has both a
    caption and a label
- LaTeX exporter
  - output a \begin{figure} if and only if the Pillar figure has both
    a caption and a label

Cyril migrated the list of issues and feature requests from
smalltalkhub.com to

             https://github.com/pillar-markup/pillar/issues

Please report issues, describe feature requests and ask questions there.

Low traffic announce-only list

Low traffic announce-only list for Pharo and related news:

Pillar 1.0.0 is out

Hello guys!

I finished 5 months of internship into the RMoD team. I worked on Pillar
and I am glad to announce the version 1.0.0!
You can find an updated documentation of this version here :
https://ci.inria.fr/pharo-contribution/view/Books/job/EnterprisePharoBook/lastBuild/artifact/book-result/PillarChap/.

We decided with Damien Cassou to use Semetic Versioning from now (see:
http://semver.org/).

I will now explain the main changes I did on Pillar during my internship.

For each new feature I added tests and documentation.

I will begin with the changes of Pillar's structure

- The configuration system is now manage by Cocoon
(http://www.smalltalkhub.com/#!/~PharoExtras/Cocoon)
-- We now use Magritte in Cocoon

- I added Annotations : A syntax extension point

- I added Transformers : A way to transform a document model before an
export (to add a section structure in HTML for example)

- Some small refactoring.
-- Improvement of the template management
-- Improvement of the Pillar model parameters

- Improvement of the document model
-- Now the figures and links are two different entity

- I begun a PetitPillar (with PetitParser) in order to replace the old
parser too complicated.

Now I will talk about new features for the users

- Improvement of the usability of Pillar under Windows

- Beamer and Deck.js exporters

- Annotations :
-- To include a Pillar file into an other (${inputFile:path}$) (Example:
https://github.com/SquareBracketAssociates/EnterprisePharo/blob/master/EnterprisePharo.pillar)
-- To create new slides in Beamer and Deck.js (${slide:My
Title|label=optional}$)
-- To create columns into a Pillar document (currently works in Beamer,
Deck.js and HTML)
-- …

- Transformers
-- You can now add a parameter "lineNumber=true" to a script and Pillar
will transform them to add the line numbers
-- You can now import a script from an other file (see the documentation
of the scripts)
-- …

- Improvement of the errors raised by Pillar

- Addition of the inter-files links

- Improvement of the title configuration for numbering

- No need to make scripts anymore to use Pillar !
-- You can used "defaultExporters" in your configuration to do multiple
export (see documentation)
-- Pillar generate a script for LaTeX compilation (only for Unix for now)

- Possibility to export everything into a different folder (simpler to
clean after)
-- And possibility to copy some support files

For the two previous point you can take example on Enterprise Pharo
(https://github.com/SquareBracketAssociates/EnterprisePharo) and Pharo
Mooc (https://github.com/SquareBracketAssociates/PharoMooc).

This was a really cool internship :)

If you have some questions do not hesitate!

--
Cyril