Sunday, 27 January 2008

OOP 2008 - Summary

The OOP 2008 is over and you've been able to read my little notes about it here. Now it's time for a little summary.

First, there's no real great new megatrend. The most topics are known since many years, in technology and in processes. Only soft-skills seem to be more important than ever. But the informations for this issue base on the work of psychologist also many years ago, too. But even if there's no new topic all of the existing evolved. So I got many new details for my daily work. But what's really disappointing is the fact, that notwithstanding those continuous improvements so many projects fail. The talks to other visitors approved the CHAOS report of the Standish Group. Most of the problems have no technical reasons but in their management, the engineering and the process.

One real positive observation of the OOP has been the increasing acceptance of dynamic typed languages. There haven been many Ruby tracks and since last week also our Smalltalk group at Xing has got many new members. The dynamic language shootout has been won by Thorsten Seitz and his Smalltalk and Seaside based solution, the Smalltalk evening has had the best reception ever, and the booth of Heeg, Cincom, and Gemstone has allways been visited very good. Only the established tool vendors still hesitate. But I think the market is opening for more heterogeneous solutions, with the right tool for the right task.

Another observation has been the trend to graphical domain specific languages. Some of those are based on the UML due to the existing knowledge of the vendors, others are concentrated on those DSLs from the beginning. Also several of the graphics are very similar to UML or process modeling, others present user interfaces or well known icons to the user. I do like this trend because it's more oriented to the customer. Btw, anyone who's interested in more informations should take a deeper look at MetaCase. This tool is impressive and written in Smalltalk. *smile*

SOA gets more and more established. The hype is over, definitely. Now it's time for the real work. And thanks to several very good speakers with a real experience there's now more information than provided by vendors for the managers. And SOA works, it has advantages, but not everywhere and only with the right consequences. So this should always by in mind when discussing about migrating to a SOA.

The best tracks have been about software architecture. They've been about interfaces, documentation, quality, modeling strategics, or the tasks of a software architect. The speakers once again have been the best. Now I've got a lot of material to work through the next days.

One of the greatest values of the OOP is - as always - the networking between the delegates, the speakers, and the exhibitors. I've refreshed many contacts and got new ones. And in my past those contacts always have been helpful. I hope this also applies for many of my contacts. Additionally I want to thank SIGS DATACOM for the perfect organization.

Self-made sushi and tagliatelle

This weekend I've had some fine self-made food. First yesterday three friends of mine (Olga, Werner, and Kai) and I tried to make sushi. It had been a success. Our regular and inside-out makis and nigiri have been really delicious. So it's worth repeating it.

Today our little daughter Vanessa and I made own fresh tagliatelle. Together with the yummy sauces of Carmen we had a very good meal. So sometimes it's really fun making dishes on your own that are typically bought ready to cook.

Thursday, 24 January 2008

OOP 2008 - A little friend

Even if Nokia today is no good topic in Germany - they close their profitable factory in Bochum, more than 2300 people will loose their jobs *grmbl* - I've got to tell something positive about my E61i. Due the lacking WLAN support here in my hotel and the high prices at the ICM I've simply used the browser of my mobile connected via UMTS. So I've been able to read my mails, some news and blogs, and to write here in my blog. Neat! *smile* 

Lightweight Message Bus development and test progress

After testing synchronous requests for the Lightweight Message Bus I've today tested asynchronous requests with unordered response receivings. Everything works fine, simple services, multiple services answering to a single request and the orchestration of services. So I now only have to test some convenience functions, the timeout behaviour when the time exceeds, and massive parallel regression testing. 

My next step after those tests will be a simple web connector for the CELLMB. Post requests with serialized Erlang data structures will be converted into a message an published onto the bus. The respones will be serialized and sent back. URI parts control service, command, correlation id, and timeout. 

The idea behind it is a combination of using Seaside, which still is the best web framework, for the frontend and Erlang as the runtime environment for my backend services using the bus and Mnesia as database. So I'm able to use the right tools for the right job.

OOP 2008 - Architecture Day

The second half of this day has been filled up with three tracks of the Architecture Day. First a concept of black box and white box architecture documentation presented by Peter Hruschka, then ways to better quality in software architectures without doing too much useless work presented by Gernot Starke, and at last Eric Evans with modelling strategics for larger systems. The names of the speakers speak for themselves, their tracks have been the best ones. The ending of this years OOP will be a software architecture track by Frank Buschmann tomorrow. 

OOP 2008 - Trends in MDD

Today I visited several modelling tool producers. One trend most of them follow - more and less perfect and fast - is the usage of graphical DSLs to enable a better communication with customers. So this is a kind of confirmation that the UML has reached a complexity too far away from the basic idea of providing a simple way to document the concepts of a software. That's a typical problem of many systems: increasing complexity.

Wednesday, 23 January 2008

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).

OOP 2008 - Soft skills

Today I took part in two great talks about soft skills. The first has been by Gunther Dueck, who observes people and identifies different character types of them and of company cultures. Like in his keynote last year it has been a great fun. Almost everyone detects well known behaviours and is now able to understand those. Especially why they often lead to conflicts.

The second one has been the keynote of Tim Lister and Peter Hruschka. They told a bit out of the content of their book "Adrenaline Junkies & Template Zombies". A funny note by great people with lots of experience.

Tuesday, 22 January 2008

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.

OOP 2008 - Tracks and contacts

I've finished my first tracks and keynotes about agile processes in large projects, software plus services, learning from failures, and currently listen to productline management. The next ones are about requirement engineering and SOA. The quality differs but most of them where fine. What's missing is a realk big thing. Only Ruby has a greater audience than before.

Allways a great part of the OOP is the meeting of many people out of the development scene. It''s really interesting to get news, ideas, and offers for cooperation from them. I'll provide more informations about those later.

OOP 2008 - First infos

Yesterday I arrived at Munich and take part on the first day of the OOP. The travel has been a bit exciting due to the very high and slow traffic to the airport. i've almost missed my flight and checked in as one of the last passengers while the others allready boarded. The flight itself has been fine, during the approach to Munich we've had a wonderful view on the Alps behind and above the clouds.

Sadly my hotel booking went wrong. The hotel consists out of two different ones - a mid-priced and a cheaper one. And I've got the last one which provides Internet only at a high price and via ISDN. So I'll see how I can do my OOP reporting, e.g. with using my mobile like I'm doing it now.

Sunday, 20 January 2008

Ah, I've got it

Yesterday my order of Joe Armstrongs "Programming Erlang - Software for a Concurrent World" arrived. Even if I've discovered many aspects of the language and OTP through the documentation and other web sources this book is really a help. I've allready read a third of it and detected several useful hints or clarifications where I've been uncertain. It will even help me finishing my Erlang article this week. It will cover the history, the language, the OTP, and some notes about existing Erlang solutions.

Thursday, 17 January 2008

OOP reporting

Next week I'm at the OOP 2008 conference in Munich. And like last year I'll try to provide a kind of almost live reporting here. *smile* My focus are sessions and keynotes covering SOA, agile processes and soft factors in development. I'll naturally take part in the Smalltalk evening and try to get some comments on Erlang. So stay tuned.

Tuesday, 15 January 2008

Exciting day

Today it has been an exciting day. While preparing my presentation about software cost estimation I got a call by the school of our daughters. Janina has had an accident during the gymnastic exercises. While she tried to get a basketball she noticed a crackle and a pain in her rear. So they called an ambulance and she's been driven to the hospital. Meanwhile I fetched my wife and we drove to the hospital, too. She stayed there during the medical examination and I drove back to work. Fortunately it seems to be nothing serious. But we've been scarried.

So the next thing has been my presentation. The feedback has been good. First I stumbled a bit and lost the thread once. But then it got more and more fluent and I've been able to add some side notes out of my experience. Like at my last presentation about requirements engineering if noticed that the motivation part and the theoretical informations are ok. But I need to change both presentations into a more practical approach with more real life examples to demonstrate the advantage of the usage of the described techniques. I'll now first fix some smaller bugs in both presentations, a kind of minor release, and then think about how to better communicate the ideas and necessities behind them. The last step will be a translation into English and a migration from PowerPoint to my new Keynote layout. I'm currently designing it for an upcoming presentation about the risks and opportunities of changes.

The last event yesterday should have been the Apple keynote. Ok, the new MacBook Air is a nice peace of hardware. But currently not for me. I've got my MacBook for six month now and it's still very good. So I think I'll change in about two years again and then will get a system with a quad core, 4 GB RAM and a 200 GB SSD for 1.500 Euros. *smile* Now I'm awaiting OS X 10.5.2 which is expected to be released soon.

Thursday, 10 January 2008

Success through simplicity

After a good and promising start with the development of my Lightweight Message Bus (CELLMB) I've stuck by mid of December. I've been unhappy with my architecture and so I've used the holidays to refactor it. Now it's working by far better with less code and a better maintainability. The key was a simpler architecture.

My requirements for the CELLMB are to provide a node-internal bus using the publish/subscribe messaging paradigm allowing asynchronous and synchronous requests. My first approach has been composed of a central process for managing the subscriptions and passing the messages to one out of a pool of dispatcher processes. The subscribed services have been single or pooled processes which received the message through the dispatcher. A simple API helped them to send their response back to the dispatcher to collect them. The calling cllient process could fetch those responses from the dispatcher through passing a message handle to the fetch function. As you may perceive - this is not very intuitive and simple. Additionally the subscription mechanism has been unflexible and synchronous requests had the problem that you don't know if the processing of the message has been finished by all subscribed services.

The refactored CELLMB has also a central managing process which controls the subscriptions but also a larger pool of worker processes. The size of this pool grows and shrinks based on parameters for the maximum size and a timeout for idling workers. Services are now just modules with a defined callback interface. It contains the four functions start, stop, is_processing and process. The messages are now passed round robin to a worker process which filters the suubscribed services through calling is_processing for the message and then does the real work through calling process on each interested service. The results are collected and in case of a synchronous call passed back to the caller. Additional optional arguments for the service start and the subscription test for each message help to develop customizable services - e.g. two accounting services realizing different workflows, both subscribe but are interested in different user defined amounts - and a decorator for each call of a service can be defined. All together this straight and simple approach needs by far less code than the first try. Additionally it's easier to follow the control flow.

The first tests run fine and I will now add more complex test scenarios with a higher number of subscribing services and parallel calls. So I'll get a nice reliable infrastructure to run my business components.

Migration completed

It's done. I've tested the blogger features, the migration of existing content and the redirection of an existing domain to address this blog. Everything works fine. Maybe there are better solutions, especially when using and customizing the software on an own server. But currenlty this hasn't such a high priority to spend more time. I think this will change in future, especially having the Tideland Train of Thoughts in mind. But until this software works I'll stay here.

Monday, 7 January 2008

First test blogging at Google

My current blog software seems to be unmaintained, what's really disappointing. So I'm trying to blog using my Google account. It allows to continue using the own domain, that's a very useful feature. But before migrate all my content into this system I'll test a bit more.

Sunday, 6 January 2008

Looking left and right

When I'm talking to colleagues or friends who are working in the IT business too I often hear that they buy their IT magazines depending on single articles. Or they read them at work. Instead I've subscribed to my favorite IT magazines since many years privatly. So the question may be why I'm investing the money rather than saving it?

The answer is simple. I'm not just reading those articles which I would buy a magazine for. I'm allways scanning it complete and so finding a lot of interesting articles left and right of my major focus. So I get many helpful insights into other problems, ideas, and solutions. So until today I didn't regret my investment

Wednesday, 2 January 2008

Featured book: SOA in Practice

I've recently finished my reading of SOA in Practice by Nicolai Josuttis. Nicolai is an experienced software developer and architect who has helped to establish the SOAs at the major German telecommunication and mobile telecommunication companies. In SOA in Practice he's sharing his know-how made during those projects with the reader. And from the first moment you've got the feeling that this is no lengthy theoretical introduction. Instead the author uses many examples to demonstrate the pitfalls during the establishment and operation of SOA environments and how to evade them. A must-have book for any SOA architect.

Making it right

In a forum about programming Erlang a member documented his learning based on the problems of Project Euler. A very interesting approach. But after tackling problem 10 (Find the sum of all the primes below one million.) he has been a bit disappointed. He hasn't been able to find a solution running in less than a minute. So I've started a quick approach on my own. It was a hack, without using the lists library, generating a list of all primes through a tail recursive function which tests all odd numbers greater than 2 up to the given number - here one million - if each one is a prime and in case that it is one collects it through adding it in front of a list. The prime test again has been very simple, checking the remainder for the odd numbers up to the square root of the number to check. The last step has just been the addition of the results, again through a simple tail recursive function. Surely there's a more elegant and efficient apprach.

The result has been a runtime of 1.6 seconds on my MacBook and 6 seconds on his notebook. He then tried different algorithms, all of them with even worse results. His approaches all based on the Sieve of Erastothenes, which relies on creating new lists through filtering. So his algorithms traversed the lists over and over again, filtering the elements through fun expressions and creating the result lists through appending the elements.

Knowing about Erlangs concept of linked lists, the resulting performance problems when appending data at the end, and the worse performance of fun expressions compared to functions the result isn't astoundingly. So what's the bottom line? For a given problem, regardless if it shall be solved functional, object-oriented, logical, sequential or concurrent, local or distributed, you've got to know the boundaries of your tool and your environment to make it right. In this case, where he was learning the language, it has been OK. But violating constraints in real-world solutions often leads to huge problems when the system is productive.

And how to choose the right tool for a given problem, that's another topic I'll treat later. *smile*

Tuesday, 1 January 2008

Farewell 2007, hello 2008

2007 is done. A new year has started, with many ideas, many goals, many events, and the suspense what the new year will bring to us. Looking back on the last year I can be satisfied, except one sad dark spot - the death of my niece Anna. I'll allways remember her and her pleasant character. *sigh*

So what are my intentions for 2008? They are not very much, just to keep them realistic. I'll continue with my Erlang projects and with writing articles, starting with one about Erlang I'll deliver this month, and book reviews. Additionally I've started to create some presentations about software engineering topics. I'll provide them here.

Nothing new? Of course. *smile* I'll try to use the bycicle instead of the car to drive to work, and I'll indulge myself with more time-outs doing art, reading, and cooking.

I wish all of my readers a happy new year.