Monthly Archives: February 2020

DNS over HTTPS (DoH)


Today Firefox switched over to using ‘DNS over HTTPS (DoH)’ by default.

We can do this in Pharo as well, even out of the box (minus the interpretation of the results, but still).

First, what is this ? A good description is:

Using the Cloudflare server, we can do the following in Pharo, using the JSON wire format.

ZnClient new
url: ‘‘;
accept: ‘application/dns-json’;
queryAt: #name put: ‘‘;
queryAt: #type put: ‘A’;
contentReader: [ :entity | STONJSON fromString: entity contents ];

The actual address can be accessed inside the returned result.

SocketAddress fromDottedString: (((ZnClient new
url: ‘‘;
accept: ‘application/dns-json’;
queryAt: #name put: ‘‘;
queryAt: #type put: ‘A’;
contentReader: [ :entity | STONJSON fromString: entity contents ];
get) at: #Answer) first at: #data).

If you load the following code,

it is just as easy to use the binary UDP wire format.

ZnClient new
url: ‘‘;
accept: ‘application/dns-message’;
contentWriter: [ :message |
ZnEntity with: message asByteArray type: ‘application/dns-message’ ];
contentReader: [ :entity |
DNSMessage readFrom: entity readStream ];
contents: (DNSMessage addressByName: ‘‘);

Again, the actual address can be accessed inside the returned object.

(ZnClient new
url: ‘‘;
accept: ‘application/dns-message’;
contentWriter: [ :message |
ZnEntity with: message asByteArray type: ‘application/dns-message’ ];
contentReader: [ :entity |
DNSMessage readFrom: entity readStream ];
contents: (DNSMessage addressByName: ‘‘);
post) answers first address.

Incidentally, a more robust answer can be got as follows:

NeoSimplifiedDNSClient default addressForName: ‘‘.


[Ann] Mediaclue getting open-source

Hi all

I’m a Pharo lover since many years. A huge thanks to all of you, making Pharo possible! As a giving back I would like to open source some of my business projects (Thanks to my supporting customers, too). The first is a web based media assets management called “mediaclue” (Think of it as a image/audio/video/document sharing platform, e.g. for teachers inside a school):


(Everything is ready for simple install into a fresh Linux server with included Ansible provisioning scripts to create the whole appliance)


P.S. The UI language is still german at the moment, but that should turn multilanguage eventually


Andreas Brodbeck
mindclue GmbH
Dipl. El.-Ing. ETH

+41 55 622 26 24

[Ann] PolyMath 1.0.2

Dear all,

we are happy to announce the release of PolyMath 1.0.2, the
computational framework for Pharo. This release works on Pharo 7.0 and Pharo 8.0. All the 815 tests and the CI are green on MacOs, Windows and Linux 🙂

Please find more information about the project here:

Changelog of modifications since version 1.0.1 is available here:

You can install the 1.0.2 version in a fresh Pharo 7.0&8.0 with the
following code snippet:

Metacello new
repository: ‘github://PolyMathOrg/PolyMath:v1.0.2/src‘;
baseline: ‘PolyMath’;

You can join the dev team on #polymath channel for weekly meetings on Thursday. We are looking for more people for tests and contributions.
I’m starting a small experiment. If you want to support me working on PolyMath or others of my project like Tensorflow Pharo bindings, you can be one of my github sponsors.
Please give a monthly support here:

Serge Stinckwic

Int. Research Unit
 on Modelling/Simulation of Complex Systems (UMMISCO)
Sorbonne University
French National Research Institute for Sustainable Development (IRD)
niversity of Yaoundé I, Cameroon
“Programs must be written for people to read, and only incidentally for machines to execute.”

Hacking Pharo in Amsterdam

Hacking Pharo in Amsterdam

Come join us in Amsterdam at our programmers workspace in Amsterdam. Its a sea container studio at NDSMTreehouse, open 24/7 (but please make an appointment until you have your own key).

Morphle Inc. T.T. Neveritaweg 57-E1 1033 WB Amsterdam +31507200071

[Ann] new version of concurrent Prog booklet

Thanks for all the feedback. I fixed the embarassing english mistakes and french left over. I just issued a new version of the booklet.


[Ann] Teachable

I moved Teachable project now to GitHub:

The Project shows the power of Smalltalk meachanisms within Pharo and
can be useful for dynamic mock object building in unit tests.

Docu and load instructions are included in the project site.

Side note:
You can also easily load it via catalog within Pharo 8/9:

– take a fresh clean Pharo image using PharoLauncher
– click on “regular network connection” in the Quick setup sectiono of Pharo welcome window
(this allows spotter to show catalog projects)
– open Spotter (SHIFT+ENTER) and key in “Teachable”, hit ENTER to load via catalog

Another possibility is to search for “Teachable” in Catalog utility directly (Tools -> Catalog Browser).

Have fun

[Ann] uFFI booklet

Hi all,

We have been working a lot in the last months in the documentation of uFFI, and we are happy to announce a first stable version of it that you’ll find in a link below 🙂
The booklet talks about uFFI, how to use it, how marshalling works, how to use structures, unions, etc.
And it is aimed for the version present on Pharo8.0.
Of course, a v1 does not mean it’s perfect. Future versions will include new chapters/features that are on the pipeline such as callbacks and how to specify string encodings in your bindings.
Also, so if you find something to fix, to add, to remove, or something hard to follow, let us know
 – by email or
 – by issue (will be easier to track actually than an email) or
 – by PR (and we will have a boost of happiness in addition)
Guille in behalf of everybody that helped and contributed to this

About the Pharo ecosystem


Let’s take a moment to contemplate on the breath and the depth of the expanding Pharo ecosystem. So much is happening that it is very hard to keep track, let alone look at everything or try it out.

Marcus’ excellent curated Pharo Newsletter is one place to see this.

Take the February 2020 list of New/Updated Libraries and Frameworks at the end:

This is one of the longest enumerations I have seen so far. The great thing is that it is like that almost every month. Check out the archive:

Of course, GitHub is also a good way to see this happening. The main entry being:

Which contains several overviews:

Topic tags automatically organise some projects:

What all this comes down to is that Pharo has many recently developed, actively maintained options to get your job done: to model your domain, to build your user interface, to talk to other systems, to speak other protocols, to interface with the world, to deploy and to deliver your applications.

Similarly, Pavel recently did a very good job at the describing why Pharo itself is so great:

So thanks to all of you for helping to make Pharo into what it is.

Thanks to our users: for your questions, you’re feedback, your bug reports.

Thanks to those helping out others on the mailing lists.

Thanks to everyone who ever blogged or otherwise wrote about their experiences with Pharo.

Thanks to the contributors involved in constantly improving Pharo with Pull Requests, to those working hard to maintain the process and the machinery behind the development process.

Thanks to all the developers producing and maintaining the many libraries and frameworks that help us in our day to day work.

Thanks to those writing documentation.

Thank you.


PS: This is already a long email, but I know that I forgot many important points, feel free to add them in reply.

Sven Van Caekenberghe
Proudly supporting Pharo