Weblog over ICT

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

Auto’s

Geen leasebak.

Vanaf 1 januari heb ik geen leaseauto meer! Mijn leaseauto via mijn werk heb ik opgezegd. Ik vind reizen per trein veel fijner dan in de file staan ’s ochtends. Hoewel mijn ik werk op projectbasis op locatie als consultant, is al het werk dat ik in de afgelopen jaren heb gedaan goed bereikbaar met OV.

Trein
In de trein kan ik rustig de krant lezen, of een goed boek. Vertraging valt vrijwel altijd mee. Bovendien is die vertraging, in tegenstelling tot in de file staan geen volstrekt verloren tijd.
Sommige mensen vinden auto rijden fijn omdat ze dan eindelijk alleen zijn, zelf een muziekje kunnen rijden. Ik begrijp die mensen niet, ik kan prima zelf alleen zijn zonder dat af te dwingen. Misschien komt dat door alle avonden volplannen met sport, uitgaan vriendenbezoek. Of de klacht dat het met de ns ‘altijd wat is’ valt mij ook behoorlijk mee. Af en toe heb ik wel vertraging, of valt een trein uit, maar er zijn zelden grote problemen. En als er echt grote problemen zijn (sneeuw, storm), valt dat ook vaak samen met een flinke opstopping op de autowegen.

Eigen auto
In sommige gevallen is de auto wel handig, daarom overweeg ik toch een goedkoop tweedehandsautotje te kopen. Ik geef niks om een mooie auto, maar een auto voor de deur is wel makkelijk om familie op zondag te bezoeken. Of andere meer afgeleggen plekken waar ik of mijn vriendin incidenteel naar toe moet.
Ik heb eerder een eigen auto gehad (zie mijn Auto!) . Met een beetje geluk is een tweedehands auto heel goedkoop in gebruik, afschrijving en reperatie meegeteld.

Gedeelde auto
Andere overweging is autodelen zoals met Greenwheels. In mijn buurt staan meerdere Greenwheels auto’s op loopafstand, dus kwa gebruiksgemak scheelt dat weinig met een eigen auto. Greenwheels is alleen wel enigzins kostbaar, bovendien zijn de kosten enigzins onderzichtig. Bij het 15 euro abonnement kost de Peugeot 107 €2,40 per uur doordeweeks en in het weekend auto €4,– per uur en 0,14+0,09=€0,22 per km.
Een andere aanbieder van gedeelde auto’s is Wheels4All. Deze aanbieder gaat iets meer uit van eigen initiatief van wat ik begrijp van de nieuwsbrief en website. De kosten zijn een stuk lager. Bij een abonnement van  €10 kost de auto €2,00 per uur maar tussen 23:00 en 7:00 zijn de uurkosten 0. Overnachten kost dus niks. Kosten per km zijn ook een stuk lager: 0,11+0,7=€0,18 /km .
Enige nadeel is dat Wheels4all nog geen auto in mijn buurt heeft. Enige wheels4all auto’s in Utrecht staan in LeidseRijn. Ik zou wel een eigen initiatief kunnen opstarten, maar geen idee of ik buurtbewoners kan meekrijgen – de meeste hebben al een auto.

Conclusie
Hoewel veelbelovend, denk ik dat ik toch een tweedehands auto ga aanschaffen. Nu even zoeken naar een goede tweedehandsauto (verkoper)!

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.