September 15, 2017
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 (firstname.lastname@example.org) at September 15, 2017 08:07 PM
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 (email@example.com) at September 15, 2017 01:15 PM
September 14, 2017
[Ann] Launcher new version available
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.
by Stéphane Ducasse at September 14, 2017 04:48 PM
September 11, 2017
Updated Pharo Launcher
According to Peter the updated Pharo Launcher automatically downloads the proper VM. No more VM juggling.
by Torsten (firstname.lastname@example.org) 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 (email@example.com) at September 11, 2017 10:55 AM
September 09, 2017
Another new Pharo success story. Read more
by Torsten (firstname.lastname@example.org) at September 09, 2017 12:15 PM
New success story: Contestia
We are happy to announce a new success story….
by Stéphane Ducasse at September 09, 2017 09:34 AM
September 08, 2017
Pharo 70 enhancements waiting for an automated reporter :)
Uncategorized methods in SystemVersionTest, SystemProgressMorph, SugsWatchpointSuggestion, SugsSuggestionSwapMethodTest, SugsNau
add Gt and Github support to minimal image
Uncategorized methods in TextKern, TextSelectionColor, TextURL
Enforce Proper method categorization – Part 1 – SUnit
Use Pharo.org instead of disney
Uncategorized methods in WorldMenuHelp,WeakValueAssociation, WeakOrderedCollectionTest, WeakOrderedCollection, WeakMessageSendTe
Pharo 7 Help should already use Pharo 7 instead of 6 and show some first highlights
Categorize methods in UserOfFooSharedPool, UnusedVariable, UnlimitedInstanceVariableSlotTest, UnknownSelector, UndefinedVariable
Categorize methods in TabLabelMorph, TaskbarTask, TermInfoCharacter, TestAutoFractionComputation, TextClassLink, TextComposer, T
Uncategorized methods in VSUnloadUnit and VMWindowDriver
Uncategorized methods in ZipStringMember, ZipStore, ZipFileMember, ZipDirectoryMember
MailMessage API Improvement
Add Retry of tests in CI
Categorize methods in RubNotificationStrategy
free and beNull missing methods in referenced structures
New warning text color is not readable on white theme
deprecated call in QANautilusPluginMorph>>#displayCritique:
RecursionStopper methods not categorized
Categorize method in PharoShortcuts
Uncategorized methods in CP1253TextConverter, CairoPNGPaint, CairoScaledFont, CheckboxButtonMorph, CheckboxMorph, CheckboxMorph,
Uncategorized methods in DummyUIManager, DropListMorph class, DropListMorph, DoesNotUnderstandDebugAction, DockingBarMenuMorph
Move SymbolicBytecode>># and hash from package “GT-BytecodeDebugger” into “Kernel”
[ Pharo 70] Senders-of-String—isLegalInstVarName-isLegalClassName-
[ Pharo 70] Categorize methods in AnnouncementLogger #240
[ Pharo 70 ] Build 83 PR 236 introduce-at-at-in-dictionary
[ Pharo 70 ] Build XX PR 236 free-and-beNull-missing-methods-in-referenced-structures
[ Pharo 70 ] Build XX PR 233 cleanup #isMorphicModel
… lots not recorded, build is at 79.
[ Pharo 70 ] Build 69 PR 225 20350-include 32-bit sources in the 64-bit Pharo archive
[ Pharo 70 ] Build 66 PR 223 20348-testWideStringClassName-needs-to-be-unmarked-as-expected-failure
by Stéphane Ducasse at September 08, 2017 04:32 PM
[Ann] Git Thermite
I am releasing an initial version of Git Thermite, the GitHub pull request visualization that I presented at IWST.
Script for loading Git Thermite:
smalltalkhubUser: ‘ronsaldo’ project: ‘GitHubAPI’;
For visualizing a GitHub pull request, you can use the dialog on the World menu -> Git Thermite -> Visualize pull request.
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.
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.
– 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:
by Stéphane Ducasse at September 08, 2017 04:42 AM
September 07, 2017
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 (email@example.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 (firstname.lastname@example.org) at September 07, 2017 11:19 AM
September 06, 2017
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 (email@example.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
by Torsten (firstname.lastname@example.org) at September 06, 2017 02:25 PM
September 04, 2017
Pharo 6 Generating Ruby on Rails Applications
ESUG 2017 is running
The ESUG 2017 conference started today. You can follow the latest news from ESUG 2017 on twitter.
by Torsten (email@example.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 (firstname.lastname@example.org) 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 (email@example.com) at September 04, 2017 08:57 AM
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).
This is all Linux running in an ubuntu docker image on Gitlab CI.
by Stéphane Ducasse at September 04, 2017 05:15 AM
[ann] moldable editor – transcript with adornments
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’
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.
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:
The code can be found in the new incarnation of GToolkit:
The feenk team
by Stéphane Ducasse at September 04, 2017 05:14 AM
September 02, 2017
Google summer projects in Youtube!
by Stéphane Ducasse at September 02, 2017 05:20 PM
DesktopManager and Bing.com integration
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
by Stéphane Ducasse at September 02, 2017 03:37 PM
September 01, 2017
Mooc Forum Moderators Wanted
we are looking for some brave souls to help us helping newbies during the next run of the mooc
planned for October 16th 2017…
Please let me know if you are interested helping.
by Stéphane Ducasse at September 01, 2017 09:38 AM
August 31, 2017
# Add the 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.
by Stéphane Ducasse at August 31, 2017 05:10 PM
August 30, 2017
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 (firstname.lastname@example.org) at August 30, 2017 09:37 PM
August 29, 2017
Renraku release 1.0
Renraku - the quality framework is already in Pharo 7. Read more.
by Torsten (email@example.com) at August 29, 2017 05:38 PM
PharoThings: a must watch
Pharo 70 alpha process rolling for real…
August 26, 2017
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.
by Stéphane Ducasse at August 26, 2017 02:50 PM
August 25, 2017
Cool and funny ESUG 2017 Teaser for SmartTest project
by Torsten (firstname.lastname@example.org) at August 25, 2017 03:29 PM