Showing posts with label Pharo. Show all posts
Showing posts with label Pharo. Show all posts

Wednesday, April 10, 2013

Smalltalk config candour

What follows is my reply to an exasperated Smalltalker :
CC  rider : config issues are as old as commercial Smalltalk ; I keep an entire mail bin of these (separate from 'user' or 'tips' conversations.) At least this is not
                    eclipse+CVS+Java+open-source !
I work in a very advanced commercial OOP created by MIT Lisp gurus and THAT IDE has package circularity issues that have to be addressed by developers who push beyond the pre-tested envelope.
Does the issue exist for commercial PROLOG implementations with packages ? That would be amusing .... (there had been SOUL and QSOUL projects for Squeak as well as a Prolog and then Lisp for Squeak )
I would not be surprised to find packaging issues with functors in Mozart/Oz ! And I could check the Mercury dev mailing list ... (Mercury - which can gen Erlang code ! )
The Puppy Linux folks have a real challenge in getting tools into their light Linux ... but so far so good (mostly) - I say "mostly" as I cannot get the ObjectIcon IDE to run in their JWM X ... but Icon with objects could be used to address that very config issue in a maintainable, readable fashion !!!
Practical computing : tasks which keep our sense of irony well-honed ;-) (even without management)
Needed : Pre-Factoring browsers ! ;-)
and please do keep smiling ... but only if the crows' feet crinkle at the edges of the temples ...

Monday, March 14, 2011

Pharo Smalltalk 1.2RC2

 
Over at pharo-project.org the next release of Pharo is almost ready.

I had some issues today trying to load a MetaCello configuration of O2 - the traits-compatible version of OmniBrowser - perhaps the build already has the latest O2 ?

I did manage to load Aida/Web into the Pharo image (a separate Aida image is also available as part of the continuous build process).

This comes after a few days of freeing my PC from an attack which appears to have come through having Java enabled in default IE (although the attack began in a new Google Chrome while I was in that browser.)  AVG, Ad-Aware and SpyBot were of no more help than Microsoft's Malicious Software Removal Tool.  The real target appears to have been Firefox - but because I don't use it, that tampering was easier to detect in explorer alone.  A few bogus DLL's and many hidden files later I appear to have survived.  One casualty was my recent Google bookmarks.  Browser Helper Objects.  Yeah, right.

Rather than rant, this much was funny: Ad-Aware made some suggestions but also had a high-lighted "read more" which I clicked on in their application window - but it did not open a dialog - it opened IE with add-on's running!  Gee, thanks, folks ....

Friday, February 18, 2011

Squeak Smalltalk 4.2

Squeak Smalltalk 4.2 is now available at http://squeak.org as a single bundle "app".

I find the more conventional IDE to be to my liking - a click on a menubar selection opens a window.  On my Windows box this gave a much more conventional feel which, for better or worse, is now the common desktop look and likely an aid both to productivity and to ease of adoption.

This version is designed to be compatible with the coming "Cog" VM so additional performance improvements can be expected soon.

The main alternative 'squeak' is now http://pharo-project.org where Traits from Self have been brought into Smalltalk as an alternative to AOP and Mixins.  The awaited Pharo 1.2  is expected soon.

Both Squeak and Pharo are compatible with the Seaside 3.0 web application framework.

Monday, December 20, 2010

Seaside versus Aida

The Aida 6 web framework is rather different in objectives than Seaside 3 as a Smalltalk application server. My specific interest was to determine to what extent the services for web applications were orthogonal to any given web markup.  Both default to HTML but I am looking at frameworks suitable for emitting declarative Curl markup using the Curl web content language (originally MIT and now Sumisho.)

Both frameworks loaded fine into Pharo as Metacello configured packages and both had gotchas which required some experience in Smalltalk - unlike the Gofer and Metacello tools themselves.

What was distinctive in Aida was the need to make changes across many framework classes - and in Pharo Smalltalk, I can see no way to move new methods for base classes into my packages other than the *extensions mechanism.

The worst problem was an >>initialize method which started with super initialize and then failed to call a private method - the one mechanism that permits a subclass to override initialize properly ( I will submit my change as a fix.)

A serious problem was the lack of critical cleanup and reset methods ( I only needed to add one to Seaside for WAKom.)  I will submit these to the Aida team.

You will not want to try to prototype anything in Aida without using the process browser tool and without running a set of >>allInstances sanity-check mthods.

The proliferation of objects comes from inadequate cleanup - but in a Version 6 of Aida may reflect the reliance on loading packages into base images.  This is terrific for PITL but Smalltalk was always great for prototyping and that almost means maintaining a 'working' image - which is one way to spot objects that hang around.

In the early days of Seaside my rule was to discard any image in which Seaside had launched.  For anything other than prototyping, Aida would mean working from a close-to core base image.  That's just my take on what I saw after running two subclasses of SwazooSite in the same image, stopping, saving, quitting, launching ST.

And all bets are off until I have seen what a production image looks like - in the old days this was a matter of "stripping" images down - but we should now be in the age of building core images up.

I say that with a clear awareness of just how tiny servers can be in other alternative languages - such as Rebol - aside from any issues of code getting reused, code being understood and code being maintainable.

In the positive column: Aida has achieved a dialect for composing web pages which I think is on a par with Seaside.  But Rebol is also great at dialecting ... so dialecting is not enough.

In secure corporate environments where Curl shines, I remain concerned with the use of a pharo.st file at startup.  On the other side of that coin, the Aida tag method looks as if it should be reading from a resource file as adding a new tag should not always be a matter of changing framework level code.

At this time I have more of Curl running under Seaside but neither have the equivalent of 'halos' in Curl yet - so the jury is still out on a Smalltalk web framework for Curl markup.

Curl has great prospects in Asia, the subcontinent and Africa (most professional Curl developers are in India and Japan) wherever security is paramount.

My current work has moved from "eyes-only" document browsing* to "dark documents" on analogy with "dark matter": shedding light on a file directory or a DB table does not reveal them.  The key is to make "dark documents" run light in collaborative environments.  Both Smalltalk and Curl come with such excellent programmer facilities that they make a terrific match for prototyping a dark objects source and viewers.  And Curl has an exisiting inheritance mechanism near to Traits and no barrier to evolution away from classic OOP  (having been designed and implemented by MIT Lisp and Scheme experts at curl.com)

More to follow ...
* a early prototype for which there are links at logiquewerks.com and at aule-browser.com - both required the Curl runtime for the browser or the Curl REPL with scripted variants.
Enhanced by Zemanta

Sunday, December 19, 2010

Pharo Curl

It took some effort again to get Curl markup running as an alternative to HTML+JavaScript on Seaside 3.0 on Pharo 1.1.1 Smalltalk.

The worst nuisance was Seaside using a method named text: for the equivalent of stream nextPutAll: or document print

This is because text is a common declarative identifier in Curl markup.  But it is only an annoyance and without examing available selectors at runtime or usinf perform: I can't see a workaround while leaving Seaside intact.

What was vexing was to still have to modifiy the WAAdmin class to defeat HTML-bias built into the framework.  And one or two other known quirks.

If only Seaside would embrace Traits on Pharo Smalltalk!  Traits would make it so clear that the choice of markup can be separated from the choice to use continuations, to use halos ...

Traits might also reduce the reliance on the Decorator pattern.  In a language with late binding, this leads to odd code, such as assigning a stream to an object whose class name and instance identifier clearly mean that it is not a stream ( but of course it is a decorator of a stream.)

Traits might reduce the reliance on the visitor pattern whcih I think reduces the understandability of code far more than double-dispatch itself because of the proliferation of visitor classes.  It is no longer necessary to ake a virtue of that necessity ( dare we now say, 'limitation' ?)

Many things are improved in Seaside 3.0 so that overall flipping from HTML markup to Curl goes well in the details - especially in a reduced need to subclass where closed tags happen to be identical across HTML and Curl.

It was amusing to me this time to add crlf so as to get better formatted Curl markup to inspect using the Curl source inspector - and spc to put spaces into the markup layout itself (Curl ignores whitespace the same an HTML client.)

The one concession was to use txt: to dump plain text - but super was not enough to preserve a Curl text: tag - for that I had to look at the runtime class so blocks go to text: and strings go to the canvas encoder for printing.

Curl 'attributes' (properties and options) are laid out the same as Seaside HtmlAttributes so anyone who can layout HTML for Seaside can layout Curl while remaining on 'the gentle slope' of the Curl language when used for declarative web content markup.

It still may be that Aida will be a better home for Curl poetry markup on a Pharo Smalltalk web server.

Thursday, December 16, 2010

Metacello Pharo

I am loading Seaside into a Pharo Smalltalk (1.2 beta) 'core image' running on top of the latest Cog VM using
Gofer new
   squeaksource: 'MetacelloRepository';
   package: 'ConfigurationOfSeaside';
   load.

(Smalltalk at: #ConfigurationOfSeaside) load
which is going fine except that I occasionally have to look to see what cycles the process is consuming as I get no 'busy'cursor and the 'top' progressbar stays empty - during some downloads the image returns my blank stare.
It is good to see that I do not need 'ConfigurationOfSeaside30' to get 3.0
And only one walkback so far ( a minor deprecated method to correct )
Enhanced by Zemanta
OOPs ... I saw Cfg of Seaside loading Cfg of S 3.0 but here comes a pile of 2.8   oh vey.
How will we escape 'ConfigurationOfSeaside3.1bOsX' etc etc ?

And POOFFF! Magritte compiles by kicking back multiple error streams ... and we are off to try
Gofer new
    squeaksource: 'MetacelloRepository';
    package: 'ConfigurationOfSeaside30';
    load.

(Smalltalk at: #ConfigurationOfSeaside30) load
On my first try I type '3' and not the full '30' and was rejected (not advised, but rejected.)

The issue is that Smalltalk is not yet organic software: it is component software.  But then I see that Pharo offers a configuration ST file.  Now I have to go check to see if this facility remains available in a 'stripped' Pharo image.

This is an old Smalltalk implementation issue often glossed over - but try to explain to some one tasked with Governance, Risk and Compliance (GRC) that your Pharo image starts up by evaluating a raw ST file.  I remember a mission-critical app at a Fortune 100 where one of the ST files being consumed (Why not read and interpret all ST files that you find in the image directory ? ) was quite a shocker (for me, at least.)  But so long as 'stripping' Smalltalk images is more mysterious than establishing a 'base' Smalltalk developer image this concern will remain.

All in all, Metacello configurations are a big improvement.

I think that David Kranz says something about this in his Dr Dobbs interview on the role of the architect.

Meanwhile a class load method just failed on a createClass  message due to a global name collision - and I do not see the equivalent of a tool dating back to Cooper Peters 1990 for resolving this ... so a Seaside 3.0 on Pharo 1.2 alpha on Cog will have to wait for another day ... so back to Pharo 1.1.1 to further explore what Traits can bring to Seaside for multiple markup strategies (read: Curl in addition to HTML + JS)

Tuesday, December 14, 2010

Sunday, November 7, 2010

Seaside Book at Lulu or as PDF

Seaside - the Book

Dynamic Web Development with Seaside, by Steph Ducasse

Available for charge as PDF or from Lulu as softcover.

Suitable for use with Pharo Smalltalk.

Pharo Smalltalk for Seaside on Windows, Mac and Linux

James Robertson of Cincom has a Pharo Smalltalk introduction on YouTube.

If you know JavaScript and ruby but never learned to work in a Smalltalk environment, this video is just one of a starter series called "Smalltalk For You".

And if you are taken with Pharo, you an go to their pages at code.google.com/p/pharo or start with Smalltalk Television.

Both Cincom Smalltalk and Pharo have taken to Seaside for Smalltalk.

The Pharo Smalltalk branch of Squeak Smalltalk requires itself to support the Seaside web development framework while focusing on Traits as an abstraction mechanism for programming to interfaces without deep inheritance subclassing.  With the advent of the Roar multi-core VM for Squeak Smalltalk, this should be an alternative to Scala.

For daily Smalltalk podcasts on Cincom Smalltalk and their variant development using the Seaside framework, see Cincom Smalltalk on Web Velocity.

For an alternative using Seaside, see Sea Breeze: YouTube has these links.

Tuesday, May 25, 2010

Squeak Smalltalk 4.1


Could this be a Squeak right out of the box?

That is a menu bar with Projects, Tools, Extras, Windows, Help and a Search entry field. And where are the Fi$her-Price colours? (They are an option now.)

This is the influence of Gilad Bracha's Newspeak.  The release comes not long after Pharo Smalltalk went 1.0 (although I don't know the politics.)

The good news for Squeak and Smalltalk is that 4.1 has so many important changes which are not cosmetic. These include updated closures, even greater modularity (unload, reload), a new implementation of Traits from the folks who gave us traits. And a great many changes in the class hierarchy.  All of these listed when you click the green or the orange buttons on that "Welcome to Squeak 4.1" pane.

If you have wanted to learn Smalltalk, there are even more resources online now, including Pharo By Example. The first thing to know in Squeak or Pharo is to left or right click in that workarea background (the brushed aluminum-looking main window area.)

There will be other Smalltalk news coming when Vision Smalltalk appears (also known as DNG or Dolphin Next-Generation Smalltalk.)

It remains an oddity to me that Smalltalkers are still using Adobe PDF for their e-books .... see FotB.

Wednesday, September 9, 2009

Generating Curl 7.0 web content from Seaside 3.0 on Pharo 1.0 beta

Yesterday I used a 3.0 install on the Pharo 1.0 beta to generate non-HTML (in my case that is Curl markup )

I would not say that is any easier that before 2009 Camp Smalltalk ( I started from scratch - it still took me hours to track down everything )

Anyone trying this must remember both gotchas:

WASystemConfiguration clearAllDescriptions.

WARenderer resetDefault.

But since WARenderer is an HTML subclass which always resets the default renderer class to itself, that >>default method had to change.

The main nuisance is that methods >>textHtml or >>textPlain are in many critical places instead of a default rendering type ... and of course many key methods for error and redirect still output raw HTML.

Now to see what headaches appear as Pharo and Seaside evolve - given the wide-spread changes still required to accommodate a default rendering MIME type other than plain text or html.

Curl and GemStone are such a natural match that the game still looks to be worth the candles.