A tiny project call PragmaCompatibility for Pharo:
Multiple changes of API happened through Pharo 6 to Pharo 8 making it hard to get the keyword of a pragma on all those versions.
This project help to deal with this case.
https://github.com/jecisc/PragmaCompatibility/
Tuesday, March 03, 2020
Telescope Cytoscape v2.2.0 for Pharo
v2.2.0 of Telescope Cytoscape was released, a framework to build interactive web visualizations with
Seaside and Pharo
Release notes are here: https://github.com/TelescopeSt/TelescopeCytoscape/releases/tag/v2.2.0
The main highlights are the box selection and stabilization of mouseover events.
Release notes are here: https://github.com/TelescopeSt/TelescopeCytoscape/releases/tag/v2.2.0
The main highlights are the box selection and stabilization of mouseover events.
Pharo and Lint
lint, or a linter, is a tool that analyzes source code to flag programming errors, bugs, stylistic errors, and suspicious constructs. In elder Smalltalks you often find a tool called Smalllint.
Pharo also includes lint rules by default - integrated into the toolset - and they are very helpful. You can even add you own rules.
Pharo also includes lint rules by default - integrated into the toolset - and they are very helpful. You can even add you own rules.
Pharo Reflectivity
This Reflectivity paper - describe the latest, up-to-date version of Reflectivity that is shipped with Pharo 8
https://programming-journal.org/2020/4/5/
Link to PDF: https://arxiv.org/abs/2002.06182
https://programming-journal.org/2020/4/5/
Link to PDF: https://arxiv.org/abs/2002.06182
Krendrick epidemiology modeling for Pharo
More infos on Krendrick epidemiology modeling - which is based on Pharo, nice:
https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-2843-0
Image Processing in Pharo
Nice project providing a small Pharo library for basic image processing:
https://github.com/pablo1n7/ImageForm
Look here for a demo.
https://github.com/pablo1n7/ImageForm
Look here for a demo.
Monday, March 02, 2020
Teachable for Pharo moved to GitHub
I moved Teachable project for Pharo now to GitHub:
https://github.com/astares/Pharo-Teachable
You can easily load via catalog within Pharo 8.

The project shows the power of Smalltalk meachanisms within Pharo and is useful for mock object building in unit tests.
https://github.com/astares/Pharo-Teachable
You can easily load via catalog within Pharo 8.
The project shows the power of Smalltalk meachanisms within Pharo and is useful for mock object building in unit tests.
Pomodoro Timer for Pharo 8
Pomodoro Timer for
Pharo is now easily loadable from Catalog in Pharo 8.

Project is available on:
https://github.com/astares/Pharo-Pomodoro
An old video is here:
Project is available on:
https://github.com/astares/Pharo-Pomodoro
An old video is here:
QuickAccess for Pharo 8
My QuickAccess project for Pharo
is now available in catalog for Pharo 8 so you can easily load.
https://github.com/astares/Pharo-QuickAccess
An old video explaining it is here:
https://github.com/astares/Pharo-QuickAccess
An old video explaining it is here:
YUMLGenerator for Pharo
I published some old code for Pharo on
https://github.com/astares/Pharo-YUML
to easily generate links for YUML to get a class hierarchy image. Helps to include simple class hierarchy pictures into your (markdown or other) documentation.
Example: YUMLGenerator open: String
https://github.com/astares/Pharo-YUML
to easily generate links for YUML to get a class hierarchy image. Helps to include simple class hierarchy pictures into your (markdown or other) documentation.
Example: YUMLGenerator open: String
Harbour for Pharo
My Harbour file browser experiment for Pharo is now loadable from Catalog:
https://github.com/astares/Pharo-Harbour
Now I need to find the time to add more functionality to make it more useful...
https://github.com/astares/Pharo-Harbour
Now I need to find the time to add more functionality to make it more useful...
Thursday, February 13, 2020
Pharo-VistaCursors
Pharo-VistaCursors is a older project I wrote in the early days of Pharo to have a better cursor on Windows.
I moved it over from SmalltalkHub to GitHub.

It is easy to load via Pharo catalog or load instructions from https://github.com/astares/Pharo-VistaCursors
I moved it over from SmalltalkHub to GitHub.
It is easy to load via Pharo catalog or load instructions from https://github.com/astares/Pharo-VistaCursors
Casino - Java to Angular migration using Pharo
Casino: A Pharo smalltalk project that migrates web projects from Java to Angular
https://github.com/badetitou/Casino
https://github.com/badetitou/Casino
Tuesday, January 07, 2020
Smalltalk with the GraalVM
If you have followed Smalltalk history (or some of the posts in this blog) you might already know about the Strongtalk system.
It is a Smalltalk environment with optional static typing support. Strongtalk can make some compile time checks, and offer stronger type safety guarantees; this is the source of its name. It is non-commercial, though it was originally a commercial project developed by a small startup company named LongView Technologies (trading as Animorphic Systems). Strongtalk is freely available on http://www.strongtalk.org
Programmers of the Strongtalk VM were later responsible at Sun Microsystems to make Java running faster by implementing the so called Java HotSpot virtual machine.
The HotSpot VM (now owned by Oracle) was primarily a Java only virtual machine - thats why it is called "JVM".
But the work continued to provide a new polyglot virtual machine called "GraalVM" which is able to host and run other programming languages (like JavaScript, Python and even C) on a new single virtual machine too.
You can find more informations about GraalVM on https://www.graalvm.org
All this is based on a Graal compiler and Truffle language implementation framework as well as a language interop framework called Polyglot that allows Truffle languages to call each other.
Now the Software Architecture Group at HPI provides even a Smalltalk on the GraalVM which is primarily using Squeak as the hosted Smalltalk environment.
Using the Polyglot functionality of the GraalVM you can interoperate easily from Smalltalk with other languages of the GraalVM as it can be seen in this demo video:
It is a Smalltalk environment with optional static typing support. Strongtalk can make some compile time checks, and offer stronger type safety guarantees; this is the source of its name. It is non-commercial, though it was originally a commercial project developed by a small startup company named LongView Technologies (trading as Animorphic Systems). Strongtalk is freely available on http://www.strongtalk.org
Programmers of the Strongtalk VM were later responsible at Sun Microsystems to make Java running faster by implementing the so called Java HotSpot virtual machine.
The HotSpot VM (now owned by Oracle) was primarily a Java only virtual machine - thats why it is called "JVM".
But the work continued to provide a new polyglot virtual machine called "GraalVM" which is able to host and run other programming languages (like JavaScript, Python and even C) on a new single virtual machine too.
You can find more informations about GraalVM on https://www.graalvm.org
All this is based on a Graal compiler and Truffle language implementation framework as well as a language interop framework called Polyglot that allows Truffle languages to call each other.
Now the Software Architecture Group at HPI provides even a Smalltalk on the GraalVM which is primarily using Squeak as the hosted Smalltalk environment.
Using the Polyglot functionality of the GraalVM you can interoperate easily from Smalltalk with other languages of the GraalVM as it can be seen in this demo video:
Practical Agile AI with Pharo
Apress seems to have already a page on upcoming book "Practical Agile AI with Pharo" which will be available in 2020
Docker and Pharo
Smalltalk / Web Camp Lake Constance
Nice summary report from Joachim about the Smalltalk / Web Camp Lake Constance test run - a meeting of some companies using Smalltalk for web development.
Cuis-Smalltalk-Chip8 in Cuis Smalltalk
A Chip 8 emulator (interpreter) written in Cuis Smalltalk:
https://github.com/thiagoslino/Cuis-Smalltalk-Chip8
https://github.com/thiagoslino/Cuis-Smalltalk-Chip8
SQLite3 for Pharo updated and moved
In the past PierceNG and me were maintaining SQLite3 driver for Pharo. As in 2019 another Pharo community member (Julien Delplanque) contributed to the project it was better to align and move the project to a more community owned location.
So SQLite3 for Pharo was reworked to be fully standalone and it was moved to community owned "pharo-rdbms" location:
https://github.com/pharo-rdbms/Pharo-SQLite3
Additional Docu and CI support was added with green builds for Pharo 6.1, Pharo 7 and Pharo 8.
The old locations were marked deprecated.
So SQLite3 for Pharo was reworked to be fully standalone and it was moved to community owned "pharo-rdbms" location:
https://github.com/pharo-rdbms/Pharo-SQLite3
Additional Docu and CI support was added with green builds for Pharo 6.1, Pharo 7 and Pharo 8.
The old locations were marked deprecated.
MoreVMs 2020
In 2020 there is a workshop on Modern Language Runtimes, Ecosystems, and VMs in Portugal. Maybe the topic is interesting for you. Read more here.
Grouper for Pharo
Grouper is a nice package to group data in Pharo:
- Read more here
- load the code from https://github.com/juliendelplanque/Grouper
ReStore for Pharo
ReStore - an object relational database framework originally available for Dolphin Smalltalk was ported to Pharo.
Nice - I should give it a try.
Nice - I should give it a try.
Pharo XML support packages moved to GitHub
In November 2019 some time was spend to move the XML Support for Pharo from old SmalltalkHub to a community managed location on GitHub:
https://github.com/pharo-contributions
For the detailed packages this means
Additionally some more cleanups were applied and a continuous integration (CI) was established.
https://github.com/pharo-contributions
For the detailed packages this means
- BitmapCharacterSet moved to GitHub
- XMLWriter moved to GitHub
- OrderPreservingDictionary was updated to 1.5.0
- XMLParser moved to GitHub
- XMLParserHTML moved to GitHub
- XMLParserStAX moved to GitHub
- XPath moved to GitHub
- Pastell moved to GitHub
Fortunately there is a nice tool from Peter Uhnak called "git-migration" that helped a lot in this transition and preserved original commit history as much as possible.
The move to GitHub should help to better maintain contributions to these projects and also verify that the XML support runs on newer Pharo versions.
TF-Login for Seaside 3.3.x on Pharo 7
Pierce ported TF-Login to latest Seaside 3.3.x on Pharo 7. Read more here.
Run PierCMS in Pharo 7
You want to use PierCMS with latest stable Pharo release Pharo 7? Then check out this resource from John Borden. I guess this also works for Pharo 8.
Hunter - Hunter Useful and Nice Tool for ECMAScript Reengineering
Hunter (standing for Hunter Useful and Nice Tool for ECMAScript Reengineering) is a tool to help understanding JavaScript applications via interactive visualizations.
Project page is here: https://github.com/dorellang/hunter
It runs on top of Pharo.
Project page is here: https://github.com/dorellang/hunter
It runs on top of Pharo.
SplitMix64
SplitMix64: This is an implementation of the SplitMix64 pseudo-random number generator. It is very fast, has a period of 2^64 and passes the Big Crush (160 tests).
Currently only an simple fileout ST file on the GitHub page - maybe Benoît St-Jean (the author) can in the future provide it as a properly packaged Pharo git project.
Currently only an simple fileout ST file on the GitHub page - maybe Benoît St-Jean (the author) can in the future provide it as a properly packaged Pharo git project.
ESUG 2019 Videos
All ESUG 2019 conference videos are uploaded and available in "ESUG 2019 Playlist" on Youtube
MaterialDesignLite v2.2.0
Old news from October I only shared via my twitter account - but nonetheless now also here on the blog:
MaterialDesignLite v2.2.0 is available as a release.
Some more details here.
Monday, October 28, 2019
Pharo with Style
Pharo with Style explains the difference between code that runs and code that talks to the reader. Found the book on several places:
- books.pharo.org version from March 24, 2019
- Archive ouverte HAL version from August 12, 2019
- Travis CI build with latest version
Rotten Green Tests
Rotten Green Tests explained
There is also a paper called "Rotten Green Tests A First Analysis"
There is also a paper called "Rotten Green Tests A First Analysis"
Pharo Bootstrapping Challenges
In the beginning of the year 2019 I already wrote that Pharo is able to bootstrap the image. This is based on the Pharo Bootstrap project from Guille and already used in the Pharo Bootstrap process itself to form images like Pharo 7 and Pharo 8 for the releases.
If you look in the Pharo project repository you will find a bootstrap folder with the code that is used to bootstrap the standard pharo image if you are interested.
But sometimes you want to build and bootstrap an own fully custom image. There are new tools helping you to do this like the nice Pharo Bootstrapper project. This project allows you to use Pharo build small images and bootstrap own Smalltalk systems if you like.
I can also recommend to read the paper: "Challenges in Debugging Bootstraps of ReflectiveKernels"
If you look in the Pharo project repository you will find a bootstrap folder with the code that is used to bootstrap the standard pharo image if you are interested.
But sometimes you want to build and bootstrap an own fully custom image. There are new tools helping you to do this like the nice Pharo Bootstrapper project. This project allows you to use Pharo build small images and bootstrap own Smalltalk systems if you like.
I can also recommend to read the paper: "Challenges in Debugging Bootstraps of ReflectiveKernels"
Sindarin - advanced debugging in Pharo
Sindarin: is a Versatile Scripting API for the PharoDebugger. Watch the videos below from ESUG 2019 or read the following working paper.
Wednesday, August 21, 2019
Pharo Headless - Beta
An early preview - but you can already get real headless vm and image from zero-conf and play with it. This is work from the Pharo Consortium Team from the last couple of
months.
Some interesting features:
If you want to try it out check the headless branch within the OpenSmalltalk VM repository:
There is also a Continuous integration (CI) job available.
Read the full announcement.
Some interesting features:
- Image handles creation of main world - so the Pharo world instantiation and handling is even more shifted to the image side - allows to play with new ideas on world and window creation This will provide more backends: the regular VM support (compatibility with non-headless VMs), and OSWindow with two additional backends: SDL and GTK3+ (implemented using UFFI calls)
- Handling of events on the image side - which will hopefull allow for better event handling as we can process events directly within the image and not the VM
- VMMaker code migrated to Tonel and update on VMMaker to execute in Pharo 7 and 8 - this allows for easier VM building of the Pharo virtual machine (which is based on OpenSmalltalk VM)
- Removing GPL code from the VM repository - to be more license clean
If you want to try it out check the headless branch within the OpenSmalltalk VM repository:
https://github.com/pharo-project/opensmalltalk-vm
There is also a Continuous integration (CI) job available.
Read the full announcement.
Pharo bindings to the LLVM disassembler and Unicorn library
Guille Polito wrote bindings to the LLVM disassembler and Pharo bindings to the Unicorn library. Both projects are available on GitHub:
https://github.com/guillep/pharo-llvmDisassembler
https://github.com/guillep/pharo-unicorn
This should allow for better machine code simulation directly within Pharo.
https://github.com/guillep/pharo-llvmDisassembler
https://github.com/guillep/pharo-unicorn
This should allow for better machine code simulation directly within Pharo.
Spec2
The UI framework in Pharo receives an update. Spec2 will replace Spec over time - it is already included within upcoming Pharo 8 (which is still in development). Both run in parallel to ease migration.
Source code is also on GitHub: https://github.com/pharo-spec/Spec
It is possible to load Spec2 into latest Pharo release - Pharo 7. You will find a script on the project page. Some early documentation on Spec2 is already available as PDF booklet - but as the framework itself work in progress.
Spec2 will also allow for a binding to other backends like Gtk (which is based on Mars project from Esteban):
https://github.com/pharo-spec/mars-gtk
Source code is also on GitHub: https://github.com/pharo-spec/Spec
It is possible to load Spec2 into latest Pharo release - Pharo 7. You will find a script on the project page. Some early documentation on Spec2 is already available as PDF booklet - but as the framework itself work in progress.
Spec2 will also allow for a binding to other backends like Gtk (which is based on Mars project from Esteban):
https://github.com/pharo-spec/mars-gtk
Booklet - Testing in Pharo
An upcoming new booklet for Pharo. It is about "Testing in Pharo" including SUnit, DrTest and other. Still work in progress but PDF is already here
Event Music Manager for Pharo - ESUG2019.
The project Event Music Manager (EMM) for Pharo from Benoît Verhaeghe allows us to play with music and video in Pharo. It will also be shown on ESUG 2019 conference.
Source code is available on GitHub: https://github.com/badetitou/EMM
It uses Seaside web framework and a special UFFI binding to the VLC lib which is also available on GitHub;
https://github.com/badetitou/Pharo-LibVLC
VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols.
Go check the trailer:
Source code is available on GitHub: https://github.com/badetitou/EMM
It uses Seaside web framework and a special UFFI binding to the VLC lib which is also available on GitHub;
https://github.com/badetitou/Pharo-LibVLC
VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols.
Go check the trailer:
GistBrowser for Pharo
There is a nice GistBrowser for Pharo - now also including Gist Press support.
Code is on GitHub:
https://github.com/brackendev/GistBrowser-Pharo
Code is on GitHub:
https://github.com/brackendev/GistBrowser-Pharo
Pharo Chip Designer
Pavel released a new project: Pharo Chip Designer - a Silicon chip layout design game written in Pharo
Code is on GitHub:
https://github.com/pavel-krivanek/PharoChipDesigner
Sample Video is here:
https://github.com/pavel-krivanek/PharoChipDesigner
Sample Video is here:
Woden 3D engine for Pharo - ESUG 2019 Demo
ESUG 2019 conference is ahead and Ronie Salgado is preparing a demo of his 3D engine Woden - written in Pharo.
Spider
The page http://vastgoodies.com allows to browse VAST ENVY goodies.
The "Spider" project from Jan van de Sandt (http://github.com/jvdsandt/spider) seems to allow similar but for the ST source graph of git and MC projects. Work in progress - but nice example for P3/Glorp, Seaside and Pharo usage if you have a deeper look at the code. Nice!
The "Spider" project from Jan van de Sandt (http://github.com/jvdsandt/spider) seems to allow similar but for the ST source graph of git and MC projects. Work in progress - but nice example for P3/Glorp, Seaside and Pharo usage if you have a deeper look at the code. Nice!
Thursday, July 04, 2019
PolySLAM and Pharo
PolySLAM (Polygon based Simultaneous Localization And Mapping) is a solution for multi-robot exploration of indoor environments.
Pharo Smalltalk was used to implement and simulate it.
Read more here or watch the video:
Pharo Smalltalk was used to implement and simulate it.
Read more here or watch the video:
Smalltalk and the largest MIDI instrument
Mariano has a nice story on using Smalltalk to control the largest MIDI instrument of the world. Nice and well done.
Smalltalk always rocks!
Smalltalk always rocks!
Pharo Compiler: add the concept of a Production Environment
In Pharo so far the Compiler compiled into instances of class CompiledMethod. Now, there might be the case that the result of the compiler (the compiledMethod) should not be an instance of the class CompiledMethod from the environment in which we compile, but from some other environment.
The Pharo compiler is now able to support that as Marcus explains here.
This is more flexible and should allow for cross compiling locally or into remote environments. One could use it to build up a new environment within the existing one, ...
Nice!
The Pharo compiler is now able to support that as Marcus explains here.
This is more flexible and should allow for cross compiling locally or into remote environments. One could use it to build up a new environment within the existing one, ...
Nice!
Wednesday, July 03, 2019
Telemon: Pharo and TIG
Pierce has two interesting blogposts:
He implemented Telemon - a Pharo package that allows producing Pharo VM and application-specific metrics compatible with the Telegraf HTTP input plugin
Sunday, June 30, 2019
Revealing ALLSTOCKER
Allstocker (https://allstocker.com) is one of the success stories of Pharo.
There is a presentation prepared for "Smalltalk Day Japan 2019" revealing some infos on how Pharo and other technologies are used.
Friday, June 28, 2019
Seaside 3.3.4 released
Seaside 3.3.4 was released this morning, for details see https://github.com/SeasideSt/Seaside/releases/tag/v3.3.4
Monday, June 24, 2019
Progress with Pharo Code Completion [June]
Myroslava is reporting about her progress with Pharo Code Completion in a June Medium Article
New PetitParser minor release (v2.2.0)
Read more here and check the project on https://github.com/moosetechnology/PetitParser
Friday, June 14, 2019
Observer Pattern in Pharo
Read more here. Code is on github in https://github.com/bouraqadi/PharoMisc
Thursday, June 13, 2019
Event Music Manager in Pharo and Seaside
Benoît Verhaeghe experimented with Pharo, Seaside and MP3 playing on Linux using LibMPEG3.
Result can be seen here: https://twitter.com/badetitou/status/1139261925722902536
Code is on GitHub: https://github.com/badetitou/EMM
Code is on GitHub: https://github.com/badetitou/EMM
Sunday, June 02, 2019
Thursday, April 25, 2019
Madrid Smalltalk User Group Meeting on Pharo - 29. April 2019
Nueva reunión del meetup de Madrid Smalltalk el lunes 29/4: "Taller sobre Moldable Development en Pharo". Read more here
Tuesday, April 23, 2019
Type Checking Pharo methods
Manuel Leuenberger reported that he improved performance on his type checker for GT Tools.
Code is here: https://github.com/maenu/gtoolkit-contribution-typer
I wonder if it would work also without GT / Bloc / Brick and could be used already in a standard out of the box Pharo image...
Code is here: https://github.com/maenu/gtoolkit-contribution-typer
I wonder if it would work also without GT / Bloc / Brick and could be used already in a standard out of the box Pharo image...
Geranium
Geranium is an Energy consumption simulator for participatory modelling and decision making, taking into account: urban, social and micro-climate data.
It is written in Pharo available on github on
https://github.com/npapoylias/Geranium
They are currently looking for a Pharo Developer for 4 months, based in La Rochelle France. Check the jobs channel on Pharo Discord if you are interested. Or check here.
https://github.com/npapoylias/Geranium
They are currently looking for a Pharo Developer for 4 months, based in La Rochelle France. Check the jobs channel on Pharo Discord if you are interested. Or check here.
Thursday, April 18, 2019
Pharo and native UIs - from Mars to Spec
Pharo 7 (beside many other features) was focused on being able to bootstrap an image right from the source as well as the transition to using git.
Also stabilizing Iceberg tool with Git binding to have an improved source code management and give Pharo and its source code more exposure to the outside non-Smalltalk world.
Now Pharo 8 (which is currently in development) will focus on an updated version of Spec called "Spec 2.0". To build abstractions and prove that other backends (beside Morphic) could be used there is a plan to have a GTK binding as a second backend. This goes back to the old "Mars" project from Esteban - a native user interface framework which aimed to bring the native UI into Pharo. If I remember correctly back at the time it used an ObjectiveC Bridge.
This was already discussed on PharoDays 2019 and now Esteban gives some more detailed infos about the background on the Pharo mailinglist.
Now Pharo 8 (which is currently in development) will focus on an updated version of Spec called "Spec 2.0". To build abstractions and prove that other backends (beside Morphic) could be used there is a plan to have a GTK binding as a second backend. This goes back to the old "Mars" project from Esteban - a native user interface framework which aimed to bring the native UI into Pharo. If I remember correctly back at the time it used an ObjectiveC Bridge.
This was already discussed on PharoDays 2019 and now Esteban gives some more detailed infos about the background on the Pharo mailinglist.
Wednesday, April 17, 2019
Workflow engine written in Pharo
In 2017 Netstyle open sourced a workflow engine for Pharo. I reported about this here.
Now in 2019 there is another Workflow engine written in Pharo from Sebastijan Kaplar:
https://github.com/skaplar/NewWave
Still in early development. But you can also join if you like
Now in 2019 there is another Workflow engine written in Pharo from Sebastijan Kaplar:
https://github.com/skaplar/NewWave
Still in early development. But you can also join if you like
Data Analysis of UCI Heart Disease Dataset using Pharo
Data Analysis of UCI Heart Disease Dataset using Pharo - a short tutorial by Dhanya Sreekumar
Tuesday, April 16, 2019
Why I Talk About Smalltalk Even Though I’m Working in Java
Interesting medium.com article from Andrew Glynn called "Why I Talk About Smalltalk Even Though I’m Working in Java"
Thursday, April 11, 2019
Hunter: a JavaScript reengineering platform based on Pharo
Hunter: a JavaScript reengineering platform based on Pharo is available on
https://github.com/dorellang/hunter
https://github.com/dorellang/hunter
Wednesday, April 10, 2019
Pharo language track on exercism.io
An exercism.io language track for Pharo can be found here: https://exercism.io/my/tracks/pharo-smalltalk
Pharo DataFrame v2.0
Pharo DataFrame release v2.0 is available:
https://github.com/PolyMathOrg/DataFrame/releases/tag/v2.0
Read here what it can do for you.
https://github.com/PolyMathOrg/DataFrame/releases/tag/v2.0
Read here what it can do for you.
Pharo graphics using Roassal
Milton shows some nice graphics examples on his twitter stream (using Pharo and Roassal):
https://twitter.com/akevalion
https://twitter.com/akevalion
Pharo Newsletter April 2019
Pharo Newsletters for each month are available at: http://newsletter.pharo.org
Debugger driven development in Pharo
Some work Vincent Blondeau and Stephan Eggermont have been doing on the Taskbar have inspired Stephan me to make some screencasts showing how to do debugger driven development, and take the first steps towards refactoring the TaskBarMorph in Pharo, driven by tests.
- Part 1 https://vimeo.com/329317634
- Part 2 https://vimeo.com/329368348
Friday, March 29, 2019
ComputedSlots in Pharo
In Pharo 8 it is now possible to use ComputedSlots. Beside the regular instance variable (slots) we add a computed slot with a block.
Let's assume I would like to implement a Person class with a name and firstName but also get a fullName.
so when you test
it would return the full name 'Douglas Adams'.
When you now add an additional class side method #firstName:name: like
you can simply write with our small english like DSL:
to get the same result.
For sure we could have implement the getter method #fullName like this:
to achieve the same - but a computed slot shows up really in the inspector as if it would be a real variable and is recomputed if you for instance would change the name or firstName.
Let's assume I would like to implement a Person class with a name and firstName but also get a fullName.
Object subclass: #Person
slots: { #name. #firstName. #fullName => ComputedSlot with: [ :obj | obj firstName asString , ' ' , obj name asString ] }
classVariables: { }
package: 'Simple-Example'
so when you test
|p| p := Person new. p name: 'Adams'. p firstName: 'Douglas'. p fullName
it would return the full name 'Douglas Adams'.
When you now add an additional class side method #firstName:name: like
firstName: firstName lastName: lastName ^(self new) firstName: firstName; name: lastName; yourself
you can simply write with our small english like DSL:
(Person firstName: 'Douglas' lastName: 'Adams') fullName
to get the same result.
For sure we could have implement the getter method #fullName like this:
fullName ^self firstName asString , ' ' , self name asString
to achieve the same - but a computed slot shows up really in the inspector as if it would be a real variable and is recomputed if you for instance would change the name or firstName.
Thursday, February 28, 2019
Friday, February 15, 2019
Thursday, February 14, 2019
Wednesday, February 13, 2019
P3 V1.2 - PostgreSQL client for Pharo
A new release 1.2 of P3, the modern, lean and mean PostgreSQL client for Pharo.
ObservableSlots for Pharo
A language extension for Pharo to have slots that announce changes. This is useful expecially in UI projects.
https://github.com/guillep/ObservableSlots
https://github.com/guillep/ObservableSlots
The computational notebook of the future
This screencast shows an idea of how computational notebooks should work in the future. For pointers to the technologies being used, see the accompanying blog post
Tuesday, January 22, 2019
TravisCI and Smalltalk
SmalltalkCI was integrated with Travis. To set up continuous integration for your Smalltalk project, you need a .travis.yml and a .ston configuration file for SmalltalkCI. It is easy to setup and works great in many Squeak and Pharo projects already.
Read the docu for more.
Pharo 7.0 released
Smalltalk systems influenced computing like no other technology in the world. You will find many of its ideas in all modern software systems ranging from graphical user interfaces up to mobile devices.
With Pharo-Project we continue with this tradition to provide an inspiring lively object-oriented system but also move Smalltalks ideas to the next level.
Today is the day we release Pharo 7.0 into the wild and again as a free open source gift to the world.
This is yet another major step towards a brighter future for dynamic development approaches. Pharo 7.0 was realized by a worldwide community of 75 people - taking us over one year of distributed development.
Pharo advanced on many sides. Now we can fully bootstrap into a custom image - including Slots, Metalinks and other meta facilities. New books and tutorials were written about it, it is used in web development, IoT and other. It's already a business driver for several companies worldwide with a growing number of users.
2142 issues solved in general - 762 commits done from my side (astares) alone. Mostly trivial stuff but each still important to cleanup and form a well structured core. Dont know if I could be proud to have climbed to the top in github contribution statistics in this release - personally I will remember the PR's primary as 762 times fighting with the CI infrastructure ;)
Pharo 8 work already started now ... so come in - the water is just fine. Step by step it goes...
With Pharo-Project we continue with this tradition to provide an inspiring lively object-oriented system but also move Smalltalks ideas to the next level.
Today is the day we release Pharo 7.0 into the wild and again as a free open source gift to the world.
This is yet another major step towards a brighter future for dynamic development approaches. Pharo 7.0 was realized by a worldwide community of 75 people - taking us over one year of distributed development.
Pharo advanced on many sides. Now we can fully bootstrap into a custom image - including Slots, Metalinks and other meta facilities. New books and tutorials were written about it, it is used in web development, IoT and other. It's already a business driver for several companies worldwide with a growing number of users.
2142 issues solved in general - 762 commits done from my side (astares) alone. Mostly trivial stuff but each still important to cleanup and form a well structured core. Dont know if I could be proud to have climbed to the top in github contribution statistics in this release - personally I will remember the PR's primary as 762 times fighting with the CI infrastructure ;)
Pharo 8 work already started now ... so come in - the water is just fine. Step by step it goes...
Wednesday, December 19, 2018
MachineLearning in #Pharo
Want to check out MachineLearning in Pharo? Then use this awesome list of projects, books, booklets, papers, and applications related to machine learning, AI, data science in Pharo
Releaser
Releaser is a new tool for releasing nested #pharo projects residing in multiple repositories. Read more.
Maizo and Pharo
Maizo - a Chemistry project developed with Pharo.
To quote research gate:
Read the PDF on "Maizo"-chemistry Project: toward Molecular- and Reaction Discovery from Quantum Mechanical Global Reaction Route Mappings".
To quote research gate:
Maizo is aimed toward molecular- and reaction discovery based on big data of quantum mechanical global reaction route mappings. The global reaction data includes equilibrium structures (EQs), dissociation channels (DCs), and transition structures (TSs), which are automatically calculated by a global search on a potential energy surface using the GRRM (global reaction route mapping) method. Applications to molecular- and synthesis design are an important part of the project. Machine learning and visualization techniques as well as chemoinformatics methods are essential to acquire useful information from the large reaction data space. The team developed an RMapViewer, which was developed to visualize and analyze the GRRM outputs.
Read the PDF on "Maizo"-chemistry Project: toward Molecular- and Reaction Discovery from Quantum Mechanical Global Reaction Route Mappings".
Pharo Git Thermite
A visual tool developed in Pharo for assessing Git commits and GitHub Pull Requests
The project is available on GitHub: https://github.com/ronsaldo/pharo-git-thermite
and now also integrates with Iceberg:
Read more details here.
The project is available on GitHub: https://github.com/ronsaldo/pharo-git-thermite
and now also integrates with Iceberg:
Read more details here.
Exploring Pharo
There is a nice blog post about his initial experience with Pharo from Konrad Hinsen.
He overall likes Pharo and especially the explorability but also has two primary points to criticize:
People interested in this topic should read this blog post from 2014 and check the "bootstrap" folder in the Pharo github project. This is based on the PharoBootstrap work. Someone interested in this topic might also be interested in this video.
For the second point I agree as Pharo is moving fast it might not be easy to follow. Also the community is small. Due to this we can not invest our sparce resources into making things easy for newbees - but rather will continue to focus on moving forward. Especially with the upcoming Pharo 7 including better git support and the new Calypso browser many things have changed compared to Pharo 6.
But there are books available and there is the mailinglists as well as the Discord chat to ask questions and get answers. Situation is far better than in 1994 when I dived into Smalltalk and where it was not easy to get informations or even a free system to enjoy the openess and productivity of such a system.
Nonetheless - as one of the primary contributors of the Pharo project I really enjoy such blog posts. It shows we are on the right track. There is still a long way to go - but step by step it goes...
- he mentions that Pharo is not reproducible and can not be bootstrapped from its own source code
- it is not easy for beginners to follow Pharo
People interested in this topic should read this blog post from 2014 and check the "bootstrap" folder in the Pharo github project. This is based on the PharoBootstrap work. Someone interested in this topic might also be interested in this video.
For the second point I agree as Pharo is moving fast it might not be easy to follow. Also the community is small. Due to this we can not invest our sparce resources into making things easy for newbees - but rather will continue to focus on moving forward. Especially with the upcoming Pharo 7 including better git support and the new Calypso browser many things have changed compared to Pharo 6.
But there are books available and there is the mailinglists as well as the Discord chat to ask questions and get answers. Situation is far better than in 1994 when I dived into Smalltalk and where it was not easy to get informations or even a free system to enjoy the openess and productivity of such a system.
Nonetheless - as one of the primary contributors of the Pharo project I really enjoy such blog posts. It shows we are on the right track. There is still a long way to go - but step by step it goes...
GeoSphere in Pharo
A project to compute distances, parse coordinates, etc. using Pharo.
See https://github.com/akgrant43/GeoSphere
See https://github.com/akgrant43/GeoSphere
How to use Extensions in Pharo
In Pharo it was always possible for a package to extend a class within another Package. So far it was done by putting a * in front of the method name.
In Pharo 7 this changes a little bit as you can directly select the extension from the new Calypso system browser.
Here is a description about the differences.
In Pharo 7 this changes a little bit as you can directly select the extension from the new Calypso system browser.
Here is a description about the differences.
Subscribe to:
Posts (Atom)