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.

QCon Friday



And then it was Friday. Fatique was setting in, but we were determined to take it to the end. There were some really interesting tracks today.

The day started off with Randy Shoup talking about the architecture behind eBay. This was really architecture on the highest level. The amount of data/transactions/servers etc that ebay has is huge. An impressive talk, the slides are warmly recommended.

After that BBC talked about there architecture to bring media (video) to their users. A nice talk (especially since they filled in for Twitter at the last moment) but they had the disadvantage of being preceded by eBay which was hard to match.

At the same time Bart was at a presentation about Haskell in the "programming languages of the future" track. That track covered a number of programming languages which might (or might not) be the next big thing, such as Scala, F# and Erlang. Saillant point is that Haskell has been around for a long time and was removed from our curriculum some 5 years ago. Bart said that the presentation about Haskell by some professor was the best he had seen at QCon. "Pure theatre."

After that we went to the presentation about Erlang, a new programming language that's especially suited for use with concurrency. The language is hot on the fashionlists and might become very relevant with the rise of multicore systems. Take a look at the slides when they are available. One to watch. Joe Armstrong (called "the nutty professor" by another participant) also wrote a book about it.

After that the long awaited Rails 2.0 track, which after one minute I knew wasn't really what I wanted. Dr Nic explained at length the changes from Rails 1.2.6 to 2.0.1, not really what a beginner is looking for. Still, there was something to be learnt about IDE's and participating in open source.

After that Jan scored a polo-shirt at JavaBlackBelt (missing the first prize, 10 books at the O'Reilly stand by just an inch) and we went back home. The delay wasn't too bad this time.

donderdag 13 maart 2008

Termen


Wat te denken van
Pizza-graph
Living in the cloud
SQS
Deep Zoom
MUCK
ECC
KML
KANBAN
TTR
CQC
YAGNI
PAP
AHMLI
PID

Quotes of the day

Here some nice quotes of the speakers of today and yesterday:

"It's binding here, it's binding there, it's binding everywhere." (Mike Laulty)
"Powershell just rocks." (Eric Nelson)
"We now can make usefull data in the cloud." (Jonathan Trevor)
"Democracies do not always pick the right candidate."(David Anderson)
"Problems you are having, hmm? Making roles explicit you must." (Udi -Yoda- Dahan)
"London is a nice city." (Filipe Rodrigues)

QCon Thursday (1)




The day started off with a lecture by another famous name, Kent Beck, on developments in Agile. A good speaker, very American. It's all about accountability and transparency. IT and business are moving closer to eachother, IT has to be just as accountable as the business is used to be.

The next lecture was by Stefan Tilkov on REST and RESTful webapplications. As this was a new concept to me, I decided to listen in. A good talk, although I didn't completely understand it in one go. It seems REST is a set of 5 principles which you can apply when developing webapplications. This gives you a lot of technical possibilities. But as far as I can see it's an alternative to webservices. An important new trend already and we still haven't finished with the previous one.

Pete Goodcliffe talked about two systems. One with bad design and one with good. A bit of a standard talk, but he was entertaining and it's nice to see some points again. But Bart thought he could have done it better.






Giles Colborne tried to define the term op 'Simplicity' in User Interfaces. According to him it's not the same as usability. A bit dull, nothing special. But he did mention a number of "red flags" that made me think about the DOP immediately.

Rod Johnson (author of a famous J2EE book) talked about innovation in J2EE. At first impression, he came across as a annoying, stubborn American with a Texan drawl. Maybe that's what he is. But he knew his subject really well and brought a lot of interesting analogies to the subject. The slides are warmly recommended.

The last talk about Domain Driven Design is so bad that I can update the blog. A brazilian dude in very bad english who talks about stuff we all already know since we started our education. Pity, as there is a lot to be told about DDD.

woensdag 12 maart 2008

QCon Wednesday (3)

A quick note from the QCon. We got really busy, from 9:00 AM till 19.30 PM there were a lot of presentations in a lot of tracks. Although some of the presentations turn out to be poor, Bart and I are having a good time and learning a lot of new stuff.

Erich Gamma – How Eclipse changed my views on software development
A good keynote by a famous name about the development of Eclipse with points about architecture, open source, process etc. At the end he demonstrated Jazz, a really (really) big environment for large distributed software development. It’s looks interesting, alas no open source.

Building smart client applications with Visual Studio .Net 2008
Daniel Moth demonstrated some interesting new features of Visual Studio. He did this at such a record speed that, to understand it, the public will have to download the videos from his blog and play them at half speed. Still, it’s nice to see what can be done nowadays.

Agile mashups
A talk about how teams in the field don’t follow the XP/DSDM/Scrum-book, but combine practices that work for them. Nothing really new, but a nice confirmation from the speaker who has a lot of contacts in the field. The room is packed, testifying to the continuing interest in agile methodologies. By the way, a ‘Ziffer’ is a Zero Feature Iteration. By the way, the percentage of women in the audience is significantly higher than in our students. Maybe it's just a dutch problem?

Real Time Java for banking applications
I couldn’t see the screen and couldn’t understand the speaker with his french (?) accent. When my neighbour started snoring, I threw in the towel. But this RTJS might be interesting to explore sometime for our TI-students.

From betting to gaming to Tradefair
About the the challenges that Betfair (a betting site) faces and how they took their expertise of transaction processing to start a new company Tradefair in the financial domain. This was all very interesting but when the juicy part came up, they didn’t want to show their cards. So just how they solved those interesting problems wasn’t disclosed.

Liquidity Hub
These people faced about the same problems as the previous ones. They had to achieve something like 20.000 transactions *per second* with a latency of maximum 100ms. They achieved this using Java! The key was Weblogic Real Time, a alternative JVM implementation with real time guarantees.

Does my bus look big in this?
A keynote by Martin Fowler himself and another guy. It was funny and fastpaced to keep us awake. We had a good laugh, but the clou was lost on me. Don't use an Enterprise Service Bus, just use the web (?)

Please note that all the slides will become available on the QCon site. I have a lot more notes about sites to visit and technologies to check, but I won’t put them all here.

Quotes of the day:
(Erich Gamma about releasing closed software to the open source community) “It’s like a christmas present. You have to include the batteries, otherwise it’s no fun.”
(Standard message about evacuating the building when the building gets on fire) “You MUST take care when crossing the road.”

QCon Wednesday (2)


Still Bart:

What the hell is a DSL?
Programming languages are realy cool. With them, you can make your hardware actually do something, like visit a website, create spreadsheet with the latests sale-data or write on your book.
Most programming languages serve a general purpose: they are meant to be usable in all sorts of situation. Using Java, for example, you can a simple webbrowser for your iPhone or an offline dictionary that only runs on your specific machine. All these radically different kinds of problems can be solved using the same kind of solution: the processing power of a single programming language.
There are, however, situations in which you don't realy need all that processing power. Sometimes you just need to transform an xml-tree into another xml-tree, or make a more or less difficult formula in your spreadsheet. In these kind of situations, all the processing power of a general purpose language, and more specifically the vast number of functions, add-ons, quicks and possibilities that come with them, prove to be a burden for the programmer working on that specific domain. Hence the viability of Domain Specific Languages.
Though Domain Specific Languages do not have the general expression power of general purpose languages, in most cases they do actually have more expressive power within their domain, due in part to the fact that they serve a very specific goal. In general, they enable the programmer who has more or less extensive knowledge of the domain under consideration to automate simple task within that domain. Since the DSL is created to be using in that domain, it can use abbreviations and idioms that its users will be familiar with.
The borderline between general purpose language and DSL is, however, not as strict as some might be led to believe. For example, XSLT was initially conveived as a DSL that only transformed one xml-stream into another one. But through the years, this language has grown to include filesystem interaction and string-manipulation. On the other hand, Visual Basic for Applications (VBA) was conceived as a simple programming language that should enable users of Microsoft Office to create simple applications on top of for example Word and Excel. However, most uses of VBA nowaday is concentrated on automating specific tasks within these applications, thus rendering VBA more like an DSL than Microsoft would have liked.



Windows as a Web Platform
Eric Nelson
People who know me are aware of the fact that I do not particularly love graphical interfaces. I much rather have the power of the command-line directly at my finger-tips that all stuff tagged away behind obscure windows and drop-dopwn lists. On the other hand, I do know that GUI's do have their pros and that a lot of people could not live without them.
The Microsoft web server, IIS, has this kind of GUI, which enables the system administrator to administate the web-server. I have used the previous version of IIS, version 6, for some time for my work, and I thought it realy was a terible thing to use. Unclear views, obscure locations of specific settings and a need to restart after the most simple change. Therefore, I was very interested in what mister Nelson had to tell us about the new version of IIS, version 7.
Mister Nelson is a very driven spreaker who keeps interesting (and funny) contact with his audience, who does not try to demonstrate more than is actually interesting at that moment, and who can make his story up as he goed along (which proves that he knows what he is talking about).
IIS 7 provides a much clearer GUI which can be accustumed to the wants and needs of the sysadmin. But this new version is more than just window-dressing: the whole pipe-line has been refactored, which is spcifically usefull for those of us creating .net-applications. In previous versions, .net was just another extension of IIS, which entailed the need for code-duplication (e.g. for authentication) and all sorts of specific tweaking. Now it is more of less an integral part of the webserver, which means that the management of .net-applications is much easier.
Also, driven by the market, Microsoft has decided to be much more php-frienly than it was in previous versions of IIS. Using IIS7 you can invoke php directly via the cgi. It even comes with a friendly php-editor. This way, according to mister Nelson, after they have decided to use php, people do not automatically use mysql, apache and, ultimately, linux. They now have the very viable option to use php and mssql and IIS and windows. Who knows...
I was rather positive about the interface and posibilities of IIS7, but the best part is comes with a good command-line: CmdApp.

Building Rich Internet Applications
Mike Taulty - Microsoft
There are two words missing in the title of the this lecture, namely 'with' and 'Silverlight'. As you might or might not know, Microsoft is regarding the succes of Adobe (before: Macromedia) Flash with envious eyes, and is slowly, bur surely, trying to get some piece of the cake of rich internet applications. As is comman practice within the Redmond Company, instead of being innovative and trying out new stuff, they simply take some existing formats and ideas and pretend it's their own. The same applies for Silverlight, which is basically a new version of SVG (which they have called XAML) and some kind of new shell around Visual Studio. VoilĂ  Silverlight 2.0.
But let us be fair. There are some cool things that one can do using Silverlight that are hard or even impossible to do with Flash. Dynamically creating xml-files, interpreting those at run-time as the description of a visual objects and doing all kind of stuff with them is kind of nifty. During the talk, however, I just couldn't stop thinking that people who would want to do this kind of stuff would no doubt already be using Flash for some time, so why would they switch to Silverlight at this moment?
As a matter of fact, the speaker gave me the impression that he more or less shared my views. The lecture can be seen as consisting of two parts: the first part filled with explaining XAML, the second part demonstrating the way in which the different technologies operate together to create richt internet applications. In the first part, Mike gave a lot of examples each of which he ended with the comment that it was not very stunning or interesting. The second part took far too long to remain interesting. I think it is a bit like Microsoft, to want to show everything on your first encounter.

QCon Wednesday

A few notes from Bart Barnard (no pictures, his phonebattery was out):

Building blocks for true internet applications (Jess Barr - Amazon.com)
Most programmers or students use lack of hardware-resources as one of the reasons their project did not meet the expectations the teachers (or themselves) initially had of it. If we had more computing power, they say, we could have made this or that feature working, we could have some more work done in the little time that was available for the project, or the query would not have taken as long as it does now.
Jeff Barr from Amazon.com has put the lie to these kinds of arguments. Being, in his own words, a real web-service evangelist, he introduced the gathering to the other Amazon.com, the one that at the moment has three data-centers (two in the US, one in Ireland) that enable everybody to get as much computing-power as they need on the fly, for a very little amount of money. Amazon has created web-services that take care of all the muck (as the other guy from Amazon, Jeff Bezos, used to call it) of programming, such as load-balancing, initializing servers and services and that kind of more mundane work. Once registered, users can fire up servers using a FireFox-extension and ssh to them immediately. If needs be, another server can be fired up using the exact configuration of the first one.
This kind of 'working in the cloud' appears to become the new way of programming and managing data. There is no longer any need to have all the hardware or the resources available locally; you put data 'in the cloud' (the Amazon data-center) and access it when and where you need it..

A word about catering
Though it is obvious that we are here to learn be get inspired, when one pays twothousand euros to attend a conges in London, I think it is not too much to ask to have a nice, enjoyable lunch in the afternoon-break. Perhaps I am not the most low-maintainance-person when it comes to food, but I think that professional caterars should be able to come up with something more creative than rice and beans when you ask for a non-meat luncheon. As a desert, I decided to have some kind of apple-cake, which was so juicy that I was unable to cut it with the side of my fork (as Wilhelm II used to do, but the side of his fork was sharpened especially for that purpose). But the knives where no longer provided at that time. I did not mind much, as the part of the cake I did manage to eat was not particullarly tasteful.
Also, I understand the need for networking during the lunch-break; one of the goals of this kind of conferences is networking, is it not (no, I am not talking about TCP/IP or IPv6, but of people exchanging business-cards). So during lunch we do not supply chairs and tables, so that the attendees are forced to walk about and talk to each other. The result? People sitting on benches near windows (as I am doing now) or even on the ground, not realy interacting with newly-met, but checking their mail, chatting via their mobile, or entering text for the blog of the conference. I think the network-need is better served with the drinks and tapas this evening, so please let me have my lunch in a decent manner.

dinsdag 11 maart 2008

QCon Tuesday

Alarmclock on 4.30 AM, bus at 5.30 AM, plane at … 8.10 AM! Two hours delay :( The picture is me at the airport, please note the red timestamp in the right bottom corner.
The rest of the day was a bit of disappointment. Further delays at schiphol ensured we missed the entire morning session. Somehow our preferred tutorials were scheduled on Monday (!?). So no Ruby, we'll catch up on that later. We joined another Domain Specific Languages (DSL) tutorial. But having missed the morning session this went way over my head. But it seemed a rather academic subject to me on which the PhD’s are having a field day. But Bart understood it better, so we’ll have to await his explanation of the material.

Some quotes I noted down:
“… the abstract meta superclass…”
“… if you build THAT than we can automate EVERYTHING (drooling)”
“… so we have shown that DSL’s are sometimes really useful…”
Normal dinner at an Italian restaurant: 65 pounds. Welcome to Londen. ;-)

Getting started with Rails is easy. Or isn’t it?

Ruby is a programming (scripting) language that is becoming popular lately. As a programming language it is said to be very elegant, but its API isn’t quite as extensive as Java’s yet. At the moment I have two graduates at Logica looking at the possibilities of building (cross-platform) applications in Ruby.
But the real popularity of Ruby comes from the webapplication framework “Ruby on Rails” or just Rails. This framework is said to give you 10x more productivity. When you have mastered the subject, that is.

In some ways those Ruby & Rails guys are pretty good at promoting their stuff. Looking at the amount of tutorials, blogs, websites and tracks on QCon you can’t escape the feeling that this is an important development. But in other ways they suffer from the same problems that plaque the open source world. To get started with a technology, you already have to be quite an expert on all sorts of tools and products. Documentation isn’t really userfriendly or up-to-date and when the inevitable problems arise you have to put in quite some work to get the right answers. If you’re lucky Google will hit some forum with a readymade answer. But if you’re not you’re on your own. Another quibble I have is that the available documentation often isn’t structured clearly. If the open source world wants to interest the less technological savvy, they have to lower those barriers. But we all know that developing is much more fun than writing accessible documentation. So who will do it? (But there *is* an incentive. If you’re tutorial/blog/… is so good that it attracts a lot of visitors, you can make money on the ads.)

So yesterday I tried to prepare myself for the QCon tutorials by getting started with some Ruby on Rails. This wasn’t a picknick. As it turns out Rails 2.0 was released in December 2007, breaking every old tutorial there is. Now they could mention this clearly somewhere, but they didn’t. So to save you the time, I’ll give you course I eventually followed.

1. Rails environment (Windows): download and install the all-in-one distribution InstantRails.
2. You can check your installation by testing the pre-installed ‘cookbook’ and ‘typo’ applications. The cookbook works for me, but typo gives several errors that I couldn’t solve quickly with the help of Google.
3. The readme suggests starting with the popular ‘cookbook’ tutorial. It’s a funny read but … this tutorial turns out to be broken for this latest distribution of Rails. And you only find that out after you’ve invested some time, ran into problems and started searching the web.
4. After some searching I ended up with the tutorial at http://fairleads.blogspot.com/2007/12/rails-20-and-scaffolding-step-by-step.html . This is hailed as the best tutorial at the moment. It does the job and results in a working example. But it only scratches the surface.
5. If you want to know more, the best way to go is to install a previous version of Rails. In this way you can tap into the more extensive older tutorials. You could also buy a book, but there’s not so much on 2.0 yet.

Let’s see what the experts at QCon have to say on the subject.

vrijdag 7 maart 2008

JSpring

(Op verzoek geswitcht naar Engels)

The program for JSpring is up: http://www.nljug.org/pages/events/content/jspring_2008/sessions/?template=showprogram.html&fs=1

Just reading the abstracts and looking up the stuff you don't know is a nice way to keep up. (Do you know what 'Kanban' is?)

My preliminary selection is a nice mix of subjects:

  1. Grid computing
  2. xText/DSL's
  3. RAP/RCP
  4. Up-to-database
  5. How to survive a code review
  6. MDA with Eclipse

Meet you there?

woensdag 5 maart 2008

QCon 2008

Nog een paar dagen en dan is het zover. Collega Bart Barnard en ik gaan naar het QCon congres 2008 in London (http://qcon.infoq.com/london/conference/). Op het programma staan grote namen (Fowler, Beck, Gamma) en interessante onderwerpen op het gebied van software development. "The rise of Ruby", "Architectures you've always wondered about", "Domain Specific Languages in practice" zijn slechts enkele van de tracks.

Voor de tutorials op dinsdag hebben we besloten dat Bart naar de Domain Specific Languages gaat waar Fowler himself aanbeden kan worden. Ondergetekende volgt de Ruby-tutorial. Het programma voor de andere dagen zullen we on the fly opstellen.

Verder zijn we natuurlijk reuze benieuwd naar het geek-gehalte en of je je met een windows laptop wel kunt vertonen. Wat bijvoorbeeld te denken van de volgende quote: "Imagine a dim-lit cave with beer, snacks, and power for your laptop. Add Ruby geeks, Ruby experts, and curious newcomers. ... This geek night will be centered around Ruby, your laptops and you."

Mocht je nog vragen hebben over bepaalde onderwerpen, stuur een mailtje naar j.w.balje@pl.hanze.nl en we zullen kijken of we wat voor je kunnen doen.