Embrace change

«The best way to predict the future is to invent it» — Alan Kay 
Filed under

smalltalk

 

Great job guys

As I wrote in December I'm now working in a different team customizing and maintaining a commercial application based on Smalltalk and Gemstone/S. This month a new colleague started. Currently he has no experience in Smalltalk. So I've choosen Pharo as an environment to teach him, also because the GLASS team seems to test Pharo for future realeases.

I'm really pleasantly surprised. Even if it's still the version 0.1 it looks professional with it's OS X like look'n'feel - there's also one for Vista. And the integrated tools and the reorganization of the menus support the work with Pharo. It's real fun and definitely the right direction.

So once again, great job guys.

Loading mentions Retweet
Filed under  //   smalltalk  

Comments [0]

OOP 2008 - Smalltalk evening

Today has been the traditional Smalltalk evening by Georg Heeg, Cincom and Gemstone. There've been three parallel tracks about Seaside for Ruby on Rails developers, GLASS and VisualWorks 7.6. After those Lukas Renggli presented Seaside more detailed. This has been a very good presentations of this great framework with many questions out of the audience. Finally we've had the well known smalltalk with snacks and drinks. *smile* So I could talk to Yvonne Schickel and James of Cincom about the roadmap of VisualWorks. Without saying too much - they are doing well and have interesting plans and ideas.

One imression of me is that the Smalltalk community should thank Ruby. It opened minds for intelligent non-mainstream solutions. So I that this is one of the reasons why the interest in Smalltalk is growing (increasing number of Seaside mailing list subscribers, more participiants in the Smalltalk evening than last year).

Loading mentions Retweet
Filed under  //   development   smalltalk  

Comments [0]

OOP 2008 - Smalltalk won the Dynamic Language Shootout

As you allready could read on Planet Smalltalk the winner of the dynamic language shootout is a Smalltalk app based on VisualWorks and Seaside. It is a neat app with a great user interface. The task has been to develop a Scrabble application with a number of constraints. I've talked with Georg Heeg and Stefan Tilkov - both members of the jury - and both said that it was really superior to the other solutions. The second place used JRuby, the third Lua. The Lua app was one of the shortest and additionally made the most points in a game. Tomorrow I'll get more infos by Stefan than he told me while we played a real Scrabble - every jury member got one - in the subway. *smile* Additionaly James promised that he will publish his video of the presentation and a screencast.

Loading mentions Retweet
Filed under  //   development   smalltalk  

Comments [0]

Progress in SOS migration

The migration of the Smalltalk Object Store, my ODBMS, to Squeak has made a large progress. Almost all unit tests for the in-memory strategy with lazy writing are working, there's only one known error. So the next strategy, the file system strategy, needs only few changes, most are allready made. I hope we can provide the betas for download soon.

During the migration there have been two obstacles I've underestimated. The first one has been selfmade. The classes providing a runtime environment and application configuration have been a bit tricky, using the VisualWorks process environments and dynamic method invocation inside doesNotUnterstand:. It worked, but it has been platform specific and also not very maintainable. I decided to change the mechansm, but that has had a deep impact on the Lightweight Application Server and even more on the Smalltalk Object Store. The positive result are now better handable frameworks.

But the second one that bothered me more are the incompatabilities between the different Smalltalk dialects. OK, it's acceptable that different producer - commercial as free - try to provide unique selling points. But those should focus special high-end frameworks, like container for server components, libraries for distributed computing, or for user interfaces. But I would like a living standard, like actually in Scheme the R5RS and the discussion for the R6RS, for a class library containing all base types with a powerful string handling, the chronological classes, all containers, file handling, and the basic network protocols as server and client. The latest ANSI standard is now almost 10 years old. It would be really nice if the Smalltalk community would demonstrate their vitality through a new standardization process.

Loading mentions Retweet
Filed under  //   development   smalltalk  

Comments [0]

Migration goes on

After the import of the sources into Squeak and first rough changes I'm proceeding with the unit tests and needed adjustments. Most ones are simple, but I changed the configuration class to work more simple. The old way has been hard to debug due to the heavy usage of dynamic method calls out of doesNotUnderstand:. However it is now less flexible, but still powerful enough.

The second big change concers the runtime environment. Until now it has been automaticly bound to the process where a lookup is called and where no environment exists and no parent process has a bound environment. But this has been a bit precarious in multi environment systems. So now every runtime environment has an id which has to be used for the lookup. Both has been applied to the Common Smalltalk Library (CSL), the unit tests have also been changed where needed and now all tests succeed. *smile*

The second library is now the Lightweight Application Server (LAS) which relies on the environment. So I've started to change the lookup mechanism like mentioned above. Here the first tests are green, but also some are failing. Those problems should be easy to fix.

The Smalltalk Object Store (SOS) has not yet been tested. There are two parts that may be a bit tricky. We'll see.

Loading mentions Retweet
Filed under  //   development   smalltalk  

Comments [0]

For German readers: Article about Squeak/Seaside

The today published iX magazine contains an article about Squeak and Seaside startiing at page 136. It is my third Smalltalk article in this magazine and I'll try to publish it on the ESUG pages again later.

Loading mentions Retweet
Filed under  //   publishing   smalltalk  

Comments [0]

Tideland Application Stack

The Tideland Net Business Framework (NBF) is moving towards the internal alpha tests. So I would like to show you an overview of the Tideland Application Stack here.

It shows how web applications use the NBF for web controllers and rendering, the business logic is developed as stateful and stateless components and asynchronous services in the LAS, and the persistent model is stored using the SOS. All frameworks use, as the future applications may do also, the CSL with helpful classes.

The NBF will contain the Webtop API. It provides an easy to use framework for web-based application. I'll show you some prototype screenshots soon.

Loading mentions Retweet
Filed under  //   development   smalltalk   tideland  

Comments [0]

Discovering Smalltalk

It's allways the same when Smalltalkers talk to users of other, typical C-style programming languages. As long as there are just the words class, object or method they have a relative common understanding. But when we are talking about sending messages to objects or submitting changes into the living image they don't understand. At this point Smalltalk is a totally different world. This experience has been described here and commented here.

I've also tried to write about this, online and in articles. But it is really not easy to communicate this real great advantage of Smalltalk, this secret of why developing in Smalltalk is so productive. It seems that my next entries about this language and environment have to be focussed on those differences.

Loading mentions Retweet
Filed under  //   development   smalltalk  

Comments [0]

The power and beauty of dynamic typed languages

One major topic of many software systems is the configuration of the system. Typically there are APIs with key/value pairings, maybe with groups. Another way are more or less complex XML based systems accessed by specific classes for a defined part of the application.

My intention has been to provide a generic hierarchical system, easy to read and use, with a seamless integration into Smalltalk and the possibility to read and write XML. Yes, me too. *smile* But XML is not the major access language, it's only an additional feature to read and store external configurations in closed applications. My typical way to use the configuration shall be the Smalltalk API.

Result is the set of the three classes CslConfiguration, CslConfigurationValue and CslConfigurationError. The entry class is just a wrapper with nil as superclass, passing almost all message sends to the wrapped configuration value. But it has the own message withDefault: which expects a block as argument. What is the idea behind it? Imagine an access to a configuration value that doesn't exist. The call would be
foo := cfg foo withDefault: [#bar].
In this case foo would get the value #bar and the configuration value would also be set to #bar. A second call
foo := cfg foo withDefault: [#yadda].
would now still return #bar. To set it to #yadda the statement has to be
cfg foo: #yadda.
A simple get without a default should not surprise you:
foo := cfg foo.
But CslConfiguration has no methods foo: or foo. It just uses doesNotUnderstand: to map the message to a setter or getter of an internal dictionary key. And if the key doesn't exist and a getter is called it returns a new nested CslConfiguration instance. So you can also do things like
cfg database connection poolSize: 10.
even if the configuration is empty at this time. Also CslConfiguration understands isNil, ifNil:, and ifNil:ifNotNil: and behaves like nil if is empty. So it's no problem to perform statements like
cfg foo bar isNil ifTrue: [...].
As a result configuration can be setup very easy, no subclassing or similar is needed and the using classes can also define default values inside the getter statement. Static languages don't even allow the compilation. *laugh*

Loading mentions Retweet
Filed under  //   development   smalltalk  

Comments [0]

Service bus in Smalltalk

As I've told a few days ago I'm trying the explorative modelling like it has been described by SAP and Heeg on the OOP. My business is about SOA, so I've invested some hours - about 8 - to develope a service bus where multiple publishers can send messages to and multiple subscribers can retrieve those they are interested in defined through a filter. The filter is a block that evaluates the message and returns true if it wants to handle it. So ony published message can have multiple subscribers. Also the messages are priorized in the range of the Smalltalk processes. So they are handled and processed asynchronously in the so defined order and with the given priority.

First tests showed a very high performance, I've been impressed. It will now get an extension for processing contexts to handle states between message handlings and a mechanism for an automatic routing of answer messages back to the sender. I'll also integrate our execution time measuring and create a better test scenario. So I'll be able to present you more informations about the performance soon.

Loading mentions Retweet
Filed under  //   development   smalltalk  

Comments [0]