Planet Squeak

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

September 15, 2017

Torsten Bergmann

Smalltalk ENVY

Nice - this blog post brings back some memories on ENVY - a Smalltalk source code management system. I used ENVY in the past too and still have a signed copy of the book "Mastering ENVY/Developer" in my bookshelf



And yes - after coding in VisualAge for Smalltalk I also used VisualAge for Java which was really a nice tool for that time - it lowered the Java pain. Because at that time most Java people coded in editors like Notepad while VisualAge for Java was a full IDE with Browser, Debugger and all. It was built on top of the Smalltalk version like most of the members of the VisualAge family

by Torsten (noreply@blogger.com) at September 15, 2017 08:07 PM

Tonel

Tonel is a file-per-class format for monticello repositories. It allows to store the class definition and methods in a single file. The idea is to use this for a more performant git support in Pharo (as currently a file per method is used). Code is in https://github.com/pharo-vcs/tonel

by Torsten (noreply@blogger.com) at September 15, 2017 01:15 PM

September 14, 2017

PharoWeekly

[Ann] Launcher new version available

Hi,
I published an update of the Launcher yesterday fixing some issues to run Pharo images from Linux. You can find latest-versions (0.2.13) here: http://files.pharo.org/platform/launcher/
It already propose to download Pharo 70 images. The VM is now downloaded automatically if the adequate one is not available.
Let us know if everything is fine.
Regards,
Christophe

by Stéphane Ducasse at September 14, 2017 04:48 PM

September 11, 2017

Torsten Bergmann

Updated Pharo Launcher

According to Peter the updated Pharo Launcher automatically downloads the proper VM. No more VM juggling.

by Torsten (noreply@blogger.com) at September 11, 2017 01:39 PM

First-class undefined classes for Pharo

Lets assume a class A requires a class B which is defined in a different package than class A.

If you defined the wrong load order of packages (so you load the package with A before the package with B) you might easily hit the problem of "Undefined classes".

Pharo will now address this issue better by having first class entities representing missing (or yet undefined) classes. It is already planned for Pharo 7.

Here are the slides from ESUG 2017 on this topic to give you more informations.



by Torsten (noreply@blogger.com) at September 11, 2017 10:55 AM

September 09, 2017

Torsten Bergmann

Contestia

Another new Pharo success story. Read more

by Torsten (noreply@blogger.com) at September 09, 2017 12:15 PM

PharoWeekly

New success story: Contestia

Hi

We are happy to announce a new success story….

More http://pharo.org/success/Contestia

Pharo consortium


by Stéphane Ducasse at September 09, 2017 09:34 AM

September 08, 2017

PharoWeekly

Pharo 70 enhancements waiting for an automated reporter :)

Remove SmalllintManifestCheckerTest(class)>>DoIt

https://pharo.fogbugz.com/f/cases/20398

Uncategorized methods in SystemVersionTest, SystemProgressMorph, SugsWatchpointSuggestion, SugsSuggestionSwapMethodTest, SugsNau

https://pharo.fogbugz.com/f/cases/20385

add Gt and Github support to minimal image

https://pharo.fogbugz.com/f/cases/20389

Uncategorized methods in TextKern, TextSelectionColor, TextURL

https://pharo.fogbugz.com/f/cases/20386

Enforce Proper method categorization – Part 1 – SUnit

https://pharo.fogbugz.com/f/cases/20390

Use Pharo.org instead of disney

https://pharo.fogbugz.com/f/cases/20392

Uncategorized methods in WorldMenuHelp,WeakValueAssociation, WeakOrderedCollectionTest, WeakOrderedCollection, WeakMessageSendTe

https://pharo.fogbugz.com/f/cases/20380

Pharo 7 Help should already use Pharo 7 instead of 6 and show some first highlights

https://pharo.fogbugz.com/f/cases/20364

Categorize methods in UserOfFooSharedPool, UnusedVariable, UnlimitedInstanceVariableSlotTest, UnknownSelector, UndefinedVariable

https://pharo.fogbugz.com/f/cases/20382

Categorize methods in TabLabelMorph, TaskbarTask, TermInfoCharacter, TestAutoFractionComputation, TextClassLink, TextComposer, T

https://pharo.fogbugz.com/f/cases/20383

Uncategorized methods in VSUnloadUnit and VMWindowDriver

https://pharo.fogbugz.com/f/cases/20381

Uncategorized methods in ZipStringMember, ZipStore, ZipFileMember, ZipDirectoryMember

https://pharo.fogbugz.com/f/cases/20379

MailMessage API Improvement

https://pharo.fogbugz.com/f/cases/19697

Add Retry of tests in CI

https://pharo.fogbugz.com/f/cases/20371

Categorize methods in RubNotificationStrategy

https://pharo.fogbugz.com/f/cases/20378/

free and beNull missing methods in referenced structures

https://pharo.fogbugz.com/f/cases/20361

New warning text color is not readable on white theme

https://pharo.fogbugz.com/f/cases/20357

deprecated call in QANautilusPluginMorph>>#displayCritique:

https://pharo.fogbugz.com/f/cases/20359

RecursionStopper methods not categorized

https://pharo.fogbugz.com/f/cases/20376

Categorize method in PharoShortcuts

https://pharo.fogbugz.com/f/cases/20377

Uncategorized methods in CP1253TextConverter, CairoPNGPaint, CairoScaledFont, CheckboxButtonMorph, CheckboxMorph, CheckboxMorph,

https://pharo.fogbugz.com/f/cases/20394

Uncategorized methods in DummyUIManager, DropListMorph class, DropListMorph, DoesNotUnderstandDebugAction, DockingBarMenuMorph

https://pharo.fogbugz.com/f/cases/20395

Move SymbolicBytecode>># and hash from package “GT-BytecodeDebugger” into “Kernel”

https://pharo.fogbugz.com/f/cases/20393

[ Pharo 70] Senders-of-String—isLegalInstVarName-isLegalClassName-

https://github.com/pharo-project/pharo/pull/226

[ Pharo 70]  Categorize methods in AnnouncementLogger #240

https://github.com/pharo-project/pharo/pull/240

[ Pharo 70 ] Build 83 PR 236 introduce-at-at-in-dictionary

https://github.com/pharo-project/pharo/pull/236

https://pharo.fogbugz.com/f/cases/20203/

 

[ Pharo 70 ] Build XX PR 236 free-and-beNull-missing-methods-in-referenced-structures

https://github.com/pharo-project/pharo/pull/236

https://pharo.fogbugz.com/f/cases/20361

 

[ Pharo 70 ] Build XX PR 233 cleanup #isMorphicModel

https://pharo.fogbugz.com/f/cases/resolve/20175

https://github.com/pharo-project/pharo/pull/233

 

… lots not recorded, build is at 79.

 

[ Pharo 70 ] Build 69 PR 225 20350-include 32-bit sources in the 64-bit Pharo archive

https://github.com/pharo-project/pharo/pull/225

https://pharo.fogbugz.com/f/cases/20350

 

[ Pharo 70 ] Build 66 PR 223  20348-testWideStringClassName-needs-to-be-unmarked-as-expected-failure

https://github.com/pharo-project/pharo/pull/223

https://pharo.fogbugz.com/f/cases/20348


by Stéphane Ducasse at September 08, 2017 04:32 PM

[Ann] Git Thermite

Hello,
I am releasing an initial version of Git Thermite, the GitHub pull request visualization that I presented at IWST.
SmalltalkHub page:

http://smalltalkhub.com/#!/~ronsaldo/GitHubAPI

Script for loading Git Thermite:
Gofer it
smalltalkhubUser: ‘ronsaldo’ project: ‘GitHubAPI’;
configurationOf: ‘GitStats’;
loadBleedingEdge
For visualizing a GitHub pull request, you can use the dialog on the World menu -> Git Thermite -> Visualize pull request.
The GitHub access credential can be entered through the System Settings. I  recommend to generate a GitHub API secret token instead of using your GH password for the access token. https://github.com/blog/1509-personal-api-tokens
Because this project is for my Master Thesis, and I need to gather experimental data to validate the visualization, I will ask to the people at Lille to not experiment   with this tool until I test it with you during the next two weeks at Lillle.
The current implementation is quite hackish because I am building this in an exploratory way. Later I will make a full rewrite to clean the tool and make it easy to extend and experiment with more visualizations with it.
Best regards,
Ronie

by Stéphane Ducasse at September 08, 2017 05:26 AM

[Consortium] Zweidenker GmbH upgraded to Gold

The Pharo Consortium is very happy to announce that Zweidenker GmbH
has upgraded to Gold Member status.

About
– Zweidenker GmbH: http://zweidenker.de
– Pharo Consortium: http://consortium.pharo.org

The goal of the Pharo Consortium is to allow companies and institutions to
support the ongoing development and future of Pharo.

Individuals can support Pharo via the Pharo Association:

http://association.pharo.org


by Stéphane Ducasse at September 08, 2017 04:42 AM

September 07, 2017

Torsten Bergmann

Studio

Studio is a debugger for the data produced by complex applications. It is ongoing work based on Pharo and Roassal - but nonetheless interesting. Read more here.

by Torsten (noreply@blogger.com) at September 07, 2017 02:21 PM

DataFrame - Towards exploratory data analysis for Pharo

Intro video to DataFrame in Pharo. Code is here.

by Torsten (noreply@blogger.com) at September 07, 2017 11:19 AM

September 06, 2017

Torsten Bergmann

Jun4Pharo

Jun4Pharo, a 3D graphics library, now works on Pharo 5.0. As Pharo 5.0 adopted UFFI and SDL binding, Jun4Pharo uses Pharo's SDL and OpenGL low-level interfaces.


by Torsten (noreply@blogger.com) at September 06, 2017 02:29 PM

BlockStyler for Pharo

Highlights blocks to make them stand out more and detect nesting levels more easily. Code is on
GitHub



by Torsten (noreply@blogger.com) at September 06, 2017 02:25 PM

September 04, 2017

PharoWeekly

Pharo 6 Generating Ruby on Rails Applications

https://railsexpress.quora.com/Pharo-6-Generating-Ruby-on-Rails-Applications


by Stéphane Ducasse at September 04, 2017 08:49 PM

Torsten Bergmann

ESUG 2017 is running

The ESUG 2017 conference started today. You can follow the latest news from ESUG 2017 on twitter.

by Torsten (noreply@blogger.com) at September 04, 2017 09:34 AM

Lowtalk - a new Smalltalk dialect

Lowtalk, a new Smalltalk dialect written in Pharo that could eventually replace Slang (the dialect that is used to build the Smalltalk virtual machine).

Read the announcement and checkout the code.

by Torsten (noreply@blogger.com) at September 04, 2017 09:02 AM

Pharo 6 Generating Ruby-on-Rails Applications

The Rails Express RAD framework in Pharo 6.0 Smalltalk

by Torsten (noreply@blogger.com) at September 04, 2017 08:57 AM

PharoWeekly

Report from AWS: Pharo Lambda

Hi – I neglected to mentioned “the catch” with Lambda, next to my results. So on a tiny EC2 instance you get those kinds of results (this is where I measured the numbers of 50ms) – however on Lambda you aren’t entirely clear what hardware its running on – and there are 2 aspects to consider – a cold start (where you are allocated a new Lambda instance, and so it has to bring in your deployed package) and then there appears to be a cached start – where it seems that one of your old Lambda environments  can be reused. On top of both of these states – there is an extra cost of spawning out to Pharo as its not supported natively.

I mention this in the Readme on the gitlab page (it’s possibly a bit subtle) – but I was pointed to the Sparta GoLang project (who aren’t supported natively either) where they have measured that that cost of spawning out to GoLang (and it looks fairly similar for Pharo) is 700ms. Essentially this spawning is the cost of loading up a NodeJS environment (presumably some Docker like image they have already prepared – although they don’t reveal how this is done), “requiring” the ‘child-process’ node module to get an exec method, and then your code to shell out. (In my repo – this is the PharoLambda.js file).

Empirically I am seeing results from 500ms to 1200ms which are in line with Sparta (possibly better? I haven’t loaded up a Go environment to understand what they need to package up to deploy an app that can be exec’d and how that compares to our 10mb’ish footprint).

If I look at a basic NodeJS hello world app – I see .5ms to 290ms responses – (the min billing unit is 100ms). I got the impression for a recent serverless meet-up that sub 500 is what people aim for. Which means we are at least in the running.

I don’t know how sensitive the ‘overhead’ load time is due to the package size you deploy (I saw a big increase when I got my package below 10mb) or whether it truly is the NodeJS tax. I would love to get hold of the AWS team and suggest they provide another fixed solution that efficiently exec’s in C, a named executable with configurable parameters and the “event” parameter serialised in JSON (on the surface it seems overkill to use NodeJS for just that simple operation).

All this said the free tier gives you “1M free requests per month and 400,000 GB-seconds of compute time per month” – so assuming we can do interesting things in under a second (which I’ve shown), then you can process 400,000 of them a month for free (which isn’t bad really).

Tim

PS:

Hi – the script I’m using is in https://gitlab.com/macta/PharoLambda – it’s nothing fancy, look at the Gitlab .yml file.
This is all Linux running in an ubuntu docker image on Gitlab CI.
Tim

 


by Stéphane Ducasse at September 04, 2017 05:15 AM

[ann] moldable editor – transcript with adornments

Hi,

We are happy to announce that the moldable editor helped us create a richer transcript: GT Transcript.
The transcript is traditionally a stream of plain text. As we now have an elaborate editor, we can take advantage of it to help us display richer representations.
The API is backward compatible with the existing transcript. To enable the new features, we introduced a builder. For example:
transcript nextPutAll: ‘something’
becomes
transcript next putAll: ‘something’
and after #next we can add multiple attributes that we want to affect the following insertion of a text.
Below you can find an example detailing most of the API. The most notable additions is the support for expandable adornments. For example, #showException: provides an in-place expansion of the stack of the exception context.
unnamed.png
To get an idea of how this tool can be useful, take a look at the following video showing the visual logging of a Bloc animation:
https://youtu.be/9VATYNaLwJY
unnamed-1.png
The code can be found in the new incarnation of GToolkit:
Iceberg enableMetacelloIntegration: true.
Metacello new
baseline: ‘GToolkit’;
repository: ‘github://feenkcom/gtoolkit/src‘;
load.
Cheers,
The feenk team

by Stéphane Ducasse at September 04, 2017 05:14 AM

September 02, 2017

PharoWeekly

Google summer projects in Youtube!

 

 

 

 


by Stéphane Ducasse at September 02, 2017 05:20 PM

DesktopManager and Bing.com integration

Hi,

In latest DesktopManager (available from catalog) package you can now also easily choose a background picture
from the “Bing.com” collection in a custom spotter and apply it to the current desktop.

See the attached screenshot for an example.

The magic key combination is to hit CTRL+ D (like Desktop) followed by CTRL+B (like Background)

There is also

CTRL + D followed by CTRL + D — “Desktop Display” to display all desktops
CTRL + D followed by CTRL + A — “Desktop Add” to add a new desktop
CTRL + D followed by CTRL + N — “Desktop Next” to go to next desktop
CTRL + D followed by CTRL + P — “Desktop Previous” to go to previous desktop

Have fun


by Stéphane Ducasse at September 02, 2017 03:37 PM

September 01, 2017

PharoWeekly

Mooc Forum Moderators Wanted

Hi guys

we are looking for some brave souls to help us helping newbies during the next run of the mooc
planned for October 16th 2017…

https://www.fun-mooc.fr/courses/course-v1:inria+41010+session02/about

Please let me know if you are interested helping.
Stef

by Stéphane Ducasse at September 01, 2017 09:38 AM

August 31, 2017

PharoWeekly

Experimental CentOS

CentOS 6.8:
# Add the repo
$ yum-config-manager –add-repo http://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/CentOS_6/devel:languages:pharo:latest.repo
# Install 32bit packages (with X11 dependency for *-ui or not)
$ yum install pharo6-32-ui.i686 or pharo6-32.i386
# Install 64bit packages
$ yum install pharo6-64-ui.x86_64 pharo6-64.x86_64
that will install correct vm for your distribution.
cheers,
Esteban

by Stéphane Ducasse at August 31, 2017 05:10 PM

August 30, 2017

Torsten Bergmann

Clap-st

Clap-st is an Command Line Argument Parser for Pharo. Read more about it on the following blog posts:

- Post 1
- Post 2

by Torsten (noreply@blogger.com) at August 30, 2017 09:37 PM

August 29, 2017

Torsten Bergmann

Renraku release 1.0

Renraku - the quality framework is already in Pharo 7. Read more.

by Torsten (noreply@blogger.com) at August 29, 2017 05:38 PM

PharoWeekly

PharoThings: a must watch

http://astares.blogspot.fr/2017/08/pharothings-live-programming-iot.html

https://github.com/pharo-iot/PharoThings

 

 


by Stéphane Ducasse at August 29, 2017 05:27 PM

Pharo 70 alpha process rolling for real…

[ Pharo 70 ] Build 64 PR 196  Add validation step for binary loaded tests

https://github.com/pharo-project/pharo/pull/195

https://pharo.fogbugz.com/f/cases/20332

 

[ Pharo 70 ] Build 62 PR 222 20346-Update-Iceberg-to-057

https://pharo.fogbugz.com/f/cases/20346

https://github.com/pharo-project/pharo/pull/222

 

[ Pharo 70 ] Build 61 PR 218 Dead code: #destinationBuffer: and #digitBuffer:

https://github.com/pharo-project/pharo/pull/218

https://pharo.fogbugz.com/f/cases/20234

 

[ Pharo 70 ] Build 60 PR 219 20340-IconHardcodedMessageRuleinitialize-is-dirty

https://github.com/pharo-project/pharo/pull/219

https://pharo.fogbugz.com/f/cases/20340/

 

[ Pharo 70 ] Build 59 PR 201 -DarkTheme-disabledTextColor-is-too-close-of-textColor

https://github.com/pharo-project/pharo/pull/201

https://pharo.fogbugz.com/f/cases/20248

 

[ Pharo 70 ] Build 58 PR 104 SendsDeprecatedMethodToGlobalRule-might-be-hard..

https://github.com/pharo-project/pharo/pull/104

https://pharo.fogbugz.com/f/cases/19964

 

[ Pharo 70 ] Build 57 PR 209  Merged in Renraku v1.0.2

https://github.com/pharo-project/pharo/pull/209

https://pharo.fogbugz.com/f/cases/20316

 

[ Pharo 70 ] Build 56 PR 174 20260-FastTable-not-support-cell-morphs-with-stepping-animation #174

https://github.com/pharo-project/pharo/pull/174

https://pharo.fogbugz.com/f/cases/20260/

 

[ Pharo 70 ] Build 54 PR 193 Integrate WebBrowser-Core package to be able to open a browser on a URL

https://pharo.fogbugz.com/f/cases/20304

https://github.com/pharo-project/pharo/pull/193

 

[ Pharo 70 ] Build 52 PR 205 index-inst-var-should-move-from-Slot-to-IndexedSlot

https://github.com/pharo-project/pharo/pull/205

https://pharo.fogbugz.com/f/cases/20191

 

[ Pharo 70 ] Build 52 PR 195 Make-SUnit-loadable-by-Hermes

https://pharo.fogbugz.com/f/cases/20306/Make-SUnit-loadable-by-Hermes

https://github.com/pharo-project/pharo/pull/195

 

[ Pharo 70 ] Build 51 PR 214 Matrix-Trivial-typo-fix

https://pharo.fogbugz.com/f/cases/20326/Matrix-Trivial-typo-fix

https://github.com/pharo-project/pharo/pull/214

 

[ Pharo 70 ] Build 50 PR 215 Rubric-line-numbers-are-not-dark-theme-friendly

https://pharo.fogbugz.com/f/cases/18172/Rubric-line-numbers-are-not-dark-theme-friendly

https://github.com/pharo-project/pharo/pull/215

 

[ Pharo 70 ] Build 49 PR 207 Replace-self-error-no-such-inst-var-by-a-first-class-error

https://pharo.fogbugz.com/f/cases/20114/Replace-self-error-no-such-inst-var-by-a-first-class-error

https://github.com/pharo-project/pharo/pull/72

 

[ Pharo 70 ] Build 48 PR 72 Remove-empty-protocols-on-categorize-all-uncategorized

https://pharo.fogbugz.com/f/cases/18864/Remove-empty-protocols-on-categorize-all-uncategorized

https://github.com/pharo-project/pharo/pull/72

 

[ Pharo 70 ] Build 47 PR 202  Refactor-the-MostUsedTools-of-the-world-menu-to-cut-dependencies-and-use-priorities

https://pharo.fogbugz.com/f/cases/20247/Refactor-the-MostUsedTools-of-the-world-menu-to-cut-dependencies-and-use-priorities

https://github.com/pharo-project/pharo/pull/202

 

[ Pharo 70 ] Build 46 PR 200 Space-analysis-resurrection

https://pharo.fogbugz.com/f/cases/20256/Latin1TextConverter-should-know-mone-encoding-names

https://github.com/pharo-project/pharo/pull/200

 

[ Pharo 70 ] Build 45 PR 175 Space-analysis-resurrection

https://pharo.fogbugz.com/f/cases/20230/Space-analysis-resurrection

https://github.com/pharo-project/pharo/pull/175

 

[ Pharo 70 ] Build 44 PR 212 Add-build-number-to-SystemVersion

https://pharo.fogbugz.com/f/cases/20321/Add-build-number-to-SystemVersion

https://github.com/pharo-project/pharo/pull/212

 

[ Pharo 70 ] Build 43 PR 208 Open-a-package-extending-a-class-via-the-extension-protocol

https://pharo.fogbugz.com/f/cases/20062/Open-a-package-extending-a-class-via-the-extension-protocol

https://github.com/pharo-project/pharo/pull/208

 

[ Pharo 70 ] Build 41 PR 139 MailMessage-API-Improvement

https://pharo.fogbugz.com/f/cases/19697/MailMessage-API-Improvement

https://github.com/pharo-project/pharo/pull/139


by Stéphane Ducasse at August 29, 2017 05:25 PM

August 26, 2017

PharoWeekly

Pillar morphic renderer

We developed a minimal pillar morphic renderer. It is in the Pillar-Renderer package of Pillar. If you want to have fun, please improve it.

The screen shot shows what you get if you execute

PRMorphInterface new openWithSpec.

 

Pharo6_PillarRenderer_for_Morphic_Screenshot_2017-08-25.png


by Stéphane Ducasse at August 26, 2017 02:50 PM

August 25, 2017

Torsten Bergmann

SmartTest Teaser

Cool and funny ESUG 2017 Teaser for SmartTest project

by Torsten (noreply@blogger.com) at August 25, 2017 03:29 PM