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!