Planet Squeak

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

November 19, 2017

Torsten Bergmann

Grease for Squeak 6 and Pharo 7

The Grease portability library now loadable on Squeak-trunk (Squeak 6) and Pharo-alpha (Pharo 7)

by Torsten (noreply@blogger.com) at November 19, 2017 10:41 AM

Pharo deployments based on minimal image

A step to step tutorial for prepare the minimal image for deploy is here. More details are here.

by Torsten (noreply@blogger.com) at November 19, 2017 10:40 AM

November 17, 2017

Historical - Bert Freudenberg

Emulating Smalltalk-76

If you got as excited as me about Dan Ingalls' live Smalltalk-76 demo on an actual 1970's Xerox Alto, you may have wanted to try it yourself. This is actually possible, and here is how:

First, you need an emulator for the Alto computer. Ken Shiriff posted a nice piece on how to run ContrAlto on Windows. It is written in C# and I got it to work on my Mac using Mono. So here's a step-by-step:

  1. Install Mono from http://www.mono-project.com/download/
  2. Download ContrAlto-mono.zip from https://github.com/livingcomputermuseum/ContrAlto/releases
  3. Download this Smalltalk-76 disk image: http://www.bitsavers.org/bits/Xerox/Alto/disk_images/chm/xmsmall.zip
  4. Unzip both ContrAlto-mono.zip and xmsmall.zip in the same folder.
  5. In a terminal, change to the ContrAlto directory and run mono Contralto.exe. This opens the Alto screen in a new window, and the emulator control in the terminal. 
  6. (if you get an error about a missing SDL library at this point, install that via homebrew)
  7. At the emulator's ">" prompt, type load disk 0 xmsmall.dsk and then start:
    $ mono Contralto.exe
    ContrAlto v1.2.2.0 (c) 2015-2017 Living Computers: Museum+Labs.
    Bug reports to joshd@livingcomputers.org

    You are at the ContrAlto console.  Type 'show commands' to see
    a list of possible commands, and hit Tab to see possible command completions.
    >load disk 0 xmsmall.dsk
    Drive 0 loaded.
    >start                  
    Alto started.

    >
  8. In the Alto screen window, type resume xmsmall.boot to start up Smalltalk-76:
      
  9. And now you should see Smalltalk-76 running!
  10. There is no explicit "save" option. The OOZE object swapping system continuously writes objects to the disk. Use "quit" from the main menu to flush all objects back to disk.
Note that you will need a 3 button mouse to properly interact with the system. On my MacBook, I installed MagicPrefs to emulate a third mouse button. After installing, in MagicPref's "MacBook Trackpad" section, for "Three Finger Click" choose "Middle Click".

You will also need some keyboard shortcuts to access the special characters in Smalltalk-76:
ctrl A             ≤ (less or equal)
ctrl B             bold
ctrl C             user interrupt
ctrl F             ≡ (identical)
ctrl G             ◦ (index operator)
ctrl I             italic
ctrl N             ≠ (not equal)
ctrl O             ↪ (quote)
ctrl Q             ⇑ (return)
ctrl R             ≥ (greater or equal)
ctrl S             's (eval operator)
ctrl T             ┗  (prompt)
ctrl U             ¬ (unary minus)
ctrl X             clear emphasis
ctrl /             ⇒ (if then)
ctrl =             ≡ (identical)
ctrl shift =       ≠ (not equal)
ctrl \             ≠ (not equal)
ctrl ]             ⌾ (create point)
ctrl [             ◦ (index operator)
ctrl :             ⦂ (open colon)
ctrl '             ↪ (literal quote)
ctrl <             ≤ (less or equal)
ctrl >             ≥ (greater or equal)
shift -            ¬ (unary minus)
cursor down        doit (in dialog view)
To learn Smalltalk-76, the User Manual is a good starting point:
http://xeroxalto.computerhistory.org/Filene/Smalltalk-76/.document.press!1.pdf

Have fun!

by Bert (noreply@blogger.com) at November 17, 2017 10:28 PM

November 16, 2017

PharoWeekly

Willow web

Hi,

We’re happy to announce the general availability of Willow and it’s related projects in the Web Stack ecosystem hosted at https://github.com/ba-st/.
Willow is a Web Interaction Library that eases the burden of creating AJAX-based web applications. The project goals are:

  • Provide a Smalltalk protocol for the interactive behavior of web components
  • Reify the pieces of a web application to improve reuse
  • Offer a simple and polymorphic protocol for different front-end frameworks.

It’s MIT licensed and built on top of the Seaside Web Framework providing a set of composable components and easier AJAX interaction. It’s intented to work alongside the RenoirSt DSL to define the CSS of your application.

This is a multi-release announcement of the following related projects:

  • Willow v4.0.0 : Core features, components and commands
  • Willow-Bootstrap v4.0.0 : Bootstrap 3 integration, components and plugins
  • Willow-JQueryUI v4.0.0 : JQuery UI integration and components.
  • Willow-SpinKit v1.0.2 : Spinner components
  • Willow-Playground v1.0.0 : An interactive presentation introducing the project and two example applications: Web Based Test Runner and Live Docs.
  • RenoirSt v3.3.0 : CSS DSL. [ Latest Changes: Updated Seaside dependencies (for the Seaside extensions groups) and added Pharo 7 to the build matrix. ]

SemanticUI integration is still a work in progress.

We’ve started working on a more complete tutorial and a Pharo booklet.

Anyone interested in joining our ba-st projects is welcome

Regards,

Gabriel Cotelli, Maxi Tabacman and all the contributors.Regards,

Gabriel Cotelli, Maxi Tabacman and all the contributors.


by Stéphane Ducasse at November 16, 2017 04:52 PM

Bloc Beta 01

Feenk announced Bloc beta 01
We are happy to announce #bloc beta01 for @pharoproject:
https://github.com/pharo-graphics/Bloc

Bloc will radically change the perception of Pharo. 🙂


by Stéphane Ducasse at November 16, 2017 09:24 AM

Token Based Syntax Highligter

A nice article from Julien Delplanque

https://medium.com/@juliendelplanque/hacking-a-simple-syntactic-highlighter-around-specs-textmodel-44ba2e2b1ab9


by Stéphane Ducasse at November 16, 2017 09:16 AM

November 12, 2017

PharoWeekly

Pharo-Chrome as a scraping solution

Most of the web pages I want to scrape use javascript to construct the
DOM, which makes Soup. XMLHTMLParser, etc. useless.

I’ve extended Torsten’s Pharo-Chrome library and use that to navigate
the DOM in a way similar to Soup:

https://github.com/akgrant43/Pharo-Chrome

This gets around the issue with javascript since it waits for the
browser to load the page, run the javascript and construct the DOM.

HTH,
Alistair


by Stéphane Ducasse at November 12, 2017 01:45 PM

November 11, 2017

Ben Coman

Pharo PDF Rendering, part 1, building PDFium

Background For a while now I’ve been wanting to render PDFs inside Pharo.  A few external libraries existed but none had suitable licenses.  Recently I bumped into PDFium – the Foxit renderer open sourced by Google out of Chrome for … Continue reading

by Ben Coman at November 11, 2017 04:10 PM

PharoWeekly

Easy I18N for Pharo

Need an easy translation framework for your Pharo application
with no external dependency?

Then check out the I18N project:

  http://smalltalkhub.com/#!/~TorstenBergmann/I18N

Docu and examples can be found on the same page, screenshot
is attached.

Bye
T.

by Stéphane Ducasse at November 11, 2017 11:11 AM

Bloc’s feenk log

Hi,

Over the past couple of weeks Alex worked on stabilizing a first beta01 version for Pharo 6.1:
https://twitter.com/feenkcom/status/929031849879461889

This is available as a beta01 tag in the pharo61 branch here:
https://github.com/pharo-graphics/Bloc/tree/beta01

The main readme was updated with instructions and links:
https://github.com/pharo-graphics/Bloc

An overview of the improvements:
– improved animations support that also works for scaling
https://twitter.com/feenkcom/status/927617393194610693
– improved debugging support for transformations
https://twitter.com/feenkcom/status/926040946130612224
– support for programatic testing of bloc mouse events:
https://twitter.com/feenkcom/status/925672206763511808
– updated MemoryGame tutorial:
http://files.pharo.org/books-pdfs/booklet-Bloc/2017-11-09-memorygame.pdf
https://github.com/pharo-graphics/Tutorials
– extended examples that offer a 52% coverage
– new Bloc world menu for easily accessing Bloc examples and reseting the Universe

Cheers,
The feenk team


by Stéphane Ducasse at November 11, 2017 10:48 AM

November 10, 2017

PharoWeekly

Another example of invoking a REST/JSON web service – resolving User-Agent strings

In one of our web applications, when a user logs in, we give some meta/context information, like this:

You are user /users/4 in entity context /entities/0 for T3 using timezone Europe/Brussels [offset -1]
Last login Fri Nov 10 2017 15:15:46 from 80.89.7.35 using Safari 11 on Mac OS X 10
Your login count is 10,375

The last login info functions as a soft security measure. In it, the part after using, ‘Safari 11 on Mac OS X 10’, is computed from the (previous) User-Agent string of the web browser when the user last logged in. But these strings are quite complex. There exist web services that parse these complex user agent strings and extract all possible information out of them, including the high level description used above.

The previous solution stopped working and I configured a new one today [https://www.whatismybrowser.com], the core implementation of which I would like to share as yet another example.

(ZnClient new
systemPolicy;
url: ‘https://api.whatismybrowser.com/api/v2/user_agent_parse&#8217;;
accept: ZnMimeType applicationJson;
headerAt: ‘x-api-key’ put: ‘8cf7cee797f3c68d59055eac96778000’;
contentReader: [ :entity | entity ifNotNil: [ NeoJSONObject fromString: entity contents ] ];
contentWriter: [ :object | ZnEntity json: object asString ];
contents: ({ ‘user_agent’ -> ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5’ } as: NeoJSONObject);
post) parse at: ‘simple_software_string’.

unnamed.png

 

You have to create an account and insert your own API key. NeoJSON must be loaded.
Using #systemPolicy and #accept: makes this call throw an exception unless valid JSON is returned in a 2XX response. NeoJSONObject is a convenient way to use the NeoJSON infrastructure. The #parse message accesses the property by the same name (via a DNU), as does the #at: message (for keys that cannot be written as message sends).

 


by Stéphane Ducasse at November 10, 2017 06:24 PM

November 09, 2017

Torsten Bergmann

YandexTranslator for Pharo

An implementation for the Yandex rest translation service for Smalltalk. Code is here: https://github.com/matias-pierobon/YandexTranslator

by Torsten (noreply@blogger.com) at November 09, 2017 01:40 PM

Lazaro - Screen reading for Pharo

A set of adapters for most of the famous and popular screen readers. This package allows you to use a screen reader with Pharo. Code is here: https://github.com/matiasmelendi/Lazaro

by Torsten (noreply@blogger.com) at November 09, 2017 10:32 AM

November 08, 2017

Torsten Bergmann

Winter - Develop games in Pharo

Project "Winter" from Alvaro Piorno is the new and updated version of "Storm" from Esteban Lorenzano. It is a 2D game development framework using FFI with Chipmunk2D Physics Engine. Code is on GitHub: https://github.com/apiorno/Winter

by Torsten (noreply@blogger.com) at November 08, 2017 02:34 PM

November 05, 2017

PharoWeekly

[Pharo 7.0a] next enhancements

Report period: 23 October 2017 to 5 November 2017

* 20632-Rename-PluggableSortFunction-to-CollatorBlockFunction
>> PluggableSortFunction is renamed to CollatorBlockFunction

Issue URL: https://pharo.fogbugz.com/f/cases/20632
PR URL: https://github.com/pharo-project/pharo/pull/430
Diff URL: https://github.com/pharo-project/pharo/pull/430/files

Thanks to dionisiydk

* 20634 missing super messages in set up and tear down in kernel tests unit tests
>> Add missing super messages in #setUp and #tearDown in Kernel-Tests
>>
>> https://pharo.fogbugz.com/f/cases/20634/Missing-super-messages-in-setUp-and-tearDown-in-Kernel-Tests-unit-tests

Issue URL: https://pharo.fogbugz.com/f/cases/20634 missing super messages in set up and tear down in kernel tests unit tests
PR URL: https://github.com/pharo-project/pharo/pull/432
Diff URL: https://github.com/pharo-project/pharo/pull/432/files

Thanks to astares

* 20623-Tests-in-the-CI-should-say-the-Architecture-and-the-OS
>> Adding the node name if running in JENKINS.
>>
>> It fixes
>>
>> https://pharo.fogbugz.com/f/cases/20623/Tests-in-the-CI-should-say-the-Architecture-and-the-OS

Issue URL: https://pharo.fogbugz.com/f/cases/20623
PR URL: https://github.com/pharo-project/pharo/pull/424
Diff URL: https://github.com/pharo-project/pharo/pull/424/files

Thanks to tesonep

* 20633-Update-Tonel-version
>> Upgrading Tonel version to 1.0.3.
>>
>> Fixes issue https://pharo.fogbugz.com/f/cases/20633/Update-Tonel-version

Issue URL: https://pharo.fogbugz.com/f/cases/20633
PR URL: https://github.com/pharo-project/pharo/pull/431
Diff URL: https://github.com/pharo-project/pharo/pull/431/files

Thanks to tesonep

* 20629-wrong-FuelPlatform-Pharo-Core-package-loading
>> https://pharo.fogbugz.com/f/cases/20629/wrong-FuelPlatform-Pharo-Core-package-loading

Issue URL: https://pharo.fogbugz.com/f/cases/20629
PR URL: https://github.com/pharo-project/pharo/pull/429
Diff URL: https://github.com/pharo-project/pharo/pull/429/files

Thanks to pavel-krivanek

* 20630-The-package-Files-Prompt-is-not-loaded
>> https://pharo.fogbugz.com/f/cases/20630/The-package-Files-Prompt-is-not-loaded

Issue URL: https://pharo.fogbugz.com/f/cases/20630
PR URL: https://github.com/pharo-project/pharo/pull/427
Diff URL: https://github.com/pharo-project/pharo/pull/427/files

Thanks to pavel-krivanek

* 20628-Categories-definition-in-exported-Tonel-must-be-symbols-not-strings
>> https://pharo.fogbugz.com/f/cases/20628/Categories-definition-in-exported-Tonel-must-be-symbols-not-strings
>>
>> – Converts category names from strings to symbols
>> – Remove unused packages
>>
>> “`
>> delete mode 100644 src/BaselineOfHermes/BaselineOfHermes.class.st
>> delete mode 100644 src/BaselineOfHermes/package.st
>> delete mode 100644 src/Files-Prompt/DummyUIManager.extension.st
>> delete mode 100644 src/Files-Prompt/FileAlreadyExistsException.extension.st
>> delete mode 100644 src/Files-Prompt/FileDoesNotExistException.extension.st
>> delete mode 100644 src/Files-Prompt/MorphicUIManager.extension.st
>> delete mode 100644 src/Files-Prompt/NonInteractiveUIManager.extension.st
>> delete mode 100644 src/Files-Prompt/UIManager.extension.st
>> delete mode 100644 src/Files-Prompt/package.st
>> delete mode 100644 src/FuelPlatform-Pharo-Core/FLPharoPlatform.class.st
>> delete mode 100644 src/FuelPlatform-Pharo-Core/package.st
>> delete mode 100644 src/Hermes-Ring/FiBitsLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/FiCompiledMethodLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/FiEphemeronLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/FiFixedLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/FiImmediateLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/FiLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/FiPointerLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/FiVariableLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/FiWeakVariableLayout.extension.st
>> delete mode 100644 src/Hermes-Ring/HERingBinder.class.st
>> delete mode 100644 src/Hermes-Ring/HERingToHermesBuilder.class.st
>> delete mode 100644 src/Hermes-Ring/RFiClass.extension.st
>> delete mode 100644 src/Hermes-Ring/RFiEnvironment.extension.st
>> delete mode 100644 src/Hermes-Ring/RFiMethod.extension.st
>> delete mode 100644 src/Hermes-Ring/RFiTrait.extension.st
>> delete mode 100644 src/Hermes-Ring/package.st
>> delete mode 100644 src/Hermes-Tests-External-Package/AClassToBeExtracted.class.st
>> delete mode 100644 src/Hermes-Tests-External-Package/AClassToBeExtractedFactory.class.st
>> delete mode 100644 src/Hermes-Tests-External-Package/HETeSimpleClassWithComplexTraits.extension.st
>> delete mode 100644 src/Hermes-Tests-External-Package/TSimpleTraitToBeExtracted.trait.st
>> delete mode 100644 src/Hermes-Tests-External-Package/package.st
>> delete mode 100644 src/Hermes-Tests/HEAbstractBinaryClassBuilderTest.class.st
>> delete mode 100644 src/Hermes-Tests/HEExportedLiteralTest.class.st
>> delete mode 100644 src/Hermes-Tests/HEExportingClassTest.class.st
>> delete mode 100644 src/Hermes-Tests/HEExportingMethodTest.class.st
>> delete mode 100644 src/Hermes-Tests/HEExportingPackageFromRingTest.class.st
>> delete mode 100644 src/Hermes-Tests/HEExportingPackageTest.class.st
>> delete mode 100644 src/Hermes-Tests/HEExportingTraitTest.class.st
>> delete mode 100644 src/Hermes-Tests/HEInstallWholePackageTest.class.st
>> delete mode 100644 src/Hermes-Tests/HEInstallerTest.class.st
>> delete mode 100644 src/Hermes-Tests/HETeSimpleClass.class.st
>> delete mode 100644 src/Hermes-Tests/HETeSimpleClassWithComplexTraits.class.st
>> delete mode 100644 src/Hermes-Tests/HETeSimpleClassWithTraits.class.st
>> delete mode 100644 src/Hermes-Tests/THEATraitUsingOthers.trait.st
>> delete mode 100644 src/Hermes-Tests/THEOneTestTrait.trait.st
>> delete mode 100644 src/Hermes-Tests/THEOtherTestTrait.trait.st
>> delete mode 100644 src/Hermes-Tests/package.st
>> delete mode 100644 src/Network-Url/package.st
>> delete mode 100644 src/Ring-Navigation/RGMethodDefinition.extension.st
>> delete mode 100644 src/Ring-Navigation/package.st
>> “`

Issue URL: https://pharo.fogbugz.com/f/cases/20628
PR URL: https://github.com/pharo-project/pharo/pull/426
Diff URL: https://github.com/pharo-project/pharo/pull/426/files

Thanks to pavel-krivanek

* 20626-Fixing-Tests-in-CI
>> Fixing some tests related with the refactoring in FileStream.
>>
>> Fixes issue
>>
>> https://pharo.fogbugz.com/f/cases/20626/Fixing-Tests-in-CI

Issue URL: https://pharo.fogbugz.com/f/cases/20626
PR URL: https://github.com/pharo-project/pharo/pull/425
Diff URL: https://github.com/pharo-project/pharo/pull/425/files

Thanks to tesonep

* 20616-Convert-file-format-to-tonel
>> sources converted.
>>
>> closes case 20616

Issue URL: https://pharo.fogbugz.com/f/cases/20616
PR URL: https://github.com/pharo-project/pharo/pull/423
Diff URL: https://github.com/pharo-project/pharo/pull/423/files

Thanks to estebanlm

* 20574-FFITypeArray–annonymousClassCreator-doesnt-handle-pointer-types-correctly
>> fix case #20574

Issue URL: https://pharo.fogbugz.com/f/cases/20574
PR URL: https://github.com/pharo-project/pharo/pull/392
Diff URL: https://github.com/pharo-project/pharo/pull/392/files

Thanks to estebanlm

* 20589-update-iceberg-to-062
>> closes case #20589

Issue URL: https://pharo.fogbugz.com/f/cases/20589
PR URL: https://github.com/pharo-project/pharo/pull/397
Diff URL: https://github.com/pharo-project/pharo/pull/397/files

Thanks to estebanlm

* 17299 sleep longer than a second in the delay scheduler

Issue URL: https://pharo.fogbugz.com/f/cases/17299 sleep longer than a second in the delay scheduler
PR URL: https://github.com/pharo-project/pharo/pull/197
Diff URL: https://github.com/pharo-project/pharo/pull/197/files

Thanks to zecke

* 20599 make kernel independent of deprecated file stream
>> This PR introduces the following changes:
>> – Extracted file creation for st and cs files into CodeExporter class
>> – removed usages of StandardFileStream and MultiByteFileStream
>> – Modularised StandardFileStream>>defaultAction to be in a separate package (depends on UI)

Issue URL: https://pharo.fogbugz.com/f/cases/20599 make kernel independent of deprecated file stream
PR URL: https://github.com/pharo-project/pharo/pull/415
Diff URL: https://github.com/pharo-project/pharo/pull/415/files

Thanks to guillep

* 20155-Browse-implementers-of-in-Nautilus-doesnt-parse-source-code-properly-for-methods-in-a-block
>> Fixes 20155 using a modificaton of teh code in the Bug report. The second commit removes what appears to be dead code; if this one casues trouble, it oculd be dropped. (Since the removed methods send unimplemented messages, they are unlikely to help!)

Issue URL: https://pharo.fogbugz.com/f/cases/20155
PR URL: https://github.com/pharo-project/pharo/pull/410
Diff URL: https://github.com/pharo-project/pharo/pull/410/files

Thanks to apblack

* 20609-defaultBackgroundColor-should-be-removed-from-Object
>> move defaultBackgroundColor from Object to Morph

Issue URL: https://pharo.fogbugz.com/f/cases/20609
PR URL: https://github.com/pharo-project/pharo/pull/414
Diff URL: https://github.com/pharo-project/pharo/pull/414/files

Thanks to dionisiydk

* 20577-Cleanup-Object-inspection-protocol
>> replace #explore users with #inspect.
>> move inspectorClass and Object>>inspector into Spec-Inspector
>> Object>>explore is deprecated

Issue URL: https://pharo.fogbugz.com/f/cases/20577
PR URL: https://github.com/pharo-project/pharo/pull/413
Diff URL: https://github.com/pharo-project/pharo/pull/413/files

Thanks to dionisiydk

* 18391-Debugger must guard against actions on process termination
>> added guards so the debugger doesn’t send stepping messages to nil contexts. (This was the cause of the freezing because it would loop until the context was dead).
>>
>> Now the debugger closes when we are stepping out of a ‘terminal’ context instead of showing a ‘nil doesNotUnderstand: isDead’ exception. (It notifiies the user through an inform that the debugging session is finished)

Issue URL: https://pharo.fogbugz.com/f/cases/18391
PR URL: https://github.com/pharo-project/pharo/pull/409
Diff URL: https://github.com/pharo-project/pharo/pull/409/files

Thanks to Marmat21

* 20576-add-simplified-DADependenciesHTMLPublisher
>> https://pharo.fogbugz.com/f/cases/20576/add-simplified-DADependenciesHTMLPublisher
>>
>> add DADependenciesHTMLPublisher from Tool-DependencyAnalyser-HTMLReport-ChristopheDemarey.1.mcz

Issue URL: https://pharo.fogbugz.com/f/cases/20576
PR URL: https://github.com/pharo-project/pharo/pull/388
Diff URL: https://github.com/pharo-project/pharo/pull/388/files

Thanks to pavel-krivanek

* 20547-missing-assertidenticalTo-and-denyidenticalTo-object-identity-equality
>> https://pharo.fogbugz.com/f/cases/20547/missing-assert-identicalTo-and-deny-identicalTo-object-identity-equality
>>
>> add assert:identicalTo: and deny:identicalTo:

Issue URL: https://pharo.fogbugz.com/f/cases/20547
PR URL: https://github.com/pharo-project/pharo/pull/368
Diff URL: https://github.com/pharo-project/pharo/pull/368/files

Thanks to pavel-krivanek

* 20604-Metacello-Platform-is-dependent-on-Metacello-Bitbucket
>> https://pharo.fogbugz.com/f/cases/20604/Metacello-Platform-is-dependent-on-Metacello-Bitbucket

Issue URL: https://pharo.fogbugz.com/f/cases/20604
PR URL: https://github.com/pharo-project/pharo/pull/406
Diff URL: https://github.com/pharo-project/pharo/pull/406/files

Thanks to pavel-krivanek

* 20615-add-packages-for-MetacelloCommandLineHander-into-baselines
>> https://pharo.fogbugz.com/f/cases/20615/add-packages-for-MetacelloCommandLineHander-into-baselines

Issue URL: https://pharo.fogbugz.com/f/cases/20615
PR URL: https://github.com/pharo-project/pharo/pull/421
Diff URL: https://github.com/pharo-project/pharo/pull/421/files

Thanks to pavel-krivanek

* 20581-Manually-resolved-dependencies-in-manifests-need-update
>> https://pharo.fogbugz.com/f/cases/20581/Manually-resolved-dependencies-in-manifests-need-update
>>
>> update manually resolved dependencies

Issue URL: https://pharo.fogbugz.com/f/cases/20581
PR URL: https://github.com/pharo-project/pharo/pull/391
Diff URL: https://github.com/pharo-project/pharo/pull/391/files

Thanks to pavel-krivanek

* 12160-Should-we-move-asUrl-to-Zinc-package
>> https://pharo.fogbugz.com/f/cases/12160/Should-we-move-asUrl-to-Zinc-package

Issue URL: https://pharo.fogbugz.com/f/cases/12160
PR URL: https://github.com/pharo-project/pharo/pull/418
Diff URL: https://github.com/pharo-project/pharo/pull/418/files

Thanks to pavel-krivanek

* 20584-SortFunction-should-not-use-block-in-collator
>> SortFunction is now abstract. It is refactored and splitted on two extra subclasses:
>> SortByPropertyFunction to collate objects using property defined by selector or one arg block.
>> PluggableSortFunction represents collator using two args block.
>>
>>
>> So subclasses implement single method #threeWayCompare:with: where they define own collarion logic independently from specified direction.
>> Old method #collate:with is now main method which taks into account three way comparison and direction. Subclasses do not supposed to redefine it.
>> And #value:value: method just convert collation result into the bool (returns is it negative or not).
>> All functions implements #= and #hash methods. So selector based functions can be used in application caches.
>> Also now applications are able to implement own sort functions instead of using selectors or blocks which improves reusability.

Issue URL: https://pharo.fogbugz.com/f/cases/20584
PR URL: https://github.com/pharo-project/pharo/pull/412
Diff URL: https://github.com/pharo-project/pharo/pull/412/files

Thanks to dionisiydk

* 20602 file locator local directory should be inside image directory
>> UserLocalDirectory should be placed in imageDirectory by default.
>>
>> https://pharo.fogbugz.com/f/cases/20602/FileLocator-localDirectory-should-be-inside-image-directory

Issue URL: https://pharo.fogbugz.com/f/cases/20602 file locator local directory should be inside image directory
PR URL: https://github.com/pharo-project/pharo/pull/419
Diff URL: https://github.com/pharo-project/pharo/pull/419/files

Thanks to dionisiydk

* 20613-Improve-some-UUID-comments
>> Improve some UUID comments

Issue URL: https://pharo.fogbugz.com/f/cases/20613
PR URL: https://github.com/pharo-project/pharo/pull/420
Diff URL: https://github.com/pharo-project/pharo/pull/420/files

Thanks to svenvc

* 20598 update configuration command line handler to use metacello
>> A first implementation of a CommandLineHandler for Metacello.
>>
>> It provides the ability to install projects using Configuration or Baseline.
>>
>> It comes with unit tests.
>>
>> After a discussion with @Ducasse , the ConfigurationCommandLineHandler was not modified in order to not break scripts using it. It should be deprecated once this handler provides enough features.

Issue URL: https://pharo.fogbugz.com/f/cases/20598 update configuration command line handler to use metacello
PR URL: https://github.com/pharo-project/pharo/pull/416
Diff URL: https://github.com/pharo-project/pharo/pull/416/files

Thanks to juliendelplanque

* 20610-Class-comments-displaying-is-failing-
>> https://pharo.fogbugz.com/f/cases/20610/Class-comments-displaying-is-failing
>>
>> fix RubCommentAnnotationDisplayer>>#fontToUse

Issue URL: https://pharo.fogbugz.com/f/cases/20610
PR URL: https://github.com/pharo-project/pharo/pull/417
Diff URL: https://github.com/pharo-project/pharo/pull/417/files

Thanks to pavel-krivanek

* 20592-SizeInMemory-is-not-updated-to-handle-32-and-64-bits-for-WordLayout
>> Fixing sizeInMemory to handle properly WordLayout objects.
>> Also fixing the tests to handle both 32 and 64 bits.

Issue URL: https://pharo.fogbugz.com/f/cases/20592
PR URL: https://github.com/pharo-project/pharo/pull/400
Diff URL: https://github.com/pharo-project/pharo/pull/400/files

Thanks to tesonep

* 20587-remove-UIThemeWatery
>> https://pharo.fogbugz.com/f/cases/20587-remove-UIThemeWatery

Issue URL: https://pharo.fogbugz.com/f/cases/20587
PR URL: https://github.com/pharo-project/pharo/pull/395
Diff URL: https://github.com/pharo-project/pharo/pull/395/files

Thanks to pavel-krivanek

* 20551-Improve-way-how-Spec-presenters-are-linked-with-domain-models
>> https://pharo.fogbugz.com/f/cases/20551/Improve-way-how-Spec-presenters-are-linked-with-domain-models

Issue URL: https://pharo.fogbugz.com/f/cases/20551
PR URL: https://github.com/pharo-project/pharo/pull/374
Diff URL: https://github.com/pharo-project/pharo/pull/374/files

Thanks to pavel-krivanek

* 20600 rename opal compiler encoder from opal encoder to encoder
>> This can be tested through a boostrap, or by using this do it instead of loading the changes:
>> OpalEncoder withAllSubclassesDo: [ :sub | sub rename: (sub name allButFirst: 4)].
>>
>> This cannot be tested through merge (Changes in the kernel).

Issue URL: https://pharo.fogbugz.com/f/cases/20600 rename opal compiler encoder from opal encoder to encoder
PR URL: https://github.com/pharo-project/pharo/pull/404
Diff URL: https://github.com/pharo-project/pharo/pull/404/files

Thanks to clementbera

* 19609-FileReferencebase-should-be-before-last-separator
>> https://pharo.fogbugz.com/f/cases/19609/FileReference-base-should-be-before-last-separator

Issue URL: https://pharo.fogbugz.com/f/cases/19609
PR URL: https://github.com/pharo-project/pharo/pull/137
Diff URL: https://github.com/pharo-project/pharo/pull/137/files

Thanks to pavel-krivanek

* 19746-WeakValueDictionary-has-counter-intuitive-behavior
>> https://pharo.fogbugz.com/f/cases/19746/WeakValueDictionary-has-counter-intuitive-behavior

Issue URL: https://pharo.fogbugz.com/f/cases/19746
PR URL: https://github.com/pharo-project/pharo/pull/140
Diff URL: https://github.com/pharo-project/pharo/pull/140/files

Thanks to pavel-krivanek

* 20606-AlienSunitperformTest-is-failing
>> https://pharo.fogbugz.com/f/cases/20606/AlienSunit-performTest-is-failing
>>
>> ignore prefix

Issue URL: https://pharo.fogbugz.com/f/cases/20606
PR URL: https://github.com/pharo-project/pharo/pull/408
Diff URL: https://github.com/pharo-project/pharo/pull/408/files

Thanks to pavel-krivanek

* 20595-The-Bootstrap-process-should-log-the-command-line-command-executed
>> Adding the trace option to the bash scripts

Issue URL: https://pharo.fogbugz.com/f/cases/20595
PR URL: https://github.com/pharo-project/pharo/pull/402
Diff URL: https://github.com/pharo-project/pharo/pull/402/files

Thanks to tesonep

* 20537 Better class tagging in package ProfStef-Tests-Traits
>> – add some tags like “Mocks”, “Traits” and “Tests” to the package “ProfStef-Tests-Traits”
>> and move the classes into them so we better group them for browsing
>>
>> https://pharo.fogbugz.com/f/cases/20537/Better-class-tagging-in-package-ProfStef-Tests-Traits

Issue URL: https://pharo.fogbugz.com/f/cases/20537 Better class tagging in package ProfStef
PR URL: https://github.com/pharo-project/pharo/pull/359
Diff URL: https://github.com/pharo-project/pharo/pull/359/files

Thanks to astares

* 20597 Rename-old-Compiler-encoder-to-LegacyEncoders
>> … Encoders (aka the OpalEncoders) to be named Encoder, and the old compiler encoder nobody use to be called whatever people want (I name them legacyEncoder).
>>
>> Since EncoderForLongForV3 has never worked, and EncoderForSistaV1 is not compliant with the old compiler version present in Pharo, I also remove them.

Issue URL: https://pharo.fogbugz.com/f/cases/20597 Rename
PR URL: https://github.com/pharo-project/pharo/pull/403
Diff URL: https://github.com/pharo-project/pharo/pull/403/files

Thanks to clementbera

* 20578-add-BaselineOfMonticello-and-BaselineOfMetacello
>> https://pharo.fogbugz.com/f/cases/20578/add-BaselineOfMonticello-and-BaselineOfMetacello
>>
>> – add package Metacello-PharoExtensions
>> – move class side utility methods from BaselineOfPharoBootstrap there for general use
>> – add BaselineOfMonticello
>> – add BaselineOfMetacello
>> – list them in BaselineOfIDE to have them in the image

Issue URL: https://pharo.fogbugz.com/f/cases/20578
PR URL: https://github.com/pharo-project/pharo/pull/389
Diff URL: https://github.com/pharo-project/pharo/pull/389/files

Thanks to pavel-krivanek

* 20583-introduce-system-dependencies-test
>> https://pharo.fogbugz.com/f/cases/20583/introduce-system-dependencies-test
>>
>> introduce SystemDependenciesTest

Issue URL: https://pharo.fogbugz.com/f/cases/20583
PR URL: https://github.com/pharo-project/pharo/pull/393
Diff URL: https://github.com/pharo-project/pharo/pull/393/files

Thanks to pavel-krivanek

* [Bug]: Fix Issue 16136 – DateModel: Handle nil Sanely
>> I’ve been using this fix in production for two years, so it should be relatively reliable

Issue URL: https://pharo.fogbugz.com/f/cases/%5BBug%5D: Fix Issue 16136
PR URL: https://github.com/pharo-project/pharo/pull/394
Diff URL: https://github.com/pharo-project/pharo/pull/394/files

Thanks to seandenigris

* 20567-Instance-side-LayoutFramefractions-fractionsOrNil-offsets-should-be-deprecated
>> Fixed all the missing users and deprecate these methods!!!

Issue URL: https://pharo.fogbugz.com/f/cases/20567
PR URL: https://github.com/pharo-project/pharo/pull/386
Diff URL: https://github.com/pharo-project/pharo/pull/386/files

Thanks to Ducasse

* 20596-Zinc-should-not-use-asBytesDescription-as-it-is-deprecated
>> Zinc is using #asBytesDescription. It should not be used as it is deprecated.
>> This error is affecting all the users of Zinc. Ex: Smalltalk CI

Issue URL: https://pharo.fogbugz.com/f/cases/20596
PR URL: https://github.com/pharo-project/pharo/pull/401
Diff URL: https://github.com/pharo-project/pharo/pull/401/files

Thanks to tesonep

* 20026-Diff-has-incorrect-positions-red-and-green-colors-of-changed-text
>> The patch difference should have the cr character. If the patch has multiple lines and it does not have the CR, the resulting highlight is shifted a character per line.
>>
>> Issue: [https://pharo.fogbugz.com/f/cases/resolve/20026/Diff-has-incorrect-positions-red-and-green-colors-of-changed-text](https://pharo.fogbugz.com/f/cases/resolve/20026/Diff-has-incorrect-positions-red-and-green-colors-of-changed-text)

Issue URL: https://pharo.fogbugz.com/f/cases/20026
PR URL: https://github.com/pharo-project/pharo/pull/396
Diff URL: https://github.com/pharo-project/pharo/pull/396/files

Thanks to tesonep

* 20569-Update-Layout-class-comment
>> better class comment

Issue URL: https://pharo.fogbugz.com/f/cases/20569
PR URL: https://github.com/pharo-project/pharo/pull/385
Diff URL: https://github.com/pharo-project/pharo/pull/385/files

Thanks to Ducasse

* 20557-Update-Zinc-and-Zodiac
>> https://pharo.fogbugz.com/f/cases/20557/Update-Zinc-and-Zodiac
>>
>> merge packages:
>> Zodiac-Tests-SvenVanCaekenberghe.18
>> Zinc-Character-Encoding-Core-SvenVanCaekenberghe.54
>> Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.35
>> Zinc-HTTP-SvenVanCaekenberghe.469
>> Zinc-Resource-Meta-Core-SvenVanCaekenberghe.65
>> Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.38
>> Zinc-Tests-SvenVanCaekenberghe.243
>> Zinc-Zodiac-SvenVanCaekenberghe.40

Issue URL: https://pharo.fogbugz.com/f/cases/20557
PR URL: https://github.com/pharo-project/pharo/pull/379
Diff URL: https://github.com/pharo-project/pharo/pull/379/files

Thanks to pavel-krivanek

* 20580-ValueChanged-should-be-moved-to-System-Model
>> https://pharo.fogbugz.com/f/cases/20580/ValueChanged-should-be-moved-to-System-Model
>>
>> move ValueChanged to the package System-Model

Issue URL: https://pharo.fogbugz.com/f/cases/20580
PR URL: https://github.com/pharo-project/pharo/pull/390
Diff URL: https://github.com/pharo-project/pharo/pull/390/files

Thanks to pavel-krivanek

* 20575-TextMorph-cannot-work-without-code-completion-temporary-solution
>> https://pharo.fogbugz.com/f/cases/20575/TextMorph-cannot-work-without-code-completion-temporary-solution
>>
>> safer access to code completion

Issue URL: https://pharo.fogbugz.com/f/cases/20575
PR URL: https://github.com/pharo-project/pharo/pull/387
Diff URL: https://github.com/pharo-project/pharo/pull/387/files

Thanks to pavel-krivanek

* 20573-BaselineOfMorphic-should-include-System-Identification
>> https://pharo.fogbugz.com/f/cases/20573/BaselineOfMorphic-should-include-System-Identification
>>
>> move System-Identification to the BaselineOfMorphic

Issue URL: https://pharo.fogbugz.com/f/cases/20573
PR URL: https://github.com/pharo-project/pharo/pull/384
Diff URL: https://github.com/pharo-project/pharo/pull/384/files

Thanks to pavel-krivanek

* 20546-There-is-no-denyequals-method-in-TestCase-
>> https://pharo.fogbugz.com/f/cases/20546
>>
>> – simulate TAssertable flattening
>> – use different unexpected equality error message
>> – add denyCollection:equals:

Issue URL: https://pharo.fogbugz.com/f/cases/20546
PR URL: https://github.com/pharo-project/pharo/pull/366
Diff URL: https://github.com/pharo-project/pharo/pull/366/files

Thanks to pavel-krivanek

* 20560-Fix-instance-veriables-for-Spec-presenters-ending-with–model
>> https://pharo.fogbugz.com/f/cases/20560/Fix-instance-veriables-for-Spec-presenters-ending-with-model
>>
>> fix some presenters instance veriables with wrong names

Issue URL: https://pharo.fogbugz.com/f/cases/20560
PR URL: https://github.com/pharo-project/pharo/pull/381
Diff URL: https://github.com/pharo-project/pharo/pull/381/files

Thanks to pavel-krivanek

* 20564-Spec-Core-must-be-Morphic-independent
>> https://pharo.fogbugz.com/f/cases/20564/Spec-Core-must-be-Morphic-independent

Issue URL: https://pharo.fogbugz.com/f/cases/20564
PR URL: https://github.com/pharo-project/pharo/pull/383
Diff URL: https://github.com/pharo-project/pharo/pull/383/files

Thanks to pavel-krivanek


by Stéphane Ducasse at November 05, 2017 09:07 AM

November 02, 2017

PharoWeekly

LiteratureResearcher – where graphs, PDFs, and BibTex happily live together

Hi everyone,

I was experimenting in the last few weeks with my take on literature research. For me, the corpus of scientific papers form an interconnected graph, not those plain lists and tables we keep in our bibliographies. So, here is the first prototype that has Google Scholar integration for search, can fetch PDFs from IEEE and ACM, extracts metadata from PDFs – all this results in hyperlinked PDFs!

See a demo here: https://youtu.be/EcK3Pt_WnEw
Also slides from the SCG seminar here: http://scg.unibe.ch/download/softwarecomposition/2017-10-31-Leuenberger-ILE.pdf

I plan on packaging it, so that those who are interested can check it out themselves (help wanted!). Currently, it only works on macOS.

What do you think of my approach? Which use cases should be added?

Cheers,
Manuel


by Stéphane Ducasse at November 02, 2017 06:59 PM

November 01, 2017

PharoWeekly

Nice interview of Stef’ vision for Pharo

https://medium.com/@richardeng/pharo-reinventing-smalltalk-55e169d0a691


by Stéphane Ducasse at November 01, 2017 12:12 PM

October 30, 2017

PharoWeekly

[Ann] Salesforce API for Pharo

Sorabito friends just released another great binding for Pharo.

https://github.com/newapplesho/salesforce-smalltalk

Thank you.

Stef


by Stéphane Ducasse at October 30, 2017 08:42 AM

Torsten Bergmann

OpenSSL wrapper for Pharo

Pierce started with an initial OpenSSL wrapper for Pharo

by Torsten (noreply@blogger.com) at October 30, 2017 08:21 AM

Trapping Unix Signals in Pharo

A new library that allows you to trap Unix signals in Pharo. Basically it uses UFFI to register a callback on the C library function signal()

by Torsten (noreply@blogger.com) at October 30, 2017 08:19 AM

PharoWeekly

Vim mode for Pharo

Just got published at:

https://github.com/unchartedworks/SmalltalkVimMode

 

 


by Stéphane Ducasse at October 30, 2017 06:53 AM

October 29, 2017

PharoWeekly

Pharo Tips & Tricks booklet

Hi guys

I just published a new little booklet on Pharo tips and tricks!
Available at: http://books.pharo.org
Feedback and contributions are welcome as usual.
Stef

by Stéphane Ducasse at October 29, 2017 08:53 PM

_beginnings_ of a wrapper for OpenSSL

Hi all,

I’ve put up the _beginnings_ of a wrapper for OpenSSL on STH:

Metacello new
baseline: ‘OpenSSL’;
smalltalkhubUser: ‘PierceNg’ project: ‘OpenSSL-Pharo’;
load.

Verified on Pharo 6 32- and 64-bit.

My near term goal is to wrap enough libcrypto functionality to implement the
client-side of Let’s Encrypt.

I meant to put it up on GH, for the ease of forking and PRs, but I couldn’t get
Iceberg to work, and gitfiletree also failed to load, so STH it is. ¯\_(ツ)_/¯

Collaboration welcome.

PierceNg


by Stéphane Ducasse at October 29, 2017 06:10 PM

Trapping Unix signals within Pharo

Hi,

I made a small tool to trap unix signals within Pharo. I uploaded then to github.
https://github.com/estebanlm/pharo-posix-signal
is very easy to use and it will allow you to trap any signal and do what you want 😉
Esteban

by Stéphane Ducasse at October 29, 2017 06:08 PM

Pierce Ng

OpenSSL wrapper for Pharo

I've put up the beginnings of a wrapper for OpenSSL on STH:

Metacello new
  baseline: 'OpenSSL';
  smalltalkhubUser: 'PierceNg' project: 'OpenSSL-Pharo';
  load.

Verified on Pharo 6 32- and 64-bit.

My near term goal is to wrap enough libcrypto functionality to implement the client-side of Let's Encrypt.

I meant to put it up on GH, for the ease of forking and PRs, but I couldn't get Iceberg to work, and gitfiletree also failed to load, so STH it is for now.

Collaboration welcome.

by Pierce Ng at October 29, 2017 04:03 AM

October 27, 2017

PharoWeekly

[ANN] Iceberg 0.6.2 backported to Pharo 6.1

Hi,

I backported lastest Iceberg version to Pharo 6.1 to allow people to benefit for latest changes.
This version has an important amount of tweak and fixes, but most important is the inclusion of tonel file format (this is default for Pharo 7.0, optional for Pharo 6.1) and introduces a file-per-class format.
The advantages of this format has everything to do with the speed of access (is easier to reconstruct a package like) and the space on disk (methods are usually small but minimum space in disk is usually 4k so we waste a lot of space). Is also a better format for SSD disks.

To backport Iceberg 0.6.2 I also needed to backport latest version of Metacello, so Pharo 6.1 and Pharo7+ users now also have the latest version of it available 🙂

cheers!

 

Esteban


by Stéphane Ducasse at October 27, 2017 05:04 PM

October 25, 2017

PharoWeekly

sha256 checksum for Pharo6 downloads

And here is how to do it in Pharo:

signature := ‘https://ci.inria.fr/pharo/job/Pharo-6.0-Update-Step-5-Publish/lastSuccessfulBuild/artifact/Pharo6.1-mac.zip.sha256.txt‘ asUrl retrieveContents findTokens: Character separators.
hash := signature first.
signedFile := signature second.
url := ‘http://files.pharo.org/platform/Pharo6.1-mac.zip‘ asUrl.
ZnClient new url: url; downloadTo: FileLocator temp. “somewhat slow”
file := FileLocator temp / url file.
self assert: file exists.
self assert: (signedFile match: url file).
file readStreamDo: [ :in | sha256 := SHA256 hashStream: in ]. “very slow”
self assert: (hash sameAs: sha256 hex).

Sven


by Stéphane Ducasse at October 25, 2017 09:04 PM

October 24, 2017

PharoWeekly

sha256 checksum for Pharo6 downloads

Hi,

A tiny first step: I added sha256 chechsums for all downloads created by the Pharo6 build process
https://ci.inria.fr/pharo/
This step:
https://ci.inria.fr/pharo/job/Pharo-6.0-Update-Step-5-Publish/
now creates .sha256.txt files, e.g for the mac:
https://ci.inria.fr/pharo/job/Pharo-6.0-Update-Step-5-Publish/lastSuccessfulBuild/artifact/Pharo6.1-mac.zip.sha256.txt
This allows one to check that downloads from the file server are indeed the same files that the build server created.
http://files.pharo.org/platform/
http://files.pharo.org/image/60/
As I said, just a very first step.
TODO:
– pgp signatures
– insert into website
– SSL for files.pharo.org
– do it Pharo7
– ….
So: more to come!
Marcus

by Stéphane Ducasse at October 24, 2017 04:57 PM

October 23, 2017

PharoWeekly

Why many managers failed…

to understand the power they could have in their hand. Here is a testimony on the Pharo mailing-list. This is why we should build powerful new solutions in Pharo 🙂

Stef

 

Petr,

I’ve been working as a Consultant for many big corporations (mainly in VA Smalltalk) since 1996. The situation you describe is very well known to me. But in my opinion there is no technical reason for this. It’s a managerial problem. Ever since IBM went out to their customers and told them to move to Java for the better ini the mid-90ies, managers wanted the Smalltalk projects to go away as fast as possible. Nobody asked why IBM was still happily using VisualAge Smalltalk internally at that time frame….

So the Smalltalk projects were declared legacy by Management. Replacement projects were started with big efforts and optimism. Some went well, some somewhat came to fly in a bit more than double the time and much more times the costthan planned, some failed miserably. One thing was in common to the replacement projects all over the place: they took much longer, turned out to be much mor complicated and took a lot more manpower than anybody had ever imagined.

So two important things happened:

1) People were told the old Smalltalk stuff would be gone soon, so if you wanted to be a valued and appreciated staff member, you better stay away from these projects
2) The people who knew the business and technical side of the existing projects were moved to the new projects. Some liked it (because of 1) some were frustrated (because they knew / feared the new project was going to be a death march)

Over the first 2 years or so, nobody realized how bad the situation really was. It was easy to postpone user requirements to the new project, accumulate more and more manpower in the new project and still keep up green flags everywhere.

…until yellow was the new green and users/stakeholders wanted the new features NOW – and not one day when the replacement project would become real.

So the remaining manpower in the old project (not the ones with lots of experience and knowledge) had to extend the old system, integrate it with the new system (thereby implementing all the stuff that IBM once told their management would never be possible in Smalltalk) and keep it up and running year after year. Nobody ever said Thank You or would appreciate the work they did. Because that was old stuff anyways and was already irrelevant.

Some of these old systems still exist today, serving users every single day, while some of the new systems never appeared. No manpower was ever added to these projects, and never would anybody ever say: okay, guys, you won. They still work on legacy code and try to do their best to fulfill user requirements. While on other projects that never see the light of day, people get appreciation, are allowed to work with new technologies and do cool stuff. Nobody ever asked the Smalltalkers whether they could do that as well, because “if you want to do web, you need to do Java”. IBM said so, you know (and many other consultants as well).

So this is why new people try to stay away from these old projects. This is why the remaining staff is frustrated and this is why nobody allows them to do the cool things that Smalltalk can do as well as the others. They are just required to fix bugs, add new features in the old GUIs and else keep silent. Some of them were trying to fight this and tried to prove Smalltalk’s strengths, but back then nobody would listen. One day they gave up.

Management still frustrates people every. single. day.

Just my opinion

Joachim


by Stéphane Ducasse at October 23, 2017 08:30 PM

Seaside Testing Rescued

Hi,

I spend some days last week woking with the guys of AFI (http://afi-sa.fr, yes they also use Pharo in some of their projects) and together we recovered SeasideTesting from Davis Shaffer to be used for their TDD experience.
you can check it out here: https://github.com/Afibre/SeasideTesting
What’s SeasideTesting? A package to test Seaside components.
Why we do not use Parasol? Because it is based on selenium and that makes the process slow.
Where can I know more?
– there is some documentation here (for VW, I think): http://www.shaffer-consulting.com/david/Seaside/TestingComponents/TestingComponents.html
– some slides here (on squeak): http://esug.org/data/ESUG2005/Wednesday/2005-ESUG-Shaffer.pdf
but all that is old. Best way is to just install and see the tests, as always,
cheers!

by Stéphane Ducasse at October 23, 2017 08:16 PM