Gerbrand over ICT

I have another weblog, in English, where a blog in IT-related subject. See Gerbrand On ICT.

Winamp alternatief voor Apple

Op zowel mijn laptop als desktop-PC staat als OS Windows-XP. Mijn desktop-pc moet vervangen worden, en ik overweeg, zoals heel veel mensen een Apple-mac te nemen. Voordelen: op unix-gebaseerd, maar met gemak Apple, fraaie hardware, goed bruikbaar als tv en stereo-vervangen. Bij een PC is dat uiteraard ook allemaal mogelijk. Alleen werkt het alles een stuk minder soepel. Ik kan Linux gebruiken, maar mis dan veel commerciele software. Bovendien heb ik wel enkele keren een tijdje Linux als desktop gebruikt, maar op een of andere manier ben ik altijd een hoop tijd kwijt om een of ander werkend te krijgen. Of gewoon tijd kwijt aan het sleutelen voor the-sake-of sleutelen – op een of andere manier krijg ik daar bij Linux sneller de neiging toe.

Enfin, nadeel een groot nadeel Apple-mac is dat ik dat geen Winamp meer kan gebruiken. Ik vind Winamp de beste media-player die er is, en Itunes een onbruikbaar stuk software. Helaas is er geen Mac-versie van Winamp, en die zal er ook niet komen.

Sinds kort is een, schijnbaar fraai opensource alternief: Songbird is een open-source media applicatie, gebaseerd op Mozilla. Ik ben benieuwd of het een waardig alternatief is voor Winamp, de installatie draait nu.

Weblog over ICT

Ik heb een nieuw weblog gestart! Gerbrand On ICT. Mijn postings over ICT zullen op dit nieuwe weblog gecontinueerd worden.

Devoxx, JavaFX

Bij de Devoxx was JavaFX behoorlijk vertegenwoordigd in sessies en keynotes. Behalve de keynotes heb ik geen JavaFX sessies bezocht – op JFall had ik al wat van JavaFX gezien. JavaFX lijkt een fraaie taal en techniek voor maken van GUI’s: op een weblog van Sun staat een kort verslag over JavaFX bij Devoxx. Het fraaie van JavaFX is het declaratief kunnen programmeren van GUI’s, in plaats van moeten programmeren in een mix van XML en Javascript variant gebruiken zoals bij Adobo’s flex. Toch weet ik niet zo heel zeker of ik een nieuwe taal als JavaFX wil gaan leren.

DeVoxx ’08

The English presentation of this posting can be found at my new weblog.

Afgelopen dagen ben ik naar DeVoxx’08 gegaan, in Antwerpen en ik ben erg enthousiast! Veel goede presentaties gezien.

Van alle presentaties die ik heb gezien, dit is mijn top:

  1. From Concurrent to Parallel by Brian Goetz – een steengoede presentatie. De ParallelArray structuur en de Fork-Join – beide in Java 7 – lijken zeer krachtig.
    Het boek van Brian Goetz Java Concurrency in practice heb ik gekocht. Helaas behandeld de nieuwe feature van Java 7 niet, het boek komt uit 2006.
  2. The Feel of Scala by Bill VennersBuitengewoon veelbelovende en goede taal. Vooral de demonstratie hoe Scala ook de mogelijkheden van mogelijkheden heeft voor uitbreiden en aanpassen van bestaande classes zoals in Ruby kan (add methods), maar met static type checking. En hoe in Scala veel refactor-operaties deterministisch  zijn, versus heuristic zoals in dynamische talen. Deterministisch refactoring betekent dat je code gegarandeerd hetzelfde blijft werken na refactoring.
    Het nieuw aangeschafte boek ‘Programming in Scala‘ ligt nu op mijn buro.
  3. Be smart! by Ivar JacobsonEen zeer energieke en inspirende man. Ik ben veel eens met wat hij beweerd eens en vond een een gedeelte al langer zo, maar hij kan het wel veel beter brengen.
  4. RESTful Design, Patterns and Anti-Patterns by Stefan TilkovDoor zijn praatje ben ik erg enthousiast geworden over REST. Het was ook erg verhelderend te horen dat SOAP eigenlijk een bloated (hoewel niet zo gezegd) remoting framework is, en niet echt voor open, goed herbruikbare services zorg. Tenminste niet meer dan andere remoting frameworks als RMI.
  5. Effective Pairing: The Good, the Bad and the Ugly by Dave NicoletteLeuk en inspirerend. Voorbeelden hoe pairing wel en niet moet,maar niet zo interessant vermoed ik als je er niet direct bij bent.
  6. Implementing agile at enterprise level by Jef Cumps Heel even leek de spreker niet zo over te komen, maar al snel kwam hij los, voor mij tenminste. Zeer interessant hoe Scrum is geïntroduceerd binnen een organisatie als The Belgian Post. Mooi was ook een plaatje van een echt Scrum-bord (met gele en roze post-its) zoals gebruikt is.
  7. What’s new in Spring Framework 3.0? by Arjen Poutsma and Alef ArendsenSpring blijft een krachtig framework als je Java gebruikt. Ik vond het interessant te horen welke nieuwe mogelijkheden er zijn, aangezien ik het Spring-framework bijna iedere dag gebruik.
  8. Java + XSLT 2.0
    Doug Tidwell
    Behoorlijk interessant, en goede spreker. Vooral interessant voor mij, omdat ik pas een stukje over XSLT heb geschreven en het eerder gebruikt heb. XSLT 2.0 lijkt zeer nuttig, vooral de mogelijkheid om aanroepen van Java-code te embedden.
  9. Patterns in Mule
    by Antoine Borg Redelijk interessant, Mule lijkt een zeer mooi tool. Ik heb organisaties gezien die het messenging, queuing probleem met custom-code of wel niet hebben opgelost, Mule lijkt prima in te passen. Spreker kwam alleen niet zo heel goed over, hij was niet zo interactief en sprak soms wat ‘voorlezend’.
  10. How Do We Test This Stuff?
    by Frank Cohen
    – Uiteraard wil ik goed testen. De spreker kwam goed over, maar inhoudelijk was de presentatie niet zo interessant, ik hoorde niet veel nieuws. Vooral over open-source test tools, PushToTest, Selenium, SoapUI.
  11. Preventing bugs with pluggable type-checking for Java
    by Mahmood Ali
    Erg veelbelovend en interessant idee en bij behorend framework: een pluggable type-system via annotations. De spreker kwam alleen niet zo goed over. Ik kreeg idee dat hij verkouden was, en wat nerveus.
  12. Introduction to NIO.2
    by Jean-Francois Arcand
    Deze presentatie viel behoorlijk tegen. De spreker sprak erg warrig, half afgemaakte zinnen, van de hak op de tak en met een zwaar Frans accent. NIO2 en Grizzly-framework lijkt wel zeer krachtig, dat kwam wel over.

Ik ben overtuigd, ook van wat ik van andere heb gehoord op de conferentie, dat er andere erg goede sessies waren. Helaas kan ik niet overal bij zijn, dus ik kijk uit naar wanneer de presentaties online komen op Parleys.

Devoxx logo

Java Concurrency In Practice
Java Concurrency In Practice
Tim Peierls & Brian Goetz
Effective Java
Effective Java
Joshua Bloch

Google en openid

Al eerder heb ik al veel geschreven over OpenId. Google ondersteunde lange tijd nog geen openid. Sinds twee maanden kun je echter wel via je google-account inloggen op sites die openid ondersteunen! Rond 30 oktober kwam er een persbericht uit, zie ondermeer Webwereld en Nu.nl en tot slot OpenId.net.

Ik het het gemist, vermoedelijk omdat ik toen toen in Zuid-Oost-Azie was.
Alleen, nu de rook is weggetrokken: Google blijkt helemaal niet echt OpenId te ondersteunen, maar heeft een eigen standaard ontwikkeld. De eigen standaard van GMail verschilt, dat Google ook een login van <username>@gmail.com wil ondersteunen. Een emailadres gebruiken als openid is natuurlijk makkelijker, maar niet volgens de standaard.
Uit een comment op een Google artikel kon ik gelukkig halen,dat  het openid-formaat alsnog ondersteund wordt, door http://gmail.com/u/<username&gt; te gebruiken. Helaas is mij nog niet gelukt op die manier in te loggen op een openid-enabled website.
Microsoft volgt wel de Openid standaard.

Generic CRUD component

Belangrijkste  voordeel van een ORM framewok, is het voorkomen van telkens opnieuw code maken om data uit een database te transleren naar een object-type. De belangrijkste opereraties die met zo’n object moeten gebeuren zijn: aanmaken (Create), opvragen (Read), bijwerken (Update) en verwijderen (Delete), ofwel CRUD. Je zou die functies voor ieder type apart kunnen maken, maar via de standaarden JPA en Java 1.5 is het ook goed mogelijk een generiek CRUD-component te maken in Java. Via deze service zijn alle CRUD-operaties beschikbaar voor persistent Java-objecten. Op die manier kun je heel snel b.v. een GebruikersService, AdresService.
Ik was niet de enige met dat idee, na wat snel zoeken vond ik het volgende artikel van Adam Bien: Generic CRUD Components with Java EE 5.  Na een discussie met een collega kwamen we erop dat Generic CRUD component zeer veel weg heeft van het Active Record Pattern van Martin Fowler.
Het Active Record Pattern is uiteraard uitgewerkt in Ruby on Rails. In Java is er sinds kort ook een implementatie, Active Objects. Active Objects wordt uitgelegd in een artikel van Daniel Spiewak op Javalobby.org.
In zekere zin lijkt ActiveRecord erg op een DAO-pattern. ActiveRecord werkt echter goed in dynamische talen als Ruby en Groovy, DAO is beter geschikt voor niet dynamische, static-type talen als Java. Wat ik dus zoek is niet een Generic Crud Service, maar een Generic Dao, gelukkig al beschreven door IBM.
Een afgeronde implementatie van een Generic DAO kon ik helaas nog niet vinden, maar in combinatie met Spring zou zo’n implementatie toch weinig code bevatten. Een goede omschrijving is ondermeer DRY CRUD DAOs with JPA. Op Google Code vond ik het Crank project, die een implementatie van een uitgebreide Generic Dao levert.

Er is niets nieuws onder de zon, zolang je maar de juiste (en dezelfde) woorden gebruikt en kent!

Whitebooks over SOA en grid-computing

Voor de nieuwsbrief en website van mijn bedrijf heb ik twee artikelen geschreven (samen met andere auteurs)!

Een artikel gaat over Coherence, een product van Oracle voor grid-computing. Specifieker gezegd, Coherence is vorm van een distributed cache. Zie Data-grids met Coherence. Verder heb ik een artikel geschreven over XSLT in combinatie met SOA. Naast een mooi keyword, is SOA zeker relevant voor XSLT: om services met elkaar te koppelen, kan XSLT een geschikte techniek zijn: lees XSLT en SOA als je er meer over wilt weten.

JFall followup

JFall 2008 is inmiddels ruim twee weken voorbij. Ik heb eerder beloofd een follow-up te schrijven. Aangezien nu al heel veel entries geschreven zijn, zal ik vooral links plaatsen naar artikelen die al een hele mooie beschrijving of comentaar over of op de verschillende sessies hebben gegeven.

Erg interessant was het stuk over closures.  Een informatieve entry staat op JCN on the road, van Sogeti: Closures for Java

De sessie Solving Constraint Satisfaction Problems in Java heb ik niet bezocht. Hoewel een interessant onderwerp, vermoedde ik dat ik niet veel nieuws zou leren. In het vak Optimaliseren, deel van de master ST, werd dit onderwerp diepgaand behandeld. Wat niet weg neemt dat gebruik van een generieke solver voor oplossen van problemen bijzonder nuttig, relevant (en leuk) is: Rob van de Meulengraaf van het bedrijf Finalist heeft naar aanleiding van de sessie een solver voor Sodoku puzzels gemaakt.

Tot slot vond ik op youtube een kort filmpje met een impressie van JFall: JFall 2008.

Proof of concept

A lot of expensive software I worked with turned out to be of not that great value. Always, that software was supposed to solve some domain-specific problem: setting up a adsl-network, classifying products for webshops, etc. What was promised to the customer, was software that is supposed to work out-of-the box, with only some simple configuration. However, as always that turned out not to be the case. Besides often complicated configuration, a lot of extra custom development was needed.

In the end we (the team I was part of) always got a working solution. More often, that software was more a hindrance then a help. Often I wished we used software that didn’t try to solve a problem, but just was general purpose, like Spring, Hibernate, MySQL, JBoss, etc. Also software as expensive as that of Oracle (Bea), Microsoft, IBM can be of value.
The main difference between supposedly configure-and-be-ready-software: that software doesn’t give customers the idea that he only has to configure the software and have it running.

Often better, as a customer: hire good people (or a good company), have them choose the best tools and have them create the solution.

This entry is inspired by why a PoC is better than a RFP Process, which in turn was based on the article Don’t RFP, Just DIY . Stated was, a RFP very often does not result in an end-result the customer envisioned. I can’t agree more. In the end, good software is created by good people, not by good tools. Good people can create good solutions even with mediocre tools, but better solution are built by great (at least better) tools.