Tuesday, May 31, 2011

SqueakSource3 Alpha Site online

Dale announced a new SqueakSource3 site. Note that this is for testing only and be aware that the repository will be refreshed at the end of the Alpha period.

Fuel in SandstoneDB

Ramon now included Fuel into SandstoneDB. Here is the comment from "SandstoneDb-RamonLeon.141.mcz":

Introduced a dependency on the Fuel serializer. You can load it first with...

Gofer new
squeaksource: 'Fuel';
package: 'ConfigurationOfFuel';
((Smalltalk at: #ConfigurationOfFuel) project latestVersion) load: #(Core Tests Benchmarks).

It's smoking fast compared to SmartRefStreams. A 200 object commit with SmartRefStream on test machine takes around 2.2 seconds, .41 seconds with Fuel.

Passes all tests. SmartRefStream is still the default for now so loading this won't change anything or corrupt existing databases. To set fuel as the default serializer evaluate...

SDFileStore serializer: SDFuelSerializer new.

This will of course invalidate any existing db based on SmartRefStreams. To migrate, simply resave all of your objects. This would require grabbing all objects first into some temp arrays, changing the serializer, then calling save on all objects.

So startup Pharo and try it out.

Modern UIs

Just read an article about the Language Workbench Competition 2011. There the MetaEdit+ tool was demonstrated and highly praised. According to this article by Cincom the tool is implemented using Cincom Smalltalk. Looks like the tool really rocks:

Steven Kelly demonstrated the MetaEdit+ implementation of the assignment. In fact, he implemented most of the assignment from scratch during his demonstration! Very impressive and the only one who did it this way. For me, this shows the productivity and ease of use of MetaEdit+.

But yet again someone complained about the old-style UI:

The main comment on twitter about MetaEdit+ was that its UI looks a bit old-fashioned. That's of course a matter of taste, but their next version (5.0 - to be released soon) will have a new, Windows 7 looking UI.

So the next version will have a Windows7 UI. CST catches up with current trends - good.

But the question to me still is what is next step in UI development? Is it really worth to following UI design of the native platform.

Or should we focus on the nice things that can be done in browsers and other rich clients today? Or should we focus on 3D Smalltalk?

If I look at all these new devices and apps then I think an application that looks "modern" should at least support graphics and animation. Mhhh ... time to look at morphic again?

What is the (Smalltalk) application with the most "fashionable" UI?

Friday, May 27, 2011

More notes on JavaFX2.0

Oracle did a really good job on JavaFX 2.0 - there is now a webbrowser component included (based on WebKit). This is very usefull since you can implement a part of your application in HTML/JavaScript. This brings RichClient apps and WebApps closer together.

Think of a rich client app where you want to display a google map or use a jquery library to display charts, integrate sites like facebook, google, ...
You can decide if you implement/reuse a widget/webapp in HTML or implement it in Java(FX).

It is even possible to call JavaScript embedded in the displayed website or handle events from the website (get a callback from JavaScript). Note that WebKit already supports HTML5.

I remember an example in Smalltalk/MT where it was possible to get a callback into Smalltalk on events generated from the scripting engine in Internet Explorer. So a Smalltalk window was able to display a webpage by embedding IE and when you clicked in the webpage you could handle this in your Smalltalk app.
But it was only possible with deep knowledge of IE and its COM interfaces.

JavaFX also provides Swing Interoperability - so you can use existing Swing widgets or integrate a JavaFX stage/scene into your Swing app. You can also style your app using CSS similar to a webpage. You can run a JavaFX app easily as applet, webstart or local application. It is very deployment friendly and you can even develop apps that run on a TV. Let's see if it will also have a future on mobile devices/platforms. Yes - JavaFX is really nice and opens new opportunities.

But still ... with Java you have the compile-run-check cycle and you waste a lot of your development time compared to more productive languages like Smalltalk where you dynamically interact with objects and code. Maybe all these nice UI features like CSS skinning, embedded web browser, animation framework, visual effects ... should be added to platforms like Squeak or Pharo too ;)

Thursday, May 26, 2011

JavaFX Beta

Tried the new JavaFX beta 2.0 ... looks good so far. Some small graphic errors on my machine ... but could be nice to build visually attractive rich client apps.

Lets see how easy it will be to use Java now instead of the former JavaFX scripting language...

Learning EToys

Want to learn about the eToys system in Squeak. There are nice screencasts available on the Waveplace website.

Wednesday, May 25, 2011

On top of ...

As I said in my post on JTalk it is very easy to run the Rhino JavaScript Engine from Java and therefore should be easy to load JTalk to run this Smalltalk implementation on the JVM.

Stefan picked up the idea and tried it with the following snippet:

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("var CanvasRenderingContext2D = false;");
engine.eval(new java.io.FileReader("jtalk.js"));
engine.eval(new java.io.FileReader("init.js"));

He did more experiments to make sure calling Java-Classes from JTalk-Smalltalk is possible too.

Today Stefan left a comment on my blog post on "JTalk and JSTalk". He announced that the execution of smalltalk-code on the server-side via Rhino is possible. Details on the remote runner and how you can save your Smalltalk Code to a DB can be found on his blog.

So given enough time (and money) it should be possible to build a Smalltalk IDE using Javas Swing UI library or a Seaside server running on top of Glassfish/JBoss/WebSphere/Weblogic/Geronimo/... app servers, ...

I still doubt that performance would be good. It would make more sense to run it on Googles new Native client.

However - JTalk on Rhino is a nice way to experiment with Smalltalk on top of JavaScript on top of JVM on top of...

Background Changer

Daniel Galdames G. created a background changer for Pharo. Just evaluate

Gofer new
url: 'http://lemuus.homelinux.org/lemuus/BackgroundChanger';
package: 'BackgroundChanger';

World menu->System->Change Background

Now select a directory with images. Nice.

Dr. Geo Release 11.06

There is a new release of Dr.Geo - an app built with Pharo Smalltalk.

Need Fuel

Fuel - a new project to implement binary object serialization for Pharo is part of the ESUG SummerTalk. It's work in progress but already usable, there is a ConfigurationOfFuel metacello config to easily load it.

Read about the details here or on the project website. The Source code can be found on squeaksource.com, there is also an issue tracker. According to the benchmarks its faster than SmartRefStream.

It is very easy to serialize and materialize (deserialize) an object, you can store blocks (that get evaluated when loaded again) and Fuel takes care to keep global instances like Transcript.

| sourceArray loadedArray |
sourceArray := Array
with: 'HelloWorld'
with: Transcript
with: [ Transcript show: 'a string' ].
"Store to the file"
FLSerializer serialize: sourceArray toFileNamed: 'example.fl'.
"Load from the file"
loadedArray := FLMaterializer materializeFromFileNamed: 'example.fl'.

Sunday, May 22, 2011

Friday, May 20, 2011


Need some easy visualizations in your application written in Pharo?
Then check out EyeSee:

Gofer it
squeaksource: 'EyeSee';
package: 'ConfigurationOfEyeSee';
(Smalltalk at: #ConfigurationOfEyeSee) loadDefault

It is easy to create diagrams with it. Check out the examples in class "ESExamples".

I tried it in Pharo 1.2 - some examples were broken since the class Circle was removed. This is currently discussed on pharo-list. However - it's easy to fix.

Next time I need some visualizations I use Pharo instead of Excel ;)

News on JRockit

JRockit (a fast JavaVM similar to Hotspot) is now free and available on Oracles Tech net. Nice!

Tuesday, May 17, 2011

SmallHarbour project

With the support of ESUG there is a new ESUG SummerTalk 2011 project called SmallHarbour. It wants to provide a simple platform to host smalltalk web applications (similar to seasidehosting.st but also for commercial projects.

Read the announcement here and follow progress at www.smallharbour.org.

DabbleDB shuts down

The Dabble DB service shuts down on May 18, 2011
Time to rescue your data...

Moose Suite 4.4 is out

Tudor announced the new Moose Suite in version 4.4. Read more.

Tuesday, May 10, 2011

Monday, May 09, 2011

Nautilus Preview

Nautilus is a new implementation of a Smalltalk browser for Pharo with support for groups, packages (using the new RPackage stuff from Pharo task force), declarative menus, ...

You try it in the latest update of Pharo core 1.3 image. Read here.

JQueryWidgetBox ported to VA

Looks like Sebastian Heidbrink ported the JQueryWidgetBox project for Seaside to VA Smalltalk and uploaded it to VASTGoodies.com.

I started the JQueryWidgetBox project in November 2009 and meanwhile various people contributed wrappers for seaside widgets to it.

Code is MIT, initially I thought about a different license model: everytime one uses the project in a production environment a new widget has to be contributed back to the project. ;)

There are so many good jquery plugins available that could be wrapped for seaside and make the web apps look much nicer. Feel free to help.

I hope that this new port will also help the project to grow...

Thursday, May 05, 2011

Squeak forks

Pharo once forked from Squeak ... some people were happy, others angry. And there were IMHO unnecessary posts like this. However - Squeak is still alive and growing. As well as any of its forks.

Pharo and Squeak play nicely next to each other and both communities not only share history and virtual machine but also members and code/fixes.

Pharo took away the pressure from Squeak to be more like other Smalltalk IDEs. Squeak could continue to be the media and etoy Smalltalk. It's still the best environment to experiment with computing ideas.

And we can now use Pharo to introduce business people to (open source) Smalltalk as these two new indendent posts again prove: read here and here.

So IMHO I think it was a good step, especially since other forks like Cuis started to explorer new areas too. There are also other nice forks like the Squeak NOS project or the Croquet/OpenCobalt story with Krestianstvo and the new OpenQwaq. Cool!

I started with Squeak in version 1.0, right after Andreas created a VM port for Windows and helped to move it forward with code and words. Currently I concentrate on Pharo, otherwise I would be lost in all these nice projects. But I follow all the Squeak forks very closely.

It is really exciting to see all these different faces of Squeak and Smalltalk in general.

Wednesday, May 04, 2011

Squeak VM port to Google Native Client

Yoshiki Ohshima started a Squeak VM port to Google Native Client.
If you work with latest beta of Googles Chrome browser you can try it yourself.

Native client is a technology where native code (subset of Intel x86) could be run from a web browser within a sandbox.

PHANtom - aspect language for Pharo

A modern aspect language for Pharo was announced today.

Tuesday, May 03, 2011

DNU in JTalk

JTalk now handles #doesNotUnderstand:

OpenQwaq available

Teleplace today announced OpenQwaq, a major open source initiative for collaboration based on Squeak Smalltalk. To quote:

The OpenQwaq project is based on the commercial software that Teleplace has been delivering to the market over the past four years. It is a highly-secure, enterprise-class virtual collaboration platform that has been used by large commercial enterprises and federal agencies. The OpenQwaq project enables organizations - large and small, profit and not-for-profit - to implement virtual workspaces for their specific needs.

OpenQwaq is released under the GPL v2 license and is available for download immediately at http://code.google.com/p/openqwaq

Some more infos here and here.