Planet Smalltalk

September 23, 2017

Pharo Weekly - DataFrame Class for Pharo

Pharo Weekly - libssh2 for Pharo

Hi

I just want share my little experiments with libssh2. I think somebody can be interested with it and maybe will improve what I did which is now in very raw and initial state.
Libssh2 library is now distributed with Pharo. And it was very enticing to try it from Pharo.
Another reason behind it is the idea to make secure transport for Seamless and related remote tools.
So I wrapped several functions in libssh2 library. And now I am able to send data to server using secure ssh channel. Also I can execute shell commands on remote server from playground.

Pharo Weekly - BlockStyler for Pharo!

Hi everyone,

I built a little syntax highlighting extension for the Nautilus source code pane, which puts a background color behind blocks, so that nested blocks are easily recognizable.
unnamed.png
Install with:
Metacello new
baseline: ‘BlockStyler’;
load
Doesn’t work with “Format as you read”, just as the IconStyler. If anybody has an idea how to integrate it properly into Nautilus as a plugin, let me know. Currently it’s an ugly meta-link hack to get access to the sourceTextModel.
Cheers,
Manuel

Pharo Weekly - [Pharo 70] enhancements coming to you

20077 Class instance variable lowercase in EncodedCharSet

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

20411 ParserNotification subclasses should be renamed to verb style

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

 

20400 All #= methods should be properly categorized

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

 

20419 Uncategorized methods in BytecodeEncoder, BracketSliderMorph….

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

20422 Uncategorized methods in HEFraction, HEScaledDecimal, HashTesterTest,

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

 

20420 Ignore errors while sending emails

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

 

20413 LabelModel>>emphasis: was accidentally removed during P60->P70 migration

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

 

20412 Unstable Semaphore tests

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

 

20403 Clean class dependencies of Kernel-Tests
https://pharo.fogbugz.com/f/cases/20403

 

20391 FFI wants author initials

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

 

20414 Update Hermes to the latest stable version (78afdca)

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

 

20408 Unstable MutexTests

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

20406 update iceberg to v0.5.8

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

20116 Add is64bit and is32bit methods in order to distinguish between those two cases

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

 

Running-Without-Changes-and-Sources

https://pharo.fogbugz.com/f/cases/edit/20126/Running-Without-Changes-and-Sources

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

 

Small-cosmetic-cleanups-in-class-SimpleEditor

https://pharo.fogbugz.com/f/cases/20396-Small-cosmetic-cleanups-in-class-SimpleEdit

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

 

All-hash-methods-should-be-properly-categorized

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

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

 


September 22, 2017

September 21, 2017

Pharo Weekly - How to get started to write a booklet?

 

  1. wget https://raw.githubusercontent.com/pillar-markup/pillar/master/download.sh
  2. chmod +x download.sh
  3. ./download.sh
  4. ./pillar archetype book
  5. make spiral
  6. open build/book.pdf

You can also run the texlive distribution in docker.
https://github.com/cdlm/docker-texlive

Stef

Pharo Weekly - Pull request for “bootstrap”

Hi,

in relation to the issue https://pharo.fogbugz.com/f/cases/20447 Torsten asked me to describe how to prepare pull requests related to the bootstrap process. It is a little bit different from the standard pull requests because the code directory is different and the image needs to have some prerequisites loaded.
1) you need the current bootstrap image. This image contains the VMMaker, Espell, Beacon etc. You can find the latest path to it in the Jenkinsfile, now it is:
You can prepare the image by yourself using the baseline in the repository https://github.com/guillep/PharoBootstrap. Currently we use Pharo 6 as the base system for it
2) place this image directly into your Pharo repository local clone folder
3) run the script bootstrap/scripts/prepare_image.st
4) open it and in Iceberg register your local clone as the local repository. In the path to the sources use “bootstrap/src”
5) continue as with a standard issue pull request, so create issue on FogBugz, create a branch, do your changes, commit them, pull them to your fork and create the pull request. For more information see:
Cheers,
— Pavel

September 20, 2017

September 19, 2017

Pharo Weekly - News from the trenches

Hello!

This is my weekly ChangeLog, from 11 September 2017 to 17 September 2017.
You can see it in a better format by going here: http://log.smallworks.eu/web/search?from=11/9/2017&to=17/9/2017

ChangeLog
=========

14 September 2017:
——————

*    Since Ronie came to spend two weeks with us, I made a “stop the world” call to work with him in a couple
of projects I want to integrate in Pharo.

So, I’ve been working on that last two days: Ronie has a working implementation of a “real headless”
VM that can chose to start a world using SDL2.

Why we want this? Because of many reasons… one of them is because is lame to open a hidden window when
we want to use just a command line, but also because the desition of opening a window (the World or
whatever) should be responsibility of the image (the user), not the VM.

Anyway, the problem is that Ronie made his VM using CMake and we use plain Makefiles (a very complex
structure of makefiles), so we needed to convert that.

Also, since this is experimental, a lot ot small details are missing and we are running to supply them.

But well… I’m happy to say that we have a Pharo 7.0 running 100% on headless mode with an SDL2 window
serving the world, on macOS 32bits.

Tomorrow we will look to fix some remaining details and to expand the source to linux and windows (32bits),
then we will jump to 64bits.

11 September 2017:
——————

*    I just released [iceberg v0.5.8](https://github.com/pharo-vcs/iceberg/releases/tag/v0.5.8).

This version is a maintenance version, and contains this fixes:

* speed up of commits by not traversing the full tree to detect staged files (just compare later)
* fix refresh option in PR tool
* do not use hardcoded colours in diffs
* add guessing of source dirs to easy adding of local repositories
* recategorise methods

It will be integrated on Pharo 7.0 in on [case: 20406](https://pharo.fogbugz.com/f/cases/20406).

*    Last week I was at ESUG 🙂

Anyway, I’m working on [tonel](http://github.com/pharo-vcs/tonel), the new fileformat made to replace
[filetree](http://github.com/pharo-vcs/filetree) (because of many reasons, being the non-scalable nature of
file-per-method strategy the most important).


Cincom Smalltalk - Why Learning Smalltalk Can Have a Big Impact for a Developer

We think it is a good idea for developers to learn Smalltalk, even if they do not anticipate the opportunity to use it. Why?  Because learning Smalltalk will make you […]

The post Why Learning Smalltalk Can Have a Big Impact for a Developer appeared first on Cincom Smalltalk.

ESUG news - UK Smalltalk User Group Meeting - Sept 25th

Fizzylogo: a Smalltalk-72 lookalike

The next meeting of the UK Smalltalk User Group Meeting will be on Monday, 25th September.

We'll meet at a new venue The City Pride (http://www.cityprideclerkenwell.co.uk/) at 7pm.

Davide Della Casa will present Fizzylogo: a Smalltalk-72 lookalike. An excellent excuse to revisit how early Smalltalk versions (the languages, and the environments) worked under the hood, including Smalltalk-72 and Rosetta Smalltalk.

If you'd like to join us, you can just show up at the pub. You can also sign up in advance at the meeting's Meetup page: https://www.meetup.com/UKSTUG/events/243468885.

See you there!

ESUG news - UK Smalltalk User Group Meeting - Sept 25th

Fizzylogo: a Smalltalk-72 lookalike

The next meeting of the UK Smalltalk User Group Meeting will be on Monday, 25th September.

We'll meet at a new venue The City Pride (http://www.cityprideclerkenwell.co.uk/) at 7pm.

Davide Della Casa will present Fizzylogo: a Smalltalk-72 lookalike. An excellent excuse to revisit how early Smalltalk versions (the languages, and the environments) worked under the hood, including Smalltalk-72 and Rosetta Smalltalk.

If you'd like to join us, you can just show up at the pub. You can also sign up in advance at the meeting's Meetup page: https://www.meetup.com/UKSTUG/events/243468885.

See you there!

ESUG news - UK Smalltalk User Group Meeting - Sept 25th

Fizzylogo: a Smalltalk-72 lookalike

The next meeting of the UK Smalltalk User Group Meeting will be on Monday, 25th September.

We'll meet at a new venue The City Pride (http://www.cityprideclerkenwell.co.uk/) at 7pm.

Davide Della Casa will present Fizzylogo: a Smalltalk-72 lookalike. An excellent excuse to revisit how early Smalltalk versions (the languages, and the environments) worked under the hood, including Smalltalk-72 and Rosetta Smalltalk.

If you'd like to join us, you can just show up at the pub. You can also sign up in advance at the meeting's Meetup page: https://www.meetup.com/UKSTUG/events/243468885.

See you there!

Torsten Bergmann - Kobald - Web Usability as a Service

Kobald - Web Usability as a Service. A tool to find usability issues on your Web App automatically. Developed at LIFIA - Universidad Nacional de La Plata, Argentina using Pharo and Seaside.

See it live at http://autorefactoring.lifia.info.unlp.edu.ar and check the code at https://github.com/juliangrigera/Kobold

Clément Béra - VM Learning: Memory Management

Hi folks,

I started to work recently with a Master student on the memory management of the Pharo VM. She has worked previously on the VM profiler and she is now focusing on the incremental garbage collector.

In this context, I am trying to get her skills up to speed on Spur, the current Memory Manager. To do so, I wrote a simple exercise that might be of general interest, so I am going to share it here.

Note however that the exercise is designed similarly to French “khôlle”. A khôlle is an oral exam where the teacher asks a couple questions to the student and the student has one entire hour to answer the question during which he will use a blackboard to explain the rationale leading to his answer. The teacher evaluates both the result and the rationale behind the result. If the student answers in one sentence to the question, this means he did not understand something correctly (the answer cannot be this obvious).

Exercise: Understanding the memory representation of objects

Let’s say we have the following class:

Object subclass: #Person
  instanceVariableNames: 'name age height socialNumber siblings'
  classVariableNames: ''
  package: 'PeoplePackage'

and the following method:

Person class>>createJohnWithSibling1: sibling1 andSibling2: sibling2
^ Person basicNew
    name: 'John';
    age: 47;
    height: 1.83;
    socialNumber: 189345472112;
    siblings: {sibling1.sibling2};
    yourself

The method createJohnWithSibling1:andSibling2: is executed with two other instances of Person as arguments. When the method was activated, there was enough room in Eden to allocate all the objects which required to be allocated during its execution. The whole method is executed in a single process, which is not interrupted (no external events, no process switch) during the entire execution of the method.

We note that the code is run in Pharo 6, on the Cog VM, with the Spur memory manager.

Question 1:
How many bytes were allocated in Eden during the execution of the method createJohnWithSibling1:andSibling2: in 32 bits and 64 bits ? Explain the theoretical value of each word/byte/bit allocated.

Question 2:
The method has now been fully executed. Draw the memory representation of the instance John returned by the method as well as all objects it refers to directly and through the class index (each of its instance variable and its class). Detail the difference between 32 bits and 64 bits representations. Explain the theoretical value of each word/byte/bit present in each of the objects represented.

This post is relevant to help:
Spur’s new object format

I am not going to provide a detailed solution for this exercise on the blog. However, if you found the solutions and you have some questions or you want to discuss with me about it, feel free to contact me by mail at clement (dat) bera (at) inria (dat) fr. Depending on my availability, I may answer you directly by mail or set-up a Discord or Skype meeting.

I hope you enjoyed the post.


September 18, 2017

UK Smalltalk - Fizzylogo: a Smalltalk-72 lookalike - Monday, September 25th

The next meeting of the UK Smalltalk User Group will be on Monday, September 25th.

We'll meet at a our new venue, the City Pride, from 7pm onwards.

Davide Della Casa will present Fizzylogo: a Smalltalk-72 lookalike. An excellent excuse to revisit how early Smalltalk versions (the languages, and the environments) worked under the hood, including Smalltalk-72 and Rosetta Smalltalk.

If you'd like to join us, you can show up at the pub. You can also sign up in advance on the meeting's Meetup page.

Cincom Smalltalk - Achieving Career Fulfillment – a Challenging Quandary

In today’s competitive world, it can be very difficult to find a career that checks all the boxes. Whether you’re attempting to start a new career or advance in your […]

The post Achieving Career Fulfillment – a Challenging Quandary appeared first on Cincom 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

Torsten Bergmann - 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

September 14, 2017

Pharo Weekly - [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

September 12, 2017

Cincom Smalltalk - Cincom® ObjectStudio® 8.9 and Cincom® VisualWorks® 8.3 Are Here!

The new releases of @cincomsmalltalk are now available for customers & partners. Get your #commercialsmalltalk here: https://t.co/XK9aPo5l7Z — Cincom Smalltalk (@cincomsmalltalk) September 12, 2017 The new releases of Cincom Smalltalk™ […]

The post Cincom® ObjectStudio® 8.9 and Cincom® VisualWorks® 8.3 Are Here! appeared first on Cincom Smalltalk.

September 11, 2017

Torsten Bergmann - 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.



September 10, 2017

Benoit St-Jean - ENVY

Que vous l’aimiez ou le détestiez, ENVY fait partie intégrante de l’environnement Instantiations Smalltalk (anciennement VisualAge Smalltalk ou VAST).  Quelques témoignages de célèbres Smalltalkers au sujet d’ENVY.


Classé dans:Smalltalk, VisualAge Tagged: ENVY, Instantiations, repository, Smalltalk, VAST, VisualAge

Benoit St-Jean - Xerox Alto

Sans cette merveilleuse machine (Xerox Alto) et son système d’exploitation révolutionnaires, qui sait où en serait l’informatique aujourd’hui?

Une démo du Xerox Alto ici.

D’autres article reliés ici.


Classé dans:informatique, Smalltalk Tagged: Alto, démo, Smalltalk, Xerox

September 09, 2017

September 08, 2017

Pharo Weekly - 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


Pharo Weekly - [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