Monday, December 21, 2009

strongtalk Smalltalk: a new release

There is a new release of the strongtalk variant of Smalltalk at

The story behind the Strongtalk team, Sun, Self, Netscape and Javascript is somewhat painful.

But thanks to the work of David Griswold we have a new Windows executable, a Mac OSX executable and easy builds on linux with gcc.

If you know anything about Smalltalk (or even the Tcl IDE bult in XOTcl) you will want to see the visionary strongtalk browser (especially if you have seen live code edits in Seaside web pages.)

Work also progresses on Self, the Sun LivelyKernel and Clean Slate Smalltalk.  Likely we are just plain lucky that Self and strongtalk escaped into open-source before Oracle acquired Sun.

Other recent Smalltalk notables: Cincom Web Velocity, Squeak Pharo, Iliad, Aida.
Notable Smalltalk-and-Actor inspired innovation: Io, the language.

Saturday, December 19, 2009

while ( write( read(resource) ) ) # no ;
#pragmatic programming

while(write(read())) may not be as succinct as the equivalent expression in Rebol, but this Icon expression - which composes correctly in ObjectIcon, UNICON, Converge and ICON itself - has an important property: it can fail and its failure is neither an exception nor an error.  And until it fails, it succeeds.

Yet for all the pragmatic programmer interest in languages such as Erlang and Clojure, Icon seems to attract no interest at all (judging from activity at the pages for ObjectIcon.)

Indeed, the apparent disappearance of goto as a reserved word in JavaScript-family languages (except DMDScript, where goto is implemented) would seem to indicate that the Algol-like syntax of the replacement for SNOBOL may never get the attention it deserved.  GOTO is now masked as throw and try/catch and break-to-tag and the "resume-elsewhere-as-resume-next" of Icon failure may remain unknown to another generation of programmers.

When I last looked, goto remained an unused reserved word of Java, just as it was of JavaScript. For programmers who never worked with Prolog back-tracking, the idea that boolean expressions evaluate to TRUE or FALSE may seem a truism.  But it remains the case that a great deal of the internet, for one striking example, depends on all manner of objects deemed "empty" to default in boolean expressions to an evaluation as FALSE.

Just as it was false that SNOBOL would never be performant (SPITBOL put that to rest but too late), so it was false that GOTO is always dangerous (and useful long jumps in C are still with us.)

There is a useful word in German, Aufhebung, which does not always translate cleanly into English: but it might be the one word to capture the response of Icon to the challenges laid before SNOBOL by Algol, Fortran, Pascal and C.

You need only consider that recent languages as advanced as Java, C#, Curl, ECMAScript, Python and Scala continue to use Regular Expressions as if there had never been a programmers' tool which was an alternative to Perl.  PCRE is now an acronym if not also a shibboleth.

Icon was intended for non-computer scientists to use just as was SNOBOL before it, but even an MIT language intended for visual artists, Processing of, continues to advise its users to learn regexp.

Perhaps the release of ICON 9.5 (under the guidance of an award-winning CS teacher and mentor) will attract some attention. Or the future release of pythonic Converge 2.0

But I have my doubts.  Perhaps it will come when an HP innovator looks at available languages for new help center software for help desks in Africa.  Perhaps the interest will come from Latvia or western China.  In any other area of applied science, the likes of regexp would have been gone.  But we have yet to fall under the spell of some great offering us the dictum "RegExp considered harmful".

while ( write( read( responseStream ) ) ) 
# idiom, semi-colon terminator optional

Icon: generators, iterators, practical co-routines, goal-directed evaluation, expression-based language (Carl Sturtivant, G. Townsend with others)
ObjectIcon: UNICODE Icon with classes (Robert Parlett)
Converge: pythonic Icon (Laurie Tratt)
Rebol:,, (from Carl Sassenrath and team; now in alpha for REBOL 3 with closures and modules)
Curl: Clojure-like homiconic web content language with macros, closures, optional types and permiting scoped tags within iteration macros to facilitate expressions such as the macro {for tag=outer permitting {break tag=outer}

Thursday, December 17, 2009

PHP nanoweb on Ubuntu

I was restarting the latest Ubuntu PHP nanoweb on my netbook when I saw a shell script error message.  A run through the file nanoctl in my /usr/sbin revealed a few issues - particular if trying to use the simple status option.  To make matters worse, the script is hard-coded with "lynx" as the browser name -  while my Ubuntu defaults to Galeon (but I prefer Epiphany.)

If you care to look over an alternative, I have a version with extension .sh over at

The edited version is set for the Gnome Epiphany browser for linux - you may wish to edit  the BROWSER var. Note that the /usr/sbin/nanoweb file is what is commonly referred to as nanoweb.php

Like PHP programming, unix shell scripting sometimes can be a somewhat arcane art.

Thursday, December 3, 2009

Curl Open source at

Over at I have posted the links to Curl open source projects which are from in Japan which are found at

The project home page at Google with the links is The Curl ORB home page at

These projects are typically shy of being 1.0 releases.

At the moment they are as follows:
  • Curl ORB 0.7
  • Curl Advanced UI 0.6
  • Curl Sonntag MVC 0.7
  • Curl Non-visual Libs 0.7
To quote from their home pages:

Curl Non-visual Libs
Extended components for Curl language, such as String utility, collection utility, UI utility, logging, log-rotate, data caching, encrypt/decrypt and such.

Curl Sonntag MVC Framework
Curl Sonntag is a simple MVC framework for Curl.

Curl Advanced UI
Advanced User Interface libraries provide components necessary for creating rich user interface applications easily. (for details see this blog post at

Curl ORB
Curl ORB is to communicate between Curl and server side Java. It can generate Curl source code from POJO (Plain Old Java Objects), and invoke the Java methods on the server-side from Curl client-side applications.

There is also a new External Libraries project from in Cambridge, MA, and I will post a note on that open source package when it is out of alpha.