maandag 21 april 2008

JSPring (2)

Vincent OostindiĆ«'s Up-to-database from Ordina was about databases and how you could develop them using the same practices as you use for coding. How do you put them in source control, automatically build and test them, use continuous integration, migrate changes etc etc. He knew his stuff very well and discussed the current status of open source tools in this area. I won’t be using this soon, but it’s good to know that it can be done easily nowadays.

Mark van Holsteijn's Hoe overleef ik een code review? talked about code reviews and code quality. As a lecturer this is of course a subject close to me. He discussed his experiences reviewing code and how to define metrics and how to use them. We also conducted a quick code review on two pieces of code. One good and one bad as it turned out, both could have been written by students ;-) The good code turned out to be sourcecode of Tomcat, the other one was anonimized. Mark provided some pointers to literature, metrics and tooling.

The “graveyard shift” was done by Jos Warmer from Ordina. After the talk titled “Pragmatic MDA: Domain Specific Languages with Eclipse” I was totally confused. I had expected something about MDA with PIMs and PSMs like Remco Poelarends of ICT Embedded explained us some time ago. Instead Jos Warmer discussed the entire openArchitectureWare tooling suite (including xText) for building DSL’s. This al sounded very abstract, meta level stuff, not nearly as concrete as the second talk about xText. While answering questions however, it turned out that Ordina is using DSL’s in their software factories and that they are using them for code generation. Ordina has 18 months experience using DSL’s in their .Net factory (having built 4) and they are finishing their first one in Java. It gives Ordina some 20% saving on time per function point and a standardized way of working.
Luckily I had a chance to discuss my confusion with Meinte Boersma afterwards. He helped me cut away some of the smokescreen. As I understood it:
1) MDA is the term as used by OMG. This approach includes UML modeling and the PIM/PSM approach Remco Poelarends talked about. The tool Entreprise Architect belongs to this approach.
2) There is a movement of people who think the OMG-approach doesn’t really work, they have coined the term “Pragmatic MDA”. That includes about anything where some sort of modeling and code generation is involved.
3) The “MDA with DSL” approach is to a) first create a DSL, then to b) model something textual or graphical using the DSL, and then to c) generate code from your model.
4) The earlier example of the contract with the electricity company created a DSL that a business person of the electicity company could use to model his business rules.
5) Ordina has modelled their specific domain which is software development. Ordina has created DSL’s based upon their reference architectures to support their developers. A developer could (for example) have a DSL for the task of modeling a business domain. After using this DSL the developer can generate the domain code. This is not a standardized available approach to software development but is proprietary by Ordina.

I understand a bit more about this subject now but I don’t see our students working with this stuff right yet. When the opportunity presents itself to see the Microsoft side of this (Avenade has a lecture) I will look into that too. But then I’ll give a rest for a while.

Concluding I can say it was a good day. I wouldn’t want to trade it with the two ladies on the train who went to Deepak Chopra’s “enlightenment of the soul” (or something like that).

vrijdag 18 april 2008

A circular crossreferencing type of pointing hyperlink (or something)


My coverage of the QCon conference on this blog has been noticed by the organizers. In their summary of the event they refer to the blog and quote it 10 times! So now I'll be referring to them again, read the take away points here: http://www.infoq.com/articles/qconlondon-2008-summary

woensdag 16 april 2008

JSpring (1)


Sitting in the train back from the Jspring is a good time to write some notes about the day. Let me start by saying that it was an interesting day and the level of talks matched that of QCon. If you make a “value for money” comparison Jspring is even more attractive as you only pay the NLJUG contibution (and students even less).

I skipped the keynote due to travel time. Colleague Boelens wasn’t really impressed with it: “some kind of demo show with a guy singing songs”. My first session was Grid computing with Gridgain by Jos Dirksen and Marcel Soute from Atos. A good concrete talk about how easy it is to set up a grid and compute some task with Gridgain. Grid computing was once considered academic, but I can see students doing this in 1 hour. They gave some examples and a demonstration of cracking a MD5 hash. Their preparation of demos could be improved.

After that Jeroen Benckhuijsen, Meinte Boersma from Atos did xText: DSL’s made easy. They explained the use of the tool xText from openArchitectureWare and like the first presenatation gave a good demonstration. They used the example of a contract with an electricity company with all sorts of special rules. At QCon I also followed some DSL-stuff, but couldn’t really understand a) how it worked, and b) what the big deal was. Now I think I got it, but that it’s not a really big deal. It’s useful for some specific purposes. (But do read on about the last session in the second part of this article.)

In the early days of the specializations at our institute I have had to explain to the management several times what the differences would be between the specializations Software Engineering and Web Application Development. Thus I am keen to follow any trend that desktop applications and webapplications are converging. This was the topic when Rob Schellhorn from Finalist talked about Rich Ajax Platform: Eclipse Rich Client Platform applicaties in een nieuw jasje. It turns out that converting an Eclipse RCP application to a rich Ajax webapplication is very simple, but Eclipse RCP client applications are of course a special class of client applications. They are built upon the Eclipse framework. There are also some differences in usage between desktop apps and webapps that you have to take into account. Still, the resulting webapp looked really neat with all kinds of widgets, drag and drop, etc.
(to be continued)

woensdag 9 april 2008

Java BlackBelt



At the QCon I learned about the site http://www.javablackbelt.com/ . I even scored a poloshirt at their stand. It's a site where you can test your java knowledge in a series of exams. As you pass exams you gain points and get belts. After the first few exams you have to contribute yourself by commenting, editing or supplying new questions. With these contributions you gain points that you can use to 'pay' for the next exam.

Warning 1: These are not easy exams. You need to have a lot of detailed knowledge. Especially for students it might be frightening to see that there are so many corners and special cases in Java they were never told about. This might put you off, but once you get the knack of it, you will learn a lot. You can see it as a free alternative (or good training) for Sun's certification programme.

Warning 2: This site is very addictive! I'm limiting myself to a few attempts per week, otherwise it would take too much time. At this point I have my orange belt en will work towards the green one.

vrijdag 28 maart 2008

What's the difference between DDD, TDD and BDD?

All three double D's are about how to approach your design. What drives you, how do you get started, what's your angle? How do you decide which classes to use? What are the dependencies, etc.

Domain Driven Design (DDD) focusses on the core model (the domain) and tries to keep other stuff like UI's and databases separate. You can google for the site and the Book from Evans. I'm not too convinced it offers much new, but maybe I'm influenced too much by the worst presentation of QCon (Filipe Rodrigues, better luck next time man). I also have a graduate which can't explain to me what the big deal is.

Test Driven Development (TDD) is the one I'm most familiar with from my XP classes. First code your JUnit test and then code your class to make it pass.

Behaviour Driven Development was new to me. I noticed they were talking about BDD in connection to Ruby (RSpec), but just stumbled across a nice page that explains the concept: http://dannorth.net/introducing-bdd. Even if you don't use BDD, it gives some really nice tips for TDD.

maandag 24 maart 2008

Head First


Some time ago O'Reilly came with a new series of books called "Head First xyz" with xyz being mostly about programming stuff (Java, Design Patterns, C#, ...). If you've looked at one of the books, you've seen they are different from the usual computer books. From the blurb:

"...Using the latest research in cognitive science and learning theory to craft a multi-sensory learning experience, Head First uses a visually rich format designed for the way your brain works, not a text-heavy approach that puts you to sleep."

This sounds mumbo-jumbo, but it's worked out as original books with lots of pictures, puzzles, scribbles and exercises. (Check the website for some samples: http://www.headfirstlabs.com/)As I had been curious about whether they are any good, I picked one up about Javascript. About halfway through I think it's funny and activating. It contains the right mix of text and pictures, explanation and exercises. Maybe it'll grow old if you read too many of these books, but it probably won't hurt a student to add Head First Java to his BlueJ book.

One final thing that struck me is the conversational tone they use in the book. Apparently this has been researched as adding to the learning experience. This is exactly the way I've written my study material from the day I came in de Hanze. I probably have some talent... :-)
Update: I laid my hands on "Head first Design Patterns" the other day and can recommend that one too.

dinsdag 18 maart 2008

QCon short recap

So, what do we make of all the information that was poured over us the last days? What is the most important? Of course, we will need to investigate all this stuff further. But at first outlook, I would say:
  1. REST looks like an important new trend.
  2. Erlang might answer the need for more Concurrent Oriented programming languages.
  3. Java for enterprise applications is very much alive, also for real time systems.

Additional:
DSL's keeping turning up at conferences like these, but I don't really see what's the big deal. But maybe I'm missing some point.
Architecture is maturing, but there's no silver bullet.
Agile is maturing nicely, thank you.
Ruby on Rails fits nicely in their niche.
Domain Driven Development is a new term but nothing really new.