September 17, 2020

Yuriy Tymchuk

Getting Cache out of Nowhere for a Tiny Functionality in Pharo

September 08, 2020

PharoWeekly

Pharo on a Netbook running TinyCore Linux

This is cool… After I booted TinyCore Linux[1] on my 10-year-old netbook[2], I decided to

see if it could run Pharo… It does! Details:

[1] http://tinycorelinux.net/

– TinyCore Linux “CorePlus”, 32-bit, version 11.1.

– Booted from a YUMI multiboot thumbdrive.

– Installed ‘curl’, ‘bash’, Firefox (to access ‘pharo.org‘ site for download

info). [2]

https://www.notebookcheck.net/Review-Acer-Aspire-One-D255-Netbook-N550.40151.0.html

– Acer D255 “AspireONE” netbook (Sept, 2010).

– 2 GB RAM (single DIMM).

– 250 GB SSD (not being used; TinyCore running 100% in RAM). The Proof:

<http://forum.world.st/file/t372161/Pharo8-32_TinyCore_AcerD255_2020-0907.jpg> Ted

September 07, 2020

Program in Objects

Rust and Smalltalk are perfectly complementary!

Rust has been selected as the Most Loved programming language at StackOverflow Developer Survey for five consecutive years! No other language commands so much respect. Rank 2016 2017 2018 2019 2020 1 Rust Rust Rust Rust Rust 2 Swift Smalltalk Kotlin Python/TS TypeScript 3 F# TypeScript Python Kotlin Python 4 Scala Swift TypeScript WebAssembly Kotlin 5 Go Go Go Swift Go 6 Clojure Python Swift Clojure Julia 7 React Elixir JavaScript Elixir Dart 8 Haskell C# C# Go C# 9 Python Scala F#/Clojure C# Swift 10 C# Clojure/JS Bash/Shell JavaScript JavaScript StackOverflow Developer Survey’s Most Loved And for good reasons. Rust is greatly lauded for: memory safety guaranteed by the compiler (type system) and making garbage collection unnecessary

close-to-the-metal native code performance

efficient multi-core concurrency

zero-cost abstractions These strengths are Smalltalk’s weaknesses, but Smalltalk’s strengths are also Rust’s weaknesses: supremely simple object-oriented programming model (suitable for children and beginners)

supremely scalable object-oriented programming model (Alan Kay called Smalltalk a “software internet”)

flexibility of dynamic typing and late binding

super productivity and flexibility due to live coding (up to 5X more productive!)

portability of language virtual machine (byte code like in JVM and CLR)

convenience of image-based computing (persistable containerized environment) (While multi-core concurrency is possible in Smalltalk, as demonstrated by the RoarVM, unfortunately this is an experimental project that has lain fallow for a decade.) Both programming languages are very useful in their respective domains, but neither can be used universally for all applications. The nice thing, however, is that these languages are perfectly complementary. Between them, there isn’t anything you can’t do. If you need critical, real-time performance, Rust is your ticket, although programming is considerably more complicated. For just about everything else, Smalltalk is tickety-boo: web, desktop, mobile, data science, machine learning, Internet of Things, robotics, virtual reality, enterprise business computing, and so on. And it’s much easier, too. It’s worth noting that in 2017, StackOverflow’s survey voted Smalltalk as the second Most Loved language after Rust. Why it disappeared from all subsequent surveys is anybody’s guess.

August 31, 2020

PharoWeekly

Crypto-Nacl

Hi all, I wanted to let you know that I ported the Crypto-Nacl library from SmalltalkHub to GitHub here: https://github.com/objectguild/Crypto-Nacl The original author is Tony Garnock-Jones, with contributions from Hernán Morales Durand. See the README for more details. Libsodium has evolved a lot over time, which means that there is plenty of additional functionality that can be unlocked through this library. I don’t have a need for it at the moment, but that might change in the near future. My interest is in using the cryptographic features to enhance security of business applications. Oh, and thanks to the Buenos Aires Smalltalk team (https://github.com/ba-st/) for inspiration on using GitHub Actions with smalltalkCI Cheers, Jonathan van Alteren Founding Member | Object Guild B.V.

Sustainable Software for Purpose-Driven Organizations

August 29, 2020

PharoWeekly

[ann] Indie Web

Hi all, Due to the confinement in the pandemic, our forms of telepresence become

more important and many suddenly got even more immersed into an

Oligopoly cyberspace (Zoom, Google, Facebook, Twitter, Apple, Amazon,

Microsoft, etc) with opaque algorithms that under extractive logic

commodify our privacy and communications, try to condition our attention

and habits, as well as to shape our current and future behavior. But

this is not the only way to inhabit cyberspace. From the Grafoscopio community[1], we would like to invite you to a

series of workshops that we are doing to make visible other ways of

populating and building the web, aligned with the movements of

IndieWeb[1a], from what we have called “pocket infrastructures”. You can

find more information about these topics in [2] and in particular about

the workshops in [3] (in Spanish). [1] https://mutabit.com/grafoscopio/en.html

[1a] https://indieweb.org/

[2] https://mutabit.com/repos.fossil/indieweb/

[3]

https://mutabit.com/repos.fossil/indieweb/doc/trunk/docs/es/index.html#talleres The second workshop will be tomorrow, Saturday, Aug. 29 from 3:15 PM to

7:15PM CO (GMT – 5) — I will try to share the other workshops earlier,

but the site in [2] will be the consolidated memory of them, for those

who want to join us asynchronously. We will see how IndieWeb sites help us to untangle and reweave that

other web and how this help us to reconnect in this stranger times. Rethinking the infrastructure is also to rethink the ways in which it

enables and makes visible (or not) certain ways of being and acting.

Infrastructures are embodied discourses. So thank you in advance for

joining us in rethinking this in practice. Of course, Pharo is behind scenes, as usual, powering this experience.

But with these IndieWeb workshops I think we have found a sweet spot

that puts coding in front with a practical introduction and motivation

beyond the kind of boring “Hello World”. Following a “local first”

approach, documentation will be in Spanish, but source code[5] and

interactive documentation will be in English to bridge our worlds :-), [4] https://mutabit.com/offray/blog/en/entry/dumb-hello-world

[5] https://mutabit.com/repos.fossil/brea/ See you on cyberspace, Offray

August 27, 2020

PharoWeekly

Static SmalltalkHub

Hi all,

Since May, SmalltalkHub is in read-only mode, allowing people to get back their data and move it to another forge if needed.We had several unexpected downtimes with the deprecated version of Smalltalkub (different software stack due to server migration). To enhance the user experience, we put the static version of Smalltalkhub « SmalltalkHub archive » on-line as the official http://smalltalkhub.com service. It was already announced that it will be done in November but we decided to do it earlier because it improves the current state: – faster and reliable downloads from smalltalkhub.com (mcz files are no longer stored in a Mongo DB but served as static files) – Smalltalkhub archive still allows to list projects, search for a project, see packages, contributors, commits – the deprecated version of smalltalkhub is still on-line until November at http://deprecated.smalltalkhub.com/.

So you have the best of the 2 versions.

Regards,The Pharo consortium team.

August 23, 2020

PharoWeekly

Pharo Master Class for Inria Academy @Inria Chile

Tuesday I will give a master class to 90 attendees. This master class is organized by Inria Chile and the Inria Academy. I will do many interactive sessions but the slides to back-up and explain some sessions are available at http://rmod-pharo-mooc.lille.inria.fr/MasterClass/ S.

August 22, 2020

Program in Objects

Anatomy of a Programming Competition

Introduction This is a case study of The James Robertson Memorial Programming Competition, which was created to promote the Smalltalk programming language. This is a case study by example, showing what was done and how it was done. Promotion and Marketing Advertising the competition at CBC.ca proved ineffective and costly. The click-through rate was infinitestimally small. Otherwise, we relied heavily on YouTube and social media. YouTube Videos Several promo videos were created: using Powtoon using Animaker using Animaker Blogs and Social Media The main social media sites used included Twitter, Facebook, LinkedIn, Medium, Hacker News, Instagram, and Quora. Competition Websites Two websites were created, one for advertising the competition and the other for operating the competition (team registrations and team submissions). The advertising website has been archived. This website was based on WordPress.com. The domain name, jrmpc.ca, was purchased from Google Domains. The advertising website is also archived live at jrmpc.wordpress.com. The operational website has also been archived. In the home page, Internet Archive has a problem with the embedded YouTube link, but the unplayable video is the same as the first one shown above in the YouTube Videos section (Mission: Impossible-themed). The operational website was hosted at OVH (VPS SSD 1 running Ubuntu 16.04 LTS). The web application was written in Pharo in conjunction with the Teapot framework. The domain name, teams.jrmpc.ca, was configured at Google Domains, and the PositiveSSL certificate was purchased from Namecheap. Contacting Schools High schools across Canada were contacted by email, as well as snail mail. Attempts to contact various school boards were unproductive. T-shirts and Swag Our budget only allowed for T-shirts (from Big Mouth Promotions). Here is the design (for the front of the shirt): using GIMP and Inkscape examples from a team The T-shirts were sent to all the participating teams; they were a big hit with everyone. About 100 shirts were made available for a public giveaway at the awards ceremony at Ryerson. If budget allows, I think Smalltalk-styled coffee mugs would be a very nice giveaway. Competition Software The open source software for the JRMPC Organiser is now available, thanks to the great effort by Ben Coman who developed it. JRMPC Organiser screenshot Awards Ceremony Trophies The trophies for First, Second, and Third Prizes all came from Innovative Imprints in Pickering, Ontario. Venue The awards ceremony was scheduled for Saturday, April 18, 2020 on the campus of Ryerson University. However, due to COVID-19, a virtual ceremony was conducted instead. Here was the result: Lessons Learned Since this is the first edition of JRMPC, there were bound to be some teething pains. We learned several important lessons: First, the website should’ve been clearer about team composition, esp. the fact that a team must comprise four students. No exceptions.

Second, the website should’ve been bilingual so that Quebec would participate.

Third, better instructional materials should’ve been provided to the teams. Our existing tutorials and such were found wanting. Some teams complained that Pharo was too difficult to learn.

Fourth, the competition software should’ve been fully prepared, tested and debugged by the start of competition. During the course of the competition, bugs were found and the competition maps revealed weaknesses.

Fifth, a larger team of volunteers should’ve been assembled. This competition entailed a great deal more work than I imagined.

Sixth, we were fortunate that we only had 30 registered teams. In hindsight, we weren’t really set up to handle more. In order to scale the competition properly, we’d need more money, more volunteers, and we’d need to limit the competition to 100 registered teams. Also, only the first 30 teams would receive T-shirts. Despite it all, we are pleased at the outcome. Conclusion The competition was a smashing success. Thirty teams registered from across Canada. Videos were created for each of the five rounds. I’ll just show the first and last of them here to avoid repetitiveness: Hopefully, the information here can help you with your own programming competition.

August 11, 2020

PharoWeekly

An object view on global usage: the case of Transcript

Hi guys

I wrote this https://thepharo.dev/2020/08/11/transcript-the-misunderstood-global/because I thought that I had to :).

See Chapter 8 for a longer version is available at https://github.com/SquareBracketAssociates/Booklet-PharoWithStyle/releases/download/continuous/WithStyleBook-wip.pdf

Feedback and PRs are welcome. S (full of positive energy)

August 10, 2020

Program in Objects

Smalltalk’s Successor

Alan Kay, one of the co-creators of Smalltalk, has said that he’d like to see Smalltalk evolve beyond what it is today. He believes that Smalltalk is stagnating and failing to advance the software industry. While I agree with him in principle, I also take a more pragmatic position. I believe that we cannot wait for this mythical new programming language and that we must use whatever we have available today because the software industry is in crisis. The demand for more and better software created in a timely manner is continually increasing and it’s causing considerable stress for programmers and users alike. At the moment, there is only one programming language that has any hope of meeting this demand. I do not posit this lightly nor frivolously. Here are the key reasons why Smalltalk is perfectly suited to this mission… Smalltalk has a great and storied history. A programming language ideally should command respect, and there’s no better way to do this than by demonstrating a wonderful record of achievements. History matters. Smalltalk pioneered the language virtual machine and JIT compilation. It created the world’s first modern IDE. It introduced the MVC architectural pattern. It pioneered TDD (test-driven development) and XP (extreme programming). It made live coding easily accessible. It pioneered the development of object-oriented databases. It created the world’s first refactoring browser. It was instrumental in developing GUI and WYSIWYG. begin at 19:28 It influenced the design of Objective-C, Ruby, Java, PHP, Perl, Python, Groovy, Scala, Dart, and other languages. It popularized object-oriented programming starting with the now-iconic cover of BYTE magazine. August 1981 Smalltalk has a proven track record. Smalltalk has been used in the enterprise for more than three decades. In the 1990s, it achieved the second highest object-oriented market share in the world after C++. IBM even chose Smalltalk as the centrepiece of their VisualAge enterprise initiative. Today, there are three major Smalltalk vendors with thousands of enterprise users around the globe: Cincom, Instantiations, and GemTalk Systems. Many of these enterprise users are big names in the financial industry, manufacturing sector, shipping, utilities, etc., for example, JP Morgan, Desjardins, UBS, Florida Power & Light, Texas Instruments, Telecom Argentina, Siemens, and COSCO. Smalltalk is incredibly simple and easy to use. It’s even simpler and easier than Python! The syntax is as simple as you can imagine. It fits on a post card! Smalltalk is extremely flexible and versatile. Smalltalk has developed an extensive ecosystem. In the web space, you have the Seaside and Teapot web frameworks, and Amber and PharoJS for front-end development. In data science and machine learning, you have the PolyMath library, Roassal data visualization, and language bindings for TensorFlow and Keras. For Internet of Things, you have the PharoThings platform. For robotics, you have the PhaROS platform. Smalltalk is great for virtual reality! Smalltalk is the most productive programming language in the world. A study by Namcook Analytics showed that Smalltalk was, on average, twice as productive as JavaScript, C++, Go, Java, PHP, Python, and C#. Experienced Smalltalkers regularly develop software up to 5X faster than in conventional languages. Smalltalk’s remarkable live coding capability plays a critical role here. Only two other significant languages support live coding: Forth and Lisp. But Smalltalk makes its very easily accessible. Smalltalk is infinitely scalable. Thanks to its pure object-oriented model which views the Smalltalk environment as a sort of “software internet,” applications can grow in a manner resembling the Internet. It has also been likened to biological systems of cells. begin at 2:16 Any new programming language, no matter how superior to Smalltalk, would lack history, a track record, an ecosystem, a user base, and mindshare. Marketing the language would face an uphill battle and growing the language’s mindshare would take a considerable amount of time. Meanwhile, we wait and we wait and we continue fighting a backlog of software that demands to be written. Smalltalk Alternatives There are newer languages that compete with Smalltalk, such as Dart, Go, Julia, Kotlin, Rust, Scala, Swift, TypeScript. Some are very large and complex (Kotlin, Rust, Scala, Swift, TypeScript). Some are used in narrow domains (Julia, Rust, Swift, TypeScript). None are as simple and easy as Smalltalk. None are as productive and scalable. None support live coding. None are as elegant. So, really, the best choice we have today is Smalltalk. It comes in various flavours to meet various needs: Instantiations’ VA Smalltalk for enterprise markets

Cincom’s VisualWorks for enterprise markets

GemTalk Systems’ GemStone/S for high-volume, high-availability transaction processing

Pharo for open source requirements

Squeak for the education market Is there really a need for a successor?

August 05, 2020

PharoWeekly

Grafoscopio ported to Pharo 8.x and Git

Hi, Grafoscopio [1] has been ported to Pharo8.x and Git. Source code[2] and

documentation[3][3a] repositories reflect the change (at some point I

hope both could be integrated in Fossil, but meanwhile community hosted

Gitea and Fossil are working pretty fine). [1] https://mutabit.com/grafoscopio/en.html

[2] https://code.tupale.co/Offray/Grafoscopio

[3] https://mutabit.com/repos.fossil/grafoscopio/

[3a] https://mutabit.com/repos.fossil/grafoscopio/doc/tip/readme.md.html For the Grafoscopio 2.x series I hope to update several other things

including migration to Spec2 and improved usability. Cheers, Offray ps: We are experiencing some issues with our Gitea instance today. That

should be solved soon or I hope to provide a non-oligopolistic

alternative in the future.

August 02, 2020

PharoWeekly

static.smalltalk.com

http://static.smalltalkhub.com/ is the static file server version of smalltalkhub.com. Smalltalkhub is suffering instability. So may be we will turn http://static.smalltalkhub.com/ sooner than planned.

Migration SThub to … log

Please contribute https://github.com/PierceNg/sth-migration S

[Ann] Updated Alpine Linux Pharo VM Docker image

Hi all, I’ve updated the Docker image for pharo.cog.spur.minheadless VM

built on Alpine Linux. This version is built on Alpine Linux 3.12. Some links: – https://hub.docker.com/r/pierceng/pharovm-alpine

– https://github.com/pharo-contributions/Docker-Alpine/tree/master/vm.build

– https://github.com/PierceNg/opensmalltalk-vm/tree/pierce_alpine_839a5ca This version removes the following plugins. I’m still thinking about some

of the others, especially the GUI-related ones. The idea is of course to

have the smallest possible set of plugins. Comments welcome. – Security

– Drop

– Croquet

– DSAPrims

– JoystickTablet

– MIDI

– Serial

– StarSqueak

– InternetConfig The output Docker image contains the Pharo VM only and is not runnable by

itself. It is intended to be used as a base to build your own Docker image

containing your application-specific Pharo image. I’ll be building a similar Docker image for Pharo’s fork of the VM. Pierce

July 12, 2020

Pierce Ng

Updated Alpine Linux Pharo VM Docker Image

I've updated the Docker image for pharo.cog.spur.minheadless VM built on Alpine Linux. This version is built on Alpine Linux 3.12. Dockerfile

My OpenSmalltalk branch for Alpine Linux This version removes the following plugins. I'm still thinking about some of the others, especially the GUI-related ones. The idea is of course to have the smallest possible set of plugins. Comments welcome. Security

Drop

Croquet

DSAPrims

JoystickTablet

MIDI

Serial

StarSqueak

InternetConfig The output Docker image contains the Pharo VM only and is not runnable by itself. It is intended to be used as a base to build your own Docker image containing your application-specific Pharo image. I'll be building a similar Docker image for Pharo's fork of the VM.

July 11, 2020

Program in Objects

GoFundMe for JRMPC 202x

Please give generously: Smalltalk Programming Competitions. Here’s the trailer for JRMPC 2021:

July 10, 2020

Torsten Bergmann

Crosstalk: Smalltalk 80 for Raspberry Pi

Article is here: https://www.linkedin.com/pulse/relive-part-xerox-parcs-history-smalltalk-80-raspberry-michael-engel/



and code is available on GitHub: https://github.com/michaelengel/crosstalk





July 08, 2020

Torsten Bergmann

Roassal 3 and Pharo integration

Roassal 3 - the visualization engine for Pharo is out and it will be integrated into upcoming Pharo 9.









Smalltalk 80 VM

Dan Banay released (on the day of the 80th anniversary of Alan Kay) a fully functional Smalltalk-80 VM capable of running the original ST-80 images as distributed by Xerox Parc in 1979 and 1980. Really nice, especially when you check the code which is available on



https://github.com/dbanay/Smalltalk





PDF and SVG from Athens in Pharo

Latest Pharo 9alpha image includes an AthensCairoPDFSurface and an AthensCairoSVGSurface class which you can use to easily create a PDF or SVG from an Athens Graphic Canvas in Pharo



Just click on the picture:





Compendium for Pharo

Compendium for Pharo is now able to show a list per repository and a list of repos per author for the GitHub projects.



Also it shows the old Catalog entries - so finding project and code should be fairly easy now ...



Code is on https://github.com/astares/Pharo-Compendium





Pandemics were explained and visualized by Alan back in 1998 using Squeak Smalltalk and particle simulation in Morphic in this video:









And the BouncingAtomsMorph still works in recent Squeak Smalltalk just in case you want to show it to your kids ...





Pharo and Repl.it

I tried repl.it with a simple script to download and run Pharo headless and also Pharo UI Works nicely - within the top right part of the browser window one can even see and use the Pharo window.



Clickable but X-Windows emulation does not seem to show the full window (try clicking on "full screen mode" in the welcome window to adjust this).



Try this https://repl.it/@astares/Run-Pharo-9#main.sh







Just consider to create an own account on repl.it and use the following code in a main.sh:





echo *********************************************

echo * Download and run Pharo

echo *********************************************



# prepare

if [ -d build ]; then rm -Rf build; fi

mkdir build

cd build



# download

wget -O- https://get.pharo.org/64/90+vm | bash



# run

./pharo-ui ./Pharo.image





Chanel for Pharo

Chanel: a code cleaner for Pharo Smalltalk



Source code is here: https://github.com/jecisc/Chanel

Uncommon-Themes for Pharo

A little collection of themes for Pharo, really uncommon. But maybe you like it and want to give it a try.



https://github.com/David5i6/Uncommon-Themes





Roasssal 3 with SVG importer

Roassal 3 - the visualization engine for Pharo now also provides an SVG importer



https://github.com/ObjectProfile/Roassal3







PharoImageCreatorForGithubCi

This tool is the easiest way to create Pharo images with your project and release them on the Github Releases page.



Project is on GitHub: https://github.com/oliveiraallex/PharoImageCreatorForGithubCi

Atomic game

Atomic game - written in Pharo. The objective of the game is to build molecules moving the given atoms.



Source code is on:



https://github.com/grpistoia/Atomic





Testing Pharo UFFI Binding with Travis

Want to test your Pharo project using FFI with Travis-CI using Smalltalk-CI. Benoît "badetitou" Verhaeghe explains how to use it.

Google Firebase REST API and Pharo