[1]

Today Norbert Hartl wrote a message to the GemStone Mailing list entitled “Evolution of an (un)successful project”, where he describes the ups and downs of a project that he’s been working for the last 3 years. The project was started in Squeak and has been recently ported to GLASS:

I just want to let you know how much I like gemstone at the
moment. It is something that I have wished for a long time.
I’m working on my long term smalltalk project. I started this
with some friends in October 2006. My knowledge in smalltalk
was not too solid. I quickly discovered a lot of things like
seaside, magritte, announcements and such. Quite overwhelming
but my own history shows I tend to such constructs :)

The funny thing is that I did the first version using the GOODS
database. So somehow I was already there. But GOODS was not
active anymore and I doubted its use. So I switched to magma and
learned something about OODBs. At this time everything was just
an installation on my notebook.

Then there were investors and plans. And often you fear the
success way too early. Having big plans in mind I had the fear
that magma wouldn’t be performant enough to cope with our goals.
At this time I ported the (still small) application to Glorp.
Having dealt with O/R Mapping before (in java) I loved Glorp from
the start. It is a very good and flexible piece of software that
deals well with the topic. And it is maintained by a very caring
person that always gets you the answer you need to proceed.

At the end of 2007 the investors vanished in the mist and the
project was near its end. We fought a few months. In this time
the Glorp turned against me. The refactoring rate was high and I
spent 80% of my time with databases and Glorp in order not to have
any impediments for my fellow programmers. This was the time
I started to doubt the usefulness of O/R mapping. The restriction
of directions of references and the rather complex constructs to
deal with real inheritance features is time consuming. And while
having not that much users I noticed performance things already.

The code rested approximately 8 months before I started again. The
announcements of gemstone months before were reason enough for me
to change the very basic groundwork of the application. The application
is somewhat between 30 and 40 thousand lines of code. so the biggest
problem was to find replacements for all the convenient methods in
squeak while porting. Ok to be honest the biggest problem was me
knowing nothing about gemstone.

But after 2 days I had the first page displayed again with one
component active. That was a big motivation. Well it took me
another 3 months to reach the status quo of the old application.
There were lot of things going wrong but with a good debugger it
is just a matter of time. And 3 months sounds much but I have a
full time job so I spent maybe 1-2 full days per week. One of
this success factors is the terrific support from the gemstone
guys. I might say that is one of the best parts in developing.

The status quo is overtaken and the fun started to come back.
Especially this weekend I needed to change a lot of the ground
structure of my model. Sitting on a workspace that is remotely
connected and change everything in your model with a few lines
of code is just as it should be and what you usually never get.

Finally yesterday I had the best experience. As every web site
you also have a register page. And usually you choose your country
in such page. That were only a handful strings. Then I decided
I want to have real country objects. There were 2 hours left
until I had a date for going to the cinema. I researched the web
for country names and codes. Then I hacked a quick perl script
to combine everything in a csv like format. Having the file it
took only minutes to implement the object, write a parser for
the file (workspace), read the file to objects. Then I just
changed the magritte description for country and…

… it worked!!! That was really a big thing. Not because it is
a big thing but only because in every other technology you have
at least to break your leg before you get it imported, managed and
persisted. That was so quick that I connected to the remote/
live image and repeated it there. It just worked. That was
such a good feeling and I was 20 minutes early for cinema. So
relaxing and good I should have known it means the movie will
be bad :) But that is a different story.

Just to let you know that I like gemstone and I appreciate
the support on this list. And I hope we will make our site
public in the next couple of months.

Well, then everything it needs is to support more languages
than german :))

keep the good work, your fan

Norbert

—–
[1] Photo by e-magic (Creative Commons).