Tuesday 19 June 2007

Browser hell

Een beetje webontwikkelaar heeft meerdere browsers naast elkaar draaien om te controleren of zijn creaties door iedereen kunnen worden bekeken op de manier dat de ontwikkelaar wenst.

Maar bij IE heb je altijd een probleem, bij een nieuwe versie wordt de oude vervangen. Gelukkig zijn er wat handige jongens en meisjes op de planeet die workarounds verzinnen hiervoor. Dus draai IE6 en IE7 gewoon naast elkaar!

Oh, en download dan gelijk ook maar Safari voor Windows (beetje brak maar dan krijg je tenminste het idee hoe het zou moeten werken op een Mac).

Maar ik blijf gewoon Opera fan.

Sunday 17 June 2007

Dutch PHP Conference

Afgelopen zaterdag was de Dutch PHP Conference in de RAI in Amsterdam. De weg naar de RAI was gemakkelijk te vinden, gewoon een kwestie van nerds volgen. Tja, dan kom je erachter dat je er ook één bent.

De aftrap werd genomen door Cal Evans, die begon met een verhaal over zijn ervaringen met het mixen van HTML, PHP, Ajax. Bijzonder leuke spreker waar ik zeker meer van moet lezen, gelukkig kan dat, via zijn website: calevans.com.

Vervolgens sprak een vermakelijke Kevlin Henny over de do's en don'ts in PHP. Enkele tips die hij gaf zijn:
  • gebruik geen type hinting, dit kan resulteren in fatal errors.
  • vermijd train wrecks: $a->$b->$c.
  • pas op vampires, verberg alle functies en methoden die niet voor de buitenwereld bedoelt zijn.
Hierna was het tijd voor verschillende parallelsessies. Ik bezocht achtereenvolgens een presentatie over Webwereld en Zoom, PDO en de SURFnet videotheek.

De eerste was een beetje een dooddoener, Sander van de Graaf vertelde weinig dingen die ik niet wist, ik had verwacht dat er spectaculaire oplossingen waren verzonnen om het hoge aantal gebruikers een redelijke service te kunnen bieden. Helaas werd er performance gewonnen door bepaalde code anders te schrijven, maar is er nauwlijks gekeken naar een betere database performance door bijvoorbeeld een OLAP structuur op te zetten.

De tweede presentatie getiteld PHP data objects, door Lukas Kahwe Smith, trok mijn aandacht omdat ik een presentatie verwachte over het uitwisselen van gegevens en het verpakken van die gegevens in objecten. Helaas was het een presentatie over de PDO module binnen PHP. Toch was de presentatie interessant en overweeg ik om eens naar PDO te kijken als ik een systeem ga bouwen dat op meerdere databases moet draaien.

Als laatste ben ik bij een presentatie van SURFnet geweest door Herman van Dompseler. Wat hij vertelde sluit aan bij een opdracht waar ik nu voor een klant mee bezig ben en was dus voor mij erg interessant. Ik denk echter dat veel mensen die erbij zaten niets aan de presentatie hadden. Herman had het over een 5-lagenmodel, A-Select, SOA, VP-X en REST.

Als afsluiter van de dag werd er een presentatie gegeven over Test Driven Development door Derick Rethans. Een interessant verhaal hoe je met tests de ontwikkeling van je websites kan verbeteren. Een stuk Agile development waarbij men eerst tests maakt op basis van requirement specifications en dan de software zo programmeerd dat de tests goed gaan. Door elke keer de tests te runnen, kan constant de kwaliteit van de software in de gaten worden gehouden. Met ontwikkel iteraties van drie weken kan zo regelmatig een stabiel systeem worden opgeleverd.

Al met al een uiterst leerzame dag, die me weer veel leesvoer heeft opgeleverd:

Friday 1 June 2007

Design Patterns

Niet het wiel opnieuw uitvinden. Dat is wat je met Design Patterns doet. Als je een probleem tegenkomt wat je niet zo snel kan oplossen, dan kan je gaan snuffelen in PHP websites met sample code of je pakt er een boek bij. Maar als dat niet helpt, of als je er geen bal aanvindt om andersmans code door te spitten, kijk dan eens naar Design Patterns.

Het lijkt lastig op het eerste gezicht, maar als je begrijpt wat je er mee kan ben je verkocht. Op dit moment heb ik met succes de volgende patterns geimplementeerd:
- Singleton: sta een enkele objectinstantie van een class toe
- Factory: gebruik een enkele class om objecten van een ander type te bouwen
- Observer: gebruik een class om meldingen te versturen naar een lijst van objecten
- Decorator: gebruik een class om een object te voorzien van extra informatie
- Adapter: gebruik een class om een andere class te converteren naar de huidige implementatie

Kijk eens op Wikipedia of Google naar Design Patterns, het is taaie kost, maar de moeite waard.