In Progress – 2016+

The past year has been fairly quiet for me, in terms of Smalltalk/Pharo projects. I started a new job at MIT CSAIL working for the Solid project (repo), creating a platform for radically decentralized data-centric applications. This has meant a lot of learning and unfamiliar territory — RDF and the various components of the Semantic Web tech stack, learning to write isomorphic Javascript (same codebase on Node.js/server and the client/browser), and diving deep into cryptography and decentralized authentication.

Some notes from the past year:

  • Been doing a lot of RDF work, as it is central to the current Semantic Web community. And while I haven’t found any RDF parsers in Smalltalk or Pharo ecosystems, I think the JSON-based JSON-LD RDF serialization format might be the easiest route for getting some basic RDF capability into Pharo.
  • There are some fantastic JSON-based standards out there, including JSON Schema, the JOSE suite, which includes JWT/JSON Web Token and the corresponding JWS for signing and JWE for encryption standards. My colleague and I have been working on an ecosystem of isomorphic Javascript libraries to support the JSON Schema / JOSE stack. I am of course curious about what is the state of the art in JOSE-related support in the Smalltalk world, but have not researched it yet. Definitely something to investigate.
  • The state of the art in decentralized authentication is the OpenID Connect series of standards, based on trusty old OAuth2. Just like with JOSE, I wonder if there are any OIDC libraries in Smalltalk (I know there are at least a few for OAuth2?).
  • I’ve signed up for the upcoming Camp Smalltalk 2017 in Raleigh/Durham – very exciting!
  • The updated book, Pharo By Example 5 has been released recently! I am incredibly proud to have helped editing it!
  • I am still intending to continue working on the Phriak database driver, and at least bring it to Riak 2.0 feature parity. I wonder if the ProtoBuf library for Pharo is in usable condition by now?

In Progress

Some Smalltalk-related things I’ve been involved with lately:

  1. Phriak – a Pharo Smalltalk driver for the Riak distributed NoSQL database. (The project is also mirrored at SmalltalkHub at!/~gokr/Phriak). I’m the current maintainer of the project, and have gradually been adding new features to get the driver to Riak 1.4 feature parity. Riak 2.0 feature support (full text search, server-side data types, etc) coming up next!
  2. I’ve been helping with editing of the Updated Pharo by Example book, which updates the original PBE book to work with Pharo version 4.
  3. Earlier this spring, I’ve watched with interest the release of Pharo 4 (and even submitted bug reports and tested fixes).
  4. This past weekend, I attended Camp Smalltalk Ottawa 2015. Some great presentations (Reg Krock is working on some interesting projects, like hooking up the Oculus Rift API to Smalltalk, as well as a custom Smalltalk virtual machine that runs on Android), and a good discussion on promoting Smalltalk at large.

News Roundup: Social Code Commenting, User Management, and Java Interop

Couple of interesting items from the Pharo mailing list.

Comment of the Day Contest

In a thread titled The Comment Game – MMORPG for real, Laurent Laffont proposed a game. Each day, an un-commented class would be picked from the Pharo class hierarchy, and people on the list would propose comments for the class (which would then be added to the next release).

This is a great idea, not to mention hilarious. Comments (especially class comments) are worth their weight in gold, and this is an easy and low-key way to slowly improve the quality of the codebase. Not to mention harnessing the wisdom of the crowds, etc. Several classes have already been commented: MCFileRepositoryInspector, HTTPClient, and more.

The results of the daily commenting contests are collated at: Pharo Wiki – CommentOfTheDayContest

JNIPort, a Java interop library, announced for VisualWorks, Pharo and Squeak

Satuday, the release of JNIPort 2.0 was announced by Joachim Geidel. JNIPort is “a Smalltalk library which allows Java code to be invoked from
Smalltalk”. This is excellent news – the more interoperability options the Smalltalk ecosystem has, the better. I look forward to checking out the library.

New Authentication/Login/User Account Management package for Seaside

Earlier this month, Tony Fleig announced a new package, TFLogin to handle some common web app tasks – user authentication, registration and account management. This is incredibly important, and I will be reviewing this package and discussing Seaside user management options as soon as I’m done with the Remote Hello World post series.

Thanks Tony!