June 29, 2016
The Weekly Squeak
PLATEAU – Evaluation and Usability of Programming Languages and Tools Call For Papers
7th Workshop on the Evaluation and Usability of Programming Languages and Tools (PLATEAU)
Co-located with SPLASH 2016
CALL FOR PAPERS
Programming languages exist to enable programmers to develop software effectively. But how efficiently programmers can write software depends on the usability of the languages and tools that they develop with. The aim of this workshop is to discuss methods, metrics and techniques for evaluating the usability of languages and language tools. The supposed benefits of such languages and tools cover a large space, including making programs easier to read, write, and maintain; allowing programmers to write more flexible and powerful programs; and restricting programs to make them more safe and secure.
PLATEAU gathers the intersection of researchers in the programming language, programming tool, and human-computer interaction communities to share their research and discuss the future of evaluation and usability of programming languages and tools.
Some particular areas of interest are:
- empirical studies of programming languages
- methodologies and philosophies behind language and tool evaluation
- software design metrics and their relations to the underlying language
- user studies of language features and software engineering tools
- visual techniques for understanding programming languages
- critical comparisons of programming paradigms
- tools to support evaluating programming languages
- psychology of programming
- domain specific language (e.g. database languages, security/privacy languages, architecture description languages) usability and evaluation
PLATEAU encourages submissions of three types of papers:
Research and position papers: We encourage papers that describe work-in-progress or recently completed work based on the themes and goals of the workshop or related topics, report on experiences gained, question accepted wisdom, raise challenging open problems, or propose speculative new approaches. We will accept two types of papers: research papers up to 8 pages in length; and position papers up to 2 pages in length.
Hypotheses papers: Hypotheses papers explicitly identify beliefs of the research community or software industry about how a programming language, programming language feature, or programming language tool affects programming practice. Hypotheses can be collected from mailing lists, blog posts, paper introductions, developer forums, or interviews. Papers should clearly document the source(s) of each hypothesis and discuss the importance, use, and relevance of the hypotheses on research or practice. In addition, we invite language designers to share some of the usability reasoning that influenced their work. These will serve as an important first step in advancing our understanding of how language design supports programmers.Papers may also, but are not required to, review evidence for or against the hypotheses identified. Hypotheses papers can be up to 4 pages in length.
Submission site: PLATEAU papers should be submitted via HotCRP.
Format: Submissions should use the SIGPLAN Proceedings Format (http://www.sigplan.org/Resources/Author/), 10 point font. Note that by default the SIGPLAN Proceedings Format produces papers in 9 point font. If you are formatting your paper using LaTeX, you will need to set the 10pt option in the \documentclass command. If you are formatting your paper using Word, you may wish to use the provided Word template that supports this font size. Please include page numbers in your submission. Setting the preprint option in the LaTeX \documentclass command generates page numbers. Please also ensure that your submission is legible when printed on a black and white printer. In particular, please check that colors remain distinct and font sizes are legible.
All types of papers will be published in the ACM Digital Library at the authors’ discretion.
University of Cambridge
Cambridge, United Kingdom
Submission deadline: August 1, 2016
Kelly Blincoe, Auckland University of Technology, New Zealand
Jeff Carver, University of Alabama, USA
Kathi Fisler, Worcester Polytechnic Institute, USA
Tudor Gîrba, Independent, Switzerland
Stefan Hanenberg, University of Duisburg-Essen, Germany
Andrew Ko, University of Washington, USA
Brad Myers, Carnegie Mellon University, USA
Peter-Michael Osera, Grinnell College, USA
Janet Siegmund, University of Passau, Germany
Jeremy Singer, University of Glasgow, United Kingdom
Emma Söderberg, Google, USA
Andreas Stefik, University of Nevada, Las Vegas, USA
Ian Utting, University of Kent, United Kingdom
Philip Wadler, University of Edinburgh, United Kingdom
Craig Anslow, Middlesex University, UK
Thomas LaToza, George Mason University, USA
Joshua Sunshine, Carnegie Mellon University, USA
by Ron Teitelbaum at June 29, 2016 12:02 AM
June 28, 2016
From Blocks to BlockClosures now to FullBlockClosures. It is nice that Clément Béra summarizes current activities for Sista on his blog.
by Torsten (email@example.com) at June 28, 2016 12:48 PM
June 24, 2016
Walls, Pillars and Beams: A 3D Decomposition of Quality Anomalies
A video demonstration of a 3D approach (in Pharo) from the paper with the same title.
by Torsten (firstname.lastname@example.org) at June 24, 2016 11:18 AM
Functional callbacks on all Cog platforms
Pharo as well as Squeak are based on a common virtual machine implementation (Squeak VM, later Cog). This virtual machine source code recently was moved over to GitHub as OpenSmalltalk VM to better maintain the (small but existing) differences in the virtual machines for Squeak, Pharo, Newspeak and Cuis Smalltalk.
Within all open source Smalltalks derived from Squeak (Squeak, Pharo, Newspeak) historically and initially there was a mechanisms to call external code outside the Smalltalk environment. This mechanism was called FFI - which is the abbreviation for foreign function interface. So you could call external libraries to perform an action.
Later there was another mechanism called Alien FFI that also allowed to pass a callback function to the ouside world. Alien was provided in 2007 by Eliot Miranda and old docu could be found here and here.
In Pharo later there was another mechanism called "NativeBoost" (provided by Igor Stasenko) to call external functions. NB allowed to be using native code directly and really fast as the native code was attached to a compiled method and lived within the image. Relying on assembler (provided by a package called ASMJit) the NativeBoost solution is very fast - but also hard to maintain because NB was not as portable as the initial FFI solutions.
Later Pharo decided to resynch all these efforts into what is now known as UFFI (Unified Foreign Function Interface) provided by Esteban Lorenzano. UFFI unifies and also borrows from FFI, Alien and even NativeBoost.
Also with the more aligned OpenSmalltalk VM the different open source Smalltalks come closer together. Current work in progress on the virtual machine side is to allow for 64 bit Smalltalk systems and to better support ARM architecture beside x86 one.
Eliot now announced that Alien now has functional callbacks on all x86 platforms, ARM32 platforms and x86_64 platforms. This is another major step in having a portable interface to the outside world as we can use callbacks on all these platforms. Great stuff!!!
by Torsten (email@example.com) at June 24, 2016 08:21 AM
June 23, 2016
CuboidMatrix: Exploring Dynamic Structural Connections in Software Components using Space-Time Cube
A demonstration video of the VISSOFT paper by Teseo Schneider, Yuriy Tymchuk, Ronie Salgado and Alexandre Bergel. Done in Pharo.
by Torsten (firstname.lastname@example.org) at June 23, 2016 09:58 PM
June 21, 2016
SmallWorlds for Pharo
Interactive Fiction framework in Smalltalk is released. Read more
by Torsten (email@example.com) at June 21, 2016 11:43 AM
June 20, 2016
Another newbee is discovering Smalltalk. Looks like he tries to learn a language each month and also stumbled over Pharo.
If he really wants to learn Smalltalk and find out more he for sure will need more time than just a simple month. Initial steps in Smalltalk are easy, also syntax is easy to learn - but learning what power it contains requires more time and a deeper understanding. Also it takes a while to understand why things are the way they are. Often learning to deal with pure OO also means to unlearn (bad) things from the mainstream programming languages...
Nonetheless nice summary of his early steps.
by Torsten (firstname.lastname@example.org) at June 20, 2016 04:35 PM
LRP - Live Robot Programming in Pharo
How does a PR2 move through a door opening? By using LRP of course! Live Robot Programming (LRP) is a live programming language designed for the creation of the behavior layer of robots. It is implemented in Pharo.
by Torsten (email@example.com) at June 20, 2016 04:21 PM
June 18, 2016
Fowltalk - a new Smalltalk
In my quest making Spry I also learned about other efforts in the Nim community to construct Smalltalk-like dynamic languages. The most ambitious one may be Fowltalk by "fowl" who typically hangs out in the #nim channel on Freenode. Fowltalk started out written in Nim but since fowl wanted to learn more C++ it's now written in C++17.
At the moment he is rewriting the parser and code generator parts in the language itself, following a similar bootstrapping style as Ian Piumarta's idst. For example, here is the method parsing keyword messages.
At the moment Fowltalk is nowhere near usefulness but its fun stuff!
It's interesting to look at these
bootstrap* files - we can immediately notice some syntactic differences to Smalltalk-80:
Block arguments are written like
[| :x :y | ... ] and you can mix both locals and params there:
[| :aParam aLocalHasNoColon | ... ]. Instinctively I can agree with the combination, but I would probably then make the first
Some messages have been changed, like
ifTrue:ifFalse: is instead
ifTrue:else:. I have done similar simplifications in Spry. And just like in Spry ivars are referenced using
There isn't any documentation on Fowltalk yet, but it's clearly a rather elaborate implementation. It compiles to bytecodes, uses numbered primitives (I think) and there is an image mechanism.
It was also quite easy to get the REPL up and running, but just as with Spry, it's hard to know how to use it! On Ubuntu I installed boost
sudo apt-get install libboost1.58-dev and then it was easy to get it running following the instructions, as long as you change
The image constructed by the bootstrap process is 67Mb in size. Then we can do the canonical Smalltalk test in the REPL:
gokr@yoda:~/fowltalk/idk$ ./bin/oop -i oop.img --mmap --repl
(3 + 4) print
Fowl mentioned that the new parser can be loaded using
!read bootstrap.1 but... at the moment that causes errors.
It will be interesting to see where this goes! Fowltalk is very early in its evolution, and it's not a JIT, but it's a real bytecode VM with an image and we can never have enough Smalltalk-like languages! :)
June 18, 2016 10:00 PM
June 17, 2016
was updated to Pharo 5. Cool!!!
by Torsten (firstname.lastname@example.org) at June 17, 2016 11:15 AM
June 16, 2016
Iceberg - better Git for Pharo
Iceberg, the future git integration for Pharo 6.0. Read more
by Torsten (email@example.com) at June 16, 2016 12:09 PM
Pharo and 3D
The nice work of Ronie Salgado with Pharo and 3 summarized on his page. Nice!
by Torsten (firstname.lastname@example.org) at June 16, 2016 11:53 AM
Voyage with Unqlite support
For relational databases there is the tiny SQLite database solution that just requires a simple linked library (DLL/SO file) including the full database engine.
There is a similar tiny database called Unqlite in the NoSQL world. Pharo already had a Unqlite binding in the past. Before Pharo 5 this "PUnqlite" project was based on Native Boost. It was provided by Masashi Umezawa and I extended the project with a spec based UI to provide a database browser for Unqlite.
During the Pharo 5 development I discussed with Esteban many issues on #Slack about porting several of my projects to UFFI. We also discusssed about Unqlite and Esteban quickly ported the PUnqlite binding over from NB to UFFI. This was done on GitHub. Additionally I remigrated the changes back to the original repo of PUnqlite on STHub and made it loadable from Catalog in Pharo 5 again. So with Pharo 5 you again have a package "PUnqlite" that you can load from Catalog. Just open Spotter and type in the name.
During these #Slack sessions we also discussed about Estebans Voyage framework. Voyage is a layer that allows for very simple persistence in Pharo. It is explained here and here.
So far Voyage only worked with MongoDB as backend. Often Mongo requires some setup which might be overkill for simple deployable applications that you want to build with Pharo. So we also discussed about using UnQlite as a backend for Voyage.
Esteban wanted to work on this for a project and now first results are available: Voyage is now restructured with a second backend to support also UnQlite beside MongoDB.
Cool - thanks Esteban!
by Torsten (email@example.com) at June 16, 2016 10:20 AM
VM support switching from SVN to Git
The Cog subversion repository is moved over to GitHub
by Torsten (firstname.lastname@example.org) at June 16, 2016 07:04 AM
More than 15 arguments
support is on its way. But I guess if you have need more than 15 arguments in a method you should think about your design. Possibly an argument object would be applicable.
by Torsten (email@example.com) at June 16, 2016 07:03 AM
haltOnce was improved in Pharo 6
by Torsten (firstname.lastname@example.org) at June 16, 2016 05:52 AM
June 15, 2016
Playing with MetaLinks in Pharo
Yuriy is playing with MetaLinks in Pharo. Read more.
by Torsten (email@example.com) at June 15, 2016 08:51 AM
Interesting, there is an implementation of a Slack client on SmalltalkHub.
by Torsten (firstname.lastname@example.org) at June 15, 2016 07:45 AM
June 12, 2016
A simple replacement for Pharo's native file/folder selection dialog. Code is here.
by Torsten (email@example.com) at June 12, 2016 10:36 PM
Updates for Ubuntu Pharo VM
Read more here.
by Torsten (firstname.lastname@example.org) at June 12, 2016 10:34 PM
PassBy[ME] from Pharo
Use 2 factor authentication service PassBy from Pharo with PBMAuthenticator
by Torsten (email@example.com) at June 12, 2016 06:45 PM
Pharo NoSQL on GitHub
MongoTalk and Voyage frameworks are now on GitHub
by Torsten (firstname.lastname@example.org) at June 12, 2016 06:42 PM
Enterprise Pharo Book
Enterprise Pharo book is out
by Torsten (email@example.com) at June 12, 2016 06:39 PM
June 09, 2016
Update on Sista
Interesting update on Sista.
by Torsten (firstname.lastname@example.org) at June 09, 2016 06:48 PM
June 08, 2016
MPDClient in Pharo
Client side interface to the Linux Music Player Daemon written in Pharo. Project is here.
by Torsten (email@example.com) at June 08, 2016 08:05 PM
Smalltalkers seriously not kidding
Like this ycombinator thread: "When they say that in Smalltalk, everything's an object, they're seriously not kidding. Everything is an object, including compiled code, stack frames, execution contexts, threads, etc. "
by Torsten (firstname.lastname@example.org) at June 08, 2016 01:22 PM
June 06, 2016
A simple objects analysis tool. Read more.
by Torsten (email@example.com) at June 06, 2016 05:52 PM
June 03, 2016
inline if in Smalltalk
No! No! No! Dont extend Smalltalk with things like that.
Just because you can extend Smalltalk does not mean you should do on all ends. So unlearn your traditional syntax thinking before starting with it. Code should tell a story to be maintenable and not end up in deciphering cryptic syntax sugar.
Lets think in objects and stay readable with: #ifTrue;ifFalse: please!
by Torsten (firstname.lastname@example.org) at June 03, 2016 04:17 PM
64Bit support progresses
64Bit virtual machine for Pharo, Squeak, ... are in the pipe - VM developers move forward on this frontier. There is now also 64bits image generation for Pharo.
While in the last century it was hard to run dynamic systems like Smalltalk times have changed a lot.
But now Hardware and software become faster and even smaller each day. This leads to suprising results.
by Torsten (email@example.com) at June 03, 2016 03:06 PM
Ubuntu Ambiance Theme for Pharo
A theme for Pharo to look like Ubuntu. Looks nice. Code is here.
by Torsten (firstname.lastname@example.org) at June 03, 2016 07:18 AM