6 January 2012 13:18
Lennaert van der Linden
Algemeen, Java
In dit artikel wordt aan de hand van een concreet voorbeeld getoetst of we java applicaties multi-threaded kunnen maken zonder bijkomstige complexiteit te introduceren met behulp van futures.
Enkele jaren terug heb ik voor een klant een functionaliteit om een afbeelding samen te stellen uit deelafbeeldingen gerealiseerd. Ik hanteerde daarbij een implementatie die recht toe recht aan was: de afbeeldingen werden één voor één geladen om vervolgens op elkaar geplakt te worden. De aanpak werkte prima en voldeed aan de performance-eisen. Maar het bleef daarna knagen bij mij… is een efficiëntere manier mogelijk zonder extra (technische) complexiteit te introduceren? Lees verder
Permalink
28 November 2011 16:32
Niels Talens
Algemeen
Komt een man bij de dokter:
“Zeg dokter, kunt u me even Pulsatilla voorschrijven want ik heb last van een gevalletje otitis media acuta. U hoeft niet te kijken hoor. Ik heb het namelijk zelf al uitgezocht op Google. Pulsatilla is het beste wat er is. Ik ga morgen op vakantie dus kunt u het recept nu even uitschrijven?” Lees verder
Permalink
17 November 2011 14:50
Lennaert van der Linden
Agile, Algemeen
We zijn allemaal bekend met ontwikkelmethodieken als Scrum, XP en Crystal Clear, maar het is goed om af en toe stil te staan bij wat de essentie is van agility. En wat we ermee willen bereiken. In dit artikel wordt ingegaan op agile denken en waarom agile meer is dan een verzameling van software ontwikkelmethodieken.
Lees verder
Permalink
29 August 2011 13:48
Iain Hecker
Algemeen
Het schrijven van (unit) tests kan soms erg pijnlijk zijn. De reden is nagenoeg altijd: “You’re doing it wrong!”. Dat meen ik serieus: als iets moeilijk te unit testen is, dan doe je iets verkeerd. Vaak niet in de unit test zelf, maar in de implementatie.
Lees verder
Permalink
8 August 2011 15:57
Lennaert van der Linden
Algemeen, Drupal, Migratie, PHP
De afgelopen weken hebben we onze website vernieuwd. Behalve een nieuw, fris gezicht dat onze nieuwe focus weerspiegelt hebben we ook onder de motorkap wijzigingen gemaakt. Door over te stappen op Drupal 7 kunnen we nu veel eenvoudiger aanpassingen maken in pagina lay-out en pagina inhoud.
Een deel van de content is hierbij herzien, maar een deel van de content moest over en dan het liefst zonder onnodig handwerk. In dit artikel ga ik in op onze aanpak, laat ik de gebruikte import module zien en beschrijf ik hoe het importeren voor ons verliep. Lees verder
Permalink
7 July 2011 19:47
Iain Hecker
Agile
Veel projectteams strijden tegen het voortschrijdend inzicht van de gebruiker. De ontwikkelaars en diens managers verschuilen zich graag achter de requirements. Staat het niet in de requirements? Dan wordt het niet gemaakt. De originele schatting blijft intact en de deadline kan zo nog steeds gehaald worden. Dit lijkt in eerste opslag eerlijk en terecht, maar niets is minder waar.
Door je krampachtig vast te houden aan het originele plan benadeel je iedereen. Zowel voor de gebruiker als de ontwikkelaar. Sterker nog: Dit kan juist de reden zijn dat het project te laat en over budget wordt opgeleverd. Als het überhaupt opgeleverd wordt.
Lees verder
Permalink
27 June 2011 14:48
Robbert Brak
Agile, Methodieken
Van 12 tot 15 juni was ik bij de SPA Conference 2011, een jaarlijks terugkerende conferentie in Londen over Software Practice Advancement. De sessie die de meeste indruk maakte was getiteld: Wolf Pack Programming. Lees verder
Permalink
14 June 2011 12:38
Niels Talens
Agile, Methodieken, Scrum
Shu Ha Ri is een manier van denken die gaat over het proces van leren en het zich eigen maken van een kunst of vaardigheid. De naam komt van het Japanse Noh theater en werd door
Alistar Cockburn geïntroduceerd als manier van denken over het aanleren van technieken en methodes binnen de software ontwikkeling. In dit artikel laat ik zien dat je met een methode als Scrum deze manier van leren erg goed kan toepassen.
Lees verder
Permalink
23 May 2011 12:07
Brian Snijders
Algemeen, Java, Liferay
Het koppelen van Hippo en Liferay is al enige tijd een hot-topic binnen Finalist. Verschillende succesvolle pogingen zijn ondernomen en Hippo heeft onlangs Hippo CMS 7.5 uitgebracht. Een van de speerpunten van Hippo CMS 7.5 is de integratie van een REST-api, waarmee de repository uitgevraagd kan worden. Standaard worden er een aantal REST-services meegeleverd en tevens wordt uitbreiding van deze REST-api met eigen REST-services ondersteund. Zo kun je op een vrij eenvoudige manier de repository via REST ontsluiten!
Lees verder
Permalink
19 May 2011 22:13
Rob Schellhorn
Scala
Domein specifieke talen zijn belangrijk, ze leggen de brug tussen programmeur en domein expert. Interne DSLs draaien binnen een gasttaal en zijn daardoor vaak snel te bouwen, de toolset van de gasttaal kan immers gebruikt worden. Het resultaat is vaak een bibliotheek. Mooie voorbeelden zijn Scala’s Actor Framework en de Hibernate Criteria API. Dat de DSL binnen een gasttaal moet draaien is ook een nadeel, je krijgt immers ook de syntax regels opgelegd. Externe DSLs hebben dit nadeel niet, maar de tools om iets zinnigs met de geschreven code te doen zijn er niet en moeten dus gemaakt worden. Scala biedt een mooie interne DSL om de code te interpreteren: het Parser Combinator framework.
Lees verder
Permalink
16 May 2011 17:21
Iain Hecker
Algemeen, Methodieken, Software beheer, Testen
Bij programmeren is het een vereiste dat je de code die je schrijft goed test. Dat weten de meeste programmeurs ondertussen wel. En omdat het testen met de hand te veel tijd kost, willen we dit graag automatiseren. Daarom schrijven we naast de productiecode nog meer code die de andere code uitprobeert en kijkt of het nog steeds werkt.
Lees verder
Permalink
26 April 2011 12:56
Rob Schellhorn
Scala
Een goed geschreven Scala API leest alsof het onderdeel is van de taal. Dankzij een aantal technieken kunnen heel krachtige constructies geschreven worden. Ook bestaande (Java) APIs kunnen op deze manier omgetoverd worden in pareltjes. In deze blog wordt gekeken hoe de API van Vaadin, een framework ontworpen voor Java, verbeterd kan worden met Scala aan de hand van een stukje voorbeeld code.
Lees verder
Permalink
28 March 2011 13:54
Iain Hecker
Algemeen, Methodieken, Scrum
Tenminste, als je deze op de typische Scrum-manier invulling geeft. Denk eens serieus na over de informatie die in een typische daily stand-up wordt meegedeeld: Wat heb je gisteren gedaan? Wat ga je vandaag doen? Heb je nog blokkades? We zijn verteld dat we deze drie vragen moeten beantwoorden tijdens de daily stand-up. We moeten ook allemaal even gaan staan zodat het niet al te lang duurt, want stel je voor dat er wat nuttigs verteld wordt!
Lees verder
Permalink
21 March 2011 14:37
Iain Hecker
Algemeen
Koppelingen met externe resources zijn erg lastig om te ontwikkelen. Zeker als je, zoals ik, een TDD fan bent. Dat komt omdat TDD van je verwacht dat je weet wat je doet voordat je het doet. Dat is vaak niet het geval wanneer we een koppeling maken met een dienst die we niet kennen. Welke requests moet ik maken? Welke gegevens krijg ik terug?
En daar blijft het niet bij. Tests tegen een externe API zijn traag en breekbaar. De data moet over het internet komen en verandert continu. Erg vervelend. Gelukkig is er een oplossing: VCR. De gem VCR kan http requests opnemen en later afspelen. Geheel automatisch.
Recentelijk hebben we VCR gebruikt om integratie met een aantal externe services helemaal TDD te ontwikkelen. Ik zal hier een voorbeeld geven hoe je TDD kan gebruiken om externe API’s te ontdekken en tot een implementatie kan komen.
Lees verder
Permalink
21 March 2011 10:03
Jurn de Ruijter
Java, Liferay
“Liferay delivers open source enterprise solutions for portals, publishing, content and collaboration.”
Een zeer beknopte en algemene beschrijving van een product met vele mogelijkheden en wat op verschillende manieren kan worden ingezet binnen een organisatie. Veel interessanter is eigenlijk, wat heeft Finalist al gedaan met Liferay?
Aan de hand van een aantal recente en succesvolle Liferay implementaties, zal ik per case de belangrijkste Liferay functionaliteit toelichten:
Lees verder
Permalink