The Community
People talk quite a bit about "the community" when discussing the IT/software development world. It's a quite nebulous concept. For me, recently, the term has taken on quite specific meaning in the context of our
Software Engineering Radio podcast.
The community of listeners has given us tremendously encouraging feedback. Our listener numbers are rising continuously and the feedback (till now, anyway) has been overwhelmingly positive.
But the podcast itself is an effort of (a small part of) the community. The team that I had invited to help doing the show is eagerly producing stuff. It's great to work in a good team whose members share the vision (thanks :-)).
But there's more. Other podcasts (such as
JavaPosse) have helped us publicize our show by plugging us on their (very popular) podcast.
Henning Pauly, the creative mind of
Chain has given us permission to use his music as the intro and outro to our podcast! We also have the permission from
marillion to use their music for the same purpose. There is
Libsyn who provide hosting and bandwidth specifically to podcasters for a very very reasonable monthly charge. Finally, there are the folks from
Creative Commons who provide bullet proof licenses for endeavors like our podcast.
All of those people are part of a community that is (as can be seen from the music and Creative Commons folks) not necessarily IT specific. But that community is very collaborative, helpful, uncomplicated and generally really nice to work with. I don't know whether such communities have been around forever and I just didn't notice? I think this phenomenon is somewhat specific to the Web and how it enables collaboration in ways that have not been imaginable before.
We all know this talk about community, tagging, web 2.0, user involvement, free content and open source, etc. etc. In the context of building this podcast, some of these intangible and nebulous concepts have become quite concrete for me.
It's nice that all of this exists and I am happy to be a part of that.
First Experiences with GMF
Eclipse GMF, the Graphical Modelling Frameworks will be one of the most important innovations for Model-Driven Development in 2006. It supports the (relatively) simple creation of graphical editors for Ecore-based metamodels. My view has always been that simplyfying the creation of "good" editors for your DSL is a much more pressing issue that coming up with fancy model-to-model transformation languages. So, GMF will be a big step in the right direction.
Currently, Milestone 5 of GMF is available. I have played around with M5 as well as M4 (thanks to some of my customers for being interesting in GMF and giving me the chance to "play" with it for a purpose :-)). Of course, there are still features missing and it is also a bit buggy, the overall impression is really good.
On the plus side, you can really easily come up with simple editors. The process is straigh forwards, once you understood the basic principles. You can build compartments (even nested ones), you can connect top-level elements as well as contained elements (you can even connect contained elements to top level elements), you can add labels, adapt the figures, define pallets, etc. The routing algorithms supplied with GMF are really not too bad, either.
There are, however, still a couple of problems when playing around with it (and yes, I fully realize that it's not finished yet, so this is not a complaint, it's just a description!). For example, the wizards that should come up with a good "default" editor in a couple of minutes didn't work well so we had to do the editors manually. Also, if you have a flaw in your model, the GMF generators might just silently crash without a notice or throw some (seemingly unrelated) exception. So, always make small changes (so you know what to undo to get it to work again), and sometimes you have to debug into the generator to see what it does. Also, some of the decorations you can add to your editor visual elements are simply ignored. A more important problem is that the documentation lacks some of the important use cases, e.g. explaining the extension points that allow you to add conditional decorations to your shapes. And by the way, in case you wonder, why the
tutorial uses
two levels of compartments in an introductory example: the reason is that it doesn't work with only one level :-) This looks like a funny bug, unless you try for an hour to go with only one level ("why start with the two-level, more complex example, anyway").
So, all in all, GMF looks
very promising. What I would really see improved is the documentation. Yes, they have zillions of pages (taken from IBM's underlying framework), but what developers need is a kind of FAQ to answer typical questions such as: how do I add conditional decoration, how do I add an arrow to my line, how can I prepare a model before the editor is opened, etc. Maybe some of the GM folks read this.... if you need more FAQ-questions, let me know :-)
SOA Article
Those of you who can read german might be interested in
this new article, where I discuss SOA, component-based development as well as model-driven software development.
Thinking recursively in Java
Working with recursion is not something that the typical Java programmer does day in and day out. However, it is a very powerful concept worth using more.
A while ago Wiley had sent me a book called
Thinking recursively in Java by Eric Roberts. Since I had nothing else to read at the time, I started reading the book and I have to say it is quite nice. It explains recursion from the outset, going into things such as sorting algorithms, backtracking, etc.
So I'd really recommend reading this book if you want to learn more about recursion - worth reading!