ISAAC Developers BlogISAAC Developershttp://www.blogger.com/profile/15501257959342459001noreply@blogger.comtag:blogger.com,1999:blog-75221235524861272162010-08-17T14:10:29Z117110002010-08-17T14:10:29ZNederlanders blijken actiefste online kopers van EuropaKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-54127653729407869702010-08-17T14:10:29Z2010-08-17T14:10:00ZOp de Nederlandse retailmarkt koopt 71% van de consumenten wel eens iets online. Het aantal Nederlanders dat online artikelen koopt zal volgens Forrester de komende vier jaar met 2 miljoen stijgen van 9 miljoen naar 11 miljoen.<br /><br />Nederlanders blijken bovendien relatief veel vertrouwen te hebben in de veiligheid waarmee online financiële gegevens kunnen worden achtergelaten bij een aankoop. Minder dan 7% van de Nederlanders is bezorgd over de problemen die bij online transacties kunnen ontstaan. Het onderzoek van Forrester besloeg de West-Europese en Amerikaanse online retailmarkt. Naar verwachting zal in deze landen het aantal online kopers oplopen van 141 miljoen nu naar 190 miljoen in 2014. Ook de bestedingen zullen stijgen, in de Verenigde Staten naar verwachting met jaarlijks 10% en in Europa met gemiddeld 11%. In 2014 zal de omzet zijn opgelopen tot 114 miljard euro.<br /><br />In Nederland bereikt de omzetgroei naar verwachting het Europese gemiddelde van 11%, terwijl Duitsland en het Verenigd Koninkrijk waarschijnlijk een gemiddelde jaarlijkse omzetgroei van respectievelijk 9 en 10% zullen bereiken. Wel blijft de Britse online retailmarkt de grootste van West-Europa, met een omzet van 40 miljard euro en een aandeel van 35%. <br /><br />Bron: <a href="http://www.profnews.nl/928840/Nederlanders-blijken-actiefste-online-kopers-van-Europa">profnews</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5412765372940786970?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2010-08-17T14:10:00ZOHRA kiest ISAAC voor her-implementatie websitesPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-63320031128184824252010-04-13T14:53:25Z2010-04-13T14:51:00Z<a href="http://1.bp.blogspot.com/_MlgmCqJKfpo/S8SE8pHAZnI/AAAAAAAAAOg/jIqJQBLMzcg/s1600/ohra.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/S8SE8pHAZnI/AAAAAAAAAOg/jIqJQBLMzcg/s320/ohra.jpg" /></a>Na een uitgebreide oriëntatie kiest OHRA voor ISAAC als partner bij het implementeren van één centraal content management systeem (CMS). De combinatie van jarenlange ervaring binnen de banking & finance markt enerzijds, en de gedegen expertise van ISAAC aangaande het krachtige content management systeem dotCMS anderzijds, is voor OHRA in deze keuze bepalend geweest.<br /><br />Binnen de Delta Lloyd groep, waar OHRA toe behoort, verleent ISAAC reeds enkele jaren diensten op het gebied van interaction design, usability advies, conversie optimalisatie en technische ondersteuning. Tevens realiseerde ISAAC de website izio.nl en diverse aanvraagmodules voor financiële producten.<br /><br /><br /><b>Gehele online portfolio beheren binnen één CMS</b><br />De online portfolio van OHRA omvat, naast de website van het eigen label, diverse websites voor de verkoop van verzekeringen en financiële diensten via internet. Deze websites zijn in het verleden gerealiseerd door verscheidene leveranciers, al dan niet voorzien van een CMS en gebaseerd op diverse technieken.<br /><br />Deze diversiteit en het ontbreken van standaarden komt het beheer van de websites niet ten goede. Derhalve de wens vanuit OHRA om deze websites te beheren vanuit één content management systeem.<br /><br /><br /><b>Flexibiliteit en schaalbaarheid met dotCMS</b><br />ISAAC biedt met dotCMS een sluitende oplossing voor deze problematiek. dotCMS is een open-source content management systeem en tevens leverbaar als enterprise versie (met support beschikbaar). dotCMS biedt de mogelijkheid om meerdere websites te beheren binnen één content management systeem. Eerder zette ISAAC dotCMS al in voor meer dan 30 domeinen in de financiële sector.<br /><br />Door het standaardiseren van de verschillende websites betekent dit gemak in beheer en een reductie van de productietijd bij het opzetten van nieuwe websites. Tevens beschikt dotCMS over een uitgebreid rechtensysteem om delen van websites beheerbaar te maken voor specifieke gebruikers.<br /><br />Andere voordelen van dotCMS zijn onder andere:<br /><br /><ul><li>Gebruiksvriendelijke admin-interface</li><li>Herbruikbaarheid van content binnen meerdere websites</li><li>Staging functie, aanpassingen doorvoeren binnen het CMS zonder deze direct live te plaatsen</li><li>Plug-in architectuur voor het toevoegen van maatwerk en nieuwe functies</li><li>Volledig gebaseerd op open standaarden</li></ul><br />ISAAC is één van de drie certified partners van dotCMS binnen Europa. Wilt u weten welke voordelen dotCMS uw organisatie kan opleveren? Of geïnteresseerd in een demonstratie? Neem dan contact op met ISAAC.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6332003112818482425?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2010-04-13T14:51:00ZPubliek kiest voor Modern.nl als beste webwinkelKoenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-77619962363419814352010-03-29T15:07:02Z2010-03-26T17:04:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_l5QRTpnEFt0/S6zp-qnB2GI/AAAAAAAAAaM/jCYV5J114Rc/s1600/Modernwinnaar_portfolio-item.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://2.bp.blogspot.com/_l5QRTpnEFt0/S6zp-qnB2GI/AAAAAAAAAaM/jCYV5J114Rc/s400/Modernwinnaar_portfolio-item.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5452990511637977186" /></a><p class="MsoNormal"><b>Modern.nl heeft de publieksprijs gewonnen voor de beste webwinkel in consumentenelectronica en huishoudelijke apparatuur. Dat werd bekend tijdens het gala van de Nationale Thuiswinkel Awards 2010 op 26 maart jl.</b></p> <p class="MsoNormal">Het publiek stemde massaal op modern.nl tijdens een vooronderzoek waarbij consumenten de mogelijkheid hadden te stemmen op hun favoriete webwinkel. In de categorie grote webwinkels voor electronica en huishoudelijke apparatuur was de concurrentie groot, maar modern.nl won de Thuiswinkel Award overtuigend met de meeste stemmen.</p> <p class="MsoNormal"><b>Powered by ISAAC</b></p> <p class="MsoNormal">ISAAC is erg trots dat Modern.nl deze prestigieuze prijs won. ISAAC en Modern.nl werken al jaren samen aan de ontwikkeling van de webwinkel. Snel inspelen op de behoeftes van de klant is belangrijk bij het daadwerkelijk succesvol maken van een webshop. ISAAC is dé partner voor Modern.nl als het gaat om de juiste uitstraling, een heldere gebruikersinterface en thematisering van de site rond speciale dagen als Moederdag, Valentijn en Kerst. Daarnaast verzorgt ISAAC de Modern.nl nieuwsbrieven en bieden wij ondersteuning in de online marketing. Ook ontwikkelden we diverse actiematige onderdelen, zoals een gedichtengenerator met Sinterklaas en een WK-wedstrijd. Die samenwerking betaalt zich nu uit in de waardering van het publiek!</p> <p class="MsoNormal">ISAAC ondersteunt naast Modern.nl ook andere webshops<span style="color:#1F497D;">.</span> Zowel op technisch gebied als strategie en interaction design is ISAAC specialist in succesvolle webshops.</p> <p class="MsoNormal"><a href="http://www.isaac.nl/webshops.jsp">Meer weten over ISAAC webshop diensten? </a></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7761996236341981435?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2010-03-26T17:04:00ZKostenreductie op het gebied van customer serviceKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-71247257898971386702010-01-29T15:01:23Z2010-01-29T14:54:00Z<span style="font-weight:bold;">Self Service diensten</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4ymxIapfbE4/S2L31EvQb1I/AAAAAAAAADA/YyGItiN3GFQ/s1600-h/lasernederland_logo.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 211px; height: 84px;" src="http://1.bp.blogspot.com/_4ymxIapfbE4/S2L31EvQb1I/AAAAAAAAADA/YyGItiN3GFQ/s400/lasernederland_logo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5432176591739318098" /></a>Voor de financiële dienstverlener <a href="http://www.lasernederland.com/" target="_blank">Laser Nederland</a> heeft ISAAC een volgende fase in het project "Self Service" afgerond. De compleet door ISAAC ontwikkelde portals worden maandelijks door tienduizenden klanten gebruikt. In februari 2009 zijn de portals voorzien van extra functionaliteit waarmee klanten, in een beveiligde omgeving, zelf wijzigingen kunnen doorvoeren in het back-office van Laser. <br /><br />Met behulp van "self service" weet <a href="http://www.lasernederland.com/" target="_blank">Laser Nederland</a> flinke reducties te behalen op de werkdruk van het call-center. Klanten kunnen zonder wachttijd aan de telefoon hun aanpassingen direct doorvoeren, waardoor het back-end main-frame de meest actuele data bevat zonder dat hiervoor (zorgvuldig getrainde) agents als interactiemiddel tussen klant en systeem nodig zijn. <br /><br />In dit traject werkt ISAAC nauw samen met business analisten van Laser. Elk nieuw "self service"-item is een zorgvuldige, op de online wereld toegespitste adaptatie van een bestaand werkproces van het Laser call-center. ISAAC werkt hiervoor een interactieve schermflow uit, ontwikkelt deze tot een online wizard (geschikt voor alle veelgebruikte internetbrowsers), en verzorgt de technische real-time interactie met het main-frame. Deze interactie verloopt via een geavanceerde, in eigen huis ontwikkelde JEE middle-ware laag uit de "Pangaea Finance"-familie. De Pangaea middle-ware laag is sinds 2007 in gebruik bij Laser en biedt een robuuste omgeving met de steeds toenemende drukte op de websites. <br /><br />Meer weten over customer portals of kostenreductie op het gebied van customer service, neem contact op met ISAAC.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7124725789897138670?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2010-01-29T14:54:00Z"To Hyphen or not to Hyphen" in een domeinnaamYpe de Grootblogger@ypedegroot.nltag:blogger.com,1999:blog-7522123552486127216.post-50153364690613080882010-05-18T13:29:27Z2010-01-13T10:14:00Z<span style="font-weight: bold;">Vindbaarheid in relatie tot koppeltekens en een domeinnaam.</span><br />In 2007 was het nog gebruikelijk dat in het kader van SEO naast een domeinnaam ook een vergelijkbaar domeinnaam met koppeltekens werd gekocht. Koppeltekens worden door zoekmachines gelezen als spatie, wat het indexeren van de losse woorden ten goede kwam. Er werd hier zoveel misbruik van gemaakt dat als je nu een domeinnaam met te veel koppeltekens gebruikt het als spamming wordt geclassificeerd door zoekmachines. Een voorbeeld is buy-viagra-online-cheap.com. Meer dan drie koppeltekens kan een rood kruisje achter je naam betekenen. Op dit moment wordt door de zoekmachine zelf geïnterpreteerd welke keywords er in een domein staan.<br /><br /><span style="font-weight: bold;">Waarom “Not to hyphen”</span><br /><ul><li>Je domeinnaam ziet er professioneler uit.</li></ul><ul><li>De schrijfwijze wordt sneller vergeten, mensen typen automatisch alle woorden aan elkaar in een domeinnaam. Hoezoujijhettypen.nl?</li></ul><ul><li>Hoe langer de domeinnaam, hoe makkelijker je spelfouten maakt.</li></ul><ul><li>Gekoppelde woorden kunnen er goedkoper uit zien, “kan je geen echte domeinnaam vinden?”.</li></ul><ul><li>Beter uit te spreken in een (telefoon)gesprek. Leg deze maar eens uit aan te telefoon: Hoe-zou-jij-het-typen.nl?</li></ul><br /><span style="font-weight: bold;">Waarom “To hyphen”:</span><br /><ul><li>Leesbaarheid. Eenlangenaamismoeilijkleesbaar.nl of een-lange-naam-is-makkelijk-leesbaar.nl. Het verschil is duidelijk. Dit is vooral handig als je een “lange” domeinnaam wil communiceren in offline media. Het wordt dan beter onthouden.</li></ul><ul><li>Zoekmachine robots kunnen zelf keywords uit een domeinnaam halen, maar soms moet je een handje helpen. Een mooi voorbeeld is expertsexchange.com. Dit bedrijf heeft zijn domein omgezet naar experts-exchange.com omdat de zoekmachine robots er ook expert-sex-change van kunnen maken. Een ander voorbeeld is www.basketballshopping.com, hier zijn ook verschillende contexten denkbaar.</li></ul><ul><li>Ontneem een andere partij (concurrent) de kans om deze wel te registreren. En registreer deze naast je belangrijke hoofd-domeinnaam.</li></ul><ul><li>Als je in een branche zit waar alle goede namen die je bedacht had al vergeven zijn kan je altijd voor een domeinnaam gaan met koppeltekens. Maar let op met bedrijfsnamen. Het risico bestaat dat je issues krijgt m.b.t. copyrights. Een deel van de traffic kan nu ook juist naar de concurrent gaan.</li></ul><ul><li>Google vindt anchor tekst wel belangrijk. Als mensen in een tekst op een site een link maken naar bijvoorbeeld ISAAC mobiele diensten, dan vind Google het prettig als je URL www.isaac-mobiele-diensten.nl is. Om die reden is het altijd handig beide versies te registreren.</li></ul><br /><span style="font-weight: bold;">Volgende keer:</span><br />Het is interessant om te weten dat google en andere zoekmachines de meta tag “keywords” negeren. Dat mensen deze toch blijven toevoegen is een just-in-case scenario, "stel dat zoekmachines deze tag wel weer oppikken? Dan zit deze er toch maar mooi in!". Leuk voor een volgend blog onderwerp.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5015336469061308088?l=isaacdevelopers.blogspot.com' alt='' /></div>Ype de Groot2010-01-13T10:14:00ZSoftware ontwikkelen is een prachtvak!Sjoerdhttp://www.blogger.com/profile/06822243806614643943noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-50624943827524941542010-01-14T08:03:39Z2009-12-24T08:08:00ZWe kennen allemaal de beroepen die standaard een hoog aanzien genieten in onze maatschappij. Neem nu bijvoorbeeld de chirurg, de piloot of de architect. Voor sommige mensen is het zelfs statusverhogend om te vermelden dat de broer van de neef van de schoondochter arts is. Logisch is dat natuurlijk wel, het zijn nu eenmaal beroepen die gemakkelijk tot de verbeelding spreken. De chirurg die een mensenleven redt, de architect die een prachtig – voor iedereen dagelijks te bewonderen – gebouw heeft ontworpen, en de piloot die de bijna goddelijke gave bezit om ons binnen een etmaal naar de andere kant van de planeet te vliegen.<br /><br />Maar mag ik nu even de aandacht om het over een zeker zo mooi beroep te hebben (tromgeroffel): <span style="font-weight: bold;">De Software Ontwikkelaar</span>. Vergeleken met bovengenoemde beroepen bestaat dit vak nog niet zo lang en spreekt het misschien wat minder tot de verbeelding. Omdat het vak nog niet zo lang bestaat, betekent dit dat we voor veel problemen die we tegenkomen nog geen standaard oplossing hebben, en dus iets nieuws zullen moeten verzinnen. En dat is nu juist hetgeen dat dit vak zo interessant maakt. Nieuwe inzichten en technieken volgen elkaar dan ook in rap tempo op. Gelukkig houden wij dit bij ISAAC nauwgezet in de gaten en proberen we de nuttige dingen eruit te pikken.<br /><br />Het schrijven van de code door de software ontwikkelaar is een creatief proces. In grote lijnen weet de ontwikkelaar wel op welke manier deze de applicatie zal gaan vormgeven, maar tijdens het ontwikkelen dienen er nog veel oningevulde vragen te worden beantwoord. Gelukkig maar, want dit is een creatief proces dat dit vak zo leuk maakt! Het is hierbij van groot belang dat een ontwikkelaar op de hoogte is van standaard design patronen (design patterns) en algemene design principes. Hieraan kan de eigen geschreven code voortdurend getoetst worden. Een goede ontwikkelaar denkt bij het schrijven van elk stuk code of dit in lijn is met de algemene design principes en weegt voor en nadelen af. Ook herkent een goede ontwikkelaar de problemen die met de toepassing van een standaard design patroon (design pattern) kunnen worden opgelost. Het kan een enorme kick geven om op deze manier hele schone, beknopte en onderhoudbare code te schrijven. Vakwerk dus!<br /><br />Het goede nieuws is, dat ondanks de razendsnelle ontwikkelingen op het vakgebied, deze algemene patronen en principes veel minder aan verandering onderhevig zijn en dus de kwaliteit van de software kunnen waarborgen.<br /><br />Om af te sluiten met een paar hele mooie (object georiënteerde) design principes:<br /><ul><li> <span style="font-style: italic;">Encapsulate what varies</span> (iets dat vaak verandert, kun je beter isoleren zodat je het kunt wijzigen zonder andere onderdelen te beinvloeden).</li></ul><ul><li><span style="font-style: italic;">Program to interfaces, not implementations</span> (gebruik een interface om tegen een component aan te praten, zodat je de concrete component later nog kunt wijzigen).</li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5062494382752494154?l=isaacdevelopers.blogspot.com' alt='' /></div>Sjoerd2009-12-24T08:08:00ZISAAC voor derde keer bij 50 snelste groeiersKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-27886387586580765202009-11-16T15:53:50Z2009-11-16T15:01:00Z<span style="font-weight:bold;">PERSBERICHT</span><br /><br /><span style="font-style:italic;">Eindhovens internettechnologiebedrijf groeit snel verder</span><br /><span style="font-weight:bold;">ISAAC voor derde keer bij 50 snelste groeiers </span><br /><br />Eindhoven - Internettechnologiebedrijf ISAAC uit Eindhoven blijft snel doorgroeien. Dat leverde voor het derde jaar op rij een plek op in de Deloitte Fast 50; de ranglijst van vijftig technologiebedrijven met de hoogste procentuele omzetgroei. Een plek veroveren was dit jaar aanzienlijk moeilijker, want de lijst bevat voor het eerst niet alleen Nederlandse maar ook Belgische bedrijven.<br /><br />Waar menig aanstormend technologiebedrijf in de Fast 50 kortstondige groei doormaakt en vervolgens net zo snel weer uit de lijst tuimelt, weet ISAAC al drie jaar op rij stand te houden. De omzetstijging van 457% sinds 2004 is dus duidelijk geen kortstondige groeispurt, maar een teken van stabiele groei. Passie voor internet is wat volgens CEO Mark Hogendoorn aan het succes ten grondslag ligt. "Onze professionals weten niet alleen alles van de nieuwste technologieën, maar kunnen die ook zodanig toepassen dat ze een daadwerkelijke bijdrage leveren aan de resultaten van onze klanten."<br /><br /><span style="font-weight:bold;">Internet onvermijdelijk in vitale bedrijfsprocessen </span><br />ISAAC ondersteunt haar klanten bij het optimaal benutten van de zakelijke mogelijkheden van internet. Uitgangspunt is dat het voor organisaties steeds vaker onvermijdelijk wordt om internet in te passen binnen vitale bedrijfsprocessen. Tot de kerntaken van ISAAC behoren advies, ontwerp, realisatie en beheer van online applicaties. In de praktijk varieert dat van het bouwen van websites tot de online ontsluiting van complexe backoffice-applicaties. Een opvallende ontwikkeling binnen het bedrijf is dat het zich steeds meer toelegt op specifieke sectoren, zoals retail en in toenemende mate ook de financiële dienstverlening.<br /><br /><span style="font-weight:bold;">Internettechnologie maakt bank transparanter</span><br />Banken en andere financiële dienstverleners ontdekken dat de technische know how van ISAAC nieuwe mogelijkheden biedt voor transparantie naar consumenten. Denk aan saldo-informatie via de mobiele telefoon, realtime inzicht in creditcarduitgaven en inzicht in de actuele status van pensioenen en verzekeringen. Ontsluiting van die gegevens via internet was vaak een probleem vanwege de veelal verouderde databasearchitectuur van veel financiële instellingen. ISAAC ruimt dat obstakel effectief uit de weg met Pangaea middleware. Dankzij dat revolutionaire ‘enterprise application integration’-systeem kunnen uiteenlopende applicaties probleemloos met elkaar en met gekoppelde websites communiceren. <br /><br /><span style="font-weight:bold;">Over ISAAC</span><br />ISAAC ontstond in 1999 aan de Technische Universiteit Eindhoven. Sindsdien groeide het uit tot een zelfstandig bedrijf met meer dan dertig medewerkers en grote klanten als LaSer Lafayette Services Nederland (bekend van o.a. PrimeLine, Directa en cobranded Visa kaarten), De Harense Smid, Impact Retail, Paysquare en Repay International.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2788638758658076520?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2009-11-16T15:01:00Z"Grensverleggende integratie en productiviteit" met Adobe CS4Leoniehttp://www.blogger.com/profile/13696550720926907229noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-80879571807639708202009-11-04T14:29:30Z2009-11-04T14:22:00Z<a href="http://4.bp.blogspot.com/_z_Eh1tixdX0/SvGOyXbHcII/AAAAAAAAACA/hqLGX1iwq7k/s1600-h/cs4.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 280px; height: 280px;" src="http://4.bp.blogspot.com/_z_Eh1tixdX0/SvGOyXbHcII/AAAAAAAAACA/hqLGX1iwq7k/s320/cs4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5400254424126288002" /></a><br /><em>Voor de Adobe Cross-Media Roadshow 2009 trokken de webdesigners en webdevelopers van ISAAC dinsdagmiddag 3 november naar de Witte Dame te Eindhoven.</em><br /><br /><strong>Dagelijks terugkerende taken efficiënter uitvoeren</strong><br /><br />Aan de hand van een Cross-Media campagne toonden de Adobe experts ons daar de workflow voor het creëren, bewerken en publiceren van onze ontwerpen. Zowel productspecifieke functies alsmede de samenwerking tussen de verschillende CS4-applicaties stonden centraal.<br /><br />Aan bod kwamen o.a. Adobe Bridge, Adobe Photoshop, Adobe Illustrator, Adobe Flash, Adobe Dreamweaver en Adobe Indesign; software waar de web-afdeling van ISAAC dagelijks mee werkt aan haar web-projecten.<br /><br />4 nieuwe functies waarmee Creative Suite 4 (Web Premium) ISAAC tijd bespaart en onze klanten geld bespaart:<br /><br /><strong>Slimme objecten in Dreamweaver</strong> <em>(Dreamweaver)</em><br />Plaats een Adobe Photoshop® PSD-document in Dreamweaver om een afbeelding te maken als slim object, direct gekoppeld aan het bronbestand. Breng wijzigingen aan in de bronafbeelding en werk uw afbeelding bij in Dreamweaver zonder Photoshop te openen.<br /><br /><strong>Objectgebaseerde animatie</strong> <em>(Flash)</em><br />Verkrijg volledige controle over afzonderlijke animatieattributen dankzij objectgebaseerde animatie, waarmee tweens rechtstreeks op objecten worden toegepast in plaats van op sleutelbeelden. Breng moeiteloos wijzigingen aan in bewegingen dankzij de Bézier-handvatten.<br /><br /><strong>Live weergave</strong> <em>(Dreamweaver)</em>Ontwerp uw webpagina's in browsersituaties uit de praktijk met de nieuwe functie Live weergave in Adobe® Dreamweaver® CS4, met behoud van rechtstreekse toegang tot de code. Wijzigingen aan de code worden onmiddellijk weerspiegeld in de gerenderde weergave.<br /><br /><strong>Zo schalen dat inhoud behouden blijft</strong> <em>(Photoshop)</em><br />Met de nieuwe en revolutionaire functie Zo schalen dat inhoud behouden blijft, kunt u een afbeelding automatisch opnieuw samenstellen als u de grootte ervan aanpast, terwijl essentiële gebieden behouden blijven wanneer de afbeelding de nieuwe afmetingen aanneemt. Maak de perfecte afbeelding in één stap, zonder tijdrovende bewerkingen om de afbeelding bij te snijden of te retoucheren.<br /><br />Genoeg voor nu, wij gaan experimenteren met deze nieuwe functies...<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-8087957180763970820?l=isaacdevelopers.blogspot.com' alt='' /></div>Leonie2009-11-04T14:22:00ZSociale netwerk explosieCollinhttp://www.blogger.com/profile/08286386822217852449noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-43659390679518880962009-10-16T10:51:54Z2009-10-12T08:02:00ZAfgelopen jaren is er steeds meer en een steeds grotere focus door websites op het sociale aspect van het internet. De gebruikers kregen de kans om zelf inhoud toe te voegen aan websites door bijvoorbeeld het schrijven van beoordelingen. Een van de eerste die hiermee begon was Amazon die haar klanten reviews op de website liet plaatsen (wat nu al 15 jaar geleden is).<br />Tegenwoordig is er een ware explosie gaande in het aantal sociaal georiënteerde websites. En als je al een website hebt wil je of inhaken op bestaande sociale netwerk websites, of zelf functionaliteit hiervoor toevoegen.<br /><br />Daarom zie je tegenwoordig ook veel websites met de mogelijkheid om een pagina te ‘tweeten’, of toe te voegen aan je Facebook of MySpace pagina. Mits dit goed gebeurd kan dit een zeer krachtige marketing tool zijn en kan zelfs goed gebruikt worden voor klantenondersteuning.<br />Veel mensen hebben het succes gezien van de al bestaande grote jongens op het gebied van sociale netwerken. En proberen het succes te kopiëren, of proberen een nieuwe unieke dienst aan te bieden, in de hoop hun eigen niche te vinden. En dit heeft voor een explosie gezorgd in het aantal sociale netwerken en van websites die hiervan gebruik maken.<br /><br />En dit levert inderdaad soms interessante resultaten op. Zoals de dating site <a href="http://ge.la.to/">Gelato</a> die jouw gegevens van andere sociale netwerk sites verzamelt voor het bouwen en weergeven van je profiel. Of bijvoorbeeld <a href="http://wakoopa.com/">Wakoopa</a> die statistieken verzamelt over je software gebruikt. En je in contact brengt met vergelijkbare gebruikers of nieuwe software voorstelt.<br /><br />De genoemde voorbeelden zijn leuk en interessant om eens mee te spelen. Maar er is een nieuwe die echt mijn aandacht heeft getrokken en ik niet kan wachten tot ik hier eens goed mee kan spelen. En deze sociale netwerk site is <a href="http://foursquare.com/">FourSquare</a>.<br /><br />FourSquare laat een nieuwe trend zien (en is niet de enige hierin): het sociale netwerk als spel.<br />Bij FourSquare doe je een ‘Check in’ als je een bepaalde locatie bezoekt, bijvoorbeeld een bioscoop of je favoriete bar. En voor elke ‘Check in’ krijg je punten of zelfs zogenaamde ‘badges’. Grappig om te zien en aan mee te doen, maar nog niet gelijk waarom ik zo enthousiast ben over de nieuwe sociale netwerk site.<br /><br />Waar ik vooral heel enthousiast over ben is dat gebruikers tijdens zo’n ‘check in’ iets over de locatie kunnen schrijven. Dus ervaringen, tips en suggesties kunnen delen. Dit geeft je gelijk een goed idee hoe mensen over de zaak denken en wat er te doen is op dat moment. Zeer waardevolle informatie als je even wilt weten of een bepaalde zaak of locatie goed is.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BG_M-lgLH0k/StLivwW8KaI/AAAAAAAAABA/bafPBobzfTw/s1600-h/foursquare-offer.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 260px; height: 190px;" src="http://4.bp.blogspot.com/_BG_M-lgLH0k/StLivwW8KaI/AAAAAAAAABA/bafPBobzfTw/s320/foursquare-offer.jpg" alt="" id="BLOGGER_PHOTO_ID_5391621013978753442" border="0"></a>En door dit heeft FourSquare ook de aandacht getrokken en enkele <a href="http://mashable.com/2009/09/28/twitter-foursquare/">bekende financiers gekregen</a>. En FourSquare heeft ook gelijk een inkomstenbron veilig gesteld: <a href="http://mashable.com/2009/09/21/foursquare-for-business/">advertenties</a> (iets wat Twitter nog steeds niet gelukt is om goed te integreren). En dit zijn niet de standaard advertenties in de vorm van een banner hier en daar. De advertenties zijn gericht op de gebruiker en waar hij is. Dus als je bijvoorbeeld bij een bepaalde bar een ‘check in’ doet, kan het zijn dat je een advertentie te zien krijgt met daarin een aanbod om een drankje met korting te kopen. Zeer slimme manier om te adverteren, en gelijk ook op een manier die interessant is voor de gebruiker (en zeer mogelijk de participatie verhoogt).<br /><br />Jammer genoeg heeft de website op dit moment nog één zeer groot nadeel. Je kan op dit moment in Nederland alleen in Amsterdam ‘check ins’ uitvoeren. Amsterdam is namelijk de enige stad die op dit moment beschikbaar is. Ze zeggen dat zodra ze meer capaciteit hebben ze meer steden gaan toevoegen. Maar het geeft wel een flinke restrictie in hoe en waar je de website kunt gebruiken.<br />Maar als deze restrictie weg is, en gebruikers helemaal vrij zijn in het gebruik van de website, ben ik zeer benieuwd wat er zal gebeuren. De potentie om iets heel unieks te worden is er.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4365939067951888096?l=isaacdevelopers.blogspot.com' alt='' /></div>Collin2009-10-12T08:02:00ZEinde aan boilerplate met Project LombokMaartennoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-66136334041923249172009-10-07T10:19:33Z2009-10-06T12:34:00Z<span style="font-style: italic;">Weer</span> een getter en setter schrijven, <span style="font-style: italic;">weer </span>die <span style="font-family:courier new;">equals</span> en <span style="font-family:courier new;">hashCode</span> updaten omdat er <span style="font-style: italic;">weer </span>een field bij is gekomen. Gelukkig heb je die twee generiek gemaakt via reflectie. Maar wat word daardoor die <span style="font-family:courier new;">HashSet</span> toch <span style="font-style: italic;">traag</span>, toch maar weer handmatig implementeren. En oeps, een tikfout die toch wel valid Java blijkt te zijn is erin geslopen! En oh ja, ook nog <span style="font-family:courier new;">toString</span> aanpassen…<br /><br />Toch vreemd dat zoiets als een getter, setter, <span style="font-family:courier new;">toString</span>, <span style="font-family:courier new;">equals</span> en <span style="font-family:courier new;">hashCode</span> toch weer zoveel problemen geven, vooral omdat IDE’s deze toch al weer een tijdje voor je kunnen genereren. Maar deze zul je toch ook nog moeten onderhouden (al was het alleen maar regenereren van deze methodes). Je zou toch haast zeggen dat dit werk is voor een computer? Daarnaast blijf je constant tegen die methodes aankijken in de source, en dat geeft, en brengt, extra mentale belasting die eigenlijk helemaal niet nodig is in de meeste gevallen.<br /><br />Er zijn over de jaren een aantal oplossingen bedacht voor dit probleem, een ervan is equals, hashCode en toString via reflectie. Dit werkt, helaas werkt het ook traag. Dit komt omdat de JVM (HotSpot) deze niet goed kan inlinen omdat het in feite type-less code is. En reflectie kan ook geen getters en setters maken die je in je code kan gebruiken (of in Swing).<br /><br />Daarnaast zijn er door de jaren heen een aantal JSR Proposals geweest om een property keyword te krijgen, zodat getters en setters automatisch gegenereerd worden.<br />Bijvoorbeeld:<br /><pre>class Point {<br />public property int x;<br />public property int y;<br />}</pre><br />om het volgende te genereren:<br /><pre>class Point {<br />private int x;<br />private int y;<br /><br />public int getX() {<br /> return x;<br />}<br />public void setX(int x) {<br /> this.x = x;<br />}<br />public int getY() {<br /> return y;<br />}<br />public void setY(int y) {<br /> this.y = y;<br />}<br />}</pre><br />Maar de meest recente versie van deze proposal, in <a href="http://openjdk.java.net/projects/coin/">Project Coin</a>, heeft de selectie niet gemaakt (voor Project Coin). Daarnaast lost dit ook niet direct het <span style="font-family:courier new;">equals</span>, <span style="font-family:courier new;">hashCode</span> en <span style="font-family:courier new;">toString</span> probleem op (uiteraard wel met de reflectie oplossing).<br /><br />Het is in feite interessant om te zien dat, bijvoorbeeld, Scala dit soort dingen wel doet, in de vorm van <span style="font-family:courier new;">case class</span>es, bijvoorbeeld de Point klasse hierboven:<br /><span style="font-family:courier new;">case class Point(var x:Int, var y:Int)</span><br /><br />Dit genereert constructor, getters, setters, <span style="font-family:courier new;">toString</span>, <span style="font-family:courier new;">equals</span>, <span style="font-family:courier new;">hashCode</span> <span style="font-style: italic;">en</span> Scala specifieke features, zoals <span style="font-family:courier new;">Pattern Matching</span>.<br /><br />Maar er is licht aan het einde van de tunnel.<br /><br />In Java5 zijn er, samen met Generics, Annotations toegevoegd. Hiermee kan je klassen, methoden, fields en parameters annoteren met metadata. En samen hiermee is er ook "APT" of "Annotation Processing Tool" uitgebracht. Dit is een losse tool, zoals <span style="font-family:courier new;">javac</span>, dat met een set processors een selectie klassen doorloopt en deze aanpast. Het is voornamelijk een source processing tool, waarbij acties getriggerd worden op annotaties.<br /><br />Het is dus mogelijk om een annotatie te schrijven die een getter en setter van een veld genereert, of een <span style="font-family:courier new;">toString</span>, etc, etc. Het mooie is ook dat zodra dit is gebeurd je de nieuwe methode direct kan zien, en gebruiken, in een IDE, de meeste IDEs gebruiken class files om te zien of een methode (of zelfs class) bestaat.<br />Maar het schrijven van een AnnotationProcessor is lastig, en dit is een losse stap, en je kan het dus vergeten, en dan kan je leuke situaties krijgen, bijvoorbeeld dat getters en setters niet bestaan terwijl je deze op andere plekken wel verwacht.<br /><br />Gelukkig is het in Java6 nu mogelijk om direct, bij het aanroepen van javac, annotations te processen. En daarom is er nu <a href="http://projectlombok.org/">Project Lombok</a>.<br /><br />Lombok komt met een aantal standaard annotations om boilerplate te verwijderen.<br />Je voegt het gewoon toe aan je classpath (tijdens het compilen) en de annotation processors erin gaan aan het werk. Een lijstje met de annotations die meegeleverd worden zijn:<br /><ul><li><span style="font-family:courier new;">@Getter</span> en <span style="font-family:courier new;">@Setter</span></li><li style="font-family: courier new;">@ToString</li><li style="font-family: courier new;">@EqualsAndHashCode</li><li style="font-family: courier new;">@Data</li><li style="font-family: courier new;">@Cleanup</li><li style="font-family: courier new;">@Synchronized</li><li style="font-family: courier new;">@SneakyThrows</li></ul>Alle annotations zijn te configureren.<br />De eerste drie (punten, vier annotations) spreken voor.<br /><span style="font-family:courier new;">@Data</span> combineerd de eerste 3 punten.<br /><span style="font-family:courier new;">@Cleanup</span> kan je gebruiken op variabelen in methodes zodat deze <span style="font-family:courier new;">try { } finally { }</span> blocken genereerd en een methode aanroept (default is <span style="font-family:courier new;">close</span>, maar kan ook "<span style="font-family:courier new;">myOwnCleanupMethod</span>" zijn).<br /><span style="font-family:courier new;">@Synchronized</span> is een method level annotation en word gebruikt om een algemeen synchronized pattern te gebruiken die beter locked op een field i.p.v. een (static) field. Het is ook mogelijk om meerdere, andere, locks te definieren (beter gezegd, specifieke velden te gebruiken).<br />Als laatste is er <span style="font-family:courier new;">@SneakyThrows</span>, dit word gebruikt om een methode bepaalde checked exceptions te laten throwen, zonder dat deze in de method descriptor hoeven te staan (de throws keyword). Een voorbeeld is <span style="font-family:courier new;">UnsupportedEncodingException</span>, zeg nou zelf, wat is de kans dat UTF-8 niet bestaat in jouw JDK? Wat dit doet is je methode wrappen in een <span style="font-family:courier new;">try { } catch() {}</span> block, en de ongewenste exception catchen, en deze dan te throwen met een unchecked exception.<br />Enkel voor de @SneakyThrows hoeft de lombok.jar runtime beschikbaar te zijn (omdat het een utility methode aanroept die de echte sneaky-throw doet).<br /><br />Mijn vorige voorbeeld klasse kan met Lombok gereduceerd worden tot:<br /><pre>@EqualsAndHashCode @ToString<br />class Point {<br /> @Setter @Getter private int x;<br /> @Setter @Getter private int y;<br />}</pre><br />Of nog korter:<br /><pre>@Data<br />class Point {<br /> private int x;<br /> private int y;<br />}</pre>En dat is veel beter! Nog mooier is dat je het niet <span style="font-style: italic;">kan</span> vergeten, als je de lombok.jar vergeet tijdens het compilen dan kan de compiler de verschillende annotaties niet vinden, en kan het compilen niet werken.<br /><br />Om af te sluiten raad ik het je aan om de screen-cast te bekijken die op de Project Lombok website staat, en het gewoon uit te proberen. Eindelijk einde aan boilerplate code!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6613633404192324917?l=isaacdevelopers.blogspot.com' alt='' /></div>Maarten2009-10-06T12:34:00ZCSS uitdagingen bij DotCMSXanderhttp://www.blogger.com/profile/03447323900696387776noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-38621372728134365752009-09-04T13:27:49Z2009-09-04T12:54:00Z<a href="http://2.bp.blogspot.com/_R5KebRihKTw/SqEPecz9NII/AAAAAAAAAA0/23ZF9IpvGwE/s1600-h/tinymce.jpg"><img id="BLOGGER_PHOTO_ID_5377596445861688450" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 159px" alt="" src="http://2.bp.blogspot.com/_R5KebRihKTw/SqEPecz9NII/AAAAAAAAAA0/23ZF9IpvGwE/s320/tinymce.jpg" border="0" /></a><br />Ik heb al een aantal keren wat verteld over de mogelijkheden van DotCMS, maar ik heb nog niets verteld over de interessante uitdagingen die erbij komen kijken om het gebruiksvriendelijk te houden. Het is niet zo moeilijk om een pagina (template) te definiëren waar je content in kan plaatsen, maar hoe zorg je ervoor dat de klant in zijn WYSIWYG editor ook meteen krijgt te zien wat er op de website komt te staan? En hoe ver moet je gaan om dat zo echt mogelijk te laten lijken? Daar ga ik het over hebben.<br /><br /><br /><br />DotCMS maakt gebruik van TinyMCE, een gratis open-source WYSIWYG editor. In deze editor komt in standaard HTML te staan hoe de opmaak eruit zou kunnen komen te zien, maar in de praktijk is dat altijd anders. Nu kun je aan de WYSIWYG editor wel een stylesheet koppelen (per website), maar dan ben je er nog niet. Want de WYSIWYG editor weet niet in welke div je bezig bent, dus klopt het nog niet allemaal. Hoe kun je dit nu netjes oplossen?<br /><br />Het antwoord is: "Dat ligt eraan...". Als je maar 1 soort content hebt op 1 plaats in een pagina (bijvoorbeeld in de div 'container'), dan kun je overal waar iets staat zoals '#container p {}' vervangen door 'p {}'. Dit werkt! Of je maakt gebruik van de class 'mceContentBody' die de WYSIWYG editor gebruikt (maar dan moet je vanalles 2x definieren, daar word je ook niet vrolijk van). Maar, stel je hebt 2 verschillend gekleurde templates met dezelfde content, of je hebt 1 template met daarin witte content en een grijze banner content, dan heb je een probleem.<br /><br /><br />Dus de vraag is eigenlijk: hoe ver wil je gaan om alles in de WYSIWYG editor precies zo te krijgen als in het echt? Ik zou zeggen: niet heel ver. Je kan niet rekening houden met alles. Wat je wel kan doen is standaard fonts definieren die in 90% van de gevallen worden gebruikt (<em>h1</em>, <em>h2</em>, <em>p</em>, <em>a</em>). Maar zelfs dat zou ik niet zo snel doen. Wat ik wel zou doen is speciale classes definieren. Bijvoorbeeld speciale classes voor tabellen, speciale <em>a</em> classes en speciale inputs. Dat een H1 net een andere kleur heeft is niet zo erg, maar je wil wel zien dat je link met class='fancybutton' een fancy knop weergeeft ipv een blauw tekstje.<br /><br />Dit soort afwegingen en het spelen met de CSS maken het werken met DotCMS wel leuk en interessant. Bij veel css zaken moet je je afvragen hoe je het definieert en wat de gevolgen zijn voor de pagina's, de edit mode (daar heb ik het nog nieteens over gehad!) en de WYSIWYG editor. En hoe maak je het zo makkelijk mogelijk voor de klant om daarna zelf zijn pagina's op te maken in de, toch beperkte, WYSIWYG editor. Ik kan er nog wel aardig wat bladzijden over voltypen maar ik ga weer even verder met mijn CSS issues bij Lasercards in DotCMS :)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3862137272813436575?l=isaacdevelopers.blogspot.com' alt='' /></div>Xander2009-09-04T12:54:00ZJavaScript laden zonder de browser te blokkerenKoenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-76478766210850235502009-09-03T10:36:11Z2009-09-03T10:29:00Z<b><br /></b><div><p class="MsoNormal"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_l5QRTpnEFt0/Sp-ajbFA9_I/AAAAAAAAANY/xXSLYvM8bkw/s1600-h/even-faster-websites.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 250px; height: 328px;" src="http://3.bp.blogspot.com/_l5QRTpnEFt0/Sp-ajbFA9_I/AAAAAAAAANY/xXSLYvM8bkw/s400/even-faster-websites.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5377186413458552818" /></a>Er zijn heel veel factoren die invloed hebben op de snelheid waarmee een webpagina wordt afgebeeld. Zaken zoals het aantal requests per pagina, het wel of niet gebruik maken van een Content Delivery Network, het instellen van gzip voor bepaalde type content en een juiste plaatsing van scripts en stylesheets in de pagina, dragen allemaal bij aan de ervaring die de gebruiker heeft als hij de pagina opvraagt. Als de ontwikkelaar te veel van deze zaken fout aanpakt, dan zal hij de woede van de gebruiker op zijn hals halen en wellicht hevig bloedend ergens in een greppel treurig aan zijn einde komen.</p> <p class="MsoNormal">Er zijn twee lekker pragmatische en niet te dikke boeken over deze onderwerpen geschreven die ik even wil aanstippen: “High Performance Web Sites” en “Even Faster Web Sites”, beide van Steve Souders (<a href="http://stevesouders.com/hpws/rules.php">http://stevesouders.com/hpws/rules.php</a>). Beide boeken zijn binnen ISAAC in ieder geval verplichte kost voor alle web develeopers. </p> <p class="MsoNormal">In deze blogpost wil ik een van de technieken uit het tweede boek kort introduceren: “JavaScript laden zonder de browser te blokkeren”. Het probleem dat hier speelt is dat scripts die worden geladen m.b.v. een SCRIPT tag tot gevolg hebben dat de browser helemaal niets anders zal downloaden tijdens het laden en interpreteren van deze code. Dit alles kan resulteren in een significante verlenging van de laadtijd en dus tot een tragere pagina. Zonde, want browsers kunnen in theorie meerdere bestanden parallel downloaden. </p> <p class="MsoNormal">De reden dat de browser niets anders downloadt is dat de JavaScript die op dat moment wordt gedownload de rest van de pagina kan wijzigen na executie. Het aantal en de volgorde van de andere resources kan afwijken van wat er in de oorspronkelijke HTML is gespecificeerd (bv met de document.write(…) constructie). Dit wijzigen van de HTML is in het overgrote deel van de gevallen helemaal niet aan de orde en resulteert dus in een onnodig lange laadtijd. Daarnaast is de volgorde waarin externe JavaScript bestanden zijn gedefinieerd in de HTML tevens de volgorde waarin ze moeten worden geëxecuteerd door de browser. Deze executievolgorde is eigenlijk niet van belang voor de volgorde waarin de scripts worden gedownload, iets dat tot nu toe alleen de ontwikkelaars van IE8, Safari 4 en Chrome 2 <span style="mso-spacerun:yes"> </span>hebben begrepen: deze browsers ondersteunen het parallel downloaden van scripts wel. Andere resources worden echter wel nog steeds geblokkeerd. </p> <p class="MsoNormal">In “Even Faster Web Sites” worden een aantal technieken geïntroduceerd die dit probleem (ten dele) oplossen. Ik zal deze hier kort introduceren. Voor de details verwijs ik echter door naar het boek zelf. </p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal">XHR Eval.<br /></b>In deze techniek worden de scripts met een XMLHttpRequest gedownload en vervolgens met een aanroep van eval() geïnterpreteerd. Dit werkt: de browsers blokkeren het downloaden van de andere resultaten niet. Het grote probleem is echter dat je op deze manier alleen scripts kan laden die van hetzelfde domein komen als de pagina zelf.</p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal">XHR Injection<br /></b>Deze methode lijkt enigszins op de voorgaande: het script wordt geladen mb.v. de XMLHttpRequest functie, maar wordt geëxecuteerd door een SCRIPT tag in de DOM te creëren en de gedownloade code daarin te injecteren. Deze methode is soms iets sneller dan het gebruik van eval(), maar lijdt onder dezelfde beperkingen.</p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal">Script in Iframe<br /></b>Iframes worden parallel geladen met andere componenten op een pagina. Door in iframe’s HTML pagina’s te laden die verwijzen naar de gewenste scripts, worden deze scripts dus parallel gedownload. Ook deze techniek is beperkt tot scripts die op hetzelfde domein staan als de hoofdpagina zelf. Bovendien moet de code worden aangepast om een verbinding tussen de hoofd- en de iframepagina te leggen.<b style="mso-bidi-font-weight:normal"><o:p></o:p></b></p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal">Script DOM Element<br /></b>Als alternatief voor het initieel opnemen van een SCRIPT tag in de HTML, kan er ook een on-the-fly worden gecreëerd m.b.v. document.createElement(…). Deze tag wordt dan dynamisch voorzien van een src attribuut en vervolgens in de HTML geïnjecteerd. Deze methode is geschikt voor scripts die komen van een andere domein dan het domein van de pagina zelf.</p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal">Script defer<br /></b>IE ondersteunt het DEFER attribuut bij de SCRIPT tag. Defer is een indicatie aan IE dat het gerefereerde script geen DOM wijzigingen zal uitvoeren en dat het niet meteen hoeft te worden gedownload. Dit heeft tot gevolg dat IE andere bestanden parallel met dit script zal downloaden. Het werkt echter alleen in IE en enkele nieuwe browsers. <b style="mso-bidi-font-weight:normal"><o:p></o:p></b></p> <p class="MsoNormal"><b style="mso-bidi-font-weight:normal">Document.write Script tag<br /></b>In deze techniek wordt net als bij de “Script DOM Element” methode een SCRIPT tag dynamisch aan de HTML toegevoegd, dit keer echter met een document.write() constructie. Het verschil is dat deze techniek alleen resulteert in het parallel downloaden van andere scripts, alle andere bestanden worden toch geblokkeerd. </p><p class="MsoNormal"><span class="Apple-style-span" style="font-weight: bold; ">Conclusie<br /><span class="Apple-style-span" style="font-weight: normal; ">Na het lezen van de technieken lijkt het redelijk simpel: kies altijd voor de “Script DOM Element” methode. De realiteit is echter niet zo eenvoudig. De keuze hangt af van het gewenste gedrag van de “busy indicators” in de browser (de visuele hints die aangeven dat er iets wordt gedownload) en van de wens om de download- en executievolgorde af te dwingen. Voor meer details over wanneer je nou precies wat moet kiezen verwijs ik je graag door naar hoofdstuk 4 van “Even Faster Web Sites”.</span></span></p> <p class="MsoNormal"><o:p> </o:p></p></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7647876621085023550?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2009-09-03T10:29:00ZMagical MagentoPaul Luedkehttp://www.blogger.com/profile/04226786102897522452noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-36997585613922552082009-08-19T11:27:54Z2009-08-19T09:05:00ZISAAC en e-commerce is al tijden een succesvolle combinatie. Tot dusver heeft ISAAC altijd maatwerk webwinkels gerealiseerd, met name omdat veel van onze klanten de webwinkel volledig geïntegreerd willen hebben met reeds bestaande back-end en beheer systemen. Maar sinds enige tijd hebben de technische specialisten van ISAAC zich verdiept in open-source e-commerce pakketten die alle broodnodige functionaliteit , voor een succesvolle webwinkel aan boord hebben. Ook de sales afdeling en de internet marketeers hebben de producten eens goed tegen het licht gehouden op basis van de wensen uit de markt en de aanwezige kennis van succesvolle webwinkels.<br /><br />Nadat de stofwolken geklaard waren en de nodige pakketten getest waren, stond nog maar 1 pakket in de arena overeind: Magento.<br /><br />Op technisch gebied is Magento een relatief jong open-source product. Dit heeft een aantal voordelen, bijvoorbeeld dat het product moderne en beproefde technieken gebruikt.<br />Een plugin systeem laat ontwikkelaars modules realiseren met extra, maatwerk, functionaliteit. Het voordeel van deze werkwijze is dat de kern van de applicatie, de webwinkel zelf, altijd stabiel draait zelfs als een module niet correct functioneert. Omdat de applicatie open-source is, is hierdoor ook een enorme bibliotheek ontstaan met reeds gemaakte modules. De webwinkel uitbreiden is dan ook op deze manier doorgaans het spreekwoordelijke “plakje cake”: zoek of iemand reeds een module heeft gemaakt voor het doel wat je wilt bereiken, download en installeer het….tadaaaa.<br />Naja, uiteraard zal het in boze echte wereld altijd iets anders werken: doorgaans moet je nog configureren, testen eventueel nog wat aanpassen voordat het werkt zoals je wilt. Maar, je hoeft in ieder geval niet altijd het wiel volledig overnieuw uit te vinden.<br />Op het gebied van aangeboden functionaliteit kun je een e-commerce product beoordelen op 4 primaire pijlers, namelijk “Komen, Kijken, Overtuigen en Kopen”. Ik zal Magento eens afzetten tegen deze 4 pijlers.<br /><br /><span style="font-weight: bold;">Komen</span><br /><br />Zoek Machine Optimalisatie is natuurlijk het kernpunt van de pijler “Komen”. Magento is uitstekend doorzoekbaar voor zoek machines en biedt uitgebreide mogelijkheden op het gebied van tags, keywords, URL rewrites et cetera. Dat klinkt als en is een boel terminologie uit de IT, maar het zijn wel de zaken die Google graag ziet en jij dus wilt hebben.<br /><br />Andere functionaliteiten die Magento ondersteunt is “tell a friend”, waarmee de bezoeker een vriend of vriendin op de hoogte kan stellen van een product op jouw website. Ook kan een bezoeker een verlanglijstje sturen naar zijn vrienden met producten uit de webwinkel.<br /><span style="font-weight: bold;"><br />Kijken</span><br /><br />Zodra een bezoeker uiteindelijk in de webwinkel terecht komt, is het uiteraard de bedoeling dat de klant alle informatie snel en eenvoudig kan vinden. Magento biedt alle mogelijkheden hiertoe, zoals een goede zoekfunctie en uitstekende sorteer en filter mogelijkheden.<br />Zodra een bezoeker een product heeft gekozen, kunnen ook accessoires voor het en soortgelijke producten getoond worden. Het gehele kijk, vind-wat-je-zoekt aspect is keurig geregeld in Magento.<br /><br /><span style="font-weight: bold;">Overtuigen</span><br /><br />Uiteindelijk gaat het er natuurlijk om dat een klant overtuigd wordt om een product aan te schaffen. Op internet kun je dan geen dialoog aangaan met je klant om er achter te komen welke beweegredenen belangrijk zijn voor de klant. Je zult dus een heel arsenaal aan overtuigingsmiddelen in moeten zetten, en dan ook nog op dusdanige wijze dat de bezoeker de voor hem relevante middelen snel en eenvoudig kan inzien.<br />Voorbeelden van overtuigingsmiddelen zijn uitgebreide productomschrijvingen, grote foto’s, vergelijkingsmogelijkheden, duidelijke communicatie omtrent organisatie, contactmogelijkheden, geaccepteerde betaalwijzen, bezorgkosten, aanbiedingen (van….voor….), productreviews, orderstatus, Top 5 best verkocht, actiecodes, tijdelijke aanbiedingen.<br />Al deze zaken zijn te realiseren in Magento op een gebruiksvriendelijke wijze waardoor u als ondernemer snel en eenvoudig uw acties kunt coördineren.<br /><span style="font-weight: bold;"><br />Kopen</span><br /><br />Zodra een bezoeker in uw webwinkel terecht gekomen is, het product wat hij zocht gevonden heeft en er van overtuigd is om het aan te schaffen, is alleen het afreken proces nog een mogelijke drempel. In het kijken en overtuigen aspect zijn al zoveel mogelijk drempels weggehaald door een duidelijke communicatie over totale kosten (inclusief de bezorgkosten), over geaccepteerde betaalwijzen en levertijden. Een heldere en gebruiksvriendelijke afrekenprocedure is belangrijk waarbij een bezoeker er voor kan kiezen om een account aan te maken of om zonder account de bestelling te plaatsen. Een bezoeker kan een ook een ander bezorgadres kiezen of de datum en tijdstip voor aflevering.<br />Wederom geeft Magento de mogelijkheid om het check-out proces helder en laagdrempelig te houden. Daarnaast biedt het ook de vrijheid aan ontwerpers om het design te optimaliseren voor conversie.<br /><br />Zoals gezegd is het mogelijk om nog een laatste pijler toe te voegen, namelijk retentie. Ook hiervoor biedt Magento weer mogelijkheden met nieuwsbrieven, actie mogelijkheden voor groepen gebruikers.<br /><br />Inmiddels zijn de eerste Magento webwinkels door ISAAC gerealiseerd of in ontwikkeling. We kunnen stellen dat de ISAACi enthousiast zijn over de vele standaard mogelijkheden in dit pakket terwijl we toch onze dingen kunnen blijven doen: een unieke oplossing of dienst neerzetten die bijdraagt aan de bedrijfsdoelstelling zonder concessies te doen aan nieuwe of bestaande processen.<br /><br />Wilt u ook weten wat Magento voor u kan betekenen, neem even contact met mij of mijn collega’s op, we maken graag een afspraak om de mogelijkheden die Magento biedt, te laten zien. Ik ben te bereiken op 040 215 53 52 of Paul.Luedke@isaac.nl.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3699758561392255208?l=isaacdevelopers.blogspot.com' alt='' /></div>Paul Luedke2009-08-19T09:05:00ZOWASPFrisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-80749224352160726022009-07-28T19:18:24Z2009-07-28T19:06:00Z<div>Nee, dit gaat niet over een in cirkeltjes rondzoemende wesp uit Silicon Valley, maar over the Open Web Application Security Project. Met het mission statement van <a href="http://www.owasp.org/">http://www.owasp.org/</a> schiet je al wat meer op bij het begrijpen van deze obscure afkorting. Daar lezen we in een Wiki-achtige layout namelijk:<br /></div><div> </div><div></div><br /><div><em><a href="http://1.bp.blogspot.com/_Vtk4Llv11Gw/Sm9OlUt2qtI/AAAAAAAAACE/wneyadOKcQ4/s1600-h/owasp-small.jpg"><img style="MARGIN: 0px 10px 10px 0px; WIDTH: 175px; FLOAT: left; HEIGHT: 175px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5363592084344711890" border="0" alt="" src="http://1.bp.blogspot.com/_Vtk4Llv11Gw/Sm9OlUt2qtI/AAAAAAAAACE/wneyadOKcQ4/s320/owasp-small.jpg" /></a>“[OWASP] is a worldwide free and open community focused on improving the security of application software. Our mission is to make application security visible, so that people and organizations can make informed decisions about true application security risks.”</em></div><div> </div><div><br />Het meest bekend is OWASP van de “Top 10”, een lijst met de tien belangrijkste kwetsbaarheden in (o.a. Java Enterprise Edition) web-applicaties. Deze lijst is behoorlijk pragmatisch tot stand gekomen, wat een goed gevoel geeft. Het gaat niet om zuiver theoretische chasing-a-once-in-a-million-cases, maar om heel concrete zaken die (te) regelmatig fout gaan bij de beveiliging (en dus ontwerp en ontwikkeling) van een webapplicatie. OWASP maakt elke paar jaar een nieuwe versie van de Top 10, uiteraard steeds pas wanneer de omstandigheden voldoende veranderd zijn. De huidige versie is die van 2007, en ten opzichte van 2004 (de vorige versie) zijn er wat items van de lijst verdwenen (o.a. buffer overflows), en wat andere toegevoegd.</div><div> </div><div><br />Aandacht voor zaken op de OWASP Top 10 tijdens het hele ontwerp- en ontwikkelproces zorgt voor betere, veiligere, en, uiteindelijk, goedkopere webapplicaties, in elk geval qua total-cost-of-ownership. Soms is een OWASP-check min of meer verplicht, bijvoorbeeld om een PCI-DSS “audit” door te komen. De kans op grootschalig misbruik van je applicatie is dan wellicht niet zo groot (tenzij je Amazon, Ebay, Rabobank of PayPal heet natuurlijk), maar *als* het mis gaat zijn de gevolgen ook voor kleinere sites niet makkelijk te overzien. </div><div> </div><div><br />De Top 10, versie 2007 (tromgeroffel! Uiteraard schaamteloos onder Creative Commons geript van de Wiki van het nogal trage <a href="http://www.owasp.org/">OWASP.org</a> zelf):<br /></div><div> </div><div><a href="http://www.owasp.org/index.php/Top_10_2007-A1">A1 - Cross Site Scripting (XSS)</a><br />XSS flaws occur whenever an application takes user supplied data and sends it to a web browser without first validating or encoding that content. XSS allows attackers to execute script in the victim's browser which can hijack user sessions, deface web sites, possibly introduce worms, etc.<br /><br /><a title="Top 10 2007-A2" href="http://www.owasp.org/index.php/Top_10_2007-A2">A2 - Injection Flaws</a><br />Injection flaws, particularly SQL injection, are common in web applications. Injection occurs when user-supplied data is sent to an interpreter as part of a command or query. The attacker's hostile data tricks the interpreter into executing unintended commands or changing data.<br /><br /><a title="Top 10 2007-A3" href="http://www.owasp.org/index.php/Top_10_2007-A3">A3 - Malicious File Execution</a><br />Code vulnerable to remote file inclusion (RFI) allows attackers to include hostile code and data, resulting in devastating attacks, such as total server compromise. Malicious file execution attacks affect PHP, XML and any framework which accepts filenames or files from users.<br /><br /><a title="Top 10 2007-A4" href="http://www.owasp.org/index.php/Top_10_2007-A4">A4 - Insecure Direct Object Reference</a><br />A direct object reference occurs when a developer exposes a reference to an internal implementation object, such as a file, directory, database record, or key, as a URL or form parameter. Attackers can manipulate those references to access other objects without authorization.<br /><br /><a title="Top 10 2007-A5" href="http://www.owasp.org/index.php/Top_10_2007-A5">A5 - Cross Site Request Forgery (CSRF)</a><br />A CSRF attack forces a logged-on victim's browser to send a pre-authenticated request to a vulnerable web application, which then forces the victim's browser to perform a hostile action to the benefit of the attacker. CSRF can be as powerful as the web application that it attacks.<br /><br /><a title="Top 10 2007-A6" href="http://www.owasp.org/index.php/Top_10_2007-A6">A6 - Information Leakage and Improper Error Handling</a><br />Applications can unintentionally leak information about their configuration, internal workings, or violate privacy through a variety of application problems. Attackers use this weakness to steal sensitive data, or conduct more serious attacks.<br /><br /><a title="Top 10 2007-A7" href="http://www.owasp.org/index.php/Top_10_2007-A7">A7 - Broken Authentication and Session Management</a><br />Account credentials and session tokens are often not properly protected. Attackers compromise passwords, keys, or authentication tokens to assume other users' identities.<br /><br /><a title="Top 10 2007-A8" href="http://www.owasp.org/index.php/Top_10_2007-A8">A8 - Insecure Cryptographic Storage</a><br />Web applications rarely use cryptographic functions properly to protect data and credentials. Attackers use weakly protected data to conduct identity theft and other crimes, such as credit card fraud.<br /><br /><a title="Top 10 2007-A9" href="http://www.owasp.org/index.php/Top_10_2007-A9">A9 - Insecure Communications</a><br />Applications frequently fail to encrypt network traffic when it is necessary to protect sensitive communications.<br /><br /><a title="Top 10 2007-A10" href="http://www.owasp.org/index.php/Top_10_2007-A10">A10 - Failure to Restrict URL Access</a><br />Frequently, an application only protects sensitive functionality by preventing the display of links or URLs to unauthorized users. Attackers can use this weakness to access and perform unauthorized operations by accessing those URLs directly.</div><div> </div><div><br />Genoeg aandachtspunten dus!</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-8074922435216072602?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-07-28T19:06:00ZGoogle haalt software uit betaPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-39430479275146605242009-07-07T18:05:07Z2009-07-07T18:00:00Z<a href="http://www.annunaki.nl/wp-content/uploads/2008/11/gmail.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 250px; height: 250px;" src="http://www.annunaki.nl/wp-content/uploads/2008/11/gmail.jpg" border="0" alt="" /></a><br /><br />Het is ongelooflijk, maar Gmail is eindelijk niet meer in beta. Naast Gmail, die vijf jaar in beta heeft gestaan, zijn ook Google Docs (2006), Calendar (2007) en GTalk (2005) uit beta gehaald.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3943047927514660524?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-07-07T18:00:00ZMobiele variant van de Monitor ApplicatieXanderhttp://www.blogger.com/profile/03447323900696387776noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-10384189322168125062009-07-06T06:47:00Z2009-07-03T12:28:00ZDe afgelopen maanden heeft Roel geploeterd om voor ISAAC een applicatie te maken die de monitor tool van LaSer kan weergeven op een mobiel device, waaronder een blackberry. Dit moest hij voor elkaar krijgen zonder enige voorkennis over Java, JBoss, Eclipse en browsermogelijkheden van mobiele apparaten... een hele opgave dus.<br /><br />Maar, afgelopen week is hij geslaagd en heeft hij de eerste versie van de 'mini monitor' klaar. Het is een hele basic HTML versie die precies doet wat de gebruiker wil: in één oogopslag zien of er iets mis is, en zo ja wat er mis is en waardoor het komt. Zo kan de gebruiker direct actie ondernemen als hij even zijn blackberry checkt.<br /><br />Tijdens zijn afstuderen kwamen er wel enkele interessante zaken naar voren, bijvoorbeeld de beperktheid van de browserfunctionaliteit van veel mobiele devices. Ze hebben allemaal vaak andere standaarden en ondersteunen niet allemaal hetzelfde (IE6-7-8, firefox, opera... all over again). Er is dus helaas geen eenvoudige manier om een website mobiel-proof te maken. Daar zullen we nog even mee moeten wachten totdat de mobiele devices de 'standaard browsers' gaan draaien of meer gaan ondersteunen.<br /><br />Ook bleek dat java niet zo eenvoudig is als het lijkt, in elk geval voor mensen die meer ervaring hebben met script-talen. Dat heeft Roel met de harde hand ondervonden, maar hij is er uiteindelijk toch wel enigszins uitgekomen (met een beetje hulp). En hij was erg enthousiast over de Expression Language, en daarmee scoor je natuurlijk ook punten bij mij ;)<br /><br /><a href="http://4.bp.blogspot.com/_R5KebRihKTw/Sk39SC185FI/AAAAAAAAAAM/FESlsiawiq0/s1600-h/blackberry.jpg"><img id="BLOGGER_PHOTO_ID_5354214018456020050" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 205px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_R5KebRihKTw/Sk39SC185FI/AAAAAAAAAAM/FESlsiawiq0/s320/blackberry.jpg" border="0" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1038418932216812506?l=isaacdevelopers.blogspot.com' alt='' /></div>Xander2009-07-03T12:28:00ZWebsite optimalisatiePieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-50019417009290747362009-07-03T09:55:47Z2009-07-03T09:50:00Z<a href="http://2.bp.blogspot.com/_MlgmCqJKfpo/Sk3U-ISGbNI/AAAAAAAAAMs/nT2l-_D_CLw/s1600-h/3525103502_7b6724b36b_m.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 161px;" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/Sk3U-ISGbNI/AAAAAAAAAMs/nT2l-_D_CLw/s320/3525103502_7b6724b36b_m.jpg" border="0" alt="foto door: Dave & Karin" title="foto door: Dave & Karin" id="BLOGGER_PHOTO_ID_5354169695853767890" /></a><br />Moderne websites zitten tjokvol afbeeldingen en "rich" onderdelen (javascript libraries als JQuery of Dojo) en hoewel bijna iedereen tegenwoordig ultrasnelle internet verbindingen heeft is het aan te raden om je website te optimaliseren. Door dit te doen laadt de pagina sneller en is de user-experience dus beter. Een goed begin om iets over website optimalisatie te leren is door het boek <a href="http://oreilly.com/catalog/9780596529307/" target="_blank">"High Performance Websites"</a> te lezen. Hierin staat in detail uitgelegd waar je op moet letten bij het maken van een website. Hieronder vind je een overzicht van de grootste snelheidswinsten die je kunt behalen.<br /><br />- Het aantal HTTP requests beperken<br />- Javascript en CSS verkleinen<br />- De site gzippen<br />- CSS sprites gebruiken<br /><br />Hiernaast zijn er nog veel meer mogelijkheden om snelheid te winnen, zoals het plaatsen van css files bovenaan in de webpagina en javascripts juist onderin, het vermijden van CSS expressies en redirects voorkomen. Maar we beperken ons nu tot de bovenstaande technieken omdat deze de grootste winsten boeken.<br />Het aantal requests beperken kan een behoorlijke winst opleveren. Stel dat je site zes javascript files inlaad. Hiervoor zijn dus ook zes requests nodig. Deze requests zitten op elkaar te wachten en dit kan dus voor een behoorlijke vertraging zorgen. Het aantal request kun je beperken door de zes javascript files te bundelen tot een enkele file. Dit zorgt ervoor dat de scripts niet op elkaar hoeven te wachten en met 1 request ingeladen kunnen worden. Naast de javascript bestanden kun je ook kijken naar de stylesheets die worden ingeladen en afbeeldingen. Afbeeldingen kun je ook bundelen tot een enkele afbeelding met behulp van CSS sprites. Een CSS sprite is eigenlijk een grote afbeelding met alle afbeeldingen op de site naast elkaar. Door in je CSS aan te geven waar je afbeelding begint, kun je de enkele afbeelding voor alle afbeeldingen op de site hergebruiken en hoeft er dus maar 1 afbeelding ingeladen te worden.<br /><br />Naast het verminderen van het aantal requests die gedaan worden kan ook het verminderen van de hoeveelheid data een snelheidswinst opleveren. De hoeveelheid data die je verzend kun je verminderen door, bijvoorbeeld, javascript en css bestanden te "minify-en". Je haalt dan alle overtollige tekens uit de bestanden (zoals enters, spaties, opmerkingen) waardoor de files stukken kleiner worden. Daarnaast kun je de hoeveelheid data verminderen door de site te g-zippen. gzip is een protocol die door de meeste browsers wordt ondersteund en de hoeveelheid data met 70 tot 80 procent kleiner kan maken.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5001941700929074736?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-07-03T09:50:00ZFrontcontrollersEdwinhttp://www.blogger.com/profile/10350795822237113205noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-54811431462361623582009-06-26T06:47:59Z2009-06-26T06:20:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tbn2.google.com/images?q=tbn:0mbi61vOn8X1hM:http://tiagoromero.files.wordpress.com/2008/12/scwcd_logo.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 102px; height: 70px;" src="http://tbn2.google.com/images?q=tbn:0mbi61vOn8X1hM:http://tiagoromero.files.wordpress.com/2008/12/scwcd_logo.jpg" border="0" alt="" /></a><br />Tijdens het volgen van een SCWCD (Sun Certified Web Component Developer) training kom je de coolste dingen tegen om een webapplicatie te ontwerpen en implementeren. Er wordt voortdurend op gehamerd dat je elk component in een webapplicatie (POJO, EJB, Servlet, JSP e.d.) moet gebruiken waar het voor dient, en ze niet misbruikt door bijvoorbeeld logica in een JSP te gaan stoppen omdat dat ook wel werkt. Neen! Men doet er verstandig aan de verschillende lagen van een applicatie te scheiden, het voornaamste voorbeeld hiervan is het MVC (Model-View-Controller) model. De details hiervan laat ik even achterwegen (Wikipedia is your friend) maar kort gezegd krijg je door dit model te implementeren een applicatie waarin de bussiness logic, het ophalen van data uit de bussiness logic en het tonen daarvan van elkaar gescheiden zijn. <br /><br />Bovenstaande kan gerealiseerd worden door in bijvoorbeeld een servlet de bussiness logic (via EJB o.i.d.) aan te spreken en het resultaat te delegeren naar JSP's die gevuld worden met deze data. Echter is dit model op deze manier ook niet perfect. In een website met omvangrijke grootte kan het schrijven van dergelijke code redundant en onoverzichtelijk worden. Je voelt het misschien al aankomen, maar inderdaad, ze hebben ook hier iets op gevonden. Een techniek (eigenlijk een design-pattern) met een vrij algemene naam "frontcontroller". Frontcontrollers zijn kleine frameworkjes die je kunt gebruiken om de code die je in je controllerlaag gebruikt om de bussiness logic aan te spreken evenals de code die je gebruikt om de view-laag aan te spreken in herbruikbare objecten te stoppen. Op die manier hoef je code om requests af te handelen niet steeds opnieuw te schrijven voor elke servlet die je in je applicatie gebruikt. Dit leidt al gauw tot meer overzicht in de code die makkelijker onderhoudbaar is. Een belangrijke kenmerk van een frontcontroller is dat het een centraal punt vormt in een applicatie voor het ontvangen van requests en het delegeren daarvan. <br /><br />Een keerpunt van een dergelijke techniek is dat je al je logica zult moeten implementeren in de frontcontroller, wat tot heel wat configuratie en omslachtigheid kan leiden. Bijvoorbeeld het delegeren van een bepaald request naar een bepaalde servlet kun je dan niet even snel met een RequestDispatcher doen, maar je zult een object moeten schrijven dat de configuratie en logica voor die delegatie bevat. Op die manier is het gebruik van een frontcontroller aan de ene kant een zegen en aan de andere kant een vloek. Zoals een bekende voetballer ooit zei (ja, Kruijff): elk noadeel heb een foordeel!<br /><br />Een bekende Java implementatie van een frontcontroller is Jakarta Struts, wat niet bij iedereen geliefd is. Dit geldt echter ook voor Spring, wat minder bekend is maar ook gebruikt wordt in de webwereld om je controller en view netjes neer te zetten. Spring heeft echter ook roots in de modellaag, eigenlijk een frontcontroller++ :P. Beide technieken implementeren het frontcontroller pattern op hun eigen manier, en je wilt ermee werken of niet. Mij persoonlijk lijkt het gebruik van Struts wel interessant, en misschien zelfs wel nuttig. Echter denk ik niet dat je het moet gebruiken in websites van kleine omvang omdat je dan waarschijnlijk niet het potentieel eruit haalt.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5481143146236162358?l=isaacdevelopers.blogspot.com' alt='' /></div>Edwin2009-06-26T06:20:00ZOpen SourcePieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-25947752494455355872009-06-19T11:14:56Z2009-06-19T11:09:00Z<a href="http://1.bp.blogspot.com/_MlgmCqJKfpo/Sjty_iTRJmI/AAAAAAAAAKw/eCk8gyObvRA/s1600-h/freerunner_shop1_large.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 171px; height: 320px;" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/Sjty_iTRJmI/AAAAAAAAAKw/eCk8gyObvRA/s320/freerunner_shop1_large.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5348995418297542242" /></a><br />Open source wordt vaak gezien als iets dat te maken heeft met software. Zo kennen we veel handige open source tools in het land van Java. Voorbeelden hiervan zijn onder andere <a href="https://www.hibernate.org/">Hibernate</a> als ORM laag tussen databases en de eigen Java applicatie en <a href="http://wicket.apache.org/index.html">Wicket</a> een web framework voor java. <br /><br />Maar er zijn ook nog andere vormen van open source. Zo is er bijvoorbeeld de "<a href="http://en.wikipedia.org/wiki/Open_Game_License">open game license</a>", ontworpen voor role playing games. Deze licentie is in 2000 ontworpen door Wizards of the Coast voor het 'd20 systeem'. Helaas is er ook <a href="http://en.wikipedia.org/wiki/D20_system">kritiek op de licentie</a>, onder andere door de controle die Wizards of the Coast er over heeft, aangezien deze een aantal uitgevers de kop gekost heeft.<br /><br />Nog een interessant open source product is de <a href="www.openmoko.org">openmoko</a>. Dit is een open source smartphone waar alle aspecten van de telefoon open zijn gehouden (met uitzondering van een aantal chips, voor zover ik weet), dus niet alleen de software. Je kunt de schemas van de electronica en de CAD files gewoon downloaden op de website. Wel moet er gezegd worden dat het nog een "work in progress" is. De software om alle hardware aan te sturen is nog niet af. Zelfs de hardware heeft nog bugs, maar dat is op te lossen voor mensen die niet al te bang zijn en durven te solderen in hun telefoon. Gelukkig is de tweede versie van de telefoon (GTA02 Freerunner) al een stuk beter als de eerste. De volgende blog post zal de openmoko verder uitdiepen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2594775249445535587?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-06-19T11:09:00ZMeer Taart voor ISAACValentijn Scholten (ISAAC)http://www.blogger.com/profile/12425265502283982291noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-71741770914123434462009-07-17T13:32:54Z2009-06-19T09:58:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PeoTVk3i0sU/Sjth02qowxI/AAAAAAAAABE/A66wyRsnb0s/s1600-h/3641091800_f0e4d7fa45.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_PeoTVk3i0sU/Sjth02qowxI/AAAAAAAAABE/A66wyRsnb0s/s400/3641091800_f0e4d7fa45.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5348976543088034578" /></a><br />Een van de ISAAC teams werd vandaag blij verrast met taart. <a href="http://www.lasernederland.com">Laser Nederland</a>, Een van ISAACs partners, heeft vandaag taart laten bezorgen als dank voor de extra inzet rondom nieuwe release.<br /><br />Wij zijn natuurlijk erg blij dat onze inzet wordt gewaardeerd. Dus Laser Nederland bedankt!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7174177091412343446?l=isaacdevelopers.blogspot.com' alt='' /></div>Valentijn Scholten (ISAAC)2009-06-19T09:58:00ZVan ontwikkelomgeving naar test- en productieomgevingPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-28569554659296246592009-06-12T12:26:08Z2009-06-12T12:22:00ZEen van de dingen waar een applicatieontwikkelaar mee te maken krijgt, is het configureren van de software voor verschillende omgevingen. De applicatie wordt ontwikkeld op een ontwikkelomgeving, gaat daarna in het algemeen naar een omgeving waar de klant een en ander kan bekijken en testen, en wordt vervolgens op een productieomgeving geplaatst, al dan niet na een aantal aanpassingen. Deze omgevingen hebben hun eigen instellingen nodig. Bij het uitrollen van een nieuwe versie van de applicatie naar een omgeving moet de omgeving de juiste instellingen krijgen en/of houden. Er zijn veel manieren om dit mogelijk te maken, een van de eenvoudigste is via files in verschillende bestandsformaten. Er worden dan verschillende files gemaakt met per omgeving de specifieke configuratie. Vaak is er een file met standaard instellingen, die overschreven kan worden om specifieke eigenschappen aan te passen. Deze files moeten op een goede manier worden beheerd en uitgerold. Er zijn veel verschillende frameworks en tools om dit te realiseren. Een ervan is de Commons Configuration van het Apache Commons project, te vinden op <a href="http://commons.apache.org/configuration/">de Apache website</a>. Hiermee kan configuratie worden ingelezen vanuit bijvoorbeeld properties files, XML files, Windows INI files, System properties, etc. Eigenschappen kunnen meerdere waardes hebben indien gewenst, en zijn bovendien van een bepaald type. De toegang tot de eigenschappen verloopt via de generieke <a href="http://commons.apache.org/configuration/apidocs/org/apache/commons/configuration/Configuration.html">Configuration</a> interface. <br />ISAAC heeft inmiddels in verschillende projecten naar tevredenheid gebruik gemaakt van de XMLConfiguration van Apache Commons. Handmatige aanpassingen na het uitrollen van een applicatie zijn voor deze projecten niet meer nodig.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2856955465929624659?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-06-12T12:22:00ZGraphical comparison of programming languagesFrisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-74315300087299417872009-05-31T16:11:54Z2009-05-31T15:57:00Z<strong></strong>How to compare the speed and code size of programming languages? What language is really slow but also very compact in writing? Are the Ruby religionists right? And is TCL-script really as annoyingly, depressingly bad at performance (and else) as some legacy systems (that we @ISAAC have to integrate with) seem to prove to us every day? I found a nice article with very interesting graphics the other day, via a posting at Slashdot. Note when you scroll directly to the graphs: there are several Java versions in the results.<br /><br />The rest is shamelessly ripped from "The Square root of X divided by zero" blog, by Guillaume Marceau.<br /><br />(orginally posted at: <a href="http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependability-of.html">http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependability-of.html</a> )<br /><br /><strong>The speed, size and dependability of programming languages</strong><br /><a href="http://shootout.alioth.debian.org/">The Computer Language Benchmarks Game</a> is a collection of 1368 programs, consisting of 19 benchmark reimplemented across 72 programming languages. It is a fantastic resource if you are trying to compare programming languages quantitatively. Which, oddly, very few people seems to be interested in doing.<br /><br />The Benchmark Game spends a lot of efforts justifying itself against claims that the <a href="http://shootout.alioth.debian.org/u32q/miscfile.php?file=benchmarking&title=Flawed%20Benchmarks">benchmarks are always flawed</a> and that the whole exercise is pointless. I don't think it is. In fact, I've found that The Game is remarkably effective at predicting which forum hosts programmers annoyed at the slowness of their language, and that's good enough for me.<br /><br />I was happy to find that in addition to speed The Game also publishes a line-of-code metric for each benchmark programs in each language. Thanks to this The Game let us at explore a fascinating aspect of programming language design: the tension that exist between expressiveness and performance. It is this tension that gives the expression "higher-level programming language" a pejorative connotation. When you are coding this high, you might be writing beautiful code, but you are so far away from the hardware you can't possibly get good performance, right?<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Vtk4Llv11Gw/SiKqcDbU5gI/AAAAAAAAABk/M7U1hg8-5GM/s1600-h/compare1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="http://1.bp.blogspot.com/_Vtk4Llv11Gw/SiKqcDbU5gI/AAAAAAAAABk/M7U1hg8-5GM/s320/compare1.png" alt="" id="BLOGGER_PHOTO_ID_5342019506947810818" border="0" /></a>If you drew the benchmark results on an XY chart you could name the four corners. The fast but verbose languages would cluster at the top left. Let's call them system languages. The elegantly concise but sluggish languages would cluster at the bottom right. Let's call them script languages. On the top right you would find the obsolete languages. That is, languages which have since been outclassed by newer languages, unless they offer some quirky attraction that is not captured by the data here. And finally, in the bottom left corner you would find probably nothing, since this is the space of the ideal language, the one which is at the same time fast and short and a joy to use.<br /><br />Each pinkish dot in this chart comes from one language implementing one benchmark solution, so there are 1368 dots, minus a few missing implementations. Both axes show multipliers of worsening from best. That is, if a particular solution is not the best one, the axis show how many times worse it is when compared to the best. The barrier of dots on the left side means that it is common to have many solutions near the best performer (The best performer is usually one of a handful of C compilers.) On the right side and beyond it, there are a number of distant points which are clipped out of view by the edge. As it stands, the right edge represents 8-fold worse performance than the best solution.<br /><br />The distribution of pink points is more uniform along the Y axis (verbosity) than along the X (slowness), suggesting that the world has not hit a wall in the progression of the expressiveness of programming languages the way it has with performance.<br /><br />Like many scientific datasets, the data coming from The Computer Language Benchmark Game is rich in shapes, insight and stories. In order to retain as much of the shape as possible, it is critical to avoid calculating averages, as averages tend to smooth over the data and hide interesting sources of variation. The average function does to numbers what Gaussian blur does to pictures. Avoid it if you want to see the edges.<br /><br />One such source of variation that attracted my curiosity was dependability: how well does the language performs across a variety of tasks, such as those composing the benchmark suite? A language might be concise most of the time, but if once a month a quirk of the language forces the code to be five times as large as what it ought to be, it's a problem.<br /><br />In order to show dependability, and to avoid relying on averages and standard deviations, I drew star charts in the following manner. Take, for example, the Java benchmarks. Starting with the previous chart and its 1368 dots, I added a gray line from the XY position of each Java benchmark to the position of the overall average of all the Java programs.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Vtk4Llv11Gw/SiKq0OPyzTI/AAAAAAAAABs/9rXwX8k1Ccs/s1600-h/compare2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 286px; height: 320px;" src="http://3.bp.blogspot.com/_Vtk4Llv11Gw/SiKq0OPyzTI/AAAAAAAAABs/9rXwX8k1Ccs/s320/compare2.png" alt="" id="BLOGGER_PHOTO_ID_5342019922169089330" border="0" /></a><br />The center of the star is Java's average performance, and the branches shoot out to the individual benchmarks. The resulting shape says something about Java. On the X axis (slowness), we see that the performance is impressive, often brushing near the "wall of best performance" of C on the left. But on a few occasions the performance breaks down and the star shoots to the right. On the Y axis (code size), the star spreads across the chart, twice brushing near the top. Also the center of the star is slightly above the centroid of the background cloud. In other words, Java is not a particularly concise language, and in fact it is sometime depressingly convoluted, but its performance is excellent except when it's not.<br /><br />The next chart arranges the entire collection of the 72 programming languages available at The Computer Language Benchmark Game into a 8x9 grid. The chart is a so-called 'small multiples' design: each swatch in the grid has the same axes in the same scales as each other. It's the same setup as the one for Java that we just saw. The 1368 dots in the background are the same throughout. The intent is to make it easy to compare the shape of the star between languages (across the page), and against the general trend (in the background).<br /><br />The swatch of the languages are grouped into columns according to their overall performance. Thus the fastest languages are in the first column on the left and the slowest are on the right. Within each column the swatches are sorted by average code size, with the best one at the bottom. In this way, the disposition of the grid mimics the axes within the swatches.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Vtk4Llv11Gw/SiKrJ331aYI/AAAAAAAAAB0/sh6qDKoGpkg/s1600-h/compare3.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 246px; height: 320px;" src="http://1.bp.blogspot.com/_Vtk4Llv11Gw/SiKrJ331aYI/AAAAAAAAAB0/sh6qDKoGpkg/s320/compare3.png" alt="" id="BLOGGER_PHOTO_ID_5342020294120139138" border="0" /></a><br />This chart is a treasure of narratives.<br /><br />The languages in the first column all have tall thin pogo-stick stars. They show strikingly consistent performance, maxing out the CPU times after times. Their code sizes, on the other hand, are spread all over. The bottom left three languages, <a href="http://www.cons.org/cmucl/">Cmucl</a>, <a href="http://regina-rexx.sourceforge.net/">Regina</a> and <a href="http://community.schemewiki.org/?Stalin">Stalin</a> are outliers. These languages do not have enough benchmark implementations in the database to generate fully fleshed stars.<br /><br />In the rightmost three columns we find many bushy stars, flat and wide. These are the scripting languages whose communities have not invested as much effort into building optimizing compilers for their language as they have spent tweaking its expressiveness. There are, however, a few spectacular exceptions. <a href="http://shootout.alioth.debian.org/u32q/lua.php">Lua</a>, which has always been noted for its good performance among scripting languages, shows a beautiful round star in the swatch at (5, 2), counting from the bottom left. Even better, the star of <a href="http://luajit.org/">Luajit</a> (3, 1) seems to squeeze itself in the coveted bottom left corner, amongst academic Juggernauts such as <a href="http://mlton.org/">Mlton</a> (2, 1), <a href="http://caml.inria.fr/">Ocaml</a> (3, 2), <a href="http://dynamo.iro.umontreal.ca/%7Egambit/wiki/index.php/Main_Page">Gambit</a> (4, 1), and <a href="http://www.haskell.org/">Haskell</a> (4, 2).<br /><br />The shape of the Haskell star, specifically the way that it bends up, suggest to me that writing high-performance programs in Haskell is a bit of a black art, and that some of the benchmarks submissions could be improved if someone got around to it. It also suggests that the tweaks introduced to boost the performance occupy a lot of code space. (I hope someone from the Haskell community will be able to confirm whether this is the case)<br /><br />I find the swatch for the language <a href="http://clean.cs.ru.nl/">Clean</a> at (1, 8) quite interesting, in light of the oddly shaped Haskell star. Clean is a lazy language just like Haskell. Its star looks like the result of smashing Haskell star against the left wall, as if a huge effort of optimization had paid off.<br /><br /><a href="http://psyco.sourceforge.net/">Psyco</a> (4, 1) is a decent improvement on the standard <a href="http://www.python.org/">Python</a> (7, 1) evaluator but it is still rather bushy. On the plus side, both versions of Python can claim many of the smallest programs in the collection. <a href="http://www.ruby-lang.org/en/">Ruby</a> (8, 1) might also compete for titles, but unfortunately its performance is so bad its star falls off the performance chart.<br /><br /><a href="http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29">C#</a> (3, 4) has the same shape as<a href="http://en.wikipedia.org/wiki/Java_%28programming_language%29"> Java</a> (3, 7), merely 1, 2, or three rows down, depending on how you count. The arrival of <a href="http://www.scala-lang.org/">Scala</a> (6, 7) in the Java world is a mixed blessing. While it fixes the worse convolutions (it has no top-of-the-square points) it also introduces terrible performance hiccups (the points which shoots out to the right.)<br /><br />Is interesting to see <a href="http://groovy.codehaus.org/">Groovy</a> (7, 5) right next to <a href="http://www.plt-scheme.org/">MzScheme</a> (6, 5). Both languages have similarities in terms of the features that would impact the performance of the evaluator. You would expect Groovy to display better performance since it uses the Java virtual machine and all its optimizations, but the reverse is true.Finally, the top right corner is occupied by specialty languages, with their momentous stars which reach across the performance spectrum along both axes, from the very best to the very worst.<br /><br /><strong>Does introducing functional features kill performance?</strong><br />No, it does not. In the following chart, the ordering is the same as in the large chart. Languages which include functional features such as lambda, map, and tail call optimization are highlighted in green. C compilers, C++ and C-derivatives are in blue. The blues dominate the first column. The greens occupy the main diagonal, from the oddball corner to the "ideal" corner. Ultimately the first factor of performance is the maturity of the implementation.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Vtk4Llv11Gw/SiKrc1AVXPI/AAAAAAAAAB8/m-ru_bBBLjM/s1600-h/compare4.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 271px; height: 400px;" src="http://1.bp.blogspot.com/_Vtk4Llv11Gw/SiKrc1AVXPI/AAAAAAAAAB8/m-ru_bBBLjM/s400/compare4.png" alt="" id="BLOGGER_PHOTO_ID_5342020619767995634" border="0" /></a><br /><strong>Source code</strong><br /><a href="http://gmarceau.qc.ca/files/shootout.ss">The code to generate these charts</a> runs in <a href="http://www.plt-scheme.org/">PLT Scheme (MzScheme)</a> v4.1.5. You will need <a href="https://alioth.debian.org/scm/viewvc.php/shootout/website/websites/gp4/data/data.csv?root=shootout&view=log">the data file</a> from The Game's cvs repository.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7431530008729941787?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-05-31T15:57:00ZTeamwork op hoog niveau: het ISAAC Self-Service DinerLeoniehttp://www.blogger.com/profile/13696550720926907229noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-62953531277046943592009-05-15T14:09:58Z2009-05-15T14:05:00Z<a href="http://4.bp.blogspot.com/_z_Eh1tixdX0/Sg13re9jyeI/AAAAAAAAAB4/2ZLhjTW3ihU/s1600-h/isaacdiner.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 153px; height: 400px;" src="http://4.bp.blogspot.com/_z_Eh1tixdX0/Sg13re9jyeI/AAAAAAAAAB4/2ZLhjTW3ihU/s400/isaacdiner.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5336052722433247714" /></a><br />Donderdag 14 mei vond bij ISAAC het ISAAC Self-Service Diner plaats in het kader van teambuilding en algemene gezelligheid.<br /><br />Alle werknemers van ISAAC werden ingedeeld in teams met hun eigen taken en verantwoordelijkheden: <br />het boodschappenteam, de afwassers, het tafeldekteam, de bediening en natuurlijk de koks voor het voorgerecht, hoofdgerecht en nagerecht.<br /><br />Samen heeft iedereen zijn taken goed vervuld, alles liep op rolletjes en het eten was heerlijk!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6295353127704694359?l=isaacdevelopers.blogspot.com' alt='' /></div>Leonie2009-05-15T14:05:00ZForms controleren met JQueryPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-74724087506319301132009-05-08T14:09:38Z2009-05-08T13:57:00Z<a href="http://1.bp.blogspot.com/_MlgmCqJKfpo/SgQ9Fk6069I/AAAAAAAAAKo/ZFX0c2ydIbg/s1600-h/jquery-logo.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 236px; height: 85px;" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/SgQ9Fk6069I/AAAAAAAAAKo/ZFX0c2ydIbg/s320/jquery-logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5333455024732564434" /></a><br />JQuery maakt het gebruik van Javascript in websites eenvoudiger met een kleine core library die is uit te breiden met plugins. Deze plugins zijn beschikbaar voor haast alles wat je mogelijk zou willen doen. Zo ook voor het valideren van formulieren. Hiervoor zijn meerdere plugins beschikbaar maar de beste is toch wel de "validation" plugin. Met deze plugin is het mogelijk om met slechts een enkele regel javascript een eenvoudige controle uit te voeren op een formulier. Je controleert dan enkel of een aantal velden zijn ingevuld. Complexere controles zijn mogelijk door regels en functies toe te voegen aan de validatie. <br /><br />Stel je hebt het volgende formulier op je site:<br /><br /><form id="formulier"><br /> <input type="text" name="voornaam" id="voornaam" /><br /> <input type="text" name="achternaam" id="achternaam" /><br /> <input type="submit" value="opslaan" /><br /></form><br /><br />Om op dit formulier te controles toe te voegen zijn twee stappen nodig:<br /><br /><li>de verplichte velden moeten de class "required" krijgen</li><br /><li>met een regel javascript moet worden aangegeven dat het formulier gecontroleerd moet worden</li><br /><br />De eerste stap is eenvoudig, stel "achternaam" is verplicht, ons formulier ziet er dan als volgt uit:<br /><br /><form id="formulier"><br /> <input type="text" name="voornaam" id="voornaam" /><br /> <input type="text" name="achternaam" id="achternaam" class="required" /><br /> <input type="submit" value="opslaan" /><br /></form><br /><br />de tweede stap zetten we in de "ready" methode van jquery:<br /><br /><script><br /> $(document).ready(function(){<br /> $("#formulier").validate();<br /> };<br /></script><br /><br />Dat is alles, wanneer de gebruiker nu het veld "achternaam" niet invult krijgt hij de melding dat het veld verplicht is. Naast "required" zijn er meer classes beschikbaar in de plugin, zoals "email" voor het valideren van e-mailadressen, "url" voor het valideren van url's, enz. Naast deze standaard methoden kun je ook je eigen toevoegen. Laten we zeggen dat "achternaam" niet alleen verplicht is, maar ook alleen letters mag bevatten. We kunnen dan onze eigen methode maken om dit te controleren.<br /><br /><script><br /> $.validator.addMethod('tekst', function (value) { return /^[A-Za-z]*)$/.test(value) }, 'Achternaam mag alleen tekst zijn'); <br /></script><br /><br />De bovenstaande code voegt een methode toe om dit te doen met de naam 'tekst'. Hiervoor gebruik je de methode "addMethod()" waar je drie parameters aan meegeeft. Als eerste de naam van de nieuwe methode. De tweede parameter is een functie die de controle uitvoert en een true teruggeeft als de meegegeven waarde voldoet en een false als hij niet voldoet. De laatste parameter is de foutmelding die getoond moet worden. Na de methode toegevoegd te hebben kan de naam ("tekst" in dit geval) samen met de andere functies als class aan een inputveld toegevoegd worden.<br /><br />Naast het toevoegen van methodes is er ook nog de mogelijkheid om regels toe te voegen. Regels kunnen worden gebruikt om een functie ergens van afhankelijk te maken. Bijvoorbeeld, stel we willen wel dat "achternaam" verplicht is, maar alleen als er niks is ingevuld bij "voornaam". We kunnen dan aan de methode "validate()" een regel toevoegen die dit controleert.<br /><br /><script><br /> $(document).ready(function(){<br /> $("#formulier").validate({<br /> rules: {<br /> achternaam : {<br /> required: {<br /> depends : function() { return ($("#voornaam").val() == '');}<br /> }<br /> }<br /> }<br /> });<br /> };<br /></script><br /><br />De bovenstaande code voegt de regel voor "achternaam" toe. hierin staat een "depends" (een afhankelijkheid) die controleert of de ingevulde waarde bij "voornaam" leeg is of niet.<br /><br />Als laatste willen we natuurlijk een aangepaste foutmelding tonen als achternaam niet is ingevuld. Ook dit voegen we toe aan de validate methode, achter de rules.<br /><br /><script><br /> $(document).ready(function(){<br /> $("#formulier").validate({<br /> rules: {<br /> achternaam : {<br /> required: {<br /> depends : function() { return ($("#voornaam").val() == '');}<br /> }<br /> }<br /> },<br /> messages: {<br /> required: "Dit veld is verplicht"<br /> }<br /> });<br /> };<br /></script><br /><br />In het messages blok kunnen we een opsomming maken van alle methodes die we in de classes invullen met daarachter een tekst. Deze tekst wordt getoond wanneer de validatie op dit punt niet goed gaat.<br /><br />Dit is de basis van de functionaliteit van de validation plugin, natuurlijk is nog meer mogelijk dan alleen het bovenstaande, maar hiermee vang je 99% van de formulier-validaties op.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7472408750631930113?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-05-08T13:57:00ZRoefeldag bij ISAACKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-213527918514701692009-04-23T13:31:46Z2009-04-23T13:16:00ZIn het kader van de <a href="http://www.roefeldag.com/" target="_blank">roefeldag</a> heeft ook ISAAC twee groepjes kinderen gedurende een middag uitgelegd wat wij doen en hoe wij dit doen. Onder begeleiding van een ISAAC medewerker, mochten de kinderen een LEGO robot programmeren zodat deze zelfstandig een parcours kon afleggen. Het was een plezierige en succesvolle middag waarbij we als organisatie konden terugblikken op een leuke nieuwe ervaring om ons werk eens te laten zien aan de volgende generatie.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4ymxIapfbE4/SfBsKmh3yJI/AAAAAAAAAC4/W6VwdcVX8Gg/s1600-h/roefeldag.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 309px;" src="http://4.bp.blogspot.com/_4ymxIapfbE4/SfBsKmh3yJI/AAAAAAAAAC4/W6VwdcVX8Gg/s400/roefeldag.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5327877288576403602" /></a><br /><br /><span style="font-weight:bold;">Jantje Beton Roefeldag</span><br />De naam <a href="http://www.jantjebeton.nl/">Jantje Beton</a> Roefeldag komt van het Belgische woord 'roefelen' wat 'snuffelen' of 'ontdekken' betekent. Al meer dan 15 jaar laat Jantje Beton kinderen van 7 tot 13 jaar een kijkje nemen in de wereld van volwassenen. Een mooie gelegenheid om organisaties, verenigingen en bedrijven in hun buurt te leren kennen en te beleven wat volwassenen nou zoal de hele dag doen. Tijdens een roefeldag doen kinderen zelf mee en mogen ze zelf de rol van bijvoorbeeld bakker, brandweerman of portier vervullen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-21352791851470169?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2009-04-23T13:16:00ZVers brood door TwitterKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-42038310768657189992009-04-23T13:32:55Z2009-04-21T06:37:00ZOm de Twitter-hype te sponsoren hier nog een berichtje van een slimme hippe bakker in de UK. Het is een RE-blog dus bij deze de originele versie in het engels:<br /><br /><span style="font-weight: bold;">twitter-enabled box alerts customers to fresh bread</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4ymxIapfbE4/Se1r-H4seSI/AAAAAAAAACw/TXouyd-lnS0/s1600-h/bakertweet.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 144px;" src="http://4.bp.blogspot.com/_4ymxIapfbE4/Se1r-H4seSI/AAAAAAAAACw/TXouyd-lnS0/s320/bakertweet.jpg" alt="" id="BLOGGER_PHOTO_ID_5327032649262070050" border="0" /></a><br /><br />Everyone knows that baked goods tend to be best when fresh from the oven; the challenge for bakery customers is predicting when that might be. New technology from London agency <a href="http://www.pokelondon.com/">Poke</a> now removes the guesswork, however, by enabling bakeries to alert their customers via Twitter any time a new batch is done.<br /><br />Much the way fans of <a href="http://springwise.com/food_beverage/kogibbq/">LA's Kogi Korean BBQ</a> can follow the company on Twitter to find out where its taco truck is at any given moment, so <a href="http://www.bakertweet.com/">BakerTweet</a> allows bakers to keep their customers informed. But because bakery kitchens don't tend to be hospitable to electronic devices—replete as they are with flour, eggs and other messy stuff—BakerTweet uses a specially designed box that can withstand the messiest kitchen conditions. Bakers begin by creating an account online with BakerTweet using their regular computer, inputting all the baked items they want to Twitter about along with the body of the Tweet that will be sent out for each. Back in the kitchens, the wall-mountable BakerTweet box captures that information, allowing bakers to simply turn a dial to select which item they want to Tweet about at that moment ("Fresh Buns," for example) and then push a button to send the full Tweet wirelessly to Twitter. Customers following the bakery then get updated immediately when it's time to go get those buns. A <a href="http://vimeo.com/3972081">video on Vimeo</a> demonstrates BakerTweet in action.<br /><br />Poke staff originally developed BakerTweet for the <a href="http://www.albioncaff.co.uk/">Albion Cafe</a>—its neighbour in Shoreditch, London, and currently the site of the only prototype device—for the very practical purpose of finding out the best time to go get stuff there. (To find out what's available, they simply follow <a href="http://twitter.com/albionsoven">@albionsoven</a>.) However, as the company sagely notes itself, the technology is eminently applicable to just about any business that needs to communicate quickly and easily in real time about offers, pricing, stocks or other information. There's no word yet on pricing or availability; nevertheless, BakerTweet is not only a no-brainer to be implemented by bakers the world over as soon as possible, it's also yet another tasty illustration of the increasingly blurred lines between the online and offline worlds, as our sister site describes <a href="http://trendwatching.com/trends/offon.htm">in its OFF=ON briefing</a>. One to implement, adapt or partner with in the application of your choice!<br /><br />Website: <a href="http://www.bakertweet.com/">www.bakertweet.com</a><br />Spotted: <a href="http://springwise.com/weekly/2009-04-15.htm#bakertweet">Springwise</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4203831076865718999?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2009-04-21T06:37:00ZJava Swing: past, present and futureEdwinhttp://www.blogger.com/profile/10350795822237113205noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-89313845101157169432009-03-31T10:26:40Z2009-03-31T08:01:00Z<img src="http://blogs.sun.com/theplanetarium/resource/swing/swing-logo.png" align="left" />Swing is de lightweight GUI toolkit voor Java, gebouwd op de AWT toolkit. Beide waren al beschikbaar in een van de eerste versies van de JDK's die door Sun werden uitgebracht. Tot op heden is de Swing toolkit niet helemaal meegeëvolueerd met de rest van de JDK. Het maakt bijvoorbeeld nog geen gebruik van generics en de Event Dispatch Thread (de core-thread van Swing waar alle GUI acties op uitgevoerd worden) is qua code nog steeds zoals deze destijds is opgezet. Dit betekent dat het geen gebruik maakt van de concurrency componenten die vandaag de dag met de JDK geleverd worden. Ook zijn de standaard componenten die bij Swing geleverd worden, zoals JTable, JCombobox, etc, behoorlijk kaal en moet je zelf vaak heel wat code schrijven om component op te maken qua functionaliteit en stijl.<br /><br />Toch wordt in de tussentijd de toolkit wel bijgehouden. Er worden nog steeds bugs uit gehaald en de performance kan blijkbaar nog altijd beter. Tevens worden er verschillende libraries met generieke componenten in de JDK opgenomen die het programmeren in Swing vergemakkelijken. Dit zijn vaak hoger level componenten, ontwikkeld door Swing gebruikers, die een bepaalde functionaliteit bieden die je anders zelf zou moeten ontwikkelen of steeds overnieuw zou moeten schrijven. Op die manier is er voor Swing applicaties steeds minder boilerplate code nodig omdat je steeds meer componenten tot je beschikking hebt die je standaard kunt gebruiken. Denk hierbij aan de SwingWorker, het TimingFramework en JOGL. De laatste maakt zelfs 3D rendering in Swing applicaties mogelijk!<br /><br />Swing is van nature een toolkit die basisfunctionaliteit voor grafische applicaties biedt, maar wat niet veel mensen beseffen is dat dit juiste de kracht van de toolkit is. Dat heeft ook Sun ingezien en daarom willen ze in de volgende versie van de JDK (ja ja, versie 7 alweer!) gewoon verder gaan met het optimaliseren van de Swing engine. Tevens wordt er hard aan gewerkt om Swing in steeds meer frameworks te integreren. JavaFX bijvoorbeeld zal Swing componenten kunnen gebruiken voor bepaalde functionaliteit in dergelijke applicaties. Het verder uitbreiden van toepasbare Swing componenten laat Sun lekker over aan iedereen die hier aan mee wil werken. Ze hebben zelfs een website opengezet (http://openjdk.java.net/) dat als het zenuwstelsel hiervoor moet dienen.<br /><br />Ik ben benieuwd wat er van Swing in de toekomst gaat komen. De volgende JDK brengt geen wereldschokkende uitbreiding van de toolkit met zich mee, maar ik denk dat het juist aan de Swing communities is om de toepasbaarheid van Swing te vergroten. Nog steeds, na al die jaren dat Swing in ontwikkeling is, denk ik dat het voor veel ontwikkelaars een ondergewaardeerde toolkit is. Het potentieel van een robuuste, goed presterende applicatie met een mondwaterende gebruikersinterface behoort zeker tot de mogelijkheden maar de mogelijkheid hiervan is niet bij iedereen bekend. Natuurlijk is Swing niet de enige speler meer op de markt als het aankomt op een web- of desktopapplicatie met een mooie grafische interface. Toch is deze toolkit veruit de meest generieke, wat ook meteen zijn kracht en tegelijk zijn zwakte vormt.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-8931384510115716943?l=isaacdevelopers.blogspot.com' alt='' /></div>Edwin2009-03-31T08:01:00ZWellicht Java?Maartennoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-87734364950056072602009-09-30T10:10:18Z2009-03-20T08:26:00ZRecentelijk heb ik een weblog geschreven over een bepaalde "monad", namelijk de "Maybe Monad".<br />Maar toen ik er bijna klaar mee was kwam ik erachter dat ik ook nog een post moest schrijven voor deze ISAAC weblog. Het artikel is een beetje te groot, en wellicht te esoterisch, om zomaar te vertalen naar het Nederlands. Daarom geef ik hier een samenvatting.<br /><br /><a href="http://my.opera.com/MLeo/blog/2009/03/18/maybe-java" target="_blank">Het volledige artikel is hier te lezen.</a><br /><br />De Maybe Monad, in de simpelste van termen, gaat over de vraag, "Wat moet een functie teruggeven als de combinatie van parameters eigenlijk tot niks uitkomt?" Om een voorbeeld te noemen, delen door nul. De meeste talen die we tegenkomen in ons werk bij ISAAC geven, in dit geval, over het algemeen een "exception", of in geval van Javascript "NaN". In feite is een exception throwen precies wat er zou moeten gebeuren, omdat delen door nul nog helemaal niet is opgelost door de wiskunde. Maar een aantal talen naast Java leveren een antwoord op deze vraag met een mechanisme dat "lichter" is dan een exception. Om dit te doen word in vrijwel alle gevallen een variatie van de Maybe Monad gebruikt. In een aantal talen is dit enorm simpel uitgedrukt, bijvoorbeeld Haskell:<br /><code><br />data Maybe = Some a<br /> Nothing</code><br /><br />Of in Scala:<br /><br /><code>trait Option {}<br />sealed case class Some[A](val a:A) extends Option[A] {}<br />sealed case object None extends Option[Any] {}</code><br /><br />Maar dat zijn Haskell en Scala, en niet Java. Gelukkig is het (bijna) net zo simpel als in deze talen. Net zo simpel als een Pair of (simpele) Tuple class die iedereen wel eens schrijft tijdens een project. De Scala versie hierboven is eigenlijk enorm vereenvoudigd (maar is, binnen Scala helemaal functioneel te gebruiken), het heeft extra methoden, bijvoorbeeld een "getOrElse", die voor Some a terug geeft, en voor None de parameter die je meegeeft. Daarnaast is Option "Iterable", dat wil zeggen, je kan het in een for-loop gebruiken. Deze dingen zijn zeker nodig in Java, omdat Java geen Pattern Matching heeft, zoals Haskell en Scala (Haskell leeft erop!). Daarnaast zijn constant instanceof checks in je code niet veel beter dan null checks.<br /><br />In Java is de Maybe Monad niet veel moeilijker in het gebruik dan het bovenstaande (code is te vinden in de post hierboven):<br /><br /><code>public Maybe<integer> integerDivide(int value, int divisor);</code><br /><br />Het grootste voordeel is dat je de mogelijkheid dat het "fout" kan gaan expliciet gemaakt word, i.p.v. een runtime exception (zoals ArithmaticException, bij het delen door 0). Je wilt die niet zomaar krijgen in een 24/7/365 systeem alleen omdat een informatieleverancier ergens (per ongelijk) een 0 plaatst. Maar om try/catch om iedere deel operatie te zetten is ook weer te vervelend, het zelfde met iedere keer if statements om een deel operatie. Nu kan je gewoon, simpel, getOrElse aanroepen. Ik moet toegeven, in Haskell en Scala heb je het mooie Pattern Matching mechanisme, waar dit allemaal elegant word opgelost. Hoewel dit in Java iets minder elegant is, is het nogaltijd eleganter dan exceptions of velen if statements.<br /><br />Daarnaast beschrijf ik hoe je de Map interface kan uitbreiden zodat deze Some teruggeeft als de key daadwerkelijk bestaat, en None teruggeeft als deze niet bestaat. Heel handig als null een goede waarde is voor een value bij een Key. Je hoeft dan niet nog een keer de key op te zoeken. En dat gebeurd ook niet in de aangepaste get, omdat er alleen Some of None waardes erin staan zal het zo zijn dat als er null terugkomt (intern) het alleen kan betekenen dat de key niet bestaat, en dan kan None teruggegeven worden.<br /><br />Als laatste gaat de post over wat het nou toch is met die null, waarom ergeren we er ons toch iedere keer aan, en blijven we er toch bij terugkomen? Een van de karakteristieken van null is dat je het aan iedere type kan toewijzen, dit lijkt heel vreemd, en dat is het in feite ook. Null is een zogenaamde "Bottom Type", en is een type (in een Type System) dat (impliciet) een subtype is van alle andere types in het Type System. In Java is, bijvoorbeeld, Object een bottom type, zelfs Object subclasses Object in Java. Maar, er zit een gotcha aan, null heeft geen type. En dat is (vind ik) nou jammer, het betekend gewoon dat er allerlei special cases in de JVM en de Type System van Java zitten, alleen maar om die null waarde zonder type. Maar waarom is null nou bedacht?<br /><br />Die eer komt toe aan Sir Tony Hoare, in 1965, en hij noemt het zijn "Million Dollar Mistake". Het was toendertijd zo gedaan omdat het simpeler was om te maken. Ik zal zeker de eerste zijn om te zeggen dat luiheid over het algemeen een goede karakter eigenschap is voor een programmeur, maar nu, 44 jaar later, moet zelfs ik bekennen dat er gevallen zijn waar luiheid schade berokkend. Null references zijn er een van. Het is wellicht grappig om te weten dat C++ null pointers kan hebben, maar niet null references (het zou een compiler bug zijn als dat mogelijk was!). Maar de pijn lijkt een beetje verbeterd nu er Elvis operators (zoals ze deze noemen in Groovy) komen in Java7.<br /><br />En toch, ik vrees dat we voor een lange tijd niet af zijn van "null". Gelukkig hebben we gezien dat er "betere" dingen zijn in het geval "geen waarde". Dus, als je je afvraagt "wat moet ik doen als ik eigenlijk niks kan teruggeven vanuit deze functie?" Dus geen exception (tenzij het echt "exceptioneel" is) en ook geen null, want dat is een waarde, maar geen "None" terug! Maak het expliciet, de wereld zal je er dankbaar voor zijn.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-8773436495005607260?l=isaacdevelopers.blogspot.com' alt='' /></div>Maarten2009-03-20T08:26:00ZCompatibility wars: nieuwe browser wars?Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-51506049812610224472009-03-08T11:25:09Z2009-03-08T10:38:00ZHet is een tijdje redelijk rustig geweest aan het browserfront. Elke maand een procentje Firefox erbij en een procentje Internet Explorer minder in de wereldwijde gebruikersstatistieken, maar dat was het dan ook wel qua spanning. Inter Explorer 6 wil (helaas) maar niet echt doodgaan in de lijstjes, hoewel er vanuit Skandinavië dappere pogingen worden gedaan om deze jaren oude security- en stadaardhel de nek om te draaien met een <em>"Upgrade dan tenminste naar IE7"</em>-actie. En zoals mijn CTO Front-end-collega Koen onlangs wijs sprak: <em>"Ik heb eigenlijk liever dat IE6 gebruikers upgraden naar IE7 dan naar Firefox, want dan kunnen ze tenminste niet meer terug!".</em> Juist! Zo erg is het met IE6. Weg ermee dus, en upgraden, hup!<br /><br /><br /><p><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 415px; CURSOR: hand; HEIGHT: 300px; TEXT-ALIGN: center" alt="" src="http://www.maximumpc.com/files/u17625/Browser_Engine2.png" border="0" /> </p><p>Het lijkt er echter op dat we na een relatief rustige periode weer een nieuwe "oorlog der titanen" tegemoed gaan. Google kwam met het slim gethreadde hipster-browsertje Chrome (lekker snel maar niet echt een killer app naar mijn mening), maar Apple mengt zich nu ook zeer serieus in de strijd met de nieuwe Safari. En deze fraaie Safari 4-beta is 100% <a href="http://en.wikipedia.org/wiki/ACID3">ACID 3</a>-compatible! Voor de niet-zo-browser-en-web-savvy-lezer: ACID is een testsuite voor browsers om te beoordelen hoe goed een browser zich aan de webstandaarden weet te houden. IE6 scoort bijna of-the-record aan de onderkant, maar Safari 4 beta is in staat gewoon de volle 100% te scoren. Het kan dus gewoon wél! Voor webontwikkelaars is de gedachte aan een wereld met alleen maar ACID 3-compatible browsers op het internet, als een soort ultieme Red-Shoe-Diariesdroom: alles maar één keer testen, en het werkt meteen op elke PC of Mac! Oh boy oh boy! Als dat toch eens waarheid kon gaan worden! </p><p>Enfin, intussen zit Microsoft ook niet helemaal stil (IE8 komt er aan), maar helaas komt deze lang zo ver niet als Safari in de tests. IE zet wel weer een stap (en eerlijk: dit keer best een flinke), maar een echte sprong naar compatibiliteit zoals Safari en de nieuwe Opera die maken is het niet. Firefox doet zoals verwacht braaf mee in deze vooruitgangsdrift, maar lijkt wat problemen te hebben met de nieuwe Javascript-engine. Nu is een random crash en memory leak hier en daar natuurlijk ook wel traditie voor een Firefox-betaversie. </p><p>We kunnen bij ISAAC alleen maar hopen dat al die internet hatende systeembeheerders die hun medewerkers (for hell's sake) dwingen te blijven draaien op IE6 tenminste over gaan stappen naar IE8. Maar liever nog naar Safari dus, want dat lijkt een échte browser te gaan worden. </p><p>De heren van GeenStijl.nl linkten vandaag een erg interessant artikel over de "nieuwe" browser battle die in aantocht is. Een vergelijking van negen huidige en aankomende websurfapplicaties. Het is een artikel van MaximumPC.com, en <a href="http://www.maximumpc.com/article/features/browser_brouhaha_your_maximum_guide_browsers_today_and_tomorrow">brengt je in een paar minuten up-to-date met de huidige stand-van-zake</a> op browsegebied. Klikt allen! </p><p>Zoals David Duchovny aflevering na aflevering zei: "Dear red shoes...", let this dream become reality!</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5150604981261022447?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-03-08T10:38:00ZDotCMSXanderhttp://www.blogger.com/profile/03447323900696387776noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-47311171548170318592009-03-31T08:12:06Z2009-03-02T07:48:00ZEr is steeds meer vraag van klanten naar CMS functionaliteit, zodat ze zelf hun content kunnen beheren. Dan hoeven ze niet voor elke kleine aanpassing ISAAC te bellen, en hoeft ISAAC niet veel tijd te besteden aan kleine wijzigingen die altijd langer duren dan gepland. Er is binnen ISAAC gekozen voor DotCMS, een gebruiksvriendelijk java-based open-source systeem dat ook onder JBoss kan draaien. Dat betekent dat ISAAC hiermee makkelijk aan de slag kan, en ook extra wensen van de klant kan bewerkstelligen die buiten de huidige functionaliteit van het CMS systeem vallen.<br />DotCMS is op verschillende manieren te gebruiken. Zo kan het worden gebruikt om een hele website te beheren, of het kan worden gebruikt om alleen kleine delen van (bestaande) websites te CMS'en. Dus kan ISAAC op deze manier verschillende niveau's van CMS-baarheid aanbieden aan klanten.<br /><h2>Delen van de website in DotCMS</h2>DotCMS is oorspronkelijk bedoeld als CMS systeem voor een hele website, of in elk geval voor webpagina's. Je maakt een template (blauwdruk) van een pagina en hergebruikt dat in je website. Maar hoe de template eruit komt te zien heb je zelf in de hand. Je kan dus een HTML template maken, maar ook een XML template. ISAAC gebruikt deze mogelijkheid om content structuren aan te maken en te beheren in DotCMS, en de content aan te bieden via XML (SOAP communicatie bijvoorbeeld). Zo kan een andere website uit DotCMS zijn content halen.<br />Op deze manier kan een heleboel functionaliteit van DotCMS worden gebruikt en hoef je niet de hele website in DotCMS te zetten. En je hoeft geen eigen mini-CMS te maken. Dit scheelt een hoop tijd (en geld) en biedt klanten toch al aardige CMS functionaliteit. En met handig programmeerwerk kun je voorkomen dat er meerdere calls naar DotCMS nodig zijn om meerdere soorten content op te halen, dus veel latencty heb je niet. <h2>De hele website in DotCMS</h2>Uiteraard kun je ook de hele website in DotCMS zetten, op die manier is alles aanpasbaar voor de klant. Daarmee krijg je alle functionaliteit die in DotCMS zit tot je beschikking. Maar waar ik iedereen voor wil behoeden is dat het gebruik van DotCMS ook nadelen met zich meebrengt... Je werkt namelijk in een bepaalde structuur en daar zit je aan vast (dat is logisch, alleen ziet de klant dat anders). Daarom moet er een duidelijk beeld worden geschept bij de klant wat er nu precies wel en niet mogelijk is in DotCMS. De details zal ik hier niet noemen, maar voor medewerkers heb ik een wiki pagina gemaakt genaamd DotCMS_Schattingen. De naam verklapt al dat er schattingen staan per onderdeel, en er staat een lijst met details over functionaliteiten. Deze kunnen je helpen bij het praten met de klant en het maken van schattingen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4731117154817031859?l=isaacdevelopers.blogspot.com' alt='' /></div>Xander2009-03-02T07:48:00ZISAAC FlippertYpe de Grootblogger@ypedegroot.nltag:blogger.com,1999:blog-7522123552486127216.post-23944555900090718612009-03-02T21:40:32Z2009-02-27T16:24:00Z<span><span>Sinds begin januari 2009 staat er bij ISAAC een heuse Flipperkast! En wel een Williams – Star Trek Next Generation.<br />(Ter info: Hier bij ISAAC werken zo'n 20 "nerds" die software schrijven. Regelmatig worden hier StarTrek avonden gehouden. De één na de ander komt dan met een super special edition van STNG of STDS9. Er wordt dan democratisch besloten welke afleveringen gekeken worden. Vreemd genoeg zijn het altijd afleveringen waarbij "seven of nine" een grote rol vertegenwoordigd.)<br />Het is dus niet vreemd dat de flipperkast niets minder mocht zijn dan de nummer twee op de ranglijst player rated SS games StarTrek Next Generation."</span></span><br /><br /><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 271px;" src="http://4.bp.blogspot.com/_SAKim2GfRNI/SagWgnb7sJI/AAAAAAAAAA8/cHOChX18vBk/s400/stng_isaac.jpg" alt="" id="BLOGGER_PHOTO_ID_5307516910453895314" border="0" /><p></p><span class="Apple-style-span" style="font-size:medium;"><br /></span><p></p><p><br />Ene Jan-Willem spijkert 's-avonds zijn kennis bij op het gebied van flipperen. Hij heeft dan ook een sinds dag één de onovertroffen high-score:</p><p><br /><span><span xmlns=""><span><span xmlns=""><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SAKim2GfRNI/SagWrsc7vuI/AAAAAAAAABE/16bgYMTTfkM/s1600-h/isaac_highscore.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 125px;" src="http://4.bp.blogspot.com/_SAKim2GfRNI/SagWrsc7vuI/AAAAAAAAABE/16bgYMTTfkM/s400/isaac_highscore.jpg" alt="" id="BLOGGER_PHOTO_ID_5307517100778831586" border="0" /></a></span></span></span></span></p><p><br /></p><p>Mark heeft aangekondigd de nummer één op bovenstaande ranglijst aan te schaffen en hier bij ISAAC in bruikleen te plaatsen. Het betreft hier de kast: Twilight Zone.<br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2394455590009071861?l=isaacdevelopers.blogspot.com' alt='' /></div>Ype de Groot2009-02-27T16:24:00ZPearC, PC's met Mac OSX LeopardYpe de Grootblogger@ypedegroot.nltag:blogger.com,1999:blog-7522123552486127216.post-79700301031592030812009-02-27T23:07:20Z2009-02-26T22:15:00Z<strong>Design versus prestaties/specificaties</strong><br /><br /><strong>Inleiding: Mac of PC?</strong><br />Je bent pro Apple en anti PC of andersom. Zo was het en is het in veel gevallen nog steeds. Bij ISAAC zijn ongeveer 6 mac-o-fielen. Zodoende is er wel eens die welbekende mac-versus-pc discussie. Er bestaat een "stroming" die Mac-OS wel cool vind, maar niet wil betalen voor het design van Apple.<br /><br /><strong>Inleiding 2: waarom kiest apple voor intel?</strong><br />Apple moest doorontwikkelen op intel omdat de limiet van wat mogelijk was met de powerPC architektuur was bereikt. Halverwege het jaar 2005 bracht apple een developers transition toolkit uit die het mogelijk maakte om software gemaakt voor een powerPC architektuur te draaien op een intel based architektuur. In Januari 2006 bestuift Apple de markt met OSX 10.4.4 op intel machines. Een maand later verspreidde een programmeur een hack van dit OS, waarmee deze op non-apple intel based machines kon draaien. De hackintosh is geboren. <br /><br /><strong>De kern: PC's met Mac OSX</strong><br />Als je Windows op een Mac mag draaien waarom dan niet Mac-OS op een PC? In Amerika heeft Apple het bedrijf Psystar aangeklaagd omdat zij PC's verkopen waarop Mac OSX is geinstalleerd. In de EULA (end-user license agreement) staat dat het Mac-OS alleen op Apple producten geinstalleerd mag worden. Apple meent dat Psystar in strijd handelt met het auteursrecht en dat de goede naam van apple geschaad wordt. In Duitsland doet het bedrijf PearC (Pear als tegenhanger van apple en C van PC) precies hetzelfde. Volgens de FAQ van PearC zijn EULA's in Duitsland alleen geldig als ze vóór aankoop van de software te lezen zijn, wat bij Mac OSX niet het geval is. De goedkoopste PearC met OSX leopard kost nog geen €500,-.<br /><br /><strong>Vergelijk:</strong><br />Oke, de Mac is natuurlijk veel mooier, maar maakt het design "hem" meer dan €2000,- extra waard? De specs zijn zelfs "minder". Ik zeg gaan met die banaan!<br /><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 147px;" src="http://2.bp.blogspot.com/_SAKim2GfRNI/SacrqZYzdFI/AAAAAAAAAAM/FjXbcEpMlKc/s320/Afbeelding+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307258693248840786" /><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 144px;" src="http://3.bp.blogspot.com/_SAKim2GfRNI/SactEm63IhI/AAAAAAAAAAc/MonsbmAfwB8/s200/Afbeelding+5.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307260243069575698" /><br /><br /><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 222px; height: 69px;" src="http://4.bp.blogspot.com/_SAKim2GfRNI/Sacr8doJl8I/AAAAAAAAAAU/Wone-R6gAM8/s320/Afbeelding+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307259003624593346" /><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 197px; height: 400px;" src="http://4.bp.blogspot.com/_SAKim2GfRNI/Sact3w7TlBI/AAAAAAAAAAs/j76IZoYcZXo/s400/Afbeelding+3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307261121929122834" /><br /><br /><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 274px; height: 28px;" src="http://1.bp.blogspot.com/_SAKim2GfRNI/SacuEEgzpjI/AAAAAAAAAA0/R8DPlX_jn1Y/s400/Afbeelding+4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307261333345117746" /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7970030103159203081?l=isaacdevelopers.blogspot.com' alt='' /></div>Ype de Groot2009-02-26T22:15:00ZSafari 4 public beta: benchmark time!Koenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-26479052181550935262009-02-25T00:58:27Z2009-02-25T00:04:00Z<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">Today Apple released the latest version of t<span class="Apple-style-span" style="font-size:small;">heir browser: Safari 4. It's only a public beta but with an impressive list of </span><a href="http://www.apple.com/safari/whats-new.html"><span class="Apple-style-span" style="font-size:small;">new features</span></a><span class="Apple-style-span" style="font-size:small;"> including a JavaScript engine that is 4.5 times faster than the previous Safari version, I couldn't resist: benchmark time!</span></span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial; min-height: 14.0px"><span class="Apple-style-span" style="font-size:small;"><br /></span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">For this benchmark I used the webkit <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a> benchmark. This benchmark only tests the core JavaScript language, not the DOM or other browser APIs. Looking at the current RIA trend this makes sense: more and more of the application logic (and therefore data structure) is being run inside the browser, so core data structure manipulation will become much more important in the future. </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial; min-height: 14.0px"><span class="Apple-style-span" style="font-size:small;"><br /></span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">The benchmark runs a couple of tests that consist of crypto and 3d calculations, some bit operations, string and date manipulations, recursion, and object access tests. It returns the time it took to complete each test and the sum of all the tests is the overall score. <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?%7B%223d-cube%22:%5B56,151,155,152,153%5D,%223d-morph%22:%5B48,108,134,101,144%5D,%223d-raytrace%22:%5B45,134,133,117,136%5D,%22access-binary-trees%22:%5B28,27,28,26,29%5D,%22access-fannkuch%22:%5B45,44,47,47,47%5D,%22access-nbody%22:%5B37,116,104,112,111%5D,%22access-nsieve%22:%5B7,23,23,22,21%5D,%22bitops-3bit-bits-in-byte%22:%5B4,4,9,9,10%5D,%22bitops-bits-in-byte%22:%5B7,21,22,22,21%5D,%22bitops-bitwise-and%22:%5B20,25,20,27,22%5D,%22bitops-nsieve-bits%22:%5B52,52,52,18,16%5D,%22controlflow-recursive%22:%5B12,13,5,13,16%5D,%22crypto-aes%22:%5B45,15,44,43,43%5D,%22crypto-md5%22:%5B62,62,59,60,60%5D,%22crypto-sha1%22:%5B56,59,59,61,59%5D,%22date-format-tofte%22:%5B97,94,99,91,98%5D,%22date-format-xparb%22:%5B146,141,155,141,153%5D,%22math-cordic%22:%5B136,130,127,116,133%5D,%22math-partial-sums%22:%5B174,178,175,57,144%5D,%22math-spectral-norm%22:%5B51,51,51,48,57%5D,%22regexp-dna%22:%5B87,81,27,80,80%5D,%22string-base64%22:%5B89,87,83,79,81%5D,%22string-fasta%22:%5B127,131,125,84,125%5D,%22string-tagcloud%22:%5B177,177,189,100,259%5D,%22string-unpack-code%22:%5B153,156,153,158,153%5D,%22string-validate-input%22:%5B137,119,110,142,118%5D%7D">Here </a>is an example of one of my runs on safari 4 (time in milliseconds). </span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial; min-height: 14.0px"><span class="Apple-style-span" style="font-size:small;"><br /></span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">For the benchmark I used my </span><a href="http://www.laptopviews.com/dell-laptops/dell-latitude-830-laptop-pc/"><span class="Apple-style-span" style="font-size:small;">Dell latitude D830</span></a><span class="Apple-style-span" style="font-size:small;">, running Windows XP. I tested the following 5 browsers:</span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><br /></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial">- The new Safari 4</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial">- Google Chrome 1.0</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial">- IE 7</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial">- IE 6</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial">- Firefox 3.0</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial">- Opera 9.6</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><br /></p><p></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">After running the same test 5 times in each of the browsers I found the following results (lower bar is better)</span></p><br /><br /><center><img src="http://www.sudokoen.com/benchmark_small.gif" width="420" height="219" /></center><br /><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">In my very non-scientific tests the new Safari 4 is just a fraction faster than Google Chrome and about 2.2 times faster than Firefox and Opera. But it's much much faster than IE6 and IE7: a whopping 13 times on my machine.</span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial; min-height: 14.0px"><span class="Apple-style-span" style="font-size:small;"><br /></span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">Apple itself <a href="http://www.apple.com/safari/whats-new.html#performance">claims </a>to be 3 times faster than Firefox and even 30 times faster than IE7, using SunSpider and iBench as benchmarks. My findings where not this extreme, but impressive nonetheless. </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial; min-height: 14.0px"><span class="Apple-style-span" style="font-size:small;"><br /></span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">I guess Google's goal to raise the bar on JavaScript performance was a success. With their dependance on fast JavaScript for all their cloud apps I guess they are the ones that will be most pleased with this new version of Safari. </span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;"><br /></span></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Arial"><span class="Apple-style-span" style="font-size:small;">Oh, and don't forget </span><a href="http://www.isaac.nl//blogPostWrapper.jsp?show=raycasting+in+javascript"><span class="Apple-style-span" style="font-size:small;">our ultimate benchmark</span></a><span class="Apple-style-span" style="font-size:small;">. Yeah baby!</span></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2647905218155093526?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2009-02-25T00:04:00ZAfstudeerverslag: Data StreamingFrisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-18518764571070713302009-02-17T08:25:30Z2009-02-17T07:27:00Z<p>Alex Kasabov (2008)</p><p>What mechanisms are available to push data updates, resulting from a back-end model data changes, directly to (thin or thick) client applications that are connected to, or interested in updates? Which of these can be used in a Flash/Flex and Java Enterprise Edition-based environment, and how to keep only a loose coupling with the model when retro-applying them?<br /><br />These questions were faced by graduation student Alex Kasabov from Bulgaria, who dived into the subject and researched and prototyped technologies like BlazeDS, LiveCycle Data Services, WebORB and the connectivity with an Enterprise Java Beans 3 model through JMS (Java Messaging Service). Alex demonstrated his approach and findings by integrating push-datastreams with ISAAC's Personal Time Management software. The prototype made use of JBoss as an application server, JBoss MS, and BlazeDS from Adobe. Alex finished his project in July 2008 with an in-depth presentation at ISAAC.<br /><br />Due to the technical depth and insight, well-performed research and excellent reporting on his graduation project, Alex was rewarded with a 9 as graduation mark.</p><p><a href="http://www.isaac.nl/afstudeerverslagen/Alex%20-%20Final%20Report.pdf" target="blank">Download graduation report</a></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1851876457107071330?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-02-17T07:27:00ZAfstudeerverslag: Dashboard DevelopmentJasperhttp://www.blogger.com/profile/17582400414260678460noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-2683889953783550622009-02-12T14:24:13Z2009-02-11T11:29:00ZMerijn Bertels (2009)<br /><br />In iedere organisatie spelen de vragen "Hoe gaat het met proces X?" of "Hebben we de afgelopen drie maanden beter gepresteerd op gebied Y?". Deze vraagstukken dienen voor een efficiënt beslissingsproces zo snel mogelijk te worden beantwoord. Merijn heeft voor Loyalty Lab een systeem ontworpen dat de belangrijkste indicatoren van de organisatie meet, de Key Performance Indicatoren (KPI). Het systeem meet periodiek de performance van de organisatie en presenteert deze in een overzichtelijk dashboard. Via deze manier is het mogelijk om management informatie snel beschikbaar te stellen.<br />De afstudeerstage bestond uit twee fases:<br /><br />· Fase 1 : Inventariseren van indicatoren bij Loyalty Lab en deze vertalen naar KPI's.<br /><br />· Fase 2 : Het realiseren van een proof-of-concept dashboard.<br /><br />Merijn heeft zijn afstudeerstage voor BI op de Fontys Hogeschool Eindhoven in janauri afgerond. Hij gaat vrolijk een volgende studie volgen op de TU/e.<br /><br /><a href="http://www.isaac.nl/afstudeerverslagen/Merijn%20Bertels%20-%20Scriptie.pdf" target="blank">Download afstudeerverslag</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-268388995378355062?l=isaacdevelopers.blogspot.com' alt='' /></div>Jasper2009-02-11T11:29:00ZIngenieur in ondernemenPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-12829457287168440932009-04-06T15:06:28Z2009-01-30T09:29:00Z<strong>Het begon in 1999 met ISAAC (Internet Strategy and Automation Company), een bedrijfje dat websites bouwde en software maakte, bijvoorbeeld om webshops te onderhouden. Het was een onderneming van studenten. Nu werken er bijna veertig man en staat het in de top-50 van snelst groeiende Nederlandse technologiebedrijven. Eén van de directeuren is TU/e-alumnus ir. Max Hufkens (31). ‘In de komende vijf jaar willen we één van de grootste spelers van Zuid-Nederland worden voor complexe internetoplossingen. Het verleggen van je horizon – dat maakt ondernemen zo leuk.’<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MlgmCqJKfpo/SZVW1DiZ-KI/AAAAAAAAAIg/XVce30Ni92g/s1600-h/BVOF+2008_1029_BO+Isaac_Max+Hufkens.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 300px; height: 200px;" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/SZVW1DiZ-KI/AAAAAAAAAIg/XVce30Ni92g/s320/BVOF+2008_1029_BO+Isaac_Max+Hufkens.jpg" alt="" border="0" /></a></strong><a href="http://members.home.nl/p.heijman/Matrix%20p%2044-45.pdf" target="_blank"><strong>Klik hier om de PDF te downloaden</strong></a><br />(Matrix 4 2008)<br /><p>‘Ik heb altijd ondernemer willen worden, al tijdens mijn studie ambieerde ik een leidinggevende positie in een bedrijf. ISAAC was daarom een logische stap. Als directeur ben ik nu bezig met de koers uitstippelen, ideeën verwezenlijken, kansen zien en ze grijpen, en mensen motiveren om die kansen te benutten. Precies wat ik wilde. Wanneer zaken op hun plek vallen en je bent succesvol, dan geeft dat energie. Wanneer iets op zijn plek valt? Een klant heeft een idee. Die klus blijkt groot en het is de vraag of wij het aankunnen. We gaan het toch doen en dankzij onze kennis, creatief omgaan met de bestaande technieken en slim werken slagen we in de opdracht. Dat is denkwerk, puzzelwerk en soms gewoon je zin doordrijven: jawel, we gaan het wél doen. Vervolgens lever je een geslaagd product af. Dat is lekker.’ </p><p>Als ondernemer ben je vaak bereid meer risico’s te nemen dan de werknemers, dat zit in de aard van de ondernemer. Je moet dus mensen overtuigen. Zo is ons doel om in de komende paar jaar één van de grootste spelers van Zuid- Nederland te worden voor complexe internetoplossingen. Wanneer we met zeventig man zijn, kunnen we die oplossingen bieden voor mkb en grootbedrijf. We halen nu al mooie opdrachten binnen, maar uiteindelijk willen we een autoriteit zijn in ons vakgebied. Het verleggen van je horizon, dat maakt ondernemen zo leuk.’ </p><p><strong>Bandbreedte</strong><br /> ‘In 2003 studeerde ik af in technische informatica, ISAAC bestond toen al vier jaar. Ik begon het bedrijf met ir. Mark Hoogendoorn en dr.ir. Harm van Beek. We hadden onder meer een windows-applicatie waarmee je een webshop kon onderhouden. Mensen hadden toen vaak te weinig bandbreedte om hun site online bij te houden. Met onze tool kon je locaal en offline een site genereren. Wanneer je online kwam, werd de site aangepast. Het leuke is dat dit concept nu weer actueel is. Bij grote systemen die veel data verwerken heb je nu ook een tool nodig waarmee je op je eigen pc dit kan doen, deze applicaties werken via een browser veel te langzaam. We waren onze tijd dus aardig vooruit. We hadden het bedrijf naast de studie. We ambieerden geen baantje achter de bar, maar wilden dingen doen die we leuk vonden, zoals websites maken en programmeren. We hadden beperkt de tijd en konden dus niet op volle kracht producten in de markt zetten, maar we hebben er toch een handvol ontwikkeld en verkocht. </p> <p>Het begon met het ontwerpen van websites. Dat was toen iets exclusiever dan nu – inmiddels zijn er veel tools die het erg toegankelijk maken. Wij hadden contacten met een reclamebureau dat ‘iets’ met internet wilde doen. Het had interessante klanten, zoals het toenmalige Megapool, Horn en Media Markt. Wij deden kleine opdrachten, nog niet de corporate websites. We werkten ook voor PrimeLine, bekend van de financieringen ‘koop nu, betaal in 2010’. Toen maakten we voor dat bedrijf actiewebsites. </p> <p>Het is nog steeds een klant, maar nu één van onze grote klanten waar we een centrale rol hebben in de automatisering. Het reclamebureau ging failliet, en wij gingen met de klanten verder. Dat heeft geresulteerd in het ISAAC wat we nu hebben. Dit bestaat uit het maken en vermarkten van websites, de webtak. Onze softwaretak is gespecialiseerd in Enterprise Applicatie Integratie.<br /> Bijvoorbeeld: een klant heeft een SAP-systeem, het heeft een website en die twee moeten op elkaar worden aangesloten. Vaak heeft het zelfs meerdere online labels die met dat ene SAP-systeem moeten communiceren. Wij bouwen middleware waarmee je op een creatieve manier het systeem kunt ontsluiten naar de verschillende websites.’</p> <p><strong> Groei</strong><br /> ‘Een andere opdracht is voor LaSer Nederland, de eigenaar van PrimeLine. Dat bedrijf heeft een heel nieuw bancair systeem achter hun diensten gekocht. Ze hebben een eigen visa-kaart en een eigen leensysteem. Maar de broncodes van dat systeem dateren uit de jaren tachtig, toen internet nog helemaal geen rol speelde in die systemen. Wij hebben hier een middleware laag ingebouwd die het bancaire systeem met andere systemen combineert. De gegevens die daaruit komen worden gebruikt voor de websites. </p> <p>Zo kunnen bijvoorbeeld klanten van LaSer zelf adresgegevens wijzigen, de transacties van hun creditcard real-time inzien en online leningen aanvragen. Er wordt direct getoetst of je kredietwaardig bent. Dit was een mooie klus voor onze experts.</p> <p> Ons kantoor zit midden in Eindhoven, we kijken uit op de Stratumsedijk. Erg leuk dat we niet op een industrieterrein zitten, maar op termijn zullen we hier uit onze jas groeien. Er werken bijna veertig man die websites bouwen en programmatuur maken. Dit aantal zal hopelijk blijven groeien. Toen we met drie mensen waren, was het vooral alles zelf doen en veel bordjes in de lucht houden. Nu we met bijna veertig mensen hier werken, moet je bedrijfsprocessen sturen en optimaliseren. Daarvoor is een academische denkniveau noodzakelijk. De opdrachten die we doen zijn ook groter en vragen meer kennis. Misschien was het achteraf beter geweest als ik bedrijfskunde was gaan studeren, maar ook al werk ik niet meer als informaticus, het is toch goed om veel van de materie te weten. Het is een toegevoegde waarde om precies te weten wat wij als bedrijf verkopen.’</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1282945728716844093?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-01-30T09:29:00ZISAAC voor tweede keer in Technology Fast 50Pieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-91785453073959919722009-03-19T13:37:09Z2009-01-30T09:25:00Z<a href="http://1.bp.blogspot.com/_MlgmCqJKfpo/ScJKe3lhGoI/AAAAAAAAAIo/Pm25FuXkh6M/s1600-h/home_nieuws_fast50_2.gif"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 150px; height: 107px;" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/ScJKe3lhGoI/AAAAAAAAAIo/Pm25FuXkh6M/s320/home_nieuws_fast50_2.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5314892404428446338" /></a><br /><strong>Eindhoven, 10 oktober 2008 - ISAAC Software Solutions is op de 21ste plaats geëindigd in de Technology Fast 50 van accountancyfirma Delloite. Die goede positie in de ranglijst van de 50 snelst groeiende technologiebedrijven van Nederland, heeft ISAAC te danken aan een omzetgroei van maar liefst 789 procent over de laatste vijf jaar. De uitslag werd op 9 oktober jongstleden door Deloitte bekend gemaakt.</strong> <strong>In 2007 was ISAAC ook genomineerd, als enige uit de brainport Eindhoven, en bereikte toen de 27e plaats.</strong><br /><br />ISAAC Software Solutions houdt zich voornamelijk bezig met de ontwikkeling van online applicaties. Het Eindhovense bedrijf is in acht jaar uitgegroeid tot een belangrijke speler op het gebied van internettechnologie, met ruim 35 medewerkers en gerenommeerde internationale bedrijven in haar klantenpakket. Met innovatieve oplossingen stond ISAAC aan de wieg van vele vernieuwingen in de e-business.Volgens CEO Mark Hoogendoorn is de aanhoudende groei te danken aan de bijzondere combinatie van creativiteit en technische kennis en vakmanschap. Hoogendoorn: "Dankzij die mix kunnen we de toepassing van softwaresystemen en de online activiteiten van onze klanten doeltreffend integreren in hun bedrijfsvoering. Onze oplossingen leveren een directe bijdrage aan het bedrijfsresultaat van de opdrachtgever. En dáár gaat het tenslotte allemaal om."<br /><br /><span style="font-size:130%;"><span style="font-weight: bold;">Strenge criteria</span></span><br /><br />De Technology Fast 50 van Deloitte werd dit jaar voor de negende keer georganiseerd. Voor deelname aan de verkiezingen gelden strenge criteria. Zo moet onder meer een substantieel deel van de omzet uit zelf ontwikkelde technologie komen en moet de kandidaat veel aandacht besteden aan Research & Development. Er moet een minimale omzet van 50.000 euro in het basisjaar zijn gerealiseerd en een minimumomzet van 800.000 euro in 2007. De procentuele stijging over de afgelopen vijf jaar ten opzichte van het basisjaar bepaalt de plaats op de ranglijst.<br /><br /><br /><span style="font-size:130%;"><span style="font-weight: bold;">ISAAC vaste partner van o.a. grote retailbedrijven</span></span><br /><br />ISAAC creëert de middelen om efficiënt te ondernemen via internet met bijvoorbeeld strategische internetcampagnes en software voor de koppeling met bedrijfssystemen. Het bedrijf ontstond in 1999 aan de Technische Universiteit Eindhoven en leerde al snel op eigen benen te staan. Inmiddels werkt ISAAC voor grote organisaties als LaSer Lafayette Services Nederland (bekend van o.a. PrimeLine, Directa en cobranded Visa kaarten), De Harense Smid en Impact Retail. ISAAC maakte onlangs bovendien haar samenwerking bekend met Repay International, de aanbieder van het duurzame creditcardconcept ClimaCount. Als prefered partner realiseert ISAAC de ICT-componenten voor het internationale klimaatcompensatieprogramma.<br /><br />-----------------------------<br /><span style="font-size:85%;"><strong><em>Noot voor de redactie</em></strong><br /><em>Voor meer informatie kunt u contact opnemen met<br />Mark Hoogendoorn, tel. 040 2908979</em></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-9178545307395991972?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-01-30T09:25:00ZOnder moeders vleugels vandaanPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-36164777540821568612009-02-13T10:30:56Z2009-01-30T09:20:00Z<em>ISAAC in tijdschrift de Cursor</em><br /><br /><strong>Eindhoven - Een van de instrumenten van de TU/e om technostarters op weg te helpen, is de TOP-regeling. TOP staat voor tijdelijke ondernemersplaats. Daar komen ieder jaar een stuk of tien bedrijfjes uit voort, de een wat succesvoller dan de ander. Sommigen verliezen na het uitslaan van de vleugels alle contact met de TU/e en beseffen dat het vertrek van de campus ook nadelen met zich meebrengt. Cursor sprak met twee spin-off bedrijven van het eerste moment. ISAAC en Silver Arrows kunnen zich beide goed redden, maar de eerste wenst de banden met de TU/e toch weer aan te halen.</strong><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MlgmCqJKfpo/SZVLoJWqzHI/AAAAAAAAAIY/YlTmWY8NaM0/s1600-h/BVOF+2008_0904_CB+Isaac.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 270px; height: 180px;" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/SZVLoJWqzHI/AAAAAAAAAIY/YlTmWY8NaM0/s320/BVOF+2008_0904_CB+Isaac.jpg" alt="" border="0" /></a>Voor de tweede maal op rij is het Eindhovense ict-bedrijf ISAAC genomineerd voor de verkiezing van de vijftig snelstgroeiende technologiebedrijven in Nederland, de Technology Fast 50. Vorig jaar eindigde het bedrijf op de 27ste plaats. Die plaats is te danken aan de 824 procent omzetgroei die ISAAC de afgelopen vijf jaar realiseerde.<br /><br />ISAAC staat voor Internet Strategy And Automation Company. Het bedrijf realiseert, beheert en ontwikkelt software en websites voor detailhandel, financiële dienstverleners en semi-overheid. Het is in 1999 opgericht door drie TU/e’ers die een jaar later afstudeerden bij Bedrijfskundige Informatica en Technische Informatica. Een van hen is Mark Hoogendoorn. “Wij hebben destijds gebruik gemaakt van de TOP-regeling, het stimuleringsprogramma voor starters van een technologiebedrijf. Er waren een stuk of tien onderdelen waarbij hulp werd geboden, maar voor mij was alleen de huurregeling interessant.” Mede-ISAAC-oprichter Harm van Beek heeft daarnaast ook begeleiding van een coach en een lening ontvangen.<br /><br />Een aspirant-ondernemer met een innovatief idee kan via TOP onderdak op de campus krijgen, een lening van twaalfduizend euro en beschikking over mentoren en faciliteiten van de universiteit. Voor de renteloze lening van de Rabobank, alleen verkrijgbaar voor afgestudeerden, staat de TU/e garant. Met duizend euro in de maand kan een starter zich helemaal richten op zijn bedrijf en hoeft hij niet bij te verdienen om zijn dagelijkse boodschappen te kunnen betalen, zo is het idee.<br /><br />Hoogendoorn en kompanen Max Hufkens en Harm van Beek volgden de ondernemerscolleges van professor Leo Verhoef. De hoogleraar Ondernemerschap in kleine en middelgrote organisaties liet de studenten onder andere een businessplan schrijven. Daarop kregen Hoogendoorn, Hufkens en Van Beek voor ISAAC onder gunstige voorwaarden een plek in het Multimediapaviljoen (MMP). “Het gebouw was gevuld met kleine ondernemingen en het voordeel was dat je elkaar dagelijks ontmoette en elkaar op ideeën kon brengen”, zegt Hoogendoorn.<br /><br />De huidige 33 werknemers (en de gewenste 17 extra personeelsleden in 2009) van ISAAC pasten niet meer in hun ‘babykamer’ in het MMP. Het bedrijf verliet in 2006 de campus voor een groot pand tegenover het Parktheater aan de Elzentlaan. ISAAC wil zichtbaar zijn voor zijn klanten en de blauwe gevelvullende letters moeten daarbij helpen. Het is Hoogendoorns hoop dat Eindhovenaren over een tijdje schouwburgbezoekers de weg wijzen met de woorden: “dat ligt tegenover ISAAC.”<br /><br /><span style="font-weight: bold;font-size:130%;" >Nadeel</span><br /><br />Voor ISAAC zit er ook een nadeel aan de nieuwe huisvesting; er is geen aanloop van TU/e-studenten. “We kunnen TU/e-studenten een goede plek bieden om stage te lopen of af te studeren. We spreken dezelfde taal en in tijden van een krappe arbeidsmarkt is ieder contact met mogelijke werknemers meegenomen.”<br /> <br />Daarom is Hoogendoorn plannen aan het bedenken om de banden met de TU/e aan te halen. “Ik denk aan gastcolleges over het starten van een eigen bedrijf en aan prestigieuze afstudeerprojecten voor informaticastudenten. Dan maken ze kennis met het echte Java-programmeren.” Ook stagiairs van de TU/e zijn welkom bij ISAAC.<br /><br />Hoogendoorn zal komende maand studenten een aanbod doen: kom minimaal twaalf uur bij ons werken en ontvang naast je loon certificaten die niet misstaan op je cv. “Al onze werknemers mogen tien procent van hun werktijd besteden aan studie”, zegt de oprichter, die in zijn hiërarchieloze bedrijf geen directiekamer heeft, geen pakken draagt en zich net als ieder ander op vrijdagmiddag in de computerspelletjeshoek stort met een biertje en een pizza op schoot. “Een ander idee om contact met de TU/e te krijgen, is misschien het instellen van een scriptieprijs”, bedenkt Hoogendoorn nog.<br /><br /><span style="font-weight: bold;font-size:130%;" >Silver Arrows</span><br /><br />Het MMP is ook de geboortegrond van Silver Arrows. Dit internetbedrijf, opgericht door TU/e’er Philip van Uden, zit inmiddels op Flight Forum, dichtbij vliegveld Welschap. Van Udens innovatieve idee om alle Limburgse toeristische informatie op multimediazuilen te rangschikken zodat de slecht functionerende VVV-kantoortjes hun deuren konden sluiten, is niet echt van de grond gekomen. Maar Van Uden is een doorzetter en vond een nieuwe markt in het maken en verbeteren van websites voor zeer diverse klanten in onder andere horeca, detailhandel en advocatenbureaus.<br /> <br />In 1996 begon hij aan de studie Technische Bedrijfskunde. Na een aantal drukbezette jaren waarin hij meer deed dan enkel tentamens halen, kwam hij in 2002 in aanmerking voor de TOP-regeling met zijn idee voor de toeristische multimediazuilen. Hij heeft alleen gebruik gemaakt van het huurvoordeel en de korting op de masterclass Ondernemen van Leo Verhoef.<br /><br />Van Uden, een student met ondernemersbloed, zag het als koren op zijn molen dat de TU/e begin dit millennium vooral ondernemende ingenieurs wilde afleveren. Helaas stortte de ict-wereld kort daarop in. “Voor mijn gevoel is de TU/e in 2004 haar aandacht weer gaan verleggen naar de wetenschappelijke ingenieurs. Dat gold in ieder geval voor de opleiding Technische Bedrijfskunde. Het is jammer dat het stimuleren van technostarters zo snel is verminderd zonder rekening te houden met mensen die al bezig waren. Je wilt niet weten hoe moeilijk het was om Silver Arrows, dat inmiddels een aantal medewerkers had, draaiende te houden en ook nog mijn opleiding af te ronden.” Vanaf augustus 2007 kan Van Uden eindelijk zijn ingenieurstitel op zijn visitekaartje zetten. “Nu heb ik een mooie zaak met drie personen in vaste dienst, ik heb steeds grotere opdrachten en zit op een toplocatie. Veel banden met de TU/e zijn er op dit moment niet. Mogelijk kan ik in de toekomst afstudeerders en stagiairs een plek bieden, maar dan dienen ze wel te beschikken over grote motivatie en daadkracht.”<br /><br /><a href="http://www.tue.nl/cursor/internet/jaargang51/cursor02/achtergrond/achtergrond.php?page=a2" target="_blank">Klik hier voor het originele bericht (http://www.tue.nl/cursor/)</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3616477754082156861?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-01-30T09:20:00ZWereldwijd CO2-compensatieprogramma In zee met Eindhovens ICT-bedrijfPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-46368767174718101952009-02-06T11:41:50Z2009-01-30T09:14:00Z<span style="font-style: italic;">ISAAC slaat de handen ineen met Repay International </span><br /><br /><span style="font-weight: bold;">Eindhoven - Het Eindhovense internet-technologiebedrijf ISAAC slaat de handen ineen met Repay International, de aanbieder van het duurzame creditcardconcept ClimaCount. De twee innovatieve ondernemingen hebben de intentie vastgelegd om langdurig te gaan samenwerken. Als preferred partner gaat ISAAC de ICT-componenten realiseren voor het internationale klimaatcompensatieprogramma.</span><br /><br />Repay International biedt wereldwijd onder de naam ClimaCount een programma aan waarmee creditcardhouders CO2-neutraal kunnen consumeren. De schadelijke CO2 uitstoot die de aangeschafte producten gedurende hun levenscyclus veroorzaken, wordt volgens een door TNO gecontroleerde rekenmethodiek berekend en vervolgens gecompenseerd door gecertificeerde CO2-reducerende projecten. Banken, creditcardmaatschappijen, retailers en NGO’s koppelen het programma onder licentie aan hun eigen creditcards. Internetcommunicatie en de online ontsluiting van rekenmodellen en databasegegevens zijn belangrijke pijlers onder de formule van het ClimaCount programma. Niet geheel toevallig zijn dat bij uitstek specialiteiten van softwareontwikkelaar en internetspecialist ISAAC.<br /><br />Repay International heeft ISAAC onder meer in de arm genomen om het www.climacount.com platform te realiseren. Hierop wordt onder andere de CO2 uitstoot van de creditcard transacties inzichtelijk gemaakt voor de kaarthouder. Met een speciaal ontwikkelde 'CO2 calculator' kan de consument precies zien hoe het Climacount programma de uitstoot compenseert. De klant kan daarbij bovendien zijn eigen voorkeuren voor CO2-compensatieprojecten aangeven (bijvoorbeeld bosbouw, CO2-opvang of investeringen in duurzame energie).<br /><br />ClimaCount bepaalt de benodigde compensatiemaatregelen aan de hand van de (anonieme) transactiegegevens die creditcardorganisaties verstrekken. ISAAC bouwt de omvangrijke database waarin die gegevens worden verwerkt en realiseert de gebruiksvriendelijke ontsluiting via de website voor de ingelogde kaarthouder. In de toekomst zal ISAAC de functionaliteit van de ClimaCount-website steeds verder uitbreiden met nieuwe applicaties. Inmiddels werkt Isaac aan de technische ondersteuning van ClimaCount in de Verenigde staten waar het begin 2009 op de markt zal komen.<br /><br /><span style="font-size:130%;"><span style="font-weight: bold;">Over ISAAC<br /><br /></span></span>ISAAC creëert de middelen om efficiënt te ondernemen via internet met bijvoorbeeld strategische internetcampagnes en software voor de koppeling met bedrijfssystemen. Het bedrijf ontstond in 1999 aan de Technische Universiteit Eindhoven en leerde al snel op eigen benen te staan. Inmiddels werkt ISAAC voor grote organisaties als LaSer Nederland (bekend van o.a. PrimeLine, Directa en cobranded Visa kaarten), De Harense Smid, Impact Retail en Repay International. In 2007 stond ISAAC als een van de snelst groeiende technologiebedrijven van Nederland in de Deloitte Technology Fast 50. Ook in 2008 is ISAAC genomineerd in deze prestigieuze lijst met succesvolle bedrijven.<br /><br />Met de samenwerking met Repay International zet ISAAC een belangrijke vervolg stap in de wereld van financiële dienstverlening. Zie ook <a href="http://www.isaac.nl">www.isaac.nl</a>.<br /><br /><span style="font-size:130%;"><span style="font-weight: bold;">Over Repay International</span></span><br /><br />RePay International verzorgt de internationale verspreiding van het ClimaCount creditcardprogramma. Om de effectiviteit van het klimaatcompensatieprogramma te garanderen werkt Repay International samen met onafhankelijke organisaties zoals PricewaterhouseCoopers en onderzoeksinstituut TNO. RePay International is gevestigd in 's-Hertogenbosch en heeft voor de facilitaire ondersteuning een vestiging in San Francisco. RePay International is een werkmaatschappij van Tendris Holding B.V., een organisatie die ideeën op het gebied van maatschappelijk verantwoord ondernemen ontwikkelt en ondersteunt. Zie ook <a href="http://www.repay-international.com/">www.repay-international.com</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4636876717471810195?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2009-01-30T09:14:00ZAfstudeerverslag: "Showcase Web 2.0"Koenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-4140475604019482362009-02-12T14:25:15Z2009-01-30T09:09:00Z<span style="font-weight: bold;">Edwin Derks en Sjors Keuninkx (2007)</span><br /><br />Er worden door en door nieuwe technieken ontwikkeld die problemen met bestaande webbrowsers op een eigen manier oplossen. Deze technieken, gedefinieerd onder de term “Rich Internet Application (RIA)” of “Web2.0”, bieden in het algemeen meer functionaliteit en grafische mogelijkheden dan standaard XHTML. Tijdens hun afstudeerstage in de eerste helft van 2007 hebben Edwin en Sjors deze voor ISAAC interessante technieken gebruikt voor het ontwerp en de bouw van een Web 2.0 showcase. Hierbij hebben ze onder andere gebruik gemaakt van technieken als het Flex 2 Framework, Hibernate en SQL Server 2005.<br /><br /><a href="http://www.isaac.nl/afstudeerverslagen/showcaseweb2.pdf" target="blank">Download afstudeerverslag</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-414047560401948236?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2009-01-30T09:09:00ZAfstudeerverslag: "Java Business Rules in Action"Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-77198989355137104312009-01-30T09:08:53Z2009-01-30T09:07:00Z<strong>Roy Bouten (2007)</strong><br /><strong></strong><br />In de eerste helft van 2007 studeerde Roy Bouten in het kader van zijn HBO-opleiding Informatie af binnen ISAAC Software Solutions. Zijn opdracht betrof het vergelijken en analyseren van verschillende server-side scripting-technieken voor een Java Enterprise Edition-omgeving en het bouwen van een prototype van een JEE-omgeving waarin real-time modificeerbare business rules een rol spelen. Roy heeft hiertoe technieken als JBoss Rules, JBMP en JRuby vergeleken en op basis van JBoss Rules en Enterprise Java Beans (EJB3) een prototype applicatie ontwikkeld. Het domein van deze prototype applicatie was een applicatie voor de bepaling van loyaliteitspunten in een retail-omgeving, vergelijkbaar met een spaarprogramma als Airmiles. Echter, één en ander volledig dynamisch configureerbaar middels variabele business rules.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7719898935513710431?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-01-30T09:07:00ZAfstudeerverslag: "Real-Time event notification & log statistics in an asynchronous server environment"Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-83157045387409588262009-01-30T09:06:35Z2009-01-30T09:06:00Z<strong>Maarten Daalder (2006)</strong><br /><strong></strong><br />De stageopdracht van Maarten Daalder (tweede helft 2006), als onderdeel van de HBO-opleiding Hogere Informatica, betrof het ontwerp van een systeem waarmee uit een Java Enterprise Environment, dynamisch te configureren events gepubliceerd kunnen worden, en log gegevens gevisualiseerd kunnen worden. De event-notificatie had hierbij als extra, specifieke eis de vraag om deze zonder gebruik te maken van een Java Runtime Environment, zichtbaar te maken in een Windows system-tray omgeving. Om aan deze eis te voldoen is gebruik gemaakt van een Win32 user interface.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-8315704538740958826?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-01-30T09:06:00ZAfstudeerverslag: "Compositus"Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-16102691728510598522009-01-30T09:05:04Z2009-01-30T09:03:00Z<p><strong>Mathijs Savenije en Stijn Janssen (2006)</strong></p><p>Mathijs en Stijn studeerden voor hun HBO informaticaopleiding af op de opdracht met de naam “Compositus”. Tijdens de eerste helft van 2006 werkten zij aan het ontwerp en de implementatie van een op schaalbare Java Enterprise Edition gebaseerde “Retail Middleware”, waarmee het mogelijk is om dynamisch en volledig configureerbaar gegevens van leveranciers en webshop-software te koppelen. Sleutelwoorden hierin waren transactiebeheer, real-time data acquisition, en interface-abstractie. Deze (grote) ontwerpopdracht resulteerde uiteindelijk in een systeem op basis van de JBoss Application Server.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1610269172851059852?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-01-30T09:03:00ZAfstudeerverslag: "Het ISAAC Intranet"Koenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-59451325196876617232009-01-30T09:01:32Z2009-01-30T09:00:00Z<strong style="font-weight: bold;">Pham Quang Dung</strong><span style="font-weight: bold;"> (2005)<br /><br /></span>Door de sterke groei van ISAAC in de laatste jaren zijn we op zoek naar een voor ons passende intranet oplossing. Meer en meer softwareprojecten worden parallel ontwikkeld door steeds meer programmeurs en applicatie architecten. De “oude” manier van werken waarbij project documentatie in speciale netwerkfolders werd opgeslagen was niet meer voldoende. Tijdens zijn stageopdracht (tweede helft 2005) heeft Dung een inventarisatie van de Intranetbehoeften binnen ISAAC gemaakt en aan de hand daarvan een pakketselectie gemaakt. Het door hem voorgestelde pakket (Microsoft SharePoint) is uiteindelijk succesvol binnen ISAAC in productie genomen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5945132519687661723?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2009-01-30T09:00:00ZAfstudeerverslag: "De mobiele versie van PTM"Koenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-64129699230348618932009-02-12T14:25:39Z2009-01-30T08:57:00Z<h5 style="font-weight: bold;"><span style="font-size:130%;"><strong>Truong Huu Nhi Bui en Reyner Jovian Karnali</strong> (2005)</span></h5>Tijdens hun stage in de eerste helft van 2005 beschrijven Reyner en Nelson het ontwerp- en implementatieproces van een mobiele versie van de PTM (Personal Time Management) applicatie. Deze uitbreiding maakt het mogelijk om uren te registeren met behulp van bestaande software op mobiele devices zoals mobiele telefoons, smart phones en PDA’s. Enkele van de technologieën die Reyner en Nelson gebruikt hebben is Java als belangrijkste programmeertaal, JavaServer Pages en HTML voor de creatie van de pagina’s en SQL voor de database toegang. Voor het ontwerp van de mobiele PTM applicatie, hebben ze gebruik gemaakt van MVC (Model View Controller) model 2 met Java Beans als Model, JSP pagina’s als View, en Java Servlets als Controller.<br /><br /><a href="http://www.isaac.nl/afstudeerverslagen/mobileptm.pdf" target="blank">Download afstudeerverslag</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6412969923034861893?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2009-01-30T08:57:00ZAfstudeerverslag: "Java Image Manipulation Component for Webservices"Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-51222216529527698342009-02-12T14:25:52Z2009-01-30T08:54:00Z<strong>Yves Janse (2005)</strong><br /><strong></strong><br />Tijdens zijn afstudeeropdracht (eerste helft 2005) voor de HBO-opleiding Mens&Informatica heeft Yves Janse bij ISAAC Software Solutions onderzoek gedaan naar het bewerken van afbeeldingen middels een responsieve web interface. Tijdens de uitvoering is een compleet, object-georiënteerd platform gespecificeerd en ontwikkeld waarin onbeperkt nieuwe afbeeldingsbewerkingen gedefinieerd kunnen worden. De afhandeling van Undo/Redo en andere framework-zaken is in dit platform geïntegreerd.<br /><br /><em>Deze opdracht resulteerde uiteindelijk in een prachtige 9 als eindcijfer, en het winnen van de </em><a href="http://www.isaac.nl/publicaties/fontys_award.jpg" target="_blank"><em>Fontys/Infoland scriptieprijs</em></a><em> voor de beste informatica-afstudeerscriptie.</em><br /><em></em><br /><a href="http://www.isaac.nl/afstudeerverslagen/imagemanipulationcomponetforwebservices.pdf" target="blank">Download afstudeerverslag</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5122221652952769834?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-01-30T08:54:00ZProefschrift: "Specification and Analysis of Internet Applications"Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-80597441492194741602009-02-12T14:26:00Z2009-01-30T08:48:00Z<strong>Harm van Beek (2005)</strong><br /><strong></strong><br />Tegenwoordig vinden er meer en meer activiteiten plaats via het internet. Dit betekent dat internet-applicaties steeds belangrijker worden. Omdat deze applicaties ook in omvang en complexiteit groter worden, wordt het specificeren en implementeren van zulke applicaties steeds lastiger. Er komen veel kwesties de hoek om kijken, zoals sessie-beheer en het correct implementeren van het parallel gebruik door meerdere cliënten. Onze mening is dat formele methoden kunnen helpen deze problemen aan te pakken.<br /><br />In dit proefschrift wordt een nieuwe specificatietaal, DiCons, geïntroduceerd, die gebruikt kan worden voor het specificeren van een speciale groep van internet-applicaties, de zogenaamde gedistribueerde consensus applicaties. Dit zijn applicaties die door een groep van cliënten gebruikt kan worden om een gemeenschappelijk doel te bereiken. Hierbij hoeven gebruikers elkaar niet fysiek te ontmoeten en vindt alle communicatie asynchroon plaats. Voorbeelden van zulke applicaties zijn het trekken van Sinterklaaslootjes, een stemming, een veiling, maar ook het plannen van een vergadering.<br /><br />We bekijken eerst de verschillen tussen op het web gebaseerde en “gewone” window-gebaseerde applicaties. Vervolgens bekijken we de verschillen en overeenkomsten tussen enkele voorbeeldapplicaties en we kijken welke risico’s het gebruik van web-applicaties met zich meebrengt. Daaruit abstraheren we concepten die voor alle applicaties in het voor ons interessante domein van belang zijn.<br /><br />Met deze concepten in ons achterhoofd ontwikkelen we een op proces-algebra gebaseerde formele specificatietaal. De taal bevat naast de standaardoperatoren voor sequentiële en alternatieve compositie drie conditionele operatoren: de conditionele keuze, de conditionele herhaling en de conditionele onderbreking. We leggen uit hoe toestanden en tijd aan de taal toegevoegd worden en welke communicatie-primitieven we gebruiken voor het modelleren van communicatie via het internet tussen gebruikers en de applicatie zelf. Daarnaast voegen we de mogelijkheid voor het specifiëren van transactioneel gedrag toe. Dit doen we door eerst een formalisme in detail uit te werken dat dit transactioneel gedrag beschrijft. Dit formalisme wordt vervolgens aangepast zodat het in de DiCons specificatietaal past.<br /><br />Om de toepasbaarheid van de taal aan te tonen worden enkele eigenschappen van specificaties bewezen. Daarnaast wordt een methodiek gegeven voor het testen van internet-applicaties. Deze methodiek is gebaseerd op transitiesystemen die onder andere met behulp van \dicons\ specificaties beschreven kunnen worden. Met behulp van een implementatie van het algoritme voor het testen van internet-applicaties worden enkele applicaties getest. Ook wordt uitgelegd hoe een internet-applicatie geïmplementeerd kan worden met behulp van de momenteel gangbare technieken, en hoe een specificatie omgezet kan worden in uitvoerbare programmacode. Er wordt kort ingegaan op de compiler die voor een eerste versie van DiCons geïmplementeerd is en er wordt aangegeven welke uitbreidingen nodig zijn om specificaties van de in dit proefschrift beschreven taal om te zetten in programmacode.<br /><br /><a href="http://www.isaac.nl/afstudeerverslagen/200511907.pdf" target="blank">Download proefschrift</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-8059744149219474160?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-01-30T08:48:00ZAfstudeerverslag: "Uitbreidingen op PTM"Koenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-17312629200934884032009-01-30T09:02:04Z2009-01-30T08:45:00Z<strong style="font-weight: bold;">Erhan Baygin</strong><span style="font-weight: bold;"> (2004)<br /><br /></span>In de tweede helft van 2004 heeft Erhan Baygin voor ISAAC Software Solutions gewerkt aan een drietal uitbreidingen op het bestaande PTM (Personal Time Management) systeem:<br /><ul id="bulletpoints"><li>Uitbreiding van het PTM met rapportage mogelijkheden voor een klant;</li><li>Onderzoek naar interface verbeteringen van de bestaande PTM waarbij de bestaande klanten ondervraagd worden;</li><li>Aan PTM wil men in de toekomst een planningstool toevoegen. Men wil dan ook weten hoe dit het beste kan worden vormgegeven. Hiervoor heeft Erhan onder andere gekeken naar bestaande pakketten en hiervoor aanbevelingen gedaan.</li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1731262920093488403?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2009-01-30T08:45:00ZAfstudeerverslag: "Online bestellen van configureerbare boeken"Koenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-42444103935482376202009-02-12T14:26:14Z2009-01-30T08:29:00Z<strong>Niek Palm (2003)</strong><br /><br />Print-on-demand beschrijft de mogelijkheid om, gegeven een verzameling hoofdstukken, voorbeelden en illustraties (zeg maar de typische elementen van een boek) aan te geven welke men wil ontvangen. Dit wordt vervolgens in boekvorm geprint en geleverd of via een te downloaden PDF aangeboden. Tijdens zijn stage in de eerste helft van 2003 heeft Niek Palm een model ontwikkeld van een applicatie die het mogelijk maakt om boeken print-on-demand te bestellen en te verwerken via het internet.<br /><br /><a href="http://www.isaac.nl/afstudeerverslagen/configureerbareboeken.pdf" target="blank">Download afstudeerverslag</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4244410393548237620?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2009-01-30T08:29:00ZIn SIT as in HeavenFrisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-23931404909372328402009-02-09T14:04:49Z2009-01-28T20:33:00ZBij het in productie nemen van een informatiesysteem dat groter is dan pakweg een e-mailformuliertje voor de-slager-op-de-hoek ontkom je er niet aan: de SIT (system Integration Test) en de UAT (User Acceptence Test). Helaas wil onder druk van deadlines of beperkte budgetten een écht goede test(-omgeving) er nogal eens bij inschieten. Ware ontwikkelaars en projectmanagers weten echter dat je niet zonder SIT en UAT kunt en zorgen er dan ook voor dat de omgeving voor deze tests optimaal is ingericht. Waar moet je nu in elk geval aan denken bij het (laten) inrichten van een goede SIT- en UAT-omgeving?<br /><br />Het allerbelangrijkste punt, waaraan veel andere zaken slechts een element hoeven bij te dragen, is in één zin uit te drukken: Bouw Productie Exact Na In SIT (B-PENISIT, een handig ezelsbruggetje!).<br /><br />Het klinkt eenvoudig, maar toch zijn er nogal wat aandachtspunten voordat je met een gerust hart kunt zeggen dat je er alles aan hebt gedaan om straks in Productie/Live niet tegen verrassingen aan te lopen. Al die aandachtspunten dragen slechts bij aan B-PENISIT, maar B-PENISIT heeft ook weer een uiteindelijk, finaal einddoel. Dat einddoel bestaat uit het rustig kunnen slapen tijdens de nacht na een go-live (zonder pizza knagend op kantoor te zitten stressen), of, voor die verdraaide go-lives op vrijdag, het kunnen genieten van je weekeinde (zonder dat de directie je komt verwennen met ontbijtjes op kantoor om toch nog "iets" te kunnen bijdragen aan de geruïneerde zater- en zondagen van je team).<br /><br />Hierna volgen tien, tijdens lange jaren, naar aanleiding van steeds weer andere Ultieme Ellendige Situaties verzamelde, aandachtspunten voor het nastreven van B-PENISIT. Ze zullen niet allemaal op elk project van toepassing zijn, maar het helpt zeker om ze door te lezen, en een enkeling grinnikend te herkennen. Vrees de dag dat je live gaat met twijfels over één van de items op deze lijst!<br /><br />1. Deploy op SIT/UAT op de zelfde manier als in productie. <br /><br />Ga je straks FTPen naar productie? FTP dan ook naar UAT. Je zult de eerste niet zijn die ontdekt dat je FTP-server files in stukjes knipt. Of jpgs uiters verdacht vindt. Deploy je straks in productie met EAR files? Dan doe je dat ook in UAT, want voor je het weet blijkt de EAR-depolyer van productie met vakantie te zijn.<br /><br />2. Gebruik domeinen<br /><br />In productie draai je straks vast op de een of andere fraaie duurbetaalde domeinnaam. Gebruik ook een domeinnaam in SIT/UAT! Testen met alleen een IP-adres geeft namelijk in meer dan genoeg situaties heel andere problemen met je deployment configuratie. Idealiter draai je in prodctie op www.<whatever>.nl, en in SIT/UAT op test.<whatever>.nl. Gebruik je in productie straks meerdere domeinen? Doe dat dan ook in UAT, want je zult zien, die cross-domain-scriping issues zijn afkomstig uit de zwavelige krochten van de hel!<br /><br />3. Vul de database<br /><br />Leuk, dat testen met 10 ideale records in de database, terwijl je straks in productie tegen 1001 wazige rommelrecords moet draaien. Erg nuttig is dat echter niet. Zorg dat je SIT/UAT database minimaal 10% van productie bevat en alle denkbare varianten omvat. Idealiter haal je regelmatig productiedata over naar test en scramble je daarbij velden als e-mail en wachtwoordhashes om Test-naar-Productie vermenging te voorkomen.<br /><br />4. Configureer autheticatie, authorisatie, als in productie<br /><br />Gebruik je straks Windows Domein Authenticatie voor een batch-procesje? Of misschien een aantal speciaal geconfigureerde SQL Server-accounts? Kies dan niet voor de makkelijke weg om in SIT/UAT alles als het "SA"-account te laten draaien. Configureer daar ook gewoon alle rollen, users en rechten en zet die later met een tool als X-SQL over naar productie. Minder handwerk, minder kans op fouten!<br /><br />5. Produceer je Test en Productie deployments met één mechanisme<br /><br />Zonder handwerk achteraf! Gebruik één Ant-script dat beide deployments (Wars, Ears, Jars) steeds in één run maakt, of gebruik een mooi Maven-achtig systeem dat je collega Jan-Willem (of equivalte getalenteerde collega) heeft bedacht hiervoor. In elk geval wil je zeker weten dat wat goed gebuild is voor SIT/UAT, straks ook goed gebuild is voor productie.<br /><br />6. Installeer SSL-certificaten als in productie<br /><br />Ga je in productie gebruik maken van SSL? Installeer dat dan ook in UAT! Het liefst met echte certificaten; zo duur zijn die nu ook weer niet in vergelijking met een dag lang je hele front-end team cross-site-scripting-errors en SSL-bugs in Javascripts laten opsporen, die je in SIT/UAT zo had gevonden. Voor je DEV-omgeving kan een self-signed certificate al wonderen doen.<br /><br />7. Tuig de 3rd party kerstboom op<br /><br />Ga je straks interfacen met een 3rd party systeem? Zorg dan dat je daar ook in SIT/UAT zinnige requests tegen kunt doen. Heeft je external party geen SIT/UAT omgeving? Bouw dan, na een hoorbare zucht om zoveel onprofessionalisme, desnoods een eenvoudige simulator (voor webservices is dat een eitje!). Een niet met ijzeren regelmaat geteste interface werkt per definitie niet in productie, hoe vaak je alles ook na bent gelopen! Is een 3rd party systeem traag? Maak dan gebruik van de geneugten van Thread.sleep() in je stubs, zodat je simulator ook lekker traag is.<br /><br />8. Batches horen er bij<br /><br />Ga je straks in Productie dagelijks een batch draaien? Of elk uur wellicht? Richt die dan ook in in SIT/UAT en bekijk de log-files. Het is aan te raden om ze voor een runtime midden op de werkdag in te plannen, zodat je meteen, live in de log-files mee kunt kijken en niet later door 5 gigabyte data heen hoeft te Grep/Sed/WC/Regexen.<br /><br />9. VMWare is your friend<br /><br />Met VMWare is het oneindig veel eenvoudiger geworden om voor een redelijk betaalbare prijs elke productieserver een SIT/UAT equivalent te geven. Richt een lompe VMWare host server in, waarop je tientallen SIT/UAT servers kwijt kunt. Je zult er geen spijt van krijgen!<br /><br />10 En de versienummers van Java, JBoss, SQL Server, Service Packs, etc etc?<br /><br />Wat dacht je nu zelf?<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2393140490937232840?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2009-01-28T20:33:00ZInternet Explorer 8 release... en nu?Tomnoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-80956634503515652212009-02-24T09:42:34Z2009-01-28T15:23:00ZNa enige vertraging heeft Microsoft recentelijk de Release Candidate 1 uitgegeven van hun Internet Explorer 8. Deze is vanaf de <a href="http://www.microsoft.com/windows/internet-explorer/beta/">website</a> te downloaden. Hiermee zal de final release van de webbrowser niet lang meer op zich laten wachten.<br /><br />De release van IE8 stond oorspronkelijk gepland voor eind 2008. Hiermee wil Microsoft inspelen op het afnemende marktaandeel. Mozilla's Firefox en nu ook Google's Chrome snoepen in vergelijking met vorig jaar veel van Microsoft's marktaandeel af. <br /><br /><strong>Nieuwe Features</strong><br /><p>IE8 heeft een paar nieuwe features, zoals Web Slices en Activities. Met Web Slices kunnen gebruikers zich abonneren op pagina's of op 'points of interest', zoals news feeds of eBay veiligen. Deze pagina's kunnen dan in de gaten worden gehouden in het IE navigatiemenu. </p><p>Met Activities kunnen gebruikers rechts klikken op een webpagina, waarna ze kaarten of andere websites kunnen betrekken in die pagina. </p><br /><br /><strong>Webstandaarden</strong><br /><p>Microsoft geeft zelf aan dat de prestaties van de browser zijn verbeterd. IE8 houdt zich ook beter aan webstandaarden. Dit klinkt natuurlijk voor de front end developers van ISAAC als muziek in de oren. De tijd die nu besteed wordt in het compatible maken van websites in IE7 en vooral IE6 is enorm. Hopelijk wordt dit hierdoor gereduceerd en dat scheelt een hoop frustratie.<br /></p><br /><br /><strong>Gebruikers en IE6</strong><br /><p>IE6 bestaat dit jaar in totaal 8 jaar. De browser kwam uit nog voordat de twin towers vielen. Voordat Apple zijn eerste Ipod fabriceerde en zelfs voordat Nintendo kwam met de 'gamecube'.<br />Toch zijn er nog steeds gebruikers die IE6 gebruiken voor hun dagelijkse surf uurtjes. De ontwikkeling van mogelijkheden op gebied van websites staat natuurlijk niet stil, hoelang kunnen we dit nog op zo'n manier tweaken dat het optimaal werkt?</p><p>Als we de mensen van <a href="http://iedeathmarch.org/">ie death march</a> mogen geloven is dat niet lang meer. Ze richten zich op "march 2009" als datum om de ondersteuning van IE6 te stoppen. Een beetje kort door de bocht naar mijn idee. Als webdeveloper dien je je te richten op het 'accessible' maken en houden van websites. Natuurlijk zou ik IE6 development heel graag willen stoppen, puur omdat je nieuwe technieken niet in een 8 jaar oude browser kan frotten. Dat is net als met je oldtimer op de duitse snelweg gaat rijden. Iedereen knalt je aan alle kanten voorbij en meegaan met de 'flow' kan je niet. En als je toch je bakkie tot het uiterste weet te drijven, krijg je kuren.<br /></p><p>Hoe dan ook, nog steeds 1 op de 5 gebruikers gebruikt IE6, en daarvoor ben je naar mijn inziens verplicht om daarvoor ondersteuning te bieden. Vooral als vele klanten dit ook nog steeds doen.</p><p>Momenteel pakken we het zo aan dat we IE6 wel goed duidelijk en overzichtelijk maken, echter de meeste gave visuals/annimaties zullen alleen werken in IE7+, Firefox, Opera, Safari</p><p>Toch wil ik iedereen aanraden, willen jullie een beetje met de tijd meegaan..Upgraden dan! :)<br />Ga naar Firefox, Opera, Chrome of indien je het wil blijf bij Microsoft, maar ga in ieder geval naar IE7 of hoger.<br /></p><p><br /></p><p><br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-8095663450351565221?l=isaacdevelopers.blogspot.com' alt='' /></div>Tom2009-01-28T15:23:00ZWebverkoop steeds populairderKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-90689260960355700482009-01-28T14:49:25Z2009-01-27T13:39:00ZBijna twee op de drie grote retailorganisaties in Nederland doet op de een of andere manier aan webverkoop. Dat is aanzienlijk meer dan een jaar geleden, toen nog niet de helft online actief was. Dat schrijft vakblad RetailTrends op basis van een eigen onderzoek onder bijna 160 winkelformules. De online participatiegraad groeide van 44 pct in 2007 tot 62 pct in het afgelopen jaar. Een behoorlijke groei dus, overigens 17 pct plaatst slechts een beperkt aanbod op internet.<br /><br />RetailTrends is opgevallen dat winkeliers hun aanbod geleidelijk uitbreiden met aanverwante producten en diensten. Zo verkoopt Profile fietsarrangementen van De Jong Intra Tours, terwijl ook Hema, Marskramer en Trekpleister reizen aan hun assortiment hebben toegevoegd. <span style="font-style: italic;">In navolging van merkfabrikanten die lijn- en merkextensies hebben gelanceerd, melken nu ook retailers hun merk (of platweg klantcontacten) uit met digitale schapextensies</span><br /><br />ISAAC biedt ook uitgebreide mogelijkheden voor retailers om online actief te zijn. Twee voorbeelden: <a href="http://www.megapool.nl/">Megapool</a> en <a href="http://www.modern.nl/">Modern.nl</a><br /><br />bron: Adformatie 4<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-9068926096035570048?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2009-01-27T13:39:00ZSubversion/TortoiseSVN: Loskoppelen working copyValentijn Scholten (ISAAC)http://www.blogger.com/profile/12425265502283982291noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-46961190313287307272009-01-28T14:12:39Z2009-01-23T11:54:00ZZoals beloofd deze week nog een Subversion tip. Dit keer over het loskoppelen van een working copy.<br /><br />Er zijn situaties waarin je je working copy los wilt koppelen van het Subversion repository. Gebruikers van <a href="http://subclipse.tigris.org/">Subclipse</a> zijn gezegend met een ‘detach’ actie, TortoiseSVN heeft echter niet zo’n actie.<br /><br />Waar een ‘detach’ actie in feite op neer komt is het vewijderen van alles ‘.svn’ folders in de working copy. Dit is immers waar alle Subversion gerelateerde informatie van een working copy wordt bijgehouden.<br /><br />Een manier om dit te doen is een export te draaien, waarbij een kopie gemaakt wordt van je working copy (of repository revision) met weglating van de ‘.svn’ folders. Soms wil je echter dat echt de working copy zelf wordt losgekoppeld.<br /><br />Deze feature wens leeft nogal bij de TortoiseSVN gebruikers, gezien de vele hits op Google. Sommige mensen maken een script voor deze actie:<br /><br /><a href="http://abhi.dcmembers.com/blog/2008/12/03/delete-svn-folders-recursively/">http://abhi.dcmembers.com/blog/2008/12/03/delete-svn-folders-recursively/</a><br /><br />Een nog mooiere oplossing is een Shell Extension optie ‘Delete svn folders’:<br /><br /><a href="http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx">http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx</a><br /><br />Ik las echter pas op het TortoiseSVN blog dat TortoiseSVN stiekem toch deze functionaliteit ondersteunt. Als je namelijk een export draait van je working copy folder naar diezelfde working copy folder, dan bereik je precies het gewenste resultaat. Alle ‘.svn’ folders verdwijnen uit je working copy.<br /><br />Dus: Klik met de rechtermuisknop op een working copy en kies ‘Export...’ vanuit het context menu. Een Browse dialog wordt getoond waarin je de destination folder kunt kiezen. Kies nu voor precies het pad van ditzelfde working copy, je exporteert dus je working copy over zichzelf heen. TortoiseSVN verwijdert nu alle ‘.svn’ folders.<br /><br />Wat je ook kan doen is je working copy met de rechtermuisknop op zich dragen. Er verschijnt dan een context menu waarin je kan kiezen voor ‘SVN export all to here.’<br /><br /><a href="http://3.bp.blogspot.com/_PeoTVk3i0sU/SXmw-zxgjpI/AAAAAAAAAA8/jhBZgt70OLQ/s1600-h/detach0.jpg"><img style="cursor: pointer; width: 187px; height: 400px;" src="http://3.bp.blogspot.com/_PeoTVk3i0sU/SXmw-zxgjpI/AAAAAAAAAA8/jhBZgt70OLQ/s400/detach0.jpg" alt="" id="BLOGGER_PHOTO_ID_5294457430046969490" border="0" /></a><br /><br />Voor een animatie ga je naar <a href="http://tortoisesvn.net/node/343">http://tortoisesvn.net/node/343</a>.<br /><br />This post is 100% inspired by Stefan’s post on the <a>href="http://tortoisesvn.net/node/343">tortoisesvn blog</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4696119031328730727?l=isaacdevelopers.blogspot.com' alt='' /></div>Valentijn Scholten (ISAAC)2009-01-23T11:54:00ZSubversion/TortoiseSVN: Hernoemen/Verplaatsen van filesValentijn Scholten (ISAAC)http://www.blogger.com/profile/12425265502283982291noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-21994808651566532182009-01-28T14:13:11Z2009-01-23T10:07:00ZDit is tip 1 van de 2 Subversion tips die ik deze week zal posten op het ISAAC blog.<br /><br />Aanleiding is de presentatie/demonstratie over Subversion die ik onlangs mocht geven aan alle collega's.<br /><br />Een van de onderwerpen die nog niet helemaal was uitgekauwd tijdens de presentatie was het hernoemen of verplaatsen van bestanden. Dit levert nog wel eens problemen op bij onze Web Developers, waar gebruik wordt gemaakt van TortoiseSVN in tegenstelling tot Subclipse bij de Software Ontwikkelaars.<br /><br />Het renamen/hernoemen of moven/verplaatsen van bestanden in een Subversion working copy moet altijd worden uitgevoerd met de daarvoor bestemde subversion commando’s.<br /><br />Bij ISAAC gebruiken we dus o.a. TortoiseSVN, welke een rename actie hiervoor heeft in het shell-extension menu.<br /><br /><a href="http://3.bp.blogspot.com/_PeoTVk3i0sU/SXmbKOIPS1I/AAAAAAAAAAk/jqGU_3R4Fn8/s1600-h/Kopie+van+repairmove0.jpg"><img style="cursor: pointer; width: 400px; height: 388px;" src="http://3.bp.blogspot.com/_PeoTVk3i0sU/SXmbKOIPS1I/AAAAAAAAAAk/jqGU_3R4Fn8/s400/Kopie+van+repairmove0.jpg" alt="" id="BLOGGER_PHOTO_ID_5294433436844378962" border="0" /></a><br /><br />Aangezien een working copy gewoon via de windows explorer is, is het makkelijk om deze actie te vergeten en gewoon met de windows explorer een file te renamen. Dit kan allerlei problemen opleveren in Subversion, dit begint al bij het verlies aan history van een file.<br /><br />Als je bijvoorbeeld een file <em>list.txt</em> renamed naar <em>list_renamed.txt</em> zonder gebruik van het TortoiseSVN commando, zul je zien dat bij een <em>commit</em> of <em>Check-For-Modifications</em> actie de <em>list.txt</em> als <em>missing</em> wordt gemeld en <em>list_renamed.txt</em> als <em>non-versioned</em>.<br /><br /><a href="http://3.bp.blogspot.com/_PeoTVk3i0sU/SXmbQgnlYEI/AAAAAAAAAAs/xATfGCtu8Zc/s1600-h/Kopie+van+repairmove1.jpg"><img style="cursor: pointer; width: 400px; height: 306px;" src="http://3.bp.blogspot.com/_PeoTVk3i0sU/SXmbQgnlYEI/AAAAAAAAAAs/xATfGCtu8Zc/s400/Kopie+van+repairmove1.jpg" alt="" id="BLOGGER_PHOTO_ID_5294433544886902850" border="0" /></a><br /><br />Gelukkig heeft TortoiseSVN tegenwoordig (dwz vanaf versie 1.5.0-alpha1) een optie om deze ‘illegale’ rename actie te repareren.<br /><br />Door 2 gerelateerde files te selecteren kan met de optie ‘repair move’ alsnog de juiste koppeling gelegd worden. Subversion zal dan alsnog door hebben dat de file is gerenamed, met als gevolg onder andere dat de history van de file beschikbaar blijft.<br /><br /><a href="http://2.bp.blogspot.com/_PeoTVk3i0sU/SXmbYiVAGmI/AAAAAAAAAA0/gtJboi51EGw/s1600-h/Kopie+van+repairmove2.jpg"><img style="cursor: pointer; width: 400px; height: 338px;" src="http://2.bp.blogspot.com/_PeoTVk3i0sU/SXmbYiVAGmI/AAAAAAAAAA0/gtJboi51EGw/s400/Kopie+van+repairmove2.jpg" alt="" id="BLOGGER_PHOTO_ID_5294433682784787042" border="0" /></a><br /><br />Deze repair actie kan ook worden gebruikt voor het hernoemen van folders, of het verplaatsen van files.<br /><br />This post is inspired by Stefan’s post on the <a href="http://tortoisesvn.net/node/351">TortoiseSVN Blog</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2199480865156653218?l=isaacdevelopers.blogspot.com' alt='' /></div>Valentijn Scholten (ISAAC)2009-01-23T10:07:00ZAfscheid stagiairLeoniehttp://www.blogger.com/profile/13696550720926907229noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-72201260897261762402009-01-28T15:33:15Z2009-01-16T14:54:00Z<a href="http://3.bp.blogspot.com/_z_Eh1tixdX0/SXCfsBC4CKI/AAAAAAAAABw/jiYfffgISbM/s1600-h/3200846245_162b99bdb2.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_z_Eh1tixdX0/SXCfsBC4CKI/AAAAAAAAABw/jiYfffgISbM/s400/3200846245_162b99bdb2.jpg" alt="" id="BLOGGER_PHOTO_ID_5291905140703889570" border="0" /></a><br />Vandaag namen wij afscheid van één van onze 4 stagiaires: onze 'Trainee nr 1' van de Eindhovense School.<br /><br />Als dank voor zijn inzet en voor de taart kreeg hij een Wii als kado.<br /><br />Wil je ook aftuderen (HBO) of stage lopen (MBO) bij ISAAC? Neem dan contact op via <a href="http://www.isaac.nl/">www.isaac.nl</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7220126089726176240?l=isaacdevelopers.blogspot.com' alt='' /></div>Leonie2009-01-16T14:54:00ZISAAC uitgenodigd bij mini-concert VanVelzen door Modern.nlLeoniehttp://www.blogger.com/profile/13696550720926907229noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-19608423947265473862009-01-28T15:33:25Z2009-01-16T13:17:00Z<a href="http://4.bp.blogspot.com/_z_Eh1tixdX0/SXCMzpurhdI/AAAAAAAAABo/-A7dI50Hz-k/s1600-h/_allll.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 100px; height: 400px;" src="http://4.bp.blogspot.com/_z_Eh1tixdX0/SXCMzpurhdI/AAAAAAAAABo/-A7dI50Hz-k/s400/_allll.jpg" alt="" id="BLOGGER_PHOTO_ID_5291884381163193810" border="0" /></a><br /><br /><strong>Bij het kopen van een actieproduct op <a href="http://www.modern.nl/">www.modern.nl</a> maakte de bezoeker kans op een intiem mini-concert van VanVelzen; bekend van hits als 'Baby get higher', 'Burn', 'Unwind' en 'Deep'.</strong><br /><br />Voor internetshop Modern.nl realiseerde ISAAC diverse uitingen voor de VanVelzen actie zoals banners, actiepagina's, een poster en een mailing. Donderdag 15 januari mochten we naar het eindresultaat komen kijken en luisteren: VanVelzen in het Palladium in Amsterdam!<br /><br />Uiteraard gingen we ook nog even op de foto met Denise; het model dat onlangs de titel 'gezicht van Modern.nl' heeft gewonnen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1960842394726547386?l=isaacdevelopers.blogspot.com' alt='' /></div>Leonie2009-01-16T13:17:00ZStartschot in de media voor het Europees Jaar van de creativiteit en innovatie 2009Leoniehttp://www.blogger.com/profile/13696550720926907229noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-47577324327021506802009-02-09T13:45:57Z2009-01-09T12:49:00Z<em>Het jaar 2009 is door de Europese Commissie benoemd tot <a href="http://www.create2009.europa.eu/">het Europees Jaar van de creativiteit en innovatie 2009</a> met de slogan “Bedenken. Creëren. Innoveren”. De doelstelling van dit Jaar is om te bevorderen dat mensen oog krijgen voor creativiteit en innovatie bij de activiteiten die zij op verschillende gebieden ontplooien en om ervoor te zorgen dat de Europese Unie beter toegerust is om de uitdagingen van een geglobaliseerde wereld het hoofd te kunnen bieden.</em><br /><br /><a href="http://3.bp.blogspot.com/_z_Eh1tixdX0/SWdIwTg86vI/AAAAAAAAABA/zCq4nkU18Ek/s1600-h/logo_eyci-2009_home_EN.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 65px;" src="http://3.bp.blogspot.com/_z_Eh1tixdX0/SWdIwTg86vI/AAAAAAAAABA/zCq4nkU18Ek/s320/logo_eyci-2009_home_EN.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5289276282079341298" /></a><br /><br /><strong>Bedenken. Creëren. Innoveren</strong><br /><br />Het Europees Jaar van de creativiteit en innovatie heeft goede voornemens en mooie doelen als samenwerking op het vlak van onderwijs en cultuur, maar ook in handel en werkgelegenheid. Culturele diversiteit wordt gezien als een bron van creativiteit en innovatie; de route naar duurzame ontwikkeling. <br /><br />Bedenken, creëren en innoveren; daar werken wij bij ISAAC maar al te graag aan mee!<br /><br />Kijk voor meer informatie op: <a href="http://www.create2009.europa.eu/">http://www.create2009.europa.eu/</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4757732432702150680?l=isaacdevelopers.blogspot.com' alt='' /></div>Leonie2009-01-09T12:49:00ZWat is hot in 2009?Leoniehttp://www.blogger.com/profile/13696550720926907229noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-68825801779986477642009-02-09T13:29:34Z2009-01-07T10:05:00Z<span style="font-style: italic;">Buiten is het op dit moment in elk geval 'not hot' met temperaturen van -20 's nachts en -5 overdag. Maar wat wordt er in 2009, behalve mijn verwarming en hopelijk ook de zomer, nu allemaal 'hot' in internetland?</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_z_Eh1tixdX0/SWSFoJBOJuI/AAAAAAAAAA4/EfDW0jDR5MQ/s1600-h/isaac.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 255px; height: 200px;" src="http://1.bp.blogspot.com/_z_Eh1tixdX0/SWSFoJBOJuI/AAAAAAAAAA4/EfDW0jDR5MQ/s320/isaac.jpg" alt="" id="BLOGGER_PHOTO_ID_5288498787102107362" border="0" /></a><span style="font-weight: bold;">Nieuwe website ISAAC: HOT!</span><br /><br />Allereerst verklap ik alvast dat <a href="http://www.isaac.nl/">ISAAC</a> begin 2009 met een compleet vernieuwde website online komt, uiteraard wordt die helemaal hot, hip en cool!<br /><br />Wat betreft de overige mediaverwachtingen van onze eigen ISAACi:<br /><br /><br /><span style="font-weight: bold;">Mobiel internet komt eindelijk op</span><br /><br />In 2008 stond mobiel Internet ook al bij de verwachtte trends, misschien meer in de hoop van dan in de verwachting van... Ook dit jaar staat hij er weer bij. Nu de ontwikkeling van mobiele netwerken en apparaten verder ontwikkeld is beginnen bedrijven eindelijk te investeren in mobiele applicaties, dus wie weet breekt het mobiel surfen in 2009 eindelijk echt door.<br /><br />Daarbij aansluitend zullen er steeds meer ontwikkelingen komen voor een snelle(re) tekstinvoer op touchscreens. De applicaties hiervoor, bijvoorbeeld Swype, zullen vanuit een vingerbeweging over het toetsenbord sneller woorden gaan herkennen dan wanneer deze getypt zouden worden.<br /><br /><span style="font-weight: bold;">Kredietcrisis; het kaf wordt van het koren gescheiden</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_z_Eh1tixdX0/SWSBSzhsEEI/AAAAAAAAAAg/Wv9KYFVgNOg/s1600-h/krediet.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 200px;" src="http://2.bp.blogspot.com/_z_Eh1tixdX0/SWSBSzhsEEI/AAAAAAAAAAg/Wv9KYFVgNOg/s320/krediet.jpg" alt="" id="BLOGGER_PHOTO_ID_5288494022508941378" border="0" /></a>In de winkels is er nu bij de consument nog niet veel van te merken maar wij denken dat in de loop van 2009 en uiteindelijk 2010 de kleine maar ook grote bedrijven toch wel ernstige last zullen krijgen van uitblijvende opdrachten. Voor de Internet- en mediawereld zal de kredietcrisis gaan betekenen dat er harder gewerkt en meer kennis vergaard moet worden en dat de klant hard(-er) bewijs van resultaten zal gaan verlangen.<br /><br />Er zullen meer online bestedingen gaan komen in plaats van bestedingen aan printed media. Kleine uitgevers van kranten en bladen zullen niet of moeilijk overleven. Klassieke media als print en ook radio en tv krijgen het dus moeilijk, reclamebureaus ook ten opzichte van Internet en software bureaus.<br /><br />Verwacht wordt dat de software sector in 2009 zal gaan groeien. Investeringen van bedrijven in software zijn noodzakelijk omdat veel organisaties niet meer zonder bepaalde software kunnen. Door upgrades te benutten kunnen bedrijven goedkoper en efficiënter gaan werken.<br /><br /><span style="font-weight: bold;">Cybermaffia</span><br /><br />De cybermaffia zal profiteren van de kredietcrisis. Nu de aandacht van de politiek bij de recessie ligt en de (al dan niet werkloze) consument naarstig op zoek is naar aanbiedingen en extra inkomsten is het de perfecte tijd om de boel op te lichten.<br />Dus let gewoon op, alles wat als “to good to be true” klinkt is dat meestal ook!<br /><br /><span style="font-weight: bold;">Sociale netwerken</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_z_Eh1tixdX0/SWSDsSTcFZI/AAAAAAAAAAo/19rE151X89g/s1600-h/social.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 200px;" src="http://4.bp.blogspot.com/_z_Eh1tixdX0/SWSDsSTcFZI/AAAAAAAAAAo/19rE151X89g/s320/social.jpg" alt="" id="BLOGGER_PHOTO_ID_5288496659290658194" border="0" /></a>Sociale netwerken, zoals Hyves, Facebook, LinkedIn, etc, waren al in opkomst en zullen in 2009 nog meer invloed gaan krijgen. De wisselwerking tussen deze netwerken zal ook toenemen.<br /><br />Van grote merken wordt verwacht dat zij hun eigen netwerken op gaan zetten. Sociale netwerken krijgen dus steeds meer een commercieel karakter naast het ‘sociale’ karakter.<br /><br /><span style="font-weight: bold;">Twitter</span><br /><br />De meningen bij ISAAC zijn erover verdeeld; een site vol met korte berichtjes met wat iedereen aan het doen is. Het schijnt helemaal hip te zijn en ‘iedereen’ doet het, maar sommigen hier zijn nog steeds aan het wennen en zichzelf aan het afvragen of hun tijd niet beter besteed kan worden dan aan deze nieuwe verslaving-to-be. Mensen zijn simpelweg vóór of heel erg tegen dit getwitter. We zullen zien in 2009…<br /><br /><span style="font-weight: bold;">Samengaan diverse media</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_z_Eh1tixdX0/SWSEbUpAU6I/AAAAAAAAAAw/CnHCxb-pj-w/s1600-h/tv.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 200px;" src="http://4.bp.blogspot.com/_z_Eh1tixdX0/SWSEbUpAU6I/AAAAAAAAAAw/CnHCxb-pj-w/s320/tv.jpg" alt="" id="BLOGGER_PHOTO_ID_5288497467371836322" border="0" /></a>TV en Internet zullen verder in elkaar gaan overlopen, (casual-)games zullen hier ook een flinke rol in gaan spelen. Websites die TV-programma’s ondersteunen met informatie maar ook met extra of gemiste afleveringen zien we steeds meer. In opkomst zijn de gecombineerde TV- en internet reclames naar websites met kansen om iets te winnen (denk aan red fruit farm van coebergh of de maffia viral van centraal beheer) en communities rondom een merk/tv-programma (denk aan boer zoekt vrouw of Albert Heijn kookschrift).<br /><br />De overkill aan bijvoorbeeld blogs, zal ervoor zorgen dat blogs samen zullen gaan of verdwijnen. De kwaliteit van de blogs die overblijven zal hierdoor verbeteren.<br /><br />‘Web3.0’ wordt het helemaal in 2009. Websites zullen meer en meer veranderen van simpele ‘uithangborden’ naar informatiebronnen die ook door andere machines kunnen worden begrepen. Dit zie je nu al in de API’s die aangeboden worden door Flickr, Twitter, Amazon en Google Maps. Daarnaast zullen applicaties ook steeds meer als dienst online aangeboden worden en worden online diensten aan elkaar geknoopt (zoals in OpenID).<br /><br /><span style="font-weight: bold;">Flash-video in opkomst</span><br /><br />We gaan nog meer flash-video en multimediale content zien.<br />De nieuwe versie van Flex (versie 4) en/of JavaFX zijn in opkomst voor het maken van mooie, stoere websites en shops<br /><br /><span style="font-weight: bold;">Design</span><br /><br />Naar verwachting gaan we meer ‘urban’ terug zien in 2009 in plaats van de glossy ‘web2.0’… Deze trend is al in beweging (behalve bij de corporate sites). Naast urban zien we ook meer het “traditionele” knip en plak werk; papier, droodels, kleistukjes, naaisels, collages…<br /><br /><span style="font-weight: bold;">Crowdsourcing</span><br /><br />Bij crowdsourcing projecten, die sterk lijken op open-source projecten zoals Linux en Mozilla, wordt het publiek direct bij de processen van organisaties betrokken, uitgaande van organisaties die uiteindelijk baat hebben bij de verbeteringen, ideeën of het werk van de community. Verwacht wordt dat dit soort projecten in opkomst zullen raken.<br /><br />Vol verwachting kijken wij bij <a href="http://www.isaac.nl/">ISAAC</a> uit naar 2009 en de nieuwe dingen die er gaan komen!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6882580177998647764?l=isaacdevelopers.blogspot.com' alt='' /></div>Leonie2009-01-07T10:05:00ZFlex GumboCollinhttp://www.blogger.com/profile/08286386822217852449noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-71045320205185980252009-02-09T13:45:57Z2008-12-27T12:33:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MlgmCqJKfpo/SWN1EIz07_I/AAAAAAAAAHc/8XxRXfb4THQ/s1600-h/fx.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/SWN1EIz07_I/AAAAAAAAAHc/8XxRXfb4THQ/s200/fx.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5288199101407883250" /></a><br />Flex Gumbo is de codenaam van Flex 4 waar Adobe op het moment aan het werken is.<br /><br />Met deze nieuwe release is Adobe zich vooral aan het richten op de volgende punten:<br /><ul><li>Opzetten van een framework waardoor ontwerpers en programmeurs beter en langer samen kunnen werken tijdens een project.</li><li>Het verbeteren van de productiviteit met Flex door het verbeteren van de compiler performance en het toevoegen van nieuwe features die de productiviteit verhogen zoals data binding.</li><li>Gebruik maken van de nieuwe mogelijkheden van de flash player en deze toepassen op veel gebruikte use-cases.</li></ul><br />Maar wat betekent dit allemaal precies? Veel zegt deze opsomming niet over opvolger van Flex 3, daarom zal ik deze punten een voor een behandelen.<br /><br /><span style="font-weight:bold;">Samenwerking tussen ontwerpers en programmeurs</span><br />Een van de problemen met Flex 3 is dat de programmeur de gehele applicatie opzet aan de hand van een grafisch ontwerp van een ontwerper. Met een dergelijke werkwijze is het bijna niet te voorkomen dat er verschillen ontstaan tussen het ontwerp en de daadwerkelijke implementatie. Dit doordat de programmeur het ontwerp anders interpreteert of bepaalde effecten en/of grafische componenten gewoon niet mogelijk zijn.<br /><br />Om dit op te lossen heeft Adobe diverse verbeteringen doorgevoerd in skinning van applicaties en het toepassen van effecten. En tijdens toepassen van deze verbeteringen is rekening gehouden met de ontwerpers, en op en dergelijke manier zodat ontwerpers kunnen meehelpen tijdens de ontwikkeling van applicaties. Hiervoor is door Adobe Catalyst in het leven geroepen die het mogelijk maakt om in bijvoorbeeld Photoshop complete widgets en/of applicaties op te zetten. De mogelijkheden die dit biedt kun je het beste in <a href="http://www.adobe.com/newsletters/edge/december2008/video/">deze demonstratie</a> bekijken.<br /><br />Dit alleen heeft ons erg enthousiast gemaakt over Flex 4 omdat er dan veel makkelijker en sneller prototypes opgezet kunnen worden zonder dat een ontwerp omgezet moet worden naar een prototype. Je ontwerp is dan dankzij Catalyst jouw prototype.<br /><br /><span style="font-weight:bold;">Verbeteren van productiviteit</span><br />Door adobe worden een flink aantal verbeteringen doorgevoerd zodat makkelijk en sneller ActionScript code opgezet kan worden voor Flex. Omdat dit een nogal lange lijst is pak ik een voorbeeld van de <a href="http://opensource.adobe.com/wiki/display/flexsdk/Gumbo#Gumbo-DocumentsandSpecifications">vele verbeteringen</a> die men aan het doorvoeren is: data binding. Om precies te zijn two-way data binding.<br /><br />In de huidige versie van Flex is two-way data binding mogelijk, maar vergt <a href="http://www.johncblandii.com/2008/06/flex-3-twoway-form-databinding.html">enkele extra regels mxml</a> die snel kan oplopen naarmate de user interface complexer wordt. Dit doordat je voor elke two-way binding die aanmaakt een Binding tag met destination attribute moet toevoegen voor elke gui element waarbij je two-way binding wilt gebruiken.Bij Flex 4 kan dit teruggebracht worden door <span style="font-style:italic;">@{}</span> te gebruiken voor data binding in plaats van de <span style="font-style: italic;">{}</span> voor standaard databinding. Of door<span style="font-style: italic;"> twoWay="true"</span> toe te voegen aan je binding tag.<br /><br /><span style="font-weight:bold;">Gebruik maken van nieuwe functionaliteit van Flash</span><br />In de Flash player zijn er nieuwe mogelijkheden toegevoegd voor weergeven van afbeeldingen, tekenen van basis vormen en 3D effecten. Diverse hiervan zijn al voorbijgekomen in de Catalyst demonstratie en deze zijn een van de belangrijkste verbeteringen die Catalyst mogelijk heeft gemaakt.<br /><br />Het toevoegen van bijvoorbeeld de basis vormen (driehoek, cirkel, etc) en de mogelijkheden om deze makkelijk te gebruiken binnen Flex maken weer vele nieuwe toepassingen mogelijk of makkelijker. Zelf ben ik zeer benieuwd naar de nieuwe interfaces die mensen hier gaan ontwikkelen en de nieuwe flex games die nu makkelijker visueel interessanter gemaakt kunnen worden.<br /><br />Al deze vernieuwingen voor Flex 4 heeft er voor gezorgd dat wij erg vooruitkijken naar deze nieuwe release. Door de nieuwe mogelijkheden die het biedt, de verbeteringen in samenwerking die het mogelijk maakt en vooral omdat wij er weer enkele zeer mooie applicaties mee kunnen bouwen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7104532020518598025?l=isaacdevelopers.blogspot.com' alt='' /></div>Collin2008-12-27T12:33:00ZRaycasting in JavascriptPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-7546075904290948062009-02-09T12:46:31Z2008-12-21T17:48:00Z<a href="http://2.bp.blogspot.com/_MlgmCqJKfpo/SZAlobs-QYI/AAAAAAAAAII/2o3pZjoftOs/s1600-h/wolfenstein.jpg"><img id="BLOGGER_PHOTO_ID_5300778137976455554" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 200px; CURSOR: hand; HEIGHT: 125px" alt="" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/SZAlobs-QYI/AAAAAAAAAII/2o3pZjoftOs/s200/wolfenstein.jpg" border="0" /></a><br /><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ohgizmo.com/wp-content/uploads/2008/05/wolfenstein.jpg"></a><br />Het was ongeveer een week geleden dat mijn gedachte tijdens het spelen van Fable 2 afdwaalde naar de computerspelletjes van lang vervlogen tijd. Spelletjes zoals Doom en Wolfenstein 3d zagen er in hun primitiviteit karakteristieker uit dan de gemiddelde shooter van het afgelopen jaar. Toch was het technisch gezien ongelooflijk simpel om het 3d effect uit Wolfenstein te creëren. Zo eenvoudig dat ik het in een middagje na heb gemaakt in Javascript.<br /><br />De techniek die Wolfenstein gebruikte om een 3d omgeving te renderen heet “Raycasting”. Vanuit het punt van de speler (de camera) ga je een lijn trekken en kijk je hoever je die lijn door kunt trekken totdat je een muur (of iets anders) tegenkomt. De afstand tussen de speler en deze muur gebruik je om te bepalen hoe hoog dat stukje muur moet zijn. Kleine afstanden zorgen voor een hoge muur en grote afstanden voor een kleine muur (objecten lijken immers kleiner naarmate ze verder weg staan). Dit doe je vervolgens voor het hele blikveld van de speler en het effect is klaar. <a href="http://tinyurl.com/7c7nvg">Het resultaat van het raycasting in javascript experimentje</a> mag er zijn, ondanks dat het in veel browsers behoorlijk traag kan zijn (tip: bekijk hem in Google Chrome vanwege zijn ongelooflijk snelle javascript engine).</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-754607590429094806?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-12-21T17:48:00ZPiece of CakePieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-38176568860419112292009-01-28T14:41:20Z2008-12-19T09:08:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MlgmCqJKfpo/SUtk8k3WLwI/AAAAAAAAAG8/yeHFZsPVyeo/s1600-h/IMG_0133.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/SUtk8k3WLwI/AAAAAAAAAG8/yeHFZsPVyeo/s320/IMG_0133.jpg" alt="" id="BLOGGER_PHOTO_ID_5281425979872784130" border="0" /></a><br />Er is vandaag wederom een heerlijke taart bezorgd op het ISAAC kantoor. Ik zou er graag meer over vertellen, maar ik moet zo snel mogelijk een stukje proberen te bemachtigen, voordat hij op is.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3817656886041911229?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-12-19T09:08:00ZSsssstttttttkatjahttp://www.blogger.com/profile/12739270246032821449noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-17552455161661542132009-01-28T15:38:16Z2008-12-19T07:56:00ZBij ISAAC werd begin November door een aantal mensen begonnen aan een zogenaamde ‘secret mission’. Secret omdat het geheim moest zijn en mission omdat dat ook zo moest blijven. Maar, ondanks de vele afleidingsmanoeuvres, en..,zoals te verwachten, werkt een secret mission als een hoop stront op vliegen en weldra wist, op een enkeling na, heel ISAAC ervan.<br /><br />Dat is het leuke aan een geheim, je hebt mensen die ervan weten en mensen die het niet weten. Aangezien mensen zich buiten gesloten voelen als iedereen het geheim lijkt te kennen, behalve jij, probeer je erachter te komen wat het geheim is. Want je wil je niet buitengesloten voelen. En wij, medewerkers van ISAAC, zouden geen medewerkers van ISAAC zijn als we niet met steeds meer mensen het geheim deelden, puur om hun leed te verzachten.<br /><br />Om de spanning voor de onwetenden vast te houden deden we maar net alsof onze neus bloedde en zijn we gewoon verder gegaan alsof het nog steeds secret was, waarbij we steeds snel ons scherm wisselden als er iemand langsliep en fluisterend en sssttt sissend geïnteresseerden of bemoeials te woord hadden gestaan.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.isaac.nl/nieuwsbrief/kerstwens2008/"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 133px;" src="http://2.bp.blogspot.com/_LIcBL_TtKj8/SUtXQXUreOI/AAAAAAAAAAc/Bi_KSPB4t0I/s320/kerstkaart.jpg" alt="" id="BLOGGER_PHOTO_ID_5281410926672312546" border="0" /></a><br />Om een tipje van de sluier op te lichten kan ik zeggen dat onze collega’s, het afgelopen jaar en de toekomstige feestdagen het uitgangspunt waren voor onze missie. En omdat we na een klein onderzoek kunnen concluderen dat we over het algemeen trots zijn op wat we maken, we bergen hebben verzet en soms zelfs het onmogelijke mogelijk hebben gemaakt, ontkwamen we er niet aan te concluderen dat er bij ISAAC stuk voor stuk helden werken.<br /><br />Superhelden wel te verstaan. Experts in bepaalde technieken. Helden met digitale superkrachten, compleet met symbool op de borst. Van applicatie architect tot directie assistent.<br />Nu bent ook u op de hoogte van de secret mission, die inmiddels al lang niet meer zo secret is, aangezien mogelijk u onze digitale kerstkaart heeft ontvangen. Fijne feestdagen!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1755245516166154213?l=isaacdevelopers.blogspot.com' alt='' /></div>katja2008-12-19T07:56:00ZDevoxx: De AfsluitingPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-75257234187792539162009-01-28T14:42:48Z2008-12-12T14:35:00Z<a href="http://2.bp.blogspot.com/_MlgmCqJKfpo/SUJ3Nj0zkBI/AAAAAAAAAG0/y-DBVJYM2yo/s1600-h/devoxx250.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 250px; height: 228px;" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/SUJ3Nj0zkBI/AAAAAAAAAG0/y-DBVJYM2yo/s320/devoxx250.jpg" alt="" id="BLOGGER_PHOTO_ID_5278912788070371346" border="0" /></a><br />Helaas, het jaarlijkse Java feestje in België is weer afgelopen. Op deze laatste dag zijn Tracey, Bart, Sjoerd en ikzelf afgereisd naar het Metropolis complex in Antwerpen. De laatste dag duurt maar tot half één, dus vandaag geen gezeur over de vieze lunch.<br />Bij de eerste presentatie hoopte we meer te leren over de web services van Amazon, maar dit was helaas meer een reclamepraatje voor Amazon’s Cloud Computing dienst. Hierna werden we echter getrakteerd op een zeer interessante presentatie van een Sun “Evangalist” die liet zien hoe je voor weinig geld een Multi-touch scherm kunt maken, met behulp van een projector, een webcam en een perspex plaat met infrarood leds. Er werd duidelijk uitgelegd hoe je zelf zo’n scherm kunt maken en waar je zoal op moet letten. Tijdens de derde en laatste presentatie probeerde de Duitse Adam Bien ons te overtuigen dat EJB 3.1 een krachtige ontwikkelomgeving kan zijn. In ons geval natuurlijk een beetje overbodig, maar desondanks een interessante presentatie.<br />Nu is het weer een jaar wachten op Devoxx ’09, maar iedereen heeft weer genoeg inspiratie om die tijd te overbruggen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7525723418779253916?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-12-12T14:35:00ZREBLOG: Twee miljoen Nederlanders op mobiel internetKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-4734401462380271182009-01-28T15:09:35Z2008-12-12T11:49:00ZTwee miljoen Nederlanders maken regelmatig gebruik van mobiel internet. Driekwart surft en mailt via een flat fee abonnement (onbeperkt surfen voor een vast bedrag). Bovendien blijkt het aantal mobieltjes met een GPS-antenne afgelopen jaar te zijn gegroeid met een factor zeven. Dat blijkt uit een onderzoek van het platform Open Mobiel Internet (OMI). Daarin zijn de <a href="http://www.openmobielinternet.com/leden/">grootste Nederlandse partijen</a> in telecom- en uitgeefland verenigd.<br /><br />Uit cijfers die eerder deze week aan de <a href="http://www.mwg.nl/">Media Werkgroep</a> werden gepresenteerd, blijkt dat het aantal mobiele surfers in een half jaar met 25 procent groeide. De teller ging van 1,6 miljoen Nederlanders in juni naar nu 2 miljoen. De grootste gebruikersgroep bevindt zich tussen de leeftijden 18 en 35 jaar.<br /><br />Er circuleren inmiddels 6 miljoen mobiele telefoons die overweg kunnen met een draadloze connectie. De verdeling: 2 miljoen UMTS- en 4 miljoen GPRS-toestellen. Er zijn 1,45 miljoen flat fee-abonnementen verkocht.<br /><br />Bovendien blijkt uit dezelfde OMI-cijfers dat 14 procent van de telefoons een GPS-antenne heeft. Een jaar geleden was dat nog 2 procent. Telefoons worden zich steeds vaker 'bewust' van hun geografische locatie.<br /><br />OMI-voorzitter Paul Brackel: "Ontwikkelaars kunnen mobiele applicaties verrijken met geografische informatie". De telefoonsofware wordt omgevingsbewust.<br /><br />Vooralsnog zijn er in Nederland geen operators die externe ontwikkelaars toegang geven tot hun locatieservers. Dat is de apparatuur die de geografische positie van bellers als het ware 'leest' en verstuurt in mobiel gebruikte software. Daarmee zou bijvoorbeeld kunnen worden aangegeven wiens vrienden uit een profielensite of chatdienst zich waar bevinden. Brackel: "Met GPS kan je niet de locatie-informatie van een andere beller opvragen. Dat kan enkel via het netwerk van de telecomaanbieders".<br /><br />Gisteren verscheen een rapport van Forrester Research waarin onderzoeker Thomas Husson stelt dat de omzet uit mobiele handel in onder meer muziek, tv, video en spelletjes in 2013 5,4 miljard euro waard zal zijn. Die opkomende mobiele vermaakmarkt compenseert volgens hem de afname van omzet uit sms-verkeer. Die loopt tussen 2008 en 2013 terug van 21,5 miljard naar 19 miljard euro.<br /><br />Bron: <a href="http://www.emerce.nl/nieuws.jsp?id=2804166">Emerce</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-473440146238027118?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2008-12-12T11:49:00ZEen woensdag op Devoxx...Xanderhttp://www.blogger.com/profile/03447323900696387776noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-61814502030772496042009-01-28T14:43:12Z2008-12-11T15:52:00ZNa een lange rit in een spaans raspaard kwamen JW, Bart, Friso en ik aan bij Devoxx. Er stond een hoop op het programma, waaronder front-end spul door Romain Guy en Chet Haase. Maar aangezien ik daar al wat over had gezien op maandag besloot ik naar andere presentaties te gaan (anderen zijn welkom om hier iets over te schrijven).<br /><br />Een arrogant ogende applicatiearchitect van Sun vertelde tijdens de keynotes een verhaal over JavaFX, en dat zag er allemaal wel imposant uit. Vooral het feit dat je de code en het ontwerp apart kan ontwikkelen en dan kan combineren met JavaFX op een eenvoudige manier was wel gaaf. De keynote van IBM over hun persoonsregistratiesysteem (er zat een soort chip in de Devoxx pasjes) was iets minder, vooral omdat ze de tijd gebruikten om over hardware te praten en het systeem maar zo'n 75% accuraat was. Gelukkig werd alles afgewisseld door een Brute Belgische BeatBoxer, waardoor de saaiheid van IBM werd doorbroken.<br /><br /><p>In de middag ben ik naar 2 interessante presentaties gegaan. Eentje over Envers en eentje over Parallelle systemen / multi-core programmeren: </p><ul><li>Envers is een Entiteit Versiebeheer systeem. het is bedoeld om van Entiteiten (zoals een klant of adres in een database) versies bij te houden. Heel de historie kan met behulp van envers worden bijgehouden, zonder je code belachelijk veel aan te passen. Sterker nog, je hoeft alleen maar 1 annotatie toe te voegen aan de Entiteiten die je wilt beheren. Heel je applicatie blijft gewoon werken zoals hij al deed, alleen wordt er op de achtergrond versiebeheer bijgehouden. Dit geeft een beetje overhead (Het opslaan/updaten duurt max. anderhalf keer zo lang) maar daarvoor heb je wel in één keer versiebeheer. Alles wordt netjes opgeslagen in extra tabellen die eenvoudig leesbaar en query-baar zijn. Ik denk dat we bij klanten als Loyalty Lab hier veel tijdwinst mee kunnen boeken.<br /></li><li>Parallel programmeren op een eenvoudige manier... Tegenwoordig hebben veel pc's en servers meerdere cores, alleen wordt daar amper gebruik van gemaakt. In de nieuwe versie van Java is er een extra object genaamd ParallelArray. Dit array kun je gebruiken om grote lijsten m.b.v. divide-and-conquer taktieken te splitsen en delen van het probleem op verschillende cores te berekenen. In ParallelArray zitten eenvoudige methoden om dit voor elkaar te krijgen, zodat je toch een beetje gebruik kan maken van multiple cores bij grote (lijst-)berekeningen. Volgens de maker en spreker (Brian Goetz) is zo'n 85% van alle grote problemen zo parallel op te lossen.<br /></li></ul><p>De terugreis was overigens bijna even avontuurlijk als Devoxx zelf, en we zijn maar 3x verdwaald en zo'n 100 km omgereden... Het was dus een geslaagde dag!<br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6181450203077249604?l=isaacdevelopers.blogspot.com' alt='' /></div>Xander2008-12-11T15:52:00ZD(evoxx)-Day 2Collinhttp://www.blogger.com/profile/08286386822217852449noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-36543926180459965202009-01-28T14:44:17Z2008-12-09T19:35:00ZVandaag zijn weer diverse mensen van ISAAC naar Devoxx geweest voor het volgen van enkele leerzame presentaties.<br />Wij zijn onder andere aanwezig geweest bij "Flex Today and Tomorrow", "Seam in Action", "Creating performance test data with the benerator" en "JSF, Ajax, and Seam portlet development with the JBoss Portlet Bridge".<br /><br />Vooral de "Flex Today and Tomorrow" en "Creating performance test data with the benerator" waren voor ons zeer geslaagde presentaties. Bij Flex kreten van vreugde over de nieuwe mogelijkheden van Gumbo (Flex 4). En bij de benerator presentatie verbazing over de mogelijkheden tot het genereren van test data voor onze applicaties.<br /><br />Jammer genoeg was de lunch voor ons tijdens Devoxx niet zo geslaagd (de salade viel niet in goede aarde bij ons), en na enig zoeken vonden wij een tentje waar wel eten naar onze smaak aanwezig was. Vooral onze <a href="http://isaacdevelopers.blogspot.com/2008/04/swingende-nick.html">ISAAC carnivoor</a> was zeer tevreden met de ontdekking.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BG_M-lgLH0k/ST7MAjtSjnI/AAAAAAAAAAw/Ib9JuhX7JyE/s1600-h/IMG_2322.JPG"><img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_BG_M-lgLH0k/ST7MAjtSjnI/AAAAAAAAAAw/Ib9JuhX7JyE/s320/IMG_2322.JPG" alt="" id="BLOGGER_PHOTO_ID_5277880123282067058" border="0" /></a><br /><br />Ook waren enkele fanboy activiteiten ons niet vreemd bij het zien van Chet Haase en Romain Guy (het boek op de foto is Filthy Rich Clients).<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BG_M-lgLH0k/ST7J2uG9wJI/AAAAAAAAAAo/C1Ebcg01RjU/s1600-h/IMG_2323.JPG"><img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_BG_M-lgLH0k/ST7J2uG9wJI/AAAAAAAAAAo/C1Ebcg01RjU/s320/IMG_2323.JPG" alt="" id="BLOGGER_PHOTO_ID_5277877755252162706" border="0" /></a><br /><br />Al met al was het weer een zeer geslaagde dag op Devoxx voor ISAAC.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3654392618045996520?l=isaacdevelopers.blogspot.com' alt='' /></div>Collin2008-12-09T19:35:00ZWe made it!Valentijn Scholten (ISAAC)http://www.blogger.com/profile/12425265502283982291noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-80356902357741498212009-01-28T14:45:00Z2008-12-08T21:21:00ZZo we zijn weer terug in t land, met een filmpje! Dat de belgische snelwegen minder zijn wisten we al, maar gelukkig heeft Edwins BMW slechst lichte zijschade...<br /><br /><object width="320" height="266" class="BLOG_video_class" id="BLOG_video-33005fe607768887" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="movie" value="http://www.youtube.com/get_player"><param name="bgcolor" value="#FFFFFF"><param name="allowfullscreen" value="true"><param name="flashvars" value="flvurl=http%3A%2F%2Fv13.nonxt1.googlevideo.com%2Fvideoplayback%3Fid%3D33005fe607768887%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1285635766%26sparams%3Did%252Citag%252Cip%252Cipbits%252Cexpire%26signature%3D270C0127096BD3951015ACACBF0ACC846447711F.19E00ADDD99DBC8E634C913DF062363005763736%26key%3Dck1&iurl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer2%3Fapp%3Dblogger%26contentid%3D33005fe607768887%26offsetms%3D5000%26itag%3Dw160%26sigh%3Dw4BkE_CmH-O7ni_ivTMOAI0rUkw&autoplay=0&ps=blogger"><embed src="http://www.youtube.com/get_player"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http%3A%2F%2Fv13.nonxt1.googlevideo.com%2Fvideoplayback%3Fid%3D33005fe607768887%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1285635766%26sparams%3Did%252Citag%252Cip%252Cipbits%252Cexpire%26signature%3D270C0127096BD3951015ACACBF0ACC846447711F.19E00ADDD99DBC8E634C913DF062363005763736%26key%3Dck1&iurl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer2%3Fapp%3Dblogger%26contentid%3D33005fe607768887%26offsetms%3D5000%26itag%3Dw160%26sigh%3Dw4BkE_CmH-O7ni_ivTMOAI0rUkw&autoplay=0&ps=blogger"allowFullScreen="true" /></object><br /><br />PS Best wel koel die geintegreerde video upload van BLogger, als we nou hele goeie TOMIS, oeps, BOFS doen de komende tijd kunnen we parleys van de kroon steken!<br /><br />PS2: Aangezien de thumbnail eigenlijk de hele grap van t filmpje verraad, wilde ik natuurlijk de thumbnail aanpassen. Echter dit kan niet, volgens <a href="http://video.google.com/support/bin/answer.py?hl=en&answer=59035">Google help.</a> Een snelle <a href="http://nalts.wordpress.com/2006/09/05/how-do-i-change-my-video-thumbnail-on-youtube/">zoekactie</a> levert de info dat Youtube (en wellicht ook Google Video) als thumbnail het middelste frame van je video kiest, maar dit ga ik na een lange dag Devoxx natuurlijk niet uitproberen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-8035690235774149821?l=isaacdevelopers.blogspot.com' alt='' /></div>Valentijn Scholten (ISAAC)2008-12-08T21:21:00ZHello world from Devoxx/Javapolis!Valentijn Scholten (ISAAC)http://www.blogger.com/profile/12425265502283982291noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-54824039262698762582009-01-28T14:44:33Z2008-12-08T12:32:00ZJaja we zijn van start!<br /><br />Heerlijk geeky hier op Devoxx, heerlijk om eens rustig wat nieuwe technieken gepresenteerd te krijgen.<br /><br />De volgende sessies al achter de kiezen:<br /><br />Valentijn en Edwin: <strong>JavaFX</strong><br />Pieter: <strong>RESTful services</strong><br />Xander: <strong>Scala in depth</strong><br /><br />To come <strong>Romain Guy </strong>(Android) en <strong>Chet Haase </strong>(Flex) (spelling ok?) Extra ingelast!<br /><br />Verder servlets 3.0 en Java Power tools!<br /><br />Salut.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5482403926269876258?l=isaacdevelopers.blogspot.com' alt='' /></div>Valentijn Scholten (ISAAC)2008-12-08T12:32:00ZTrace je kerstcadeaus met TwitterKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-57571668432102334582009-04-21T06:51:53Z2008-12-04T14:44:00ZDe feestdagen staan weer voor de deur en snel zal de stad weer overladen worden door enthousiaste koopjesjagers. Helaas is parkeren rond deze tijd van het jaar een probleem, je kunt je bijna geen weg banen in de binnenstad en de rijen bij de kassa zijn zo lang dat je het liefst snel naar huis terug wilt rennen. Wat doe je ook in de stad met deze drukte? Online bestellen is een goed alternatief als je niet tegen die drukte kan, zeker als het ook nog gratis thuis wordt bezorgd.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4ymxIapfbE4/STfvGfG83QI/AAAAAAAAACA/PMjcjPBCtmg/s1600-h/twitter_trackthis.jpg"><img id="BLOGGER_PHOTO_ID_5275948383196732674" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: pointer; HEIGHT: 229px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_4ymxIapfbE4/STfvGfG83QI/AAAAAAAAACA/PMjcjPBCtmg/s400/twitter_trackthis.jpg" border="0" /></a><br /><br /><span style="FONT-WEIGHT: bold">Zou het niet geweldig zijn als ze je een "tweet" sturen over waar je bestelling zich bevindt?</span><br />Voor de online koopjesjagers is nu dus iets nieuws bedacht door "<a href="http://www.usetrackthis.com/">TrackThis</a>". Hiermee ontvang je updates van de locatie van je pakketje via <a href="http://twitter.com/trackthis">Twitter</a>. Je krijgt tweets wanneer jouw pakketje verzonden is, bij een distributeur terecht is gekomen, de vrachtwagen op gaat en bij je aan de deur is geweest.<br /><br />Persoonlijk vind ik dit een van de beste Twitter tools die ik tot nu toe gezien heb, en zoveel heb ik er eigenlijk nog niet gezien... Het is een knap staaltje denkwerk geweest.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5757166843210233458?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2008-12-04T14:44:00ZFlex CoCoMo (Flex nieuwe platform voor Even Richer Applications )Barthttp://www.blogger.com/profile/10186904346700877863noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-40849403359501485642009-01-28T15:38:42Z2008-12-01T07:39:00Z<a href="http://3.bp.blogspot.com/_awPgIbUVxXY/STOeAsy_poI/AAAAAAAAABQ/t2AUjHQeTHs/s1600-h/flex.PNG"><img id="BLOGGER_PHOTO_ID_5274733323443218050" style="margin: 0px 10px 10px 0px; float: left; width: 320px; height: 320px;" alt="" src="http://3.bp.blogspot.com/_awPgIbUVxXY/STOeAsy_poI/AAAAAAAAABQ/t2AUjHQeTHs/s320/flex.PNG" border="0" /></a><br /><br /><br />17 November 2008, Adobe brengt de bèta versie van CoCoMo uit. Het is een platform waarop je in Flex op een gemakkelijke wijze realtime socialnetwork componenten aan je applicaties toevoegt. Denk aan VOIP (Voice over IP), FileSharing, andere mensen bekijken via hun webcam, chatten en gedeelde whiteboards. Adobe host zelf het platform waardoor deployment, onderhoud en schaalbaarheid geen issues zijn, dit wordt voor je gedaan. Ook aan beveiliging is gedacht, door middel van een unieke gegenereerde key kunnen alleen mensen die de key hebben inloggen op jouw applicaties en er zijn rollen in te stellen voor gebruikers. Er zijn een aantal standaard componenten aanwezig waar je binnen 10 minuten mee aan de slag kunt, natuurlijk zijn al deze componenten uit te breiden naar eigen gebruik. Het principe is heel gemakkelijk, je kunt voor elke toepassing een zogeheten “Room” gebruiken waarin mensen kunnen inloggen en meedoen aan jouw applicatie. In deze “Room” kun je data uitwisselen met de anderen, wat voor data het ook is.<br />Het klinkt allemaal veelbelovend, laten we hopen dat ze die verwachting waar kunnen maken als het definitieve product uit komt.<br /><br /><br /><br />Meer informatie:<br /><a href="http://labs.adobe.com/technologies/cocomo/">http://labs.adobe.com/technologies/cocomo/</a><br /><a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&catid=759&entercat=y">http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&catid=759&entercat=y</a><br /><a href="http://download.macromedia.com/pub/labs/cocomo/cocomo_developerguide.pdf">http://download.macromedia.com/pub/labs/cocomo/cocomo_developerguide.pdf</a><br /><br /><br />Voorbeeld:<br /><a href="http://blogs.adobe.com/collabmethods/2008/05/_another_cocomo_experiment_the.html">http://blogs.adobe.com/collabmethods/2008/05/_another_cocomo_experiment_the.html</a><br /><br /><p>Registreer en download op:<br /><a href="https://cocomo.acrobat.com/">https://cocomo.acrobat.com/</a></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4084940335950148564?l=isaacdevelopers.blogspot.com' alt='' /></div>Bart2008-12-01T07:39:00ZTaart voor ISAACKarinhttp://www.blogger.com/profile/03043080044546308966noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-62094122355830547322009-01-28T14:47:55Z2008-11-21T15:46:00Z<div style="padding: 3px; text-align: left;"><a href="http://www.flickr.com/photos/medialoog/3048373106/" title="photo sharing"><img src="http://farm4.static.flickr.com/3237/3048373106_bd2721ea37.jpg" style="border: 2px solid rgb(0, 0, 0);" alt="" /></a><br /><span style="margin-top: 0px;font-size:0;" ><a href="http://www.flickr.com/photos/medialoog/3048373106/">flickr</a>.</span></div><p>Vandaag kwam totaal onverwacht een fijne verrassing door onze schuifdeuren naar binnen. Een bakker met een romige slagroomtaart! Het Nationaal Spaarfonds was zo tevreden met onze snelle service dat zij ons daarom beloond heeft met deze taart. Thomas mocht hem in ontvangst nemen samen met Ronald en Tom, samen hebben zij (e.a.) een spaarrekening aanvraagformulier verzorgd.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6209412235583054732?l=isaacdevelopers.blogspot.com' alt='' /></div>Karin2008-11-21T15:46:00ZHet eerste ISAAC tennistoernooiXanderhttp://www.blogger.com/profile/03447323900696387776noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-19253987954028299472009-01-28T15:38:49Z2008-10-06T06:59:00Z<p>Wie denkt dat ISAACi niet sportief zijn die heeft het mis. Afgelopen vrijdag was namelijk het eerste ISAAC tennistoernooi, en er waren maar liefs 12 deelnemers! Dit vond allemaal plaats op onze indoor tennisbaan, gelegen in de Wii-hoek. Hier volgt het verslag:</p><p>Het was een koele vrijdagmiddag in Eindhoven, toen de 12 deelnemers aan het eerste ISAAC tennis-toernooi zich mentaal voorbereidden op de veldslag die plaats zou gaan vinden. Het begon allemaal in de keuken onder het genot van een hapje en een drankje, maar al gouw kwam er gekreun en gescheld uit de Wii-hoek. </p><p><br />Merijn was de eerste die het onderspit delfde tegen niet-ontslagen Lars, waarna Xander al snel volgde door van Nick te verliezen. Jasper was veel te sterk voor JW, Edwin verbaasde vriend en vijand door van Rob te winnen, Bart had geluk en versloeg Koen, en Ronald versloeg langharige Rob in 3 games. </p><p><br />De tweede ronde bevatte minder verrassingen: Nick versloeg niet-ontslagen Lars in een zenuwslopende wedstrijd, die zelfs een Matchpoint voor niet-ontslagen Lars bevatte. Het was stil bij ISAAC toen Nick de genadeklap toebracht in de derde game... Jasper versloeg Edwin redelijk eenvoudig (Edwin was gehandicapt!) en Bart (in het roze!) versloeg Ronald. </p><p><br />De finalepoule ging tussen de titanen Nick, Bart en Jasper. Nick versloeg in de eerste wedstrijd Jasper in 2 games, maar daarna versloeg Bart Nick in 3 games... het ging dus allemaal om de laatste wedstrijd tussen Jasper en Bart. Als Bart zou winnen was hij de winnaar, maar als Jasper zou winnen dan zou er extra moeten worden gespeeld... </p><p><br />Maar Jasper was meer van de praatjes en verloor in 2 games, waardoor Bart onze eerste Wiisaac tennis-kampioen is! Gefeliciteerd Bart, en hulde!</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1925398795402829947?l=isaacdevelopers.blogspot.com' alt='' /></div>Xander2008-10-06T06:59:00ZWalt Disney World: twee toffe web-related systemenFrisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-7632490235981810502009-01-28T15:40:10Z2008-09-17T18:03:00ZHet zal voor een aantal van de lezers van dit blog geen geheim zijn dat ondergetekende nogal een themaparken-fan is, en dan van de Efteling en Disney in het bijzonder. Afgelopen anderhalve week was het dan ook weer tijd voor mijn inmiddels bijna jaarlijkse bezoek aan Walt Disney World, Florida. WDW (alle freaks zijn te lui om Walt Disney World steeds voluit te schrijven) is ’s werelds meest bezochte toeristische bestemming, meet ruim 100 vierkante kilometer en heeft daarop vier (!!!) Disneyparken, 22 resorts (met elk 2500+ kamers), 62.000 medewerkers, mijlen monorailverbindingen en nog een lading golfbanen, meren, waterparken en wat je al niet meer zou kunnen verzinnen. In totaal komen er meer dan 50 miljoen bezoekers per jaar op af.<br /><br />Nu is dit natuurlijk het blog van een IT-bedrijf, en niet een timeshare-promopraatje van Disney (hoewel ik dat ook wel naar tevredenheid zou kunnen houden). Daarom wil ik het hier eens hebben over twee relatief nieuwe web-related WDW IT-systemen die ik de afgelopen vakantie heb kunnen gebruiken, en die, zeker gezien hun buitengewone schaalgrote, interessant zijn. Je bent immers niet voor niks IT’er; dan blijf je zoeken naar de techniek achter de grote grijzende Mickey Mouse-facades. De twee systemen die we gaan bekijken zijn “Disney’s PhotoPass” en “Postcard From The Future”. Laten we met die laatste (en qua schaal kleinste) beginnen.<br /><br /><strong>Postcard From The Future</strong><br />Postcard From The Future is een systeem dat sinds een jaar draait in <em>Epcot</em>, het futuristische toekomst- en culturenpark van Disney. Hét bekendste symbool van Epcot is de geodesische bol (naar een ontwerp van Buckminster Fuller) van 55 meter hoog, waarin de attractie Spaceship Earth is te vinden. Met een Carnaval-Festival achtig transportsysteem rij je in die bol in zo’n vijftien minuten langs scenes die de geschiedenis van de communicatie verbeelden; van prehistorische rotsschilderingen en de uitvinding van het schrift tot de eerste computers en de knutselgarage van Apple CEO Steve Jobs’s ouders aan toe. In 2007 is de sponsoring van deze uit 1982 stammende attractie overgenomen door Siemens, waardoor Disney een update van veertig miljoen dollar kon laten uitvoeren.<br /><br /><a href="http://3.bp.blogspot.com/_Vtk4Llv11Gw/SNFIlBhvrqI/AAAAAAAAAA0/gFMrvsKkZoI/s1600-h/epcot_spaceship_earth_1982.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_Vtk4Llv11Gw/SNFIlBhvrqI/AAAAAAAAAA0/gFMrvsKkZoI/s320/epcot_spaceship_earth_1982.jpg" alt="" id="BLOGGER_PHOTO_ID_5247054841765670562" border="0" /></a>Alle honderden wagentjes van het systeem zijn vanaf nu voorzien van een touchscreen, wat vlak na het instappen in Spaceship Earth ook de eerste confrontatie met het “Postcard From The Future”-systeem is. Tijdens de eerste donkere tunnel van de attractie (je moet immers die 55-meter hoge bol in), kies je op dat touchscreen (formaat multimediazuil) één van de zes ondersteunde talen, en je geeft middels een fraai zoombare wereldkaart aan waar je vandaan komt. De taalkeuze heeft meteen ook effect op de in de wagentjes ingebouwde voice-over van de attractie; erg slim gedaan!<br /><br />Tegen het einde van de donkere tunnel, vlak voor de eerste scène over grotschilderingen, moet je nog even naar een beeldscherm boven de wagentjes kijken; een flits en hop, een foto is gemaakt. Met die foto gaat “Postcard From The Future” aan de slag, zoals later zal blijken.<br /><br />Tijdens de rit zelf zie je het systeem verder niet terug, tot het punt waar je, na de scènes met de garage van Steve Jobs en een Matrix-achtige sourcde-code projectie, begint aan de tocht terug naar beneden uit de bovenste delen van de hoge Spaceship Earth-bol. In de lange en donkere “descent tunnel” (waarin je relaxed half achterover in je wagentje ligt), floepen de touchcreens weer aan, en krijg je een aantal vragen over je ideale toekomst. Hou je meer van werk of vrije tijd? Van private transport of public transport, etc etc. Halverwege de tunnel krijg je op basis van de gemaakte keuzes op je individuele touchscreen een hele toffe en knap gerenderde animatie te zien op basis van je keuzes. Het meest bijzondere hieraan is wel, dat de hoofdjes van de animatifuguren zijn vervangen door de uitgesneden gezichten van jezelf en je medepassagier in het wagentje! De eerder gemaakte foto is dus door een stukje gezichtsherkenninssoftware gehaald, waarbij de gezichten netjes losgesneden zijn van de achtergrond. Daarmee is vervolgens een (waarschijnlijk) Flash-achtige animatie gerenderd. Het ziet er een beetje South-Park achtig uit natuurlijk, doordat er maar één standpunt beschikbaar is voor in de animatie, maar dat geeft het ook wel weer een leuke look.<br /><br />Wanneer je uit de wagentjes stapt, kom je in de futuristische (veel neon en brushed steel) post-show ruimte terecht waar Siemens wat reclame maakt. Middenin staat een enorme verlichte wereldbol (meter of zes hoog), waarop in de oceanen de foto’s tevoorschijn komen van hen die net uit de attractie stappen. Hierop zie je dus ook wel jezelf, en met een boogje vliegt je foto dan naar de plaats waar je vandaan komt (die had je immers eerder ook opgegeven in de wagentjes). Op die plek blijft ook een klein wit stipje achter. Ik denk dat de wereldbol zich ’s ochtends reset, want er stonden pas een stuk of wat stipjes op noordwest Europa.<br /><br />Rondom de wereldbol zijn zo’n tien fraai vormgegeven “zuilen” te vinden, met daarop een applicatie waarmee je een kaartje “vanuit de toekomst” (oftewel Epcot) naar huis kunt sturen. Wanneer je voor zo’n zuil gaat staan, zoekt het systeem met behulp van een camera en gezichtherkenning weer naar de juiste foto die in de rit gemaakt is. Dit werkt voor zo’n 90% vlekkeloos. De overige 10% moet even bladeren in een index. Met de applicatie op de zuil kun je het door “Postcard From The Future” gemaakte filmpje sturen naar een paar e-mail adressen naar keuze. Deze ontvangen een link naar de flash-animatie online. Zodra je je kaart verzonden hebt, komt een ansichtkaart-achtig frame uit die animatie ook weer op één van de grote projectieschermen in de post-show ruimte te staan. Deze wisselen dus naarmate bezoekers “Postcards From The Future” verzenden. Fancy!<br /><br />Al met al een behoorlijk groot systeem; elk wagentje (ik schat dat er zo’n 250 zijn) heeft twee eigen touchscreens, en een individueel lokaal verwerkingssysteem. Vervolgens is er software (op servers neem ik aan) die de animaties rendert en de gezichtsherkenning uitvoert. We hebben de wereldbol met de locatieweergave. En dan zijn er ook nog de e-mail consoles (met overigens een hele mooie Flash-interface vol in en uitschuivende panelen en een on-screen keboard voor de e-mail input), die de animaties klaarzetten op een webserver. En dat voor 2500 bezoekers per uur!<br /><br /><strong>Disney’s Photopass</strong><br />Het tweede systeem waarvan ik onder de indruk was is “Disney’s Photopass”. In tegenstelling tot “Postcard From The Future” is dit niet beperkt tot één attractie, maar is het in alle parken van Walt Disney World in Florida en Disneyland in California actief (als één globaal systeem).<br /><br /><a href="http://1.bp.blogspot.com/_Vtk4Llv11Gw/SNFJCV38KCI/AAAAAAAAAA8/yTe3mmrIN-U/s1600-h/photopass.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_Vtk4Llv11Gw/SNFJCV38KCI/AAAAAAAAAA8/yTe3mmrIN-U/s320/photopass.jpg" alt="" id="BLOGGER_PHOTO_ID_5247055345443678242" border="0" /></a>PhotoPass heeft als belangrijkste doel het opslaan, samenvoegen en online beschikbaar maken van de tientallen foto’s die Disney tijdens een bezoek aan het resort van je groep (party) of familie kan maken. In alle parken van WDW zijn Disney-fotograven te vinden die je op de foto kunnen zetten met het Disney-kasteel, een Disney-figuur (de zogenaamde “characters”, om even in Disney-jargon te blijven), een fraai stukje Disney-natuur of whatever-else Disney. Natuurlijk kun je al die foto’s ook gewoon door een aardige medebezoeker laten maken, maar dat is niet hoe Disney z’n dollars wil verdienen, en —gelukkig voor Mickey’s wallet— ook niet wat de meeste Amerikanen doen.<br /><br />In totaal lopen er zeker op honderd plaatsen in de parken fotograven rond. Wanneer je voor het eerst op de foto gaat bij één van hen krijg je een plastic pasje van het PhotoPass systeem, met daarop een 16-digit (unieke) code (alfanumeriek) en een 2-dimensionale barcode. De PhotoPass-fotograaf scant die barcode met een klein extra dingetje aan zijn camera, waardoor de foto een unieke link krijgt met je PhotoPass ID. Om de paar minuten lopen ze even “backstage”, om daar hun memory card te legen op het Disney PhotoPass-netwerk, waardoor de (high res) foto’s altijd snel in het systeem beschikbaar zijn. Natuurlijk gebruiken Mickey, Pluto, Goofy en Peter Pan die tijd ook om (zonder hun warme pak) even bij te komen onder de airco. Bij een volgende fotograaf geef je gewoon weer even je PhotoPass, deze scant de barcode, et voila: weer een foto in je virtuele PhotoPass-album.<br /><br />Een geavanceerder stukje van het PhotoPass-systeem zie je bij de zogenaamde “on ride”-foto’s. Dat zijn foto’s die tijdens een rit in een attractie door een automatische camera worden gemaakt, bijvoorbeeld in een achtbaan of waterattracties. We kennen ze hier in Nederland wel van de Python of het Carnaval Festival in de Efteling. Bij de Efteling staan bij de uitgang van de attractie wat monitoren waarop je de gemaakte foto kunt zien, en die bij een bemande balie ook meteen kunt laten afdrukken. In WDW hangen die monitoren er ook, maar eronder is een mooi PhotoPass barcode-scannertje geplaatst. Als je de tijdens de rit gemaakte foto tof vindt, scan je gewoon even je PhotoPass, en ook deze foto staat voortaan in je album.<br /><br />Op verschillende plaatsen in het resort (en ook in de lobby van elk hotel) zijn PhotoPass Access Points te vinden, waar je door je pasje te scannen al je foto’s kunt bekijken, en, indien gewenst, meteen kunt laten afdrukken. Het staat daar natuurlijk vol met medewerkers die om het hardst roepen hoe tof en bijzonder je foto’s wel niet zijn, zodat je maximaal gaat investeren in prints. Deze PhotoPass Points kunnen ook de foto’s van meedere PhotoPasses combineren tot één album (twee pasjes scannen en klaar), of er wat eenvoudige bewerkingen op doen (leuk randje om de foto, jaartal erbij, handtekening van een Disney-figuur uit de database erop, etc etc). Allemaal via een toffe Flash-achtige user interface.<br /><br />Natuurlijk kun je je PhotoPass-album ook online bekijken. Op een speciale website kun je inloggen met je PhotoPass ID, waarna alle foto’s mooi op park en datum gesorteerd inzichtelijk te maken zijn. Wil je je foto’s aan anderen laten zien? Geen probleem: er is een “Share With Friends” optie, waarmee je het album ook voor vrienden inzichtelijk kunt maken via een ge-emailde link. Natuurlijk heeft Disney daarvoor wel weer een naam en e-mail nodig, waardoor hun spam-emaillijst groeit als kool.<br /><br />Als Disney eenmaal weet welk e-mail adres bij een PhotoPass ID hoort, gebruiken ze dat ook volop om je te blijven herinneren aan die toffe foto’s die je nog in je album hebt staan, en die schreeuwen om een print. Online even aanvinken welke je hebben wilt, de foto’s weer bewerken met wat fraaie edit-tools (allemaal in-browser), en je krijgt ze de zelfde week nog thuis gezonden. Als canvasschilderij, als sleutelhanger of als horloge-achtergrond wellicht? Ook geen probleem. Je krijgt alleen nooit zomaar toegang tot de high-res bronbestanden van de foto’s. Die houdt Disney —heel slim— zelf. Tenzij je de hele boel op een Kodak PhotoCD thuis laat sturen, maar dat kost je meer dan 100 dollar.<br /><br />Als software-ontwikkelaar ben ik vooral erg onder de indruk van de omvang van het systeem. Honderden high-res foto’s per minuut moet dat systeem verwerken, die allemaal minimaal een maand behouden blijven op de Disney-servers. Ook de bewerkingsopties op de website zijn heel erg handig, snel en mooi ontwikkeld. Commercieel is het natuurlijk weer een typische Disney meesterzet. Je hoeft immers niet meer steeds snel in een park te beslissen of je een foto hebben wilt of niet, maar kunt dat rustig thuis —met de hotel en entreerekening al weer vergeten— doen. En dat is de money-making magic van Disney.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-763249023598181050?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2008-09-17T18:03:00Zg CrMaartennoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-17444930382926727932009-01-28T14:50:06Z2008-09-02T22:16:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3M1ej38OSYo/SL28ncazIII/AAAAAAAAAAM/907zYvvzvJ0/s1600-h/chrome-205_noshadow.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_3M1ej38OSYo/SL28ncazIII/AAAAAAAAAAM/907zYvvzvJ0/s400/chrome-205_noshadow.png" alt="" id="BLOGGER_PHOTO_ID_5241552927158640770" border="0" /></a><br />Incase you don't know what the above means, it's simple, first of all is the symbol for Googol (or was it Googolplex? I always mix them up), and the second for Chromium. Combing them together with some missspelling results in something now known as Google Chrome.<div><br /></div><div>This is a new browser, by Google, that is ought to take away the "pain" in webbrowsing. While I can't say everything about it, having used it for a mere 30 minutes, I can tell you my first impressions of this "beast".</div><div><br /></div><div>But first of all, let us explain why I am not writing this in Dutch, even tough it's my native language. 1. It's late. 2. I'm lazy. 3. <s>Context</s> Language "switching" is expensive for me. And I may do a Dutch translation if there is enough demand. A later post may include a Dutch translation by default.</div><div><br /></div><div>Anyway, back to Google Chrome! Before anyone can complain, these are my, and my alone, first impressions. So don't bother complaining. You know who I'm refering to. ;-)</div><div><br /></div><div><ol><li>For a supposedly new and innovative browser, it looks and feels remarkably like Opera, I haven't yet found a feature that isn't in Opera. With the possible exception of the multiple processes (see later) and the App mode. But the latter is a counterpart to Opera's Widget system. I suppos OmniWeb will feel similar as well, for Mac users (from what I've heard). Look and Feel also looks a lot like Opera.</li><li>It's, for now, XP/Vista only.</li><li>Installation was painless, just run the exe you download and say if you want to place a shortcut on the desktop/quicklaunch and if you want to import from IE or FireFox (strangely enough not Opera nor Safari), which you can't cancle after you accidently make a mistake (so I started with the RunMeFirst of IE as my homepage). One thing to note, it will plant itself into the the Local AppData of the running User (in Vista), no way to define something else. In XP this will be a similar place (ApplicationData for example).</li><li>The only "innovative" feature I could find was the 1 process per tab idea. I currently have eight tabs open, with a total of ten chrome processes. So one master monitoring process, one for the actual browser "chrome" (to use a FireFox term, it's the GUI around the actual web content), which, if the rumors are right is also a webpage. And one for each tab. So I guess the actual browser window is a webpage. Thread-wise the master process currently uses 27 threads, maybe a bit excessive, not sure. Each browser window 5 threads and roughly half the memory, even less for workingset memory. Each tab process has 2 threads. I think one for the JavaScript, and one for the, required, Windows Message Pump (it's a Win32 API thing). Or maybe for the rendering, if that's done my the tab process itself. Memory-wise it's similar to a window process, basicly confirming (yeah, not very scientific, I know) that a window is a webpage.</li><li>Scroll is too fast.</li><li>The Mozilla Prism/Adobe Air/MS Silverlight/Opera Widget part consists of placing a shortcut in either QuickLaunch or the Desktop telling the Chrome application to start with an url, the exact url from where you chose to create an app out of a webpage. Apps open in a new window. But share the infrastructure of the other Chrome apps (which means it will launch the master Chrome app if it's not yet present). If you open a page/tab in the new App window it will open a new tab in the last used window, that is not an App window. It also means it will start 2 new processes under the Chrome master process, which makes sense because a window is a webpage and the actual app is also a webpage.</li><li>It does not yet pass the Acid3 test (63%), even tough the nighlies of WebKit (which is the render engine used in Safari and most of the webbrowser-like applications found on the Mac, and on other platforms) already do for some time, and I believe the latest beta of Safari does this as well. Acid2 test also isn't yet pixel perfect (like it is on Opera ^_^), just like Safari. So I think they are currently using the WebKit (or a near) version to the one used in the latest stable Safari release.</li></ol><div><br /></div><div>That's it for now!<br />I'll might do a more indepth (and comparison with other browsers) article in the future.</div><div><br /></div><div>--Maarten</div><div><br /></div><div>PS.</div><div><br /></div><div>Written from within g Cr!</div><div><br /></div><div>PPS.</div><div><br /></div><div>Next morning now, and I think I forgot to mention something last night. I put quotes around the word "innovative" in point 4, why did I imply sarcasm there? Well, a little language has been known to casually support tens of thousands of processes at the same time. What is the difference? Well, those processes are lightweight and use the shared nothing approach to concurrency. In fact, most processes/threads in Erlang are so called "green threads" or "fibers". In Chrome, they are spinning up real, heavy, processes. One for each tab. </div><div><br /></div><div>But I have to admit, it <span class="Apple-style-span" style="font-style: italic;">is</span> very Google in mentality (the spinning up of processes), Google's famous "MapReduce" is infact implemented to spinning up processes that do part of the job, actually they spin up entire machines for this!</div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1744493038292672793?l=isaacdevelopers.blogspot.com' alt='' /></div>Maarten2008-09-02T22:16:00ZHug a developer today...Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-71992372289902000442009-01-28T15:40:27Z2008-09-01T11:09:00Z<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/1lqxORnQARw&hl=en&fs=1"><param name="allowFullScreen" value="true"><embed src="http://www.youtube.com/v/1lqxORnQARw&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7199237228990200044?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2008-09-01T11:09:00ZStar Trekavond en PizzarecordFrisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-48479990471954909182009-02-06T13:28:38Z2008-07-17T06:53:00Z<a href="http://2.bp.blogspot.com/_MlgmCqJKfpo/SYw7ABIbQ_I/AAAAAAAAAIA/B6eIDuyWJ8c/s1600-h/16072008.jpg"><img id="BLOGGER_PHOTO_ID_5299675732998046706" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 200px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/SYw7ABIbQ_I/AAAAAAAAAIA/B6eIDuyWJ8c/s200/16072008.jpg" border="0" /></a><br /><div><a href="http://bp2.blogger.com/_Vtk4Llv11Gw/SH7srQP5sSI/AAAAAAAAAAs/Gy9PUJloC9A/s1600-h/16072008.jpg"></a>Na de drukte rond de verhuizing (met saaie zaken als tafels en bureaustoelen plaatsen), zijn we langzaamaan eindelijk weer toe aan het komen aan de essentiële zaken van het ISAAC-bestaan. Eén daarvan is het houden van de inmiddels "Befaamde Ende Traditionele" Star Trekavonden.<br /><br />De benodigde beamer en het projectiescherm zijn vorige week al opgehangen in de Wii en Star Trekhoek, en hoewel we het nog zonder Dolby 5.1 geluid moeten doen, konden we gisteravond wel voor het eerst in het nieuwe kantoor genieten van Deep Space 9 en The Next Generation. Kortom: ISAAC Star Trekavond nummer II!<br /><br />Tijdens de vorige Star Trekavond kregen we het voor elkaar om een New York Pizzabestelling te hebben van meer dan 80 euro, maar die paste nog wel nèt in één scooterbox van de bezorgpuber (met wat nadelige pleteffecten als gevolg). Dat moest natuurlijk dit keer overtroffen worden! Met wat zachte dwang besloot iedereen dit keer dan ook om rijkelijk side-dishes te bestellen; met daarbij ook een groter aantal Star Trekkijkers, kwamen we uit op een totaalbestelling van 126 euro! Daarmee was ook het expliciete doel van deze bestelling bereikt, namelijk om niet één, maar twee bezorgpubers-op-scooter tegelijk onze bestelling te laten bezorgen! Whoahahaa! Volgens mij moeten we intussen toch wel een key-account zijn bij NYP.<br /><br />Op het programma stonden wat fijne Dominion en Cardassian afleveringen van Deep Space 9, met daarna de klassieke dubbelaflevering Decent uit The Next Generation. Dat is die episode waarin prof. Steven Hawking zelf ook nog even een cameo rolletje heeft.<br /><br />Enfin, het was natuurlijk weer een groots succes, maar de doelstelling voor de volgende keer is een pittige. Want hoeveel pizza's moeten we wel niet bestellen om (in goede IT-traditie), van 2 naar 4 bezorgpubers te komen bij Star Trek Night III?<br /><br />Live long and prosper!<br /><br /><div></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4847999047195490918?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2008-07-17T06:53:00ZHet is me in de (aard)bol geslagenPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-56118080878005149212009-01-28T14:51:02Z2008-06-18T21:28:00Z<a href="http://4.bp.blogspot.com/_MlgmCqJKfpo/SFl_zfRfnPI/AAAAAAAAADE/RDT23eapPtI/s1600-h/573450_learning_math.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_MlgmCqJKfpo/SFl_zfRfnPI/AAAAAAAAADE/RDT23eapPtI/s320/573450_learning_math.jpg" alt="" id="BLOGGER_PHOTO_ID_5213338566202989810" border="0" /></a><br />“In mathematics, you don't understand things, you get used to them.” <em>von Neumann</em><br /><br />En met dat in gedachte zal ik toch proberen om een verhelderend stuk te schrijven over dit favoriete vak van menig programmeur. Waar heb ik dat aan te danken, hoor ik je denken en ergens heb je gelijk. Waarom zou ik je lastig vallen met een onderwerp waar je vroeger al slecht in was en wat je sinds het behalen van je diploma waarschijnlijk achteraan in je hersenen hebt geduwd (nog achter die genante herinneringen van toen je veertien was en je je geluk waagde bij het mooiste meisje van de klas). Hiervoor verwijs ik je naar Google in Mountain View, Californië. Die bedachten enkele jaren geleden dat het grappig zou zijn om een virtuele aarde te maken met aaneengeregen foto’s. Google Earth is in een korte tijd uitgegroeid tot een begrip en steeds vaker word je geconfronteerd met opdrachten waarbij locatiegegevens en kaarten een rol spelen. Het is een kwestie van tijd voordat je oog in oog komt te staan met de opgave om de afstand tussen twee coördinaten te berekenen en erachter komt dat deze coördinaten (uitgedrukt in lengtegraden en breedtegraden) niet altijd even ver van elkaar af staan. Met alleen de stelling van Pythagoras, die je ooit uit je hoofd hebt geknald omdat je wiskunde docent je wist te vertellen dat je hiermee alles kon uitrekenen, kom je letterlijk en figuurlijk nergens. Wat jij nodig hebt is een stevige dosis haversinus.<br /><br />De haversinus formule kun je gebruiken om de afstand tussen twee coördinaten te berekenen en wel op de volgende manier:<br /><ul><br /><li>Je neemt de radius van de aarde (R), 6371 km</li><br /><li>Je neemt het verschil tussen de twee breedtegraden (∆b = b1 – b2)</li><br /><li>Je neemt het verschil tussen de twee lengtegraden (∆l = l1 – l2)</li><br /><li>En dan gooi je die in de onderstaande formule:<br /><br />afstand = R * (2 * atan2(√(sin2(∆b/2) + cos (b1) * cos(b2) * sin2(∆l/2) ), √(1-a)))</li><br /></ul><br />Ho ho ho, even een stapje terug, wat was die laatste? Laat me het uitdrukken in Java code, dat begrijp je vast beter.<br /><br /><span style="font-family:Courier;"><br />public double calculateDistance(double long1, double long2, double lat1, double lat2) {<br /> Integer r = new Integer(6371);<br /> Double deltaLong = Math.toRadians(long1 - long2);<br /> Double deltaLat = Math.toRadians(lat1 - lat2);<br /> Double x = Math.sin(deltaLat/2) * Math.sin(deltaLat/2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(deltaLong/2) * Math.sin(deltaLong/2);<br /> Double y = 2 * Math.atan2(Math.sqrt(x), Math.sqrt(1-x));<br /> Double z = r * y;<br /> return z;<br />}<br /></span><br />Ok, laten we het er maar op houden dat je in wiskunde niks begrijpt, maar er aan went.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5611808087800514921?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-06-18T21:28:00ZMozilla 3 Merge conflictPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-72460152405722253962009-01-28T14:51:22Z2008-06-17T18:26:00Z<a href="http://3.bp.blogspot.com/_MlgmCqJKfpo/SFgChvCqG7I/AAAAAAAAAC8/phqMNw5L1k8/s1600-h/mergeconflict.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_MlgmCqJKfpo/SFgChvCqG7I/AAAAAAAAAC8/phqMNw5L1k8/s320/mergeconflict.jpg" alt="" id="BLOGGER_PHOTO_ID_5212919347267902386" border="0" /></a><br />Mozilla heeft met Firefox 3 een behoorlijke verbetering geleverd op de vorige versie, minder geheugengebruik en snellere opstarttijden lossen het grootste probleem van de browser op. Maar dat neemt niet weg dat we niet nog een schop onder de gordel kunnen geven in de richting van Mozilla. Neem een kijkje naar de afbeelding, dit is de site zoals die live stond op de releasedag van Mozilla FireFox 3. Het ziet er naar uit dat er een SVN/CSV merge conflict door het net is geglipt.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7246015240572225396?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-06-17T18:26:00ZEen webservice in 5 minutenPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-25875462186728478642009-02-06T12:57:30Z2008-06-09T08:02:00Z<a href="http://1.bp.blogspot.com/_MlgmCqJKfpo/SEzkvM9OsGI/AAAAAAAAAC0/aWywViCcyjQ/s1600-h/697890_pocket_watch_5.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/SEzkvM9OsGI/AAAAAAAAAC0/aWywViCcyjQ/s320/697890_pocket_watch_5.jpg" alt="" id="BLOGGER_PHOTO_ID_5209790368543846498" border="0" /></a><br />EJB 3.0 en webservice annotations maken het mogelijk om webservices te maken, zonder alle details te kennen van WSDL of binding of wat dan ook. Sterker nog, je kunt in enkele minuten een webservice maken. Het enige dat je nodig hebt is een interface klasse, een implementatie klasse en een paar annotations. Laten we dit eens van dichtbij bekijken met het aloude “Hello World” voorbeeld. Maak een EJB 3.0 project en maak daarin allereerst de interface klasse.<br /><br />package nl.isaac.ejb.service;<br /><br />import java.rmi.Remote;<br /><br />import javax.jws.WebService;<br />import javax.jws.soap.SOAPBinding;<br />import javax.jws.soap.SOAPBinding.Style;<br /><br />@WebService<br />@SOAPBinding(style = Style.DOCUMENT)<br />public interface HelloWorld extends Remote {<br />String hello(String name);<br />}<br /><br />Hierin zie je twee annotations staan. De eerste “@WebService” geeft simpelweg aan dat het om een webservice gaat. De tweede geeft aan welk soort SOAP binding je gebruikt, hierin heb je twee smaken “RPC” en “Document”. In het voorbeeld gebruik ik “Document”, maar in dit geval maakt het niet uit om hier “RPC” van te maken (Het verschil tussen document en RPC is grofweg gezegd dat RPC maar een enkel element als resultaat geeft en document een uitgebreid XML document terug kan geven). In de interface klasse staat verder alleen onze methode gedefinieerd. Let er wel op dat de interface jave.rmi.Remote extend. Nu kunnen we onze implementatie klasse maken.<br /><br />package nl.isaac.ejb.service;<br /><br />import javax.ejb.Stateless;<br />import javax.jws.WebService;<br /><br />@Stateless<br />@WebService(endpointInterface = "nl.isaac.ejb.service.HelloWorld")<br />public class HelloWorldImpl {<br />public String hello(String name) {<br />return "Hello " + name;<br />}<br />}<br /><br />Let erop dat, ondanks dat dit de implementatie klasse van een interface is, je deze niet implementeert met de code “implements HelloWorld”. Dit gebeurt in de annotation @WebService, die in deze methode zijn endpoint interface instelt. Deze verwijst naar de interface klasse die we zojuist gemaakt hebben. Onze methode wordt geïmplementeerd en voilá, een webservice is geboren. Deploy je project in JBoss en controleer voordat je een client maakt of je service draait door de WSDL file aan te roepen. Dit kun je doen door de URL van je project in IE in te voeren met daarachter “/HelloWorldImpl?wsdl”, dit zou je een XML document moeten tonen met alle details over de webservice.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2587546218672847864?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-06-09T08:02:00ZOnautomatiseerbaarheidFrisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-37623493693705594492009-01-28T15:41:31Z2008-05-22T20:17:00ZOnautomatiseerbare zaken... ze bestaan echt!<br /><br />Soms begin je vol goede hoop aan het bedenken van requirements voor een systeem(pje), maar besef je na een paar uur analyseren dat je in een soort ondoordringbaar woud van verradelijke schaduwen, valse doorstruiken, moerassige dalen en onoverbrugbare kloven terecht bent gekomen. Dan kun je stevig door blijven hakken in dat woud in de (ijdele) hoop ooit nog eens aan de andere kant te komen. Of je kunt gewoon zuchtend opgeven. Neem nu een persoonlijk knutselprojectje waar ik al een tijdje over aan het denken ben: een prima voorbeeld van zo'n Mirkwood vol valse bijtspinnen. Althans, dat denk ik.<br /><br />Ik ben zelf nogal een liefhebber van boeken. Correctie, van mooie boeken. Ingebonden, leeslint, Nigeriaans lammerleer, goud-op-snee, eerste druk, je kent dat wel. In de loop der jaren is dat (volgens de laatste gefundeerde schatting) uitgekomen op zo'n 3000 kloeke folianten op een kleine 80 meter plank. En daar begint langzaamaan een probleem te ontstaan: wat staat waar, en wat heb ik eigenlijk?<br /><br /><a href="http://3.bp.blogspot.com/_Vtk4Llv11Gw/SDXWs6OQnhI/AAAAAAAAAAk/eLUVf9Walvk/s1600-h/moers_boeken.jpg"><img id="BLOGGER_PHOTO_ID_5203301011528130066" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://3.bp.blogspot.com/_Vtk4Llv11Gw/SDXWs6OQnhI/AAAAAAAAAAk/eLUVf9Walvk/s320/moers_boeken.jpg" border="0" /></a>Nu ik laatst voor de derde keer -blij ende tevree van bevredigde hebzucht- een boek uit een postpakket haalde om enkele uren later vol frustratie te ontdekken dat exact zo'n zelfde exemplaar al op m'n planken staat, werd het tijd voor ondersteuning middels ICT. Keiharde registratie zonder enig respect voor de privacy van de betrokken boeken, hoe speciaal of zeldzaam ook. Minister Hirsch-Balin zal trots op mijn plannen zijn!<br /><br />Wat moet zo'n registratiesysteem kunnen? Dat was de vraag die ik mezelf in goede IT-traditie stelde (niet erg Agile, ik weet het...) Wel, er moeten printbare lijsten uit kunnen komen. Op auteur, op titel, op taalgebied, op uitgever en wellicht ook op "reeks" (iets waar ik nogal waarde aan hecht, bijvoorbeeld alles uit de Baskerville-reeks van uitgeverij Atheneaum, of alles uit de Franse Bibliotheek van Van Oorschot). Die lijstjes zijn ideaal om mee te nemen op strooptocht in muffige antiquariaten (over zulke strooptochten op leven-en-dood is overigens een hilarisch boek verschenen van de duitser Walter Moers, "De Stad van de Dromende Boeken" - heerlijk zulke meta-literatuur!). En ik moet makkelijk en snel kunnen zoeken met mijn systeem om te zien of ik iets al heb. Liefst per SMS, maar dat is toekomstmuziek. Het vullen van het systeem moet eigenlijk met een barcode-lezer, maar dat is vast te moeilijk voor een high-level niet-embedded mannetje als ondergetekende. Dan maar ISBN-nummers kloppen.<br /><br />Verder is sorteren, het heerlijke ordenen ook een belangrijke zaak. Want alleen met ordening kan ik ook élk boek meteen vinden op de plank, zonder lelijke planknummers te moeten gaan monteren. Nu koester ik de blijde gedachte dat mijn huidige ordening op de plank vrijwel ideaal is, zeker gezien constraints als plankhoogte, diepte-ruimte en visuele uitstraling. Maar in die plankordening komt dus veel complexere logica om de hoek dan iets triviaals als alfabet, auteur of aankoopdatum. Zulke zielloos efficiënte systemen zijn meer iets voor professionele biobliotheken, niet voor een persoonlijke thuisbibliotheek.<br /><br />Boekomvang speelt dus een rol. Maar hoe orden ik daar digitaal op zonder elk boek te moeten nameten? De plankhoogte wil ik nog wel invoeren, maar 3000 keer een rolmaat trekken gaat zelfs mij te ver. Wellicht kan ik iets met een plugin van Amazon.com (Jeff Bezos en co hebben boekmaat in de database staan) en het Centraal Boekhuis. Maar die laatste heeft weer geen gratis toegankelijke API. En dan die visuele uitstraling van een boek. Die ordening gaat bij mij vaak op het type omslag. Is het leer of linnen, of toch gewoon stofomslag of (de horror!) een paperback? Die informatie is deels nog wel te vinden voor moderne boeken, maar niet voor een oude uitgave van Couperus uit 1950, of een obscuur museumgidsje uit 1972. En wat te denken van mijn (zeldzame maar her en der met zorg toegepaste) plankordening op basis van "ideologische compatibiliteit van de auteurs"? Je kunt Nietzsche niet zonder uitlokking van oorlog naast een lieve schat als Montesqieu zetten. En gaan Rimbaud en Verlaine alsnog in boekvorm hun relatie verdiepen als ik ze naast elkaar zet? Of wat te denken van een Wagner-biografie bij een facsimile-dagboek van Anne Frank? Dat gaat finaal mis natuurlijk! Maar hoe automatiseer je dat? Moet je de Wikipedia gaan parseren, een neuraal netwerk aanzwengelen en dat beslissingen laten nemen? En gaat dat algoritme zo zwaar op mijn arme core2duo CPU worden dat ik er een distributed computing project van moet maken via BOINC? Zucht... te veel vragen! Aargh! Scope Creep!<br /><br />Ja, soms moet je eigenlijk gewoon al opgeven voor je beginnen gaat. Ik doe het wel met de hand, ja!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3762349369370559449?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2008-05-22T20:17:00ZSOA in een web 2.0 omgevingPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-1031257814394638062009-02-06T12:57:01Z2008-04-29T11:07:00ZSoftware ontwikkelaars komen steeds vaker de term SOA of WebServices tegen. Deze twee termen zijn erg vergelijkbaar. SOA is misschien een wat ruimer begrip, maar hierover zijn de meningen verdeeld. Wat vaak niet wordt begrepen is dat SOA een essentieel onderdeel is van de zogeheten web 2.0 hype. Er wordt onder de noemer web 2.0 vaak veel gewerkt met technieken om rijke webapplicaties te ontwikkelen, maar er wordt vaak niet gedacht aan de gegevensbronnen die deze technieken moeten aansturen. Deze gegevensbronnen zijn het kloppend hart van de web 2.0 applicaties. In het komende artikel wordt dit verduidelijkt en wordt een introductie gegeven op SOA en WebServices.<br /><br /><strong>Web 2.0</strong><br /><br />Het is de IT eigen om vage termen te bedenken. Web 2.0 is daar misschien wel het beste voorbeeld van. Er is niet echt een vaste definitie van web 2.0 te vinden, maar het baseert zich op het idee van bijdrage van gebruikers en het delen van data op het internet. Websites die onder de noemer web 2.0 vallen, zoals wikipedia of flickr, bieden de gebruiker meer dan alleen harde data, ze bieden de gebruiker de mogelijkheid om hun eigen inbreng aan deze data toe te voegen.<br /><br /><strong>SOA</strong><br /><br />Wanneer men spreekt over web 2.0 wordt de term AJAX vaak gretig aangehaald. AJAX, ofwel Asynchronous Javascript and XML, is bedoeld om van de “ouderwetse” websites, rijke applicaties te maken, door zonder een browser refresh data van de server te halen. De term SOA is daarbij lange tijd ondergesneeuwd geraakt door de vele technieken om schitterende applicaties te maken. Toch is SOA de spil rond web 2.0. SOA staat voor Service Oriënted Architecture en slaat op de gedachte die ook achter web 2.0 staat, het delen van data. Of, iets gedetailleerder, het aanbieden van data in een uniforme wijze. Dit kan op allerlei manieren, denk aan XML, SOAP, kommagescheiden bestanden, dynamic link libraries, etc. Hierdoor kan de data hergebruikt worden en gedeeld worden (met bijvoorbeeld businesspartners, of zelfs de hele wereld). Vanuit een bedrijfsvoeringaspect kan men op deze manier ook dynamischer werken en sneller reageren op wat de concurrent doet. Vooral dit laatste heeft ervoor gezorgd dat de term SOA aan populariteit wint.<br /><br /><strong>De opbouw van een webservice</strong><br /><br />Bij een service zijn drie partijen gemoeid, de requestor, de provider en de broker. De requestor is de cliënt die gebruik gaat maken van de service. De provider is de partij die de service implementeert en de verzoeken van de cliënt verwerkt. De broker kan worden gezien als een makelaar waarbij de cliënt terecht kan om de juiste service te vinden. In grote settings kan dit middels een UDDI register, maar vaak ontbreekt dit onderdeel.<br /><br />Een WebService is opgebouwd uit een aantal componenten. Het contract, de implementatie en de interface. In het contract staat beschreven hoe de webservice is opgebouwd, welke techniek gebruikt wordt en hoe de service kan worden aangeroepen. De implementatie is de daadwerkelijke code die de verzoeken van clients verwerkt en beantwoord. De interface wordt door de client gebruikt om verzoeken naar de service te sturen.<br /><br />Belangrijk bij een webservice is de zogeheten “interoperability”. Dit houdt in dat de implementatie van de provider dusdanig moet zijn dat de cliënt altijd hiervan gebruik kan maken, ongeacht de techniek die hij gebruikt. In de mooiste gevallen volgt men de richtlijnen van het Basic Profile, die het gebruik van SOAP en WSDL voorschrijft, maar vaak worden ook JSON (Javascript object notation) objecten, Dynamic Link Libraries of kale XML gebruikt. In deze gevallen zijn er vaak online API beschrijvingen te vinden over de services.<br /><br /><strong>De mashup</strong><br /><br />Populair op het internet is de mashup. Een webapplicatie die gebruik maakt van verschillende services en gegevensbronnen en deze mengt tot nieuwe informatie. Denk bijvoorbeeld aan het koppelen van bedrijfsgegevens aan de plattegronden van Google Maps. Vaak worden er op internet mashups gemaakt, simpelweg voor de mashup. Zo is er een site waar men op een plattegrond kan aangeven hoe een bepaalde locatie ruikt, waarop men vervolgens kan zoeken waar op deze planeet het zoal stinkt naar rotte eieren. Maar een mashup kan voor een bedrijf van nut zijn. Door gebruik te maken van vrijelijk beschikbare data op het internet kan het zijn eigen data verreiken, of extra diensten aanbieden op zijn website. Denk bijvoorbeeld aan een persoonlijke routebeschrijving van een bezoekers’ thuis adres naar de dichtstbijzijnde bedrijfsvestiging.<br /><br /><a href="http://3.bp.blogspot.com/_MlgmCqJKfpo/SBcCusVDXXI/AAAAAAAAACA/inC4PrRaRlg/s1600-h/screenshot.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_MlgmCqJKfpo/SBcCusVDXXI/AAAAAAAAACA/inC4PrRaRlg/s320/screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5194623696391855474" border="0" /></a><br /><strong>ESB</strong><br /><br />Laten we om te beginnen een kijkje nemen naar een site die op een bescheiden manier gebruik maakt van een webservice. De site climacount.com bevat onder andere informatie over een aantal CO2 reductie programma’s. Hierbij maakt het gebruik van data die vrij beschikbaar is op internet om een kaart te laten zien van de omgeving waar een programma aan het werk is. Dit is natuurlijk maar een kleine invoeging van externe data en hierbij hoeft verder ook niet nagedacht te worden over de implementatie van externe data in de site, maar stel er worden van meerdere bronnen gegevens opgehaald. Het is dan onwaarschijnlijk dat al die bronnen met dezelfde techniek beschikbaar zijn. Zeker wanneer je gaat denken aan e-banking applicaties, waar nog vaak van zeer ouderwetse technieken gebruik gemaakt wordt zoals COBOL. Dan is het verstandig om na te denken over de architectuur van je applicatie om te voorkomen dat toekomstige wijzigingen het risico met zich meenemen dat de hele applicatie op de schop moet. Hier komt de term ESB, ofwel Enterprise Service Bus, in het verhaal. Het klinkt vreemd maar om het eerder genoemde risico te vermijden maak je een applicatie die niks anders doet dan gegevens van derden beschikbaar maken. Een soort service die de andere services omsluit, zeg maar. Je webapplicatie kan op die manier altijd de zelfde techniek gebruiken om gegevens op te halen bij de ESB en de ESB zorgt voor het aanroepen van de daadwerkelijke service. In de onderstaande illustraties zie je vrij duidelijk het voordeel van het introduceren van een ESB.<br /><a href="http://2.bp.blogspot.com/_MlgmCqJKfpo/SBcDLcVDXYI/AAAAAAAAACI/YcHC3_oy04c/s1600-h/chaos.png"><img style="margin: 0pt; cursor: pointer;" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/SBcDLcVDXYI/AAAAAAAAACI/YcHC3_oy04c/s320/chaos.png" alt="" id="BLOGGER_PHOTO_ID_5194624190313094530" border="0" /></a><br />Situatie zonder ESB<br /><br /><a href="http://3.bp.blogspot.com/_MlgmCqJKfpo/SBcDWsVDXZI/AAAAAAAAACQ/kVVXNEi9YOg/s1600-h/orde.png"><img style="margin: 0px; cursor: pointer;" src="http://3.bp.blogspot.com/_MlgmCqJKfpo/SBcDWsVDXZI/AAAAAAAAACQ/kVVXNEi9YOg/s320/orde.png" alt="" id="BLOGGER_PHOTO_ID_5194624383586622866" border="0" /></a><br />Situatie met ESB<br /><br /><strong>Nadelen van SOA en Web 2.0</strong><br /><br />De toevoeging van componenten om de services beschikbaar te maken, de XML lagen die over componenten geplaatst worden en de extra beveiliging die nodig is bij openbare services vereisen allemaal extra processorkracht en dus zwaardere servers.<br /><br /><strong>Conclusie</strong><br /><br />In dit artikel heb je de basisideeën achter SOA en WebServices in een Web 2.0 setting kunnen lezen. Essentieel hierbij is het beschikbaar stellen van data, het gebruiken van data van derden en het letten op de interoperability van de data. Bij het gebruik van meerdere WebServices kan het gebruik van een ESB de architectuur van je software overzichtelijk houden en eenvoudig bij te werken of uit te breiden. Een nadeel is dat het werken met een SOA denkwijze voor overhead in de software kan zorgen die extra processorkracht vereist en de hardwarekosten kan verhogen.<br /><br />Heb je zin gekregen om zelf aan de slag te gaan met SOA, maar weet je niet goed waar je moet beginnen, neem dan een kijkje op <a href="http://www.programmableweb.com/">http://www.programmableweb.com</a> waar een opsomming van allerlei API’s en WebServices te vinden is.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-103125781439463806?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-04-29T11:07:00ZJSR 303 bij ISAACKoenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-47032147054036907792009-01-28T15:41:48Z2008-04-23T20:16:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://jcp.org/images/common/logo_jcp.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://jcp.org/images/common/logo_jcp.gif" alt="" border="0" /></a><br />De afgelopen twee dagen heb ik samen met Jan Willem <a href="http://jcp.org/en/jsr/detail?id=303">JSR 303</a> (Bean Validation) besproken. Tijdens de gesprekken heeft hij zijn ervaringen met deze specificatie in wording uit de immer spreekwoordelijke doeken gedaan. Aangezien ik zelf de afgelopen maanden meer in de frontend hoek heb gezeten (flex, dojo) was het een voor mij zeer interessant gesprek. JSR 303 is een poging om het valideren van JavaBeans te standaardiseren en bouwt voort op de gebleken 'best practices' van XWork en Hibernate validator.<br /><br />De kracht van Bean Validation is dat de programmeur declaratief controles kan definiëren die moeten worden uitgevoerd op de waarden van javabean properties. In plaats van dit soort controles te vangen in code, kan je deze logica met annotaties definiëren. Met behulp van een standaard validatie framework worden de annotaties uitgelezen en gebruikt om de bean te controleren. Dus in plaats van bijvoorbeeld de volgende code in bijvoorbeeld PersonFacade.java te moeten schrijven:<br /><pre style="font-size: 11px;"><br />if (person.getEmailAddress() == null) {<br /> throw new ValidationException("person.email.isNull");<br />} else if (person.getEmailAddress().length() > 100) {<br /> throw new ValidationException("person.email.tooLong");<br />} else if (!isValidEmailAddress(person.getEmailAddress()) {<br /> throw new ValidationException("person.email.notValid");<br />} else {<br /> person.makePersistent();<br />}<br /></pre><br /><br />kan het volgende worden geschreven in de EJB Person.java<br /><br /><pre style="font-size: 12px;"><br />@NotNull<br />@Length(max=100)<br />@EmailAddress<br />private String emailAddress;<br /></pre><br /><br />en in PersonFacade.java vervolgens:<br /><br /><pre style="font-size: 12px;"><br />person.validate();<br />person.makePersistent();<br /></pre><br /><br />Alle "heavy lifting" vindt plaats achter de schermen, hoeft maar eenmalig te worden geschreven en kan eenvoudig als een component worden gebruikt binnen verschillende projecten.<br /><br />Ik heb in de interne ISAAC wiki een artikel geschreven waarin ik onze aanpak uit de doeken doe. Daarnaast staat daar wat voorbeeld code en enkele sequence diagrammen waarin uit wordt gelegd hoe het valideren precies in zijn werk gaat.<br /><br />Mocht je verder willen lezen, hier zijn enkele intressante artikelen over JSR 303 op Gavin King's blog: <a href="http://in.relation.to/Bloggers/BeanValidationSneakPeekPartI">1</a>, <a href="http://in.relation.to/Bloggers/BeanValidationSneakPeekPartIICustomConstraints">2</a> en <a href="http://in.relation.to/Bloggers/BeanValidationSneakPeekPartIIIGroupsAndPartialValidation">3</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4703214705403690779?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2008-04-23T20:16:00ZSwingende NickKoenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-40328300787672140432009-01-28T14:57:51Z2008-04-19T11:09:00ZStel je eens voor: Je rijdt in je auto naar je werk. Het is als redelijk laat en de meeste files zijn al opgelost. De snelheidsmeter wijst vrolijk naar de 135 kilometer per uur. Uit je speakers knalt een oude van AC/DC (uiteraard nog met Bon Scott) en net kwam Motorhead nog even voorbij gedenderd. Je bent een jonge man aan het begin van een veelbelovende carriere bij het snelgroeiende en ass kickende (web)software bedrijf ISAAC. De afgelopen maanden waren nogal zwaar, want een tijdje terug is beslist dat jij de Java Swing frontend gaat bouwen op een redekijk complexe JBoss backend. Je hebt nog niet veel ervaring met deze techniek, maar je bent al hard aan het studeren voor je SCJP. Bovendien heb je net de klassiekers "Concurrency in practice", "Thinking in Java" en "Effectice Java" verslonden. Je ademt Java, kan genieten van elegante code en sinds Javapolis 2007 ben je stiekem een beetje verliefd op Fabrizio Giudici (omdat hij zulke mooie swing demo's kan geven). Gisteren heeft je collega Jan Willem de JBoss remoting koppeling over HTTP beschikbaar gesteld, dus je kan niet wachten om die te koppelen. Je wil doorgaan, meer listhandlers schrijven, meer race conditions spotten en vooral kijken of die nieuwe nimbus look and feel wellicht al stabiel is, zodat die trage substance eindelijk kan worden vervangen. Je hebt immers inmiddels meer dan genoeg van al die collega's die telkens melden dat "het er leuk uitziet, maar wel wat traag is.". Tsss, ze zullen hun woorden terugnemen zodra jij klaar bent. "Java is niet traag, kijk maar naar Eclipse. Of nou ja... wellicht is dat niet zo'n goed voorbeeld.", denk je terwijl je bridgestones de paardenkrachten aan het asfalt overdragen.<br /><br />"Oh fuck! Niet nu! Ik zit in mijn auto op de fucking snelweg, dit is NIET handig!" schiet het door je hoofd, meteen gevolgd door een hoestbui waar de Marlboro man een puntje aan kan zuigen. Je klapt dubbel op je stuur en stuurt je auto zo goed en zo kwaad als het kan naar de kant van de weg. Je hebt het gevoel dat je longen een verblijf buiten je borstkas zoeken. De hoestbui waar je in vastzit, zorgt ervoor dat je maag nog van streek raakt ook. "Toch jammer van dat gebakken ei van vanmorgen", denk je als je ontbijt met een antiperistaltische beweging op dezelfde manier naar buiten komt als waarin het in eerste instantie in je maag terecht is gekomen. Als de hoestbui na een minuut of drie tot bedaren is gekomen en je de restjes ei met melk van je voorruit veegt, besef je eens te meer dat de dokter het toch waarschijnlijk bij het rechte eind had toen hij de diagnose kinkhoest stelde. Je baas Mark had dan wel gelijk toen hij zei dat het "Wel redelijk rock 'n' roll, is, als je 's ochtends in je auto de boel onderkotst", maar jij geeft dan toch zelf de voorkeur aan grote hoeveelheden bier als reden in plaats van een allesverzengende kinkhoest aanval.<br /><br />"Dus nu is hij aan het rondzwerven en zullen we hem moeten vervangen.", zegt de arts met zijn typische ""kijk eens hoe ik met je meevoel" artsenstem. "Waarschijnlijk is het gebeurd tijdens een van uw hoestaanvallen.", vervolgt hij zijn verhaal. Het metalen plaatje dat enkele jaren geleden in je lies is bevestigd om de liesbreuk te fiksen, is inderdaad losgeschoten en nu moet je dus onder het mes om hem opnieuw te laten bevestigen. Het zit je niet mee. Eerst kinkhoest, dan wordt je huis leeggeplunderd door een inbreker, een sterfgeval in je naaste familie en nu ook nog eens opnieuw een liesbreuk. Je kan je nog goed herinneren dat de eerste drie weken na je vorige liesbreuk operatie geen pretje waren. Verdomme! En net nu het zo lekker ging met het ontwikkelen van de swingclient. De koppeling werkt nu als een tierelier. De CLP engine begint ook vorm te krijgen en we zijn zo dicht bij ons doel. Java code schrijven is toch wel wel veel leuker dan twee weken plat te moeten liggen. Hopelijk gaat het dit keer minder pijn doen dan de vorige keer.<br /><br />Helse pijnen, al twee weken. Je kan amper lopen en langer dan een half uurtje zitten kan je wel vergeten. De operatie is dan wel goed verlopen, maar je verdenkt je chirurg er wel van een roestend tweedehands plaatje met weerhaken te hebben bevestigd. De vrolijke tijden waarin je de zelfgeschreven imageviewer aan de swing applicatie toevoegde lijken ver weg. Ah ja, die <a href="http://forums.java.net/jive/message.jspa?messageID=252582">imageviewer</a> die je laatst nog op java.net hebt gezet en een heuse reactie kreeg van Fabrizio. Je glimlacht als je denkt aan je java.net gebruikersnam: cuswatesl, ze zouden eens moeten weten waar dat voor staat. Auw! Het glimlachen was overgegaan in een grinnik, maar daar je is lies toch nog echt niet aan toe. "Hoe zou het nu gaan op het werk?", vraag je je af, meteen gevolgd door vrolijk bellen van de deurbel. Mark, je baas staat daar, met een heus cadeau van al je collega's van ISAAC. En helemaal in ISAAC stijl is het geen bos bloemen, of een lullig fruitmandje, maar een heuse VLEESMAND. Kijk, daar knapt een jonge rockgod van op: worsten en varkenslappen. Fuck de pijn! Het leven is goed!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_l5QRTpnEFt0/SAnUzxeWK9I/AAAAAAAAAB0/H0pJYR1eeJs/s1600-h/SANY0094.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_l5QRTpnEFt0/SAnUzxeWK9I/AAAAAAAAAB0/H0pJYR1eeJs/s400/SANY0094.JPG" alt="" id="BLOGGER_PHOTO_ID_5190914031440243666" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_l5QRTpnEFt0/SAnUXxeWK8I/AAAAAAAAABs/pDszryto-18/s1600-h/SANY0092.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_l5QRTpnEFt0/SAnUXxeWK8I/AAAAAAAAABs/pDszryto-18/s400/SANY0092.JPG" alt="" id="BLOGGER_PHOTO_ID_5190913550403906498" border="0" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4032830078767214043?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2008-04-19T11:09:00ZKorte Eclipse tipPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-34295389245215436192009-01-28T14:58:41Z2008-04-17T13:35:00ZEen korte Eclipse tip voor iedereen die vind dat zijn Eclipse te traag is. Start Eclipse op met de volgende parameters:<br /><br />-vmargs -Xmx1024m -XX:MaxPermSize?=128m<br /><br />Op deze manier maak je een gig beschikbaar aan geheugen en 128Mb aan PermSize (voor het laden van Classes)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3429538924521543619?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-04-17T13:35:00ZGratis Photoshoppen met Photoshop ExpressLeoniehttp://www.blogger.com/profile/13696550720926907229noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-43845369820658646452009-01-28T15:42:00Z2008-04-09T07:46:00Z<p><b>Iedereen die 'iets met websites' of 'iets met internet' doet komt er op een gegeven moment niet onderuit een plaatje te moeten bewerken in Photoshop. Aangezien Photoshop voor dat af en toe een plaatje bewerken vrij duur is en illegale software natuurlijk illegaal is, is er nu een gratis en legale manier: Adobe Photoshop Express.</b></p>Maak gratis een account aan en je kunt gratis en online foto's bewerken en opslaan met 2GB aan eigen online opslagruimte.<br /><br />Natuurlijk niet zo uitgebreid als Photoshop maar wel met de standaard benodigdheden als rode-ogenreductie, de kleurinstellingen en de mogelijkheid om foto’s bij te snijden en het formaat aan te passen.<br /><p><a href="https://www.photoshop.com/express/landing.html" target="_blank">Check Photoshop Express</a><br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4384536982065864645?l=isaacdevelopers.blogspot.com' alt='' /></div>Leonie2008-04-09T07:46:00ZTail via Windows PowershellPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-3754746045198312262009-01-28T15:07:47Z2008-04-02T20:34:00Z<a href="http://1.bp.blogspot.com/_MlgmCqJKfpo/R_PyPF_jxoI/AAAAAAAAABk/veyxRlO-9MM/s1600-h/image-thumb44.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/R_PyPF_jxoI/AAAAAAAAABk/veyxRlO-9MM/s400/image-thumb44.png" alt="" id="BLOGGER_PHOTO_ID_5184753937154295426" border="0" /></a><br />De meeste programmeurs kennen wel het <a href="http://en.wikipedia.org/wiki/Tail_%28Unix%29">tail</a> commando uit Linux, een ideaal programma om log files bij te houden. Windows kent geen tail commando, hoofdzakelijk omdat Windows maar een zeer beperkte command prompt kent. Er zijn welliswaar talloze programma's op de markt om de functionaliteit van tail na te bootsen in Windows, maar allen missen de eenvoud van het origineel. Tijd dus voor iets nieuws, tijd voor <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx">Windows PowerShell</a>. Windows PowerShell is een uitgebreidere variant op de Windows command prompt, met mogelijkheden om niet alleen het filesysteem te benaderen, maar bijvoorbeeld ook het register en gebruikerssettings. Met een eigen bash-achtige scripttaal is het mogelijk om vrij complexe taken uit te voeren. Dus ook het volgen van een log-file. Met het volgende commando kun je een file "tailen":<br /><blockquote>Get-Content [filename] -Wait</blockquote><br />Simpel, maar waarom zou je daar stoppen, met een klein beetje fantasie kun je al je log-files veel makkelijker leesbaar maken.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-375474604519831226?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-04-02T20:34:00ZVrijdagmiddag, Wii-middagPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-69599849585716813232009-01-28T15:42:24Z2008-03-28T16:18:00Z<a href="http://1.bp.blogspot.com/_MlgmCqJKfpo/R-0ayE1VKHI/AAAAAAAAABc/KSX3tTNU5rk/s1600-h/IMAG0018.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/R-0ayE1VKHI/AAAAAAAAABc/KSX3tTNU5rk/s400/IMAG0018.jpg" alt="" id="BLOGGER_PHOTO_ID_5182828193766516850" border="0" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6959984958571681323?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-03-28T16:18:00ZFlex: De volgende iteratie van het internet?Koenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-20643752097729768572009-01-28T15:42:32Z2008-03-24T12:31:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_l5QRTpnEFt0/R-extNi0qpI/AAAAAAAAABc/h44XFM9fqn8/s1600-h/fx.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_l5QRTpnEFt0/R-extNi0qpI/AAAAAAAAABc/h44XFM9fqn8/s320/fx.png" alt="" id="BLOGGER_PHOTO_ID_5181305286600993426" border="0" /></a><br />Hoera! Flex 3 is uit! Meteen downloaden en in een nieuw project gebruiken (youw8.com op het moment). Leuk leuk, betere debugging (vooral memory leaks heb ik ergens gelezen), nieuwe charts, werkt beter samen met Myeclipse 6, compileert naar kleinere swf files, i18n zonder verschillende swf's te hoeven compileren, etc etc. Jammer alleen dat we net voor 600 Euro Flex 2 charting hebben gekocht en nu weer 250 Euro (de upgrade) moeten betalen voor Flex 3 pro met charting. Booo!<br /><br />Het begon natuurlijk allemaal met HTML en de verschrikkelijke FONT en CENTER tags "back in the day of Web 1.0". Toen Web 2.0 de kop opstak waren we nog steeds bezig met HTML (alleen stond er nu een X voor en hadden we CSS en een krachtigere versie van JavaScript erbij gekregen). De droom was om browseronafhankelijke webapplicaties te bouwen die de gebruiker in staat stelde om complexe taken uit te voeren in je browser (en overal contextgevoelige reclame in te verstoppen en op die manier rijk te worden). Al snel bleek dat we het wiel telkens opnieuw uitvonden en dat we wel erg veel tijd kwijt waren om-dat-ene-dingetje-ook-in-die-ene-versie-van-IE-te-laten-werken. Het aantal uren dat ik heb doorgebracht om dat ene uitlijning probleempje in FF of IE6 te fixen is denk ik niet iets waarmee ik graag wordt geconfronteerd. Dure uren voor isaac en voor de klanten. Ik schat dat in de projecten waarin ik heb gewerkt meer dan de helft van de uren op zijn gegaan aan het bouwen van de interfaces, waarvan weer minimaal een kwart is opgegaan aan het fixen CSS glitches. Enter the client side webframeworks. Wij hebben hier zelf vooral wat gespeeld met Dojo 0.4 en nu dus dojo 1.0. Hun dijit framework belooft ons een component gebaseerde interface die niet langer is gestoeld op de browser pagina ervaring (een van de beperkingen van de manier waarop het internet nu eenmaal werkt). Ik heb hier zelf maar beperkte ervaring mee, maar nadat ik Collin, een stagiare die ik toch wel tot een van de slimmer durf te rekenen, een applicaties heb laten (horen @#$%^) maken met dojo, ben ik van mening dat de HTML gebaseerde webframeworks zoals dojo en jquery toch echt HACKS blijven. HTML (ook DHTML met Javascript en CSS) is gewoon niet bedoeld voor het soort rijke ervaring die je graag zou creëren als je bouwt aan een echte webAPPLICATIE. Uiteraard zijn ze zeer geschikt om popups te maken en leuke effecten te wrappen of zelfs om een enkele "rijke" pagina mee te bouwen, maar volledige applicaties.. NAH. Ga zelf maar eens na: hoeveel webapplicaties zijn er die je echt het gevoel geven in een stabiele omgeving te werken (behalve gmail en google calendar). Webapplicaties waarbij je niet eerst even je getikte tekst in copy-paste naar notepad voordat je op de back knop klikt om even wat anders op te zoeken alvorens je verdergaat met je stuk. Ikzelf schrijf deze tekst nu niet in de blogger interface, maar in apple's teksteditor, omdat mijn ervaring is dat je wel eens helemaal opnieuw zou moeten kunnen gaan beginnen na je eerste 1000 woorden.<br /><br />Werken met Flex is op veel fronten een verademing als je veel hebt gewerkt met XHTML/CSS. . De worst die Adobe ons voorhoudt met hun Flex platform is dan ook een vette. Browser onafhankelijk (zo goed als), mooiere interface bouwen in minder tijd, programmeren in een echte IDE (de eclipse plugin werkt lekker) met een strongly typed programmeertaal erachter, component gebaseerd en (en dit is voor iemand die alleen maar webapps heeft gebouwd even wennen) geen pagina gebaseerde interfaces meer. Desktop applicaties in een browser worden weer net even iets gemakkelijker. Eigenlijk min of meer gelijk aan de ervaring van het bouwen van old school desktop applicatie in een echte IDE.<br /><br />En daarom vind ik het zo jammer dat mijn eerste ervaring met Flex me toch weer zo nu en dan terugwerpt in de bekende AAARGH modus. Flex 3 (en 2 voor zover ik die heb gebruikt eigenlijk ook), is simpelweg niet stabiel. De API's doen niet altijd wat ze beloven en je bent nog steeds veel tijd kwijt met het oplossen van die kleine irritante dingen die bijvoorbeeld ineens verdwijnen als je je commentaar verplaatst in de mxml source. Begrijp me niet verkeerd: Flex doet veel dingen erg goed, maar het behoeft nog zevenduizend manjaar aan schaafwerk.<br /><br />Toch is het een stap vooruit: de dingen die moeilijk zijn in XHTML/JavaScript/CSS zijn doodeenvoudig in Flex, maar als vanzelf ga je verder en loop je toch al snel weer tegen de grenzen aan van de techniek van het moment. Ik vraag me af hoe silverlight en java fx het gaan doen... Leuk voor de volgende keer wellicht.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2064375209772976857?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2008-03-24T12:31:00ZBinnenkort ondersteuning van Java op iPhone en iPod TouchPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-32925063645875908772009-01-28T15:00:36Z2008-03-09T22:13:00Z<a href="http://4.bp.blogspot.com/_MlgmCqJKfpo/R9RifgBHuAI/AAAAAAAAABM/aAboEkMt0tc/s1600-h/Apple3.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_MlgmCqJKfpo/R9RifgBHuAI/AAAAAAAAABM/aAboEkMt0tc/s320/Apple3.jpg" alt="" id="BLOGGER_PHOTO_ID_5175870165065644034" border="0" /></a><br />Normaal gesproken blijf ik weg van alles wat met Apple of iPod's te maken heeft, maar als Java programmeur kan ik niet anders dan hier een melding over maken. Sun is druk bezig met het maken van een virtual machine voor Apple's iPhone en iPod Touch. De virtual machine moet vergelijkbaar zijn met Java ME, maar Sun sluit niet uit dat laterna meer mogelijkheden worden toegevoegd.<br /><br />Sun is begonnen aan de virtual machine dankzij het vrijgeven van de SDK van de iPhone en iPod Touch door Apple eerder deze maand.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3292506364587590877?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-03-09T22:13:00ZDe nieuwe milieuactivistPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-12463070861937281282009-01-28T15:01:29Z2008-03-07T00:40:00Z<a href="http://4.bp.blogspot.com/_MlgmCqJKfpo/R9CQCWjMX6I/AAAAAAAAAA8/L_4HdkIf0RY/s1600-h/Edge-firefox.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_MlgmCqJKfpo/R9CQCWjMX6I/AAAAAAAAAA8/L_4HdkIf0RY/s320/Edge-firefox.png" alt="" id="BLOGGER_PHOTO_ID_5174794341936029602" border="0" /></a><br />Als je iemand vraagt hoe volgens hem de gemiddelde milieuactivist eruit ziet, dan zullen een aantal woorden geheid vallen. Woorden als "Batik", "Geitenwollensok", "Sandalen" en "Baardaap", bijvoorbeeld. Een vooroordeel over een bepaalde minderheid in deze samenleving die in stand wordt gehouden door de eigenaren van natuurwinkels en beoefenaars van Reiki en andere zweverige hobbies. Het is tijd om deze vooroordelen in twijfel te trekken en eens kijken hoe de milieuactivist van de 21ste eeuw er echt uit ziet. Het is namelijk mijn mening dat, misschien wel geheel ongewild, een andere groep mensen tegenwoordig als "milieuactivisten" beschouwd kunnen worden. Dankzij een aantal ontwikkelingen van de afgelopen paar jaar is het concept "global warming" door de wereldbevolking geaccepteerd en wil iedereen een steentje bijdragen. Bedrijven springen hier handig op in en proberen op allerlei manieren de wereld te tonen hoe groen ze zijn. Twee belangrijke pijlers hierin zijn de co2 compensatie programma's en de papiervervangers (zoals, bijvoorbeeld, online rekeningoverzichten). In beide categorieën speelt één groep mensen een belangrijke rol, de IT-ers. Onmisbaar omdat juist deze mensen voor dit soort programma's kan zorgen. Ook binnen ISAAC is deze trend zichtbaar, sites met online documenten die eerder in papieren vorm naar de klant gingen, online rekeningoverzichten en co2 compensatie programma's maken steeds vaker onderdeel uit van de te ontwikkelen software. Maar zijn al deze programma's ook wel zo milieuvriendelijk als ze pretenderen te zijn?<br /><br />In de jaren zeventig werd de term "<a href="http://en.wikipedia.org/wiki/Paperless_office">the paperless office</a>" voor het eerst uitgesproken. Gedacht werd dat bedrijven steeds minder papier gingen gebruiken en steeds meer digitaal zou gaan doen. Het uiteindelijke doel was om een geheel papierloos kantoor te hebben. Dit zou niet alleen geld besparen, maar ook goed zijn voor de productiviteit en natuurlijk het milieu. Minder papier betekend immers dat er minder hout gekapt hoeft te worden, waardoor er meer bomen zijn om co2 uit de lucht te halen. Geheel papierloos zal een kantoor natuurlijk nooit worden, veel mensen vinden het niet prettig om vanaf een beeldscherm te lezen en ook regelgevingen gooien roet in het eten. Toch zijn er een heleboel zaken digitaal geworden en is onze behoefte naar papier afgenomen. Veel van de software die bij ISAAC wordt gemaakt bevat onderdelen die papieren documenten dienen te vervangen en draagt zo bij aan het minder afhankelijk worden van papier. Dit brengt echter één nadeel met zich mee. Door minder afhankelijk te zijn van papier, zijn we juist weer meer afhankelijk van energie. Energie die onze server vierentwintig uur per dag online moet houden, energie die de computer van de klant moet laten draaien en energie die gebruikt wordt bij het vervaardigen van al deze programma's. Energie die in Nederland nog steeds voornamelijk van aardgas en aardolie afkomstig is. Het zal nog vele jaren duren voordat <a href="http://en.wikipedia.org/wiki/Renewable_energy">vernieuwbare energie</a> voor het grootste aandeel zal zorgen en tot die tijd zal het vervangen van papier slechts gedeeltelijk een milieuvoordeel opleveren (in de vorm van minder houtkap en dus meer bomen).<br /><br />Co2 compensatie is nog vrij nieuw, maar groeit enorm. Het is tegenwoordig mogelijk om veel meer dan alleen je vliegreis co2 neutraal te maken. Een eenvoudig idee, waarbij een aantal bomen geplant worden die de hoeveelheid co2 die jij ergens bij verbruikt hebt op kunnen nemen. Dit om een natuurlijk balans in stand te houden tussen de hoeveelheid co2 die wordt uitgestoten en de hoeveelheid co2 die door de natuur weer wordt opgenomen. Ook co2 compensatie is terug te vinden in steeds meer producten van ISAAC en het ziet er naar uit dat het een steeds grotere rol gaat spelen binnen de software die we maken.<br /><br />We mogen dus stellen dat wij software ontwikkelaars de nieuwe milieuactivisten zijn, of we dit nou willen of niet.<br /><br /><a href="http://2.bp.blogspot.com/_MlgmCqJKfpo/R9CRC2jMX7I/AAAAAAAAABE/gBrEHqSzIME/s1600-h/Gletscherschmelze.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_MlgmCqJKfpo/R9CRC2jMX7I/AAAAAAAAABE/gBrEHqSzIME/s320/Gletscherschmelze.jpg" alt="" id="BLOGGER_PHOTO_ID_5174795450037591986" border="0" /></a><br /><em>Op de afbeelding is één van de redenen te zien dat men zich zorgen maakt over ons klimaat. De linker afbeelding is een gletsjer in de jaren zeventig, de middelste afbeelding is diezelfde gletsjer in de jaren negentig en de rechter afbeelding toont de gletsjer zoals deze er nu bijligt.</em><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1246307086193728128?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-03-07T00:40:00ZIE8 Beta1Maartennoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-71118182835006486952009-01-28T15:42:55Z2008-03-06T08:08:00ZDicht op de hielen van het bericht dat IE8 voor webstandaarden kiest (niet te laat, echt niet, nee, ik meen het, echt zeker _niet_ te laat *zucht*).<br />Heeft het IE8 team de eerste Beta van IE8 gelanceerd!<br />Het is op de Microsoft website te downloaden, de link is op de IE8 team blog te vinden.<br /><br />Hoewel dit nog niet geprobeerd is binnen ISAAC, staat het voor sommige onder ons thuis al klaar om getest te worden.<br /><br />Wel is al gebleken dat er sinds een bericht van een paar maanden geleden dat IE8 de ACID2 test succesvol kon doen toch wat veranderd.<br />Want de eerste berichtgeving toont aan dat IE8 dit niet (meer) kan doen.<br /><br />Maar, ondanks dat, is er een hoorbare zucht van vele websoftware simians* op de wereld, voor de hoop dat IE8 zich beter ontwikkeld, als was het enkel eens een keer normale support voor (oude) technologieën als CSS2.1.<br /><br />We houden u op de hoogte van de ontwikkelingen!<br /><br />* <a href="http://dilbert.com/comics/dilbert/archive/dilbert-20080304.html">http://dilbert.com/comics/dilbert/archive/dilbert-20080304.html</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7111818283500648695?l=isaacdevelopers.blogspot.com' alt='' /></div>Maarten2008-03-06T08:08:00ZMicrosoft kiest voor webstandaardenSjorsnoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-2520971183802493502009-01-28T15:42:59Z2008-03-04T17:59:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q6p6mLEzPxU/R82QOdhE-xI/AAAAAAAAAAM/cU05dsdIEoU/s1600-h/ie_logo.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_q6p6mLEzPxU/R82QOdhE-xI/AAAAAAAAAAM/cU05dsdIEoU/s320/ie_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5173950125034502930" border="0" /></a>De volgende versie van Microsoft Internet Explorer (IE) zal zich veel strikter aan de webstandaarden gaan houden. Microsoft maakte dit <a href="http://www.microsoft.com/presspass/press/2008/mar08/03-03WebStandards.mspx">maandag</a> bekend gemaakt. De laatste tijd kreeg de softwaregigant veel kritiek van websitebouwers, omdat IE8 op veel punten afweek van de standaarden die bepalen hoe browsers worden weergegeven.<br /><br />Deze afwijkingen zorgden ervoor dat veel ontwikkelaars problemen ondervonden bij het bouwen van een website. Het komt te vaak voor dat webpagina's in er IE heel anders uit zien dan in Internet Explorer. Toch heeft deze browser het grootste marktaandeel, waardoor de bouwers er vaak voor kiezen om hun pagina's voor deze browser te optimaliseren. Andere browsers, zoals Mozilla Firefox en Opera, houden zich veel meer aan de standaarden, maar lijken niet te werken als een website in IE correct wordt weergegeven.<br /><br />Opera diende daarom in december, bij de Europese Commissie, een mededingingsklacht in tegen Microsoft. Het bedrijf is namelijk van mening dat de softwaregigant bewust van de huidige web-standaarden afwijkt, waardoor andere browsers minder aantrekkelijk worden.<br /><br />De nieuwe versie van IE, die later dit jaar wordt gepresenteerd, zal de bestaande standaarden veel beter ondersteunen. In eerste instantie waren zij van plan om de browser standaard zo in te stellen, dat hij zich hetzelfde gedroeg als eerdere versies van IE. Zo zouden eventuele problemen met de weergave van verouderde websites voorkomen moeten worden.<br /><br />Dit laatste leverde Microsoft echter veel kritiek op. Webontwikkelaars waren namelijk van mening dat het bedrijf de fouten uit het verleden recht moest zetten. Maandag heeft de softwaregigant laten weten de standaardintstelling voor IE8 aan te passen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-252097118380249350?l=isaacdevelopers.blogspot.com' alt='' /></div>Sjors2008-03-04T17:59:00ZAdobe lanceert Flex Builder 3Edwinnoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-75489743720201495162009-01-28T15:43:06Z2008-02-25T18:14:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://store2.adobe.com/images/store/product_boxshots/150x150/box_flexbuilderstandard3_now_available_150x150.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 199px; height: 199px;" src="https://store2.adobe.com/images/store/product_boxshots/150x150/box_flexbuilderstandard3_now_available_150x150.jpg" alt="" border="0" /></a><br /><br /><br />Ik kreeg van meneer Adobe een berichtje dat EINDELIJK Flex Builder 3 (FB3) is gelanceerd! Na zelf al wel wat ervaring te hebben opgedaan met Flex Builder 2 tijdens mijn stage, leek Flex, wat draait met de Flash engine, me een platform om mooie techniek om grafische (web)applicaties te maken. Vooral gewoon vanwege de simpelheid, zolang je er niet te gekke dingen mee wilt doen.<br /><br />Enifn, tijdens de Javapolis dit jaar woonde ik een demonstratie bij die toonde wat Flex 3 allemaal teweeg gaat brengen. Ik stond in ieder geval al versteld van wat ze met de demoapplicaties waar konden maken. Vooral toen de ver-Flex-te versie van Ebay getoond werd, was het me duidelijk. Flex is een volwassen techniek geworden om niet alleen meer webapplicaties, maar ook (door middel van AIR) desktop applicaties te kunnen ontwikkelen.<br /><br />Flex is echter zeker niet de enige speler op het gebied van mooie grafische applicaties, die waarschijnlijk allen ooit de webbrowser zullen ontgroeien. Microsoft cocurreert met Silverlight en Sun komt (misschien deze eeuw nog) met JavaFX.<br />Ik denk zelfs dat uiteindelijk deze technieken, die van oorsprong zijn ontwikkeld voor het gebruik in webbrowsers om websites op te fleuren, misschien worden het wel concurrenten van Swing...?<br /><br />The future will tell us ;)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7548974372020149516?l=isaacdevelopers.blogspot.com' alt='' /></div>Edwin2008-02-25T18:14:00ZFans in AfrikaHarmhttp://www.blogger.com/profile/12926119741436046248noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-8247196846292161992009-01-28T15:43:13Z2008-02-07T20:13:00Z<a href="http://1.bp.blogspot.com/_WXbby4tehfI/R6tmpiwx5EI/AAAAAAAAAAU/501aTZFVxco/s1600-h/ookisaaciswelkom.jpg"><img id="BLOGGER_PHOTO_ID_5164334261602477122" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://1.bp.blogspot.com/_WXbby4tehfI/R6tmpiwx5EI/AAAAAAAAAAU/501aTZFVxco/s400/ookisaaciswelkom.jpg" border="0" /></a><br /><div>Ook in Afrika heeft ISAAC fans :-)</div><br /><div></div>Blij verrast kwamen we aan in Accra (Ghana) en werden meteen verwelkomt door een echte ISAAC fan met zelfgemaakt reclamebord.<br /><div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-824719684629216199?l=isaacdevelopers.blogspot.com' alt='' /></div>Harm2008-02-07T20:13:00ZMore fun with iTextPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-15797570164851260282009-01-28T15:02:04Z2008-02-01T22:02:00ZLaten we heel eerlijk zijn, iText is niet de meest elegante API. Het is praktisch onmogelijk om een echt mooie PDF te maken met iText zonder te belanden in het gesticht. Maar voor ieder probleem is een oplossing, zo ook voor iText en die oplossing is misschien simpeler dan je dacht. De oplossing is Graphics2D. Op <a href="http://itextdocs.lowagie.com/tutorial/directcontent/graphics2D/index.php">deze pagina</a> vind je meer informatie over hoe je een Graphic2D object direct om kunt zetten naar een PDF document. Hiermee omzeil je alle problemen met iText en kun je alles wat je hartje begeerd in een PDF zetten. Een tipje nog wel: het lijkt erop dat niet alle functionaliteiten van Graphics2D zomaar netjes overgenomen worden door iText (het zou ook eens niet), dit kun je omzeilen door alles eerst in een BufferedImage te schrijven en deze in iText te zetten.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1579757016485126028?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2008-02-01T22:02:00ZDojo 1.0 eindelijk uitKoenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-11381123764795170682009-01-28T15:43:29Z2007-11-05T22:55:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://manual.dojotoolkit.org/WikiHome/DojoDotBook/Book16/layeredLibraries.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://manual.dojotoolkit.org/WikiHome/DojoDotBook/Book16/layeredLibraries.png" alt="" border="0" /></a><br />Na 3 jaar in beta te zijn geweest is <a href="http://www.dojotoolkit.com/">The dojo toolkit</a> dan toch <a href="http://www.artima.com/forums/flat.jsp?forum=276&thread=218415">op versie 1.0 uitgekomen</a>.<br /><br />Wij zijn nu al een jaar bezig op zo nu en dan wat dojo spul te gebruiken en met gemengd succes. Waar wij dojo tot nu toe het meeste voor gebruiken is het gfx package (leuke eye-candy dus voornamelijk). Daarnaast een paar widgets (popups en sorting table) en wat io (ajax) spul. Dojo biedt nog zeer veel meer functionaliteit, maar we zijn er helaas nog niet aan toegekomen.<br /><br />Wat mij tegenvalt is dat enkele zaken (zoals het event framework) nogal traag zijn en dat enkele van de gfx zaken bug-infested zijn. Daarnaast is er echt veel te weinig documentatie beschikbaar. Wat ik graag zou zien is een uitgebreide beschrijving per package m&eactute;t voorbeelden. De <a href="http://dojotoolkit.org/api">dojo API beschrijving</a> is te beknopt en verschrikkelijk traag.<br /><br />Toch denk ik dat we er nog een groot aantal keren gebruik van gaan maken. Totdat iedereen over is gegaan op flex natuurlijk.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1138112376479517068?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2007-11-05T22:55:00ZTutorial: Custom Taglib in JSP (Deel 3)Pieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-37378324240515245802009-01-28T15:13:11Z2007-10-24T05:39:00Z<a href="http://3.bp.blogspot.com/_MlgmCqJKfpo/Rx7cBkDEKrI/AAAAAAAAAA0/qSqB94UyPeU/s1600-h/tutorial.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_MlgmCqJKfpo/Rx7cBkDEKrI/AAAAAAAAAA0/qSqB94UyPeU/s320/tutorial.jpg" alt="" id="BLOGGER_PHOTO_ID_5124775345408715442" border="0" /></a><br />Welkom bij deel drie van de taglib tutorial. In dit deel nemen we een kijkje naar tags met een body.<br /><br />Tot nu toe zijn alle tags in deze tutorial leeg geweest, dit is te herkennen aan het feit dat er maar één tag is die wordt afgesloten met een “/”. Kijken we echter naar HTML zijn de meeste tags niet leeg. Dit willen we met onze eigen taglib natuurlijk ook kunnen. De tag in dit deel van de tutorial gaat verder op de “Hello World” tags uit deel 1 en 2. Alleen printen we in dit deel de tekst “Hello World” in een stuk HTML code. De tag ziet er als volgt uit:<br /><br /><tutorial:helloBody><br /><p class=”cssClass” id=”helloWorld”>$_tekst</p><br /></tutorial:helloBody><br /><br />Je ziet dat onze tag een begin-tag en een eind-tag, met daartussen HTML code. Ook is je misschien de tekst “$_tekst” gezien, op deze plaats wordt onze “Hello World” geplaatst. Aangezien dit gewoon via de replace() methode van String gaat had hier net zo goed iets anders kunnen staan, zolang we het maar netjes kunnen vervangen.<br /><br />Om deze tag te kunnen verwerken zullen we hem eerst in onze taglib description moeten zetten. Dit gaat op dezelfde manier als onze allereerste tag, met een kleine wijziging.<br /><br /><tag><br /><name>helloBody</name><br /> <tag-class>nl.mysite.tags.HelloBodyTag</tag-class><br /> <body-content>JSP</body-content><br /></tag><br /><br />In de bovenstaande code zie je de tag zoals deze wordt toegevoegd aan de taglib description. Zoals je ziet is deze inderdaad vrijwel identiek aan de code uit de eerste tutorial, echter waar eerder de waarde “empty” aan body-content werd meegegeven wordt nu de waarde “JSP” meegegeven. Dit betekend simpelweg dat de tag geen empty body heeft maar een body met daarin JSP code.<br /><br />In onze tag handler zitten ook een aantal wijzigingen om de body van de tag te kunnen benaderen. Het eerste verschil is dat onze tag-handler geen subklasse is van javax.servlet.jsp.tagext.TagSupport maar van javax.servlet.jsp.tagext.BodyTagSupport. Ook hierin kun je dezelfde methoden overriden als normaal, maar je hebt er de methode getBodyContent() bij. Deze methode geeft een BodyContent object terug waarin de body staat.<br /><br />In ons voorbeeld willen we de body ophalen een string (“$_tekst”) vervangen door “Hello World”. Dit doen we op de onderstaande manier:<br /><br />BodyContent body = getBodyContent();<br />JspWriter out = body.getEnclosingWriter();<br />String data = body.getString();<br />data = data.replaceAll("\\$_tekst", "Hello World");<br />out.println(data);<br />body.clearBody();<br /><br />In de eerste twee regels wordt de body en de JspWriter waarmee de body wordt geschreven opgehaald. De code in de body wordt in regel 3 in een string geplaats en in regel 4 gewijzigd. Daarna wordt de tekst geprint en de body wordt leeggemaakt.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3737832424051524580?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2007-10-24T05:39:00ZJava ME zal verdwijnenPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-15029904050129026562009-01-28T15:47:57Z2007-10-21T11:41:00Z<a href="http://4.bp.blogspot.com/_MlgmCqJKfpo/Rxs8WkDEKqI/AAAAAAAAAAs/bORYC9sVJxw/s1600-h/James_Gosling_200.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_MlgmCqJKfpo/Rxs8WkDEKqI/AAAAAAAAAAs/bORYC9sVJxw/s320/James_Gosling_200.jpg" alt="" id="BLOGGER_PHOTO_ID_5123755359395392162" border="0" /></a><br />Volgens guru en über-nerd James Gosling zal Java Micro Edition, de mobiele variant van Java langzaam maar zeker verdwijnen. Aangezien mobiele apparaten over steeds meer rekenkracht beschikken zal Java ME steeds meer met Java SE samensmelten. Zo bevat Java FX Mobile al bijna de volledige API van Java SE. "We're trying to converge everything to the Java SE specification. Cell phones and TV set-top boxes are growing up," Aldus Gosling "That convergence is going to take years."<br /><br />Bron: <a href="http://www.news.com/8301-13580_3-9800679-39.html">CNet</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1502990405012902656?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2007-10-21T11:41:00ZFout: object vereistPieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-31444165580197119502009-01-28T15:07:47Z2007-10-15T12:53:00Z<a href="http://3.bp.blogspot.com/_MlgmCqJKfpo/RxNk2UDEKpI/AAAAAAAAAAk/U64KObWaQ7s/s1600-h/error.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_MlgmCqJKfpo/RxNk2UDEKpI/AAAAAAAAAAk/U64KObWaQ7s/s320/error.jpg" alt="" id="BLOGGER_PHOTO_ID_5121548085507664530" border="0" /></a><br />Wie kent het niet? Je bent een stuk javascript code aan het maken en tijdens het testen verschijnt de foutmelding "fout: object vereist". Je krijgt dan de vraag of je wilt beginnen met foutopsporing en je bent dan eigenlijk altijd geneigd om op "Nee" te klikken, wetende dat de andere optie een of ander wazig programma start om vervolgens te crashen of zo. Voor de gein moet je eens op "Ja" drukken en dan de Microsoft Script Editor starten. Deze loopt door de code heen en stopt op de plaats waar de fout zit. Van hieruit kun je een heel aantal dingen controlleren. Zo kun je variabelen in javascript controlleren, hun waarden inzien en hun onderliggende structuur doorlopen. Zo kun je vrij goed opsporen waar de fout zit. Stiekem best handig dus.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3144416558019711950?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2007-10-15T12:53:00ZEffecten in swingNickhttp://www.blogger.com/profile/16841303747398602258noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-56384143252425776832009-01-28T15:10:02Z2007-10-14T08:49:00Z<p><br />Tijdens mijn ziekte vorige week heb ik eens uitgeprobeerd hoever ik nou kan gaan in met Java Swing custom painting en geprobeerd om een effect na te bootsten wat ik ooit in assembler op school had geschreven. Dit effect bootst vuur na door middel van een vrij eenvoudig algoritme. Later meer hierover.<br><br />Om dit te bouwen heb ik een abstracte class gedefinieerd die de java.awt.Paint interface implementeert, zodat op eenvoudige wijze het scherm gevuld kan worden dmv setPaint op het Graphics object en een fillRect call.<br />Ik ga niet elke class bespreken hoe deze werkt, dit kun je me, als je het niet volgt, natuurlijk altijd vragen :).<br /><br />De Effect class ziet er als volgt uit:<br /></p><br /><br /><pre><br /><br />public abstract class Effect implements java.awt.Paint {<br /><br /> private final EffectListener listener;<br /> protected DataBuffer db;<br /> protected SampleModel model;<br /> <br /> Timer effectTimer = new Timer(30, new ActionListener() {<br /> @Override<br /> public void actionPerformed(ActionEvent e) {<br /> buildNextFrame();<br /> listener.nextFrameReady();<br /> }<br /> } );<br /> <br /> protected abstract void buildNextFrame();<br /> protected abstract SampleModel createModel();<br /> protected abstract DataBuffer createBuffer();<br /> <br /> public DataBuffer getBuffer() {<br /> if (this.db == null) {<br /> this.db = createBuffer();<br /> }<br /> return this.db;<br /> }<br /> <br /> public SampleModel getModel() {<br /> if (this.model == null) {<br /> this.model = createModel();<br /> }<br /> return this.model;<br /> }<br /> <br /> public Effect(EffectListener l) {<br /> if (l == null) throw new IllegalArgumentException("l == null");<br /> this.listener = l;<br /> this.effectTimer.start();<br /> }<br /> <br /> public interface EffectListener {<br /> void nextFrameReady();<br /> }<br /> <br /> @Override<br /> public abstract PaintContext createContext(ColorModel cm, <br /> Rectangle deviceBounds,<br /> Rectangle2D userBounds, <br /> AffineTransform xform, <br /> final RenderingHints hints);<br /><br /> <br /> @Override<br /> public int getTransparency() {<br /> return Transparency.OPAQUE;<br /> }<br /> <br />}<br /><br /></pre><br /><br /><p><br />Naast de definitie van het effect is er ook een Swingcomponent nodig dat dit effect laat zien, deze ziet er als volgt uit:<br /></p><br /><br /><pre><br />public class EffectPanel extends JPanel {<br /> <br /> private Effect effect;<br /> <br /> public EffectPanel() {<br /> super.setOpaque(true);<br /> }<br /> <br /> @Override<br /> protected void paintComponent(Graphics g) {<br /> if (this.effect == null) return;<br /> ((Graphics2D) g).setPaint(this.effect);<br /> g.fillRect(0, 0, getWidth(), getHeight());<br /> }<br /><br /> public Effect getEffect() {<br /> return this.effect;<br /> }<br /><br /> public void setEffect(Effect effect) {<br /> this.effect = effect;<br /> }<br /> <br />}<br /><br /></pre><br /><br /><p><br />Dit is alles wat we nodig hebben om een leuk effect op te kunnen bouwen in swing.<br />Het geheel is 100% compatible met swing en dit zou direct in elke applicatie geplugged kunnen worden door een bestaand JPanel te vervangen door het EffectPanel.<br />Aan het effectPanel kunnen gewoon op normale wijze andere Swingcomponenten worden toegevoegd layoutManagers geset worden etc.<br /><br><br />Dit frameWork zou dus als volgt gebruikt kunnen worden, belangrijk is dat er aan het effect een listener wordt gekoppeld die het scherm opnieuw tekent als er een nieuw frame beschikbaar is. In dit geval heeft de effect-class een static methode die de "dirty region" bepaald.<br /></p><br /><pre><br />public class EffectPanelTest {<br /><br /> public static void main(String[] args) {<br /> SwingUtilities.invokeLater(new Runnable() {<br /> public void run() {<br /> final EffectPanel p = new EffectPanel();<br /> p.setEffect(new FireEffect(new Effect.EffectListener() {<br /> @Override<br /> public void nextFrameReady() {<br /> p.repaint(FireEffect.getRepaintRectangle(p));<br /> }<br /> } ));<br /> JFrame f = new JFrame();<br /> f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br /> f.setSize(340, 200);<br /> f.setContentPane(p);<br /> p.setLayout(new GridBagLayout());<br /> GridBagConstraints c = new GridBagConstraints();<br /> c.anchor = c.NORTH;<br /> p.add(new JButton("North button"), c);<br /> c.anchor = c.SOUTH;<br /> c.weighty = 1;<br /> c.gridy = 2;<br /> p.add(new JButton("South button"), c);<br /> f.setVisible(true);<br /> };<br /> } );<br /> }<br /> <br />}<br /></pre><br /><p><br /><b>Meer over het algoritme</b><br><br />Het originele algoritme werkte als volgt: vul de onderste 2 regels van de schermbuffer met willekeurige pixelswaarden tussen 0 en 255. Loop daarna de hele buffer af en tel de pixelwaarde onder, links van en rechts van op bij de huidige waarde van de pixel en deel dit door 4, trek er één af en plaats deze 1 boven de huidige positie terug in de buffer. Kopieer daarna de buffer naar het scherm en herhaal bovenstaande stappen.<br><br />Dit werkte toen goed omdat er gebruik werd gemaakt van 256 kleuren en een pallet aangepast op de kleuren. Dit zullen we dus moeten emuleren. Een ander verschil met toen is de resolutie van het scherm, nu op de pc waarop dit ontwikkeld is 1680x1050 toen 320x200. Dit verschil wordt nagebootst door een buffer met een vaste grootte te gebruiken en deze te schalen naar de benodigde grootte.<br><br /></p><br /><br /><pre><br />public class FireEffect extends Effect {<br /><br /> public FireEffect(EffectListener l) {<br /> super(l);<br /> initColors();<br /> initBuffer();<br /> }<br /> <br /> Color colors[] = new Color[255];<br /> <br /> public final static int height = 100;<br /> public final static int width = 800;<br /> <br /> Random r = new Random();<br /> <br /> private void initBuffer() {<br /> for (int x = 0; x < width; x++) {<br /> for (int y = 0; y < height - 3; y++) {<br /> getModel().setPixel(x, y, new int[] {0, 0, 0}, getBuffer());<br /> }<br /> }<br /> }<br /> /**<br /> * initializeert het geemuleerde pallet<br /> */<br /> private void initColors() {<br /> for (int i = 0; i < 255; i++) {<br /> int r = i - i / 16;<br /> int g = i / 3;<br /> int b = i / 8;<br /> colors[i] = new Color(r, g, b);<br /> }<br /> }<br /> int pixelBuffer[][] = new int[width][height];<br /> <br /> @Override<br /> protected SampleModel createModel() {<br /> return new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, width, height, new int[] {0xFF0000, 0x00FF00, 0x0000FF}); <br /> }<br /> <br /> @Override<br /> protected DataBuffer createBuffer() {<br /> return new DataBufferInt(width * height);<br /> }<br /> <br /> @Override<br /> public PaintContext createContext(ColorModel cm, Rectangle deviceBounds,<br /> final Rectangle2D userBounds, AffineTransform xform, final RenderingHints hints) {<br /> PaintContext p = new PaintContext() {<br /> @Override<br /> public Raster getRaster(int x, int y, int w, int h) {<br /> WritableRaster result = Raster.createWritableRaster(getModel(), getBuffer(), new Point(x, y));<br /> for (int x1 = x; x1 < x + w; x1 ++) {<br /> for (int y1 = y; y1 < y + h; y1 ++) {<br /> // kopieer de waarden uit het geemuleerde pallet en schaal naar de grootte van userBounds <br /> double userX = ((double) x1 / (double) userBounds.getBounds().width) * (double) width;<br /> double userY = ((double) y1 / (double) userBounds.getBounds().height) * (double) (height - 3);<br /> Color col = colors[pixelBuffer[(int) userX][(int) userY]];<br /> result.setPixel(x1, y1 , new int[] {col.getRed(), col.getGreen(), col.getBlue()});<br /> }<br /> }<br /> return result;<br /> }<br /> @Override<br /> public void dispose() {<br /> // doe hier niets, normaal vind hier cleanup plaats dit hoeft niet in deze demo<br /> }<br /> @Override<br /> public ColorModel getColorModel() {<br /> return new DirectColorModel(32, 0xFF0000, 0x00FF00, 0x0000FF);<br /> }<br /> } ;<br /> return p;<br /> }<br /> <br /> @Override<br /> public void buildNextFrame() {<br /> for (int x = 1; x < width - 1; x++) {<br /> for (int y = height - 2; y > height - 65 ; y--) {<br /> int pixel1 = pixelBuffer[x - 1][y];<br /> int pixel2 = pixelBuffer[x + 1][y];<br /> int pixel3 = pixelBuffer[x][y];<br /> int pixel4 = pixelBuffer[x][y - 1];<br /> int newCol = (pixel1 + pixel2 + pixel3 + pixel4) / 4;<br /> newCol = newCol < 2 ? 0 : newCol - 2;<br /> Color c = colors[newCol];<br /> pixelBuffer[x][y - 1] = newCol;<br /> }<br /> }<br /> for (int x = 0; x < width; x+=4) {<br /> for (int y = height - 3; y < height - 2; y++) {<br /> int val = r.nextInt(255);<br /> pixelBuffer[x][y] = val;<br /> pixelBuffer[x + 1][y + 2] = val;<br /> pixelBuffer[x + 2][y + 2] = val;<br /> pixelBuffer[x + 3][y + 1] = val;<br /> pixelBuffer[x + 2][y + 2] = val;<br /> pixelBuffer[x + 1][y + 1] = val;<br /> pixelBuffer[x + 2][y + 1] = val;<br /> }<br /> }<br /> <br /> }<br /> <br /> /**<br /> * Geeft de dirty region terug zodat er niet te veel gerepaint wordt<br /> * @param p<br /> * @return<br /> */<br /> public static Rectangle getRepaintRectangle(JComponent p) {<br /> Rectangle repaint = new Rectangle();<br /> double h = ((double) 65 / (double) FireEffect.height) * (double) p.getHeight();<br /> repaint.y = p.getHeight() - (int) h;<br /> repaint.x = 0;<br /> repaint.height = (int) h;<br /> repaint.width = p.getWidth(); <br /> return repaint;<br /> }<br /> <br />}<br /><br /></pre><br /><br /><br />Het belangrijkste in dit geval is natuurlijk niet de sourcecode, maak om het ding in het echt te zien.<br />Webstart demo: <br /><a href="http://nickm.demon.nl/java/effect/effect.jnlp"><br /><img src="http://nickm.demon.nl/java/webstart.gif"><br /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5638414325242577683?l=isaacdevelopers.blogspot.com' alt='' /></div>Nick2007-10-14T08:49:00ZWeb 3.0 of toch Web 2.1?Koenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-58163648778206919072009-01-28T15:04:27Z2007-10-08T08:13:00Z<a href="http://3.bp.blogspot.com/_l5QRTpnEFt0/RwnzO0Qk7nI/AAAAAAAAAAU/12XGVOzkNmc/s1600-h/cartoon.gif"><img id="BLOGGER_PHOTO_ID_5118889887355170418" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://3.bp.blogspot.com/_l5QRTpnEFt0/RwnzO0Qk7nI/AAAAAAAAAAU/12XGVOzkNmc/s320/cartoon.gif" border="0" /></a><br /><div>De afgelopen week heeft<a href="http://www.calacanis.com/"> Jason Calacanis </a>redelijk wat stof doen opwaaien met <a href="http://www.calacanis.com/2007/10/03/web-3-0-the-official-definition/">zijn definitie van Web 3.0</a>.<br /><br />Zijn definite:<br /><br /><blockquote>"Web 3.0 is defined as the creation of high-quality content and services produced<br />by gifted individuals using Web 2.0 technology as an enabling platform."</blockquote><br />Nu was hij niet helemaal serieus toen hij dit blogde, maar ik ben het er in ieder geval niet mee eens. In mijn ogen beschrijft zijn definitie namelijk meer een soort van Web 2.1, of Web 2.5 of in ieder geval een versie die < 3.0. Van Web 3.0 verwacht ik toch een nieuwe (revolutionaire manier om gebruik te maken van bestaande) techniek die tot gevolg heeft dat we op een andere manier met het web gaan werken.<br /><br />Ik denk dat Jason de grote truuk van <a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html">Tim O'Reilly </a>even dunnetjes over wil doen. Toen Tim in het begin van deze eeuw met het probleem zat dat zijn internet conferenties helemaal niet meer werden bezocht (vanwege de net geklapte bubbel), was hij zo slim om de term Web 2.0 te bedenken. Veel mensen in de internet scene werden nogal blij van deze nieuwe hoop met als gevolg dat -BAM- zijn conferenties goed werden bezocht.<br /><br />Dat Jason Calacanis' nieuwe startup <a href="http://www.mahalo.com/">Mahalo</a> precies dat doet wat hij zegt dat Web 3.0 is, is op zijn minst nogal verdacht. Volgens mij is het gewoon allemaal een grote publiciteitsstunt van onze spindocter Jason. Blijkbaar wel een goede trouwens, want zelfs ik blog erover.<br /><br />Damn toch erin getrapt! Volgende keer maar onze eigen Web 3.0 definite: "The web as a pipeline".</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5816364877820691907?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2007-10-08T08:13:00ZTutorial: Custom TagLib in JSP (Deel 2)Pieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-64789977357395286592009-01-28T15:13:09Z2007-10-04T19:19:00Z<a href="http://3.bp.blogspot.com/_MlgmCqJKfpo/RwU9q0DEKoI/AAAAAAAAAAc/q53rKsT-TEE/s1600-h/tutorial.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_MlgmCqJKfpo/RwU9q0DEKoI/AAAAAAAAAAc/q53rKsT-TEE/s320/tutorial.jpg" alt="" id="BLOGGER_PHOTO_ID_5117564357311736450" border="0" /></a><br />Het tweede deel van onze tutorial gaat over het maken van een custom tag met parameters. Wanneer je deel één van de tutorial hebt gemist en je afvraagt waar ik het over heb, klik dan <a href="http://isaacdevelopers.blogspot.com/2007/10/tutorial-custom-taglib-in-jsp-deel-1.html">hier</a> om eerst het eerste deel te lezen voor je verder leest.<br /><br />In het voorbeeld van deel één deden we niet meer dan de tekst “Hello World” afdrukken. Dit gaan we in dit deel uitbreiden met een parameter. Onze tag gaat er op de volgende manier uitzien:<br /><br /><tutorial:helloworld name="Isaac Newton" /><br /><br />En deze tag drukt de tekst “Hello [name]” af, in het bovenstaande voorbeeld wordt dus “Hello Isaac Newton” afgedrukt. Hiervoor moeten we de taglib description uitbreiden op de onderstaande manier.<br /><br /><pre><br /><tag><br /><name>helloworld</name><br /><tag-class>nl.mysite.tags.HelloWorldTag</tag-class><br /><body-content>empty</body-content><br /><attribute><br /> <name>name</name><br /> <required>yes</required><br /></attribute><br /></tag><br /></pre><br /><br />De tag “attribute” wordt toegevoegd. Hieronder bevinden zich een aantal andere tags: “name” en “required”. Beide spreken voor zich, in “name” staat de naam van de parameter en in “required” staat of de parameter vereist is of niet. In dit laatste geval zal de tag handler een default waarde moeten bevatten. Daarnaast kunnen ook nog een tweetal tags voorkomen die we in dit voorbeeld niet nodig hebben: “rtexprvalue”, die aangeeft dat de return-type van expressies die de parameter doorgeven van een bepaald type moeten zijn of alles mag zijn (kan de waarden “true” of “false” bevatten) en de tag “type” wordt gebruikt om dit type aan te geven.<br /><br />Na het aanpassen van onze taglib description kunnen we onze class file erbij pakken. Hieronder zie je dezelfde code als in de vorige tutorial, maar dan met de aanpassingen erin.<br /><br /><pre><br />package nl.directa.tags;<br />import java.io.IOException;<br />import javax.servlet.jsp.tagext.TagSupport;<br /><br />public class HelloWorldTag extends TagSupport {<br />private String name;<br /><br />public int doEndTag() {<br />try {<br />pageContext.getOut().println("Hello "+name);<br />} catch (IOException ignored) { }<br />return EVAL_PAGE;<br />}<br /><br />public void setName(String name) {<br />this.name = name;<br />}<br />}<br /></pre><br /><br />Zo simpel is het! Je voegt een globale variabele toe en een set methode (let op de naamgeving volgens JavaBean conventies met de naam van de parameter erin verwerkt). In onze doEndTag methode gebruiken we de parameter om “Hello [name]” te printen.<br /><br />Daarmee komen we aan het einde van het tweede deel in de custom taglib tutorial. In het volgende deel maken we een tag met een body, dat wordt lachen.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6478997735739528659?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2007-10-04T19:19:00ZWebSphere MQ voor beginnersHarmhttp://www.blogger.com/profile/12926119741436046248noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-37569034788449829012009-01-28T15:45:05Z2007-10-04T13:22:00Z<a href="http://2.bp.blogspot.com/_WXbby4tehfI/RwTqqzOoG_I/AAAAAAAAAAM/CQhWhMd3Hlw/s1600-h/AliceBobMQ1.png"><img id="BLOGGER_PHOTO_ID_5117473097626688498" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://2.bp.blogspot.com/_WXbby4tehfI/RwTqqzOoG_I/AAAAAAAAAAM/CQhWhMd3Hlw/s320/AliceBobMQ1.png" border="0" width="252" height="151" /></a><br /><div>Er zijn verschillende manieren/protocollen om berichten tussen systemen uit te wisselen. Een veel gebruikte manier is met behulp van het door IBM ontwikkelde WebSphere MQ. De configuratie van een MQ omgeving zorgt snel voor onduidelijkheid door de grote hoeveelheid aan elkaar te koppelen componenten, waaronder queues, transmission queues, queue managers, en channels. In deze wiki pagina zal ik een inleiding geven in hoe een MQ omgeving op te zetten.<br /></div><br /><div>Om het geheel wat inzichtelijker te maken zal ik dit doen aan de hand van een voorbeeld waarbij twee systemen, genaamd Alice en Bob, berichten met elkaar willen kunnen uitwisselen. </div><br /><div></div><br /><div><span style="font-size:130%;"><strong>Terminologie</strong></span></div><br /><div>Ik zal eerst de belangijkste termen uitleggen.<br /><strong>message</strong> Aangezien Alice en Bob informatie willen kunnen uitwisselen zullen ze informatie moeten kunnen delen. Deze informatie kan worden opgedeeld in pakketjes. Eén zo'n pakketje informatie wordt en bericht oftewel message genoemd.<br /></div><br /><div><strong>queue </strong>De uitwisseling van berichten kan worden gezien als het plaatsen van een bericht in een brievenbus/postvak van de ontvanger. Omdat meerdere berichten in één brievenbus geplaatst kunnen worden, vormen deze berichten een rij (welke overigens niet per definitie in volgorde van binnenkomst wordt afgewerkt). Je plaatst dus een bericht op een zogenaamde queue van de ontvanger. In ons voorbeeld kan Alice een bericht plaatsen op een queue van Bob en vice versa.<br /></div><br /><div><strong>channel </strong>Als Alice een bericht in een brievenbus van Bob wil plaatsen, dan moet ze wel weten waar ze die brievenbus kan vinden én hoe ze er kan komen. Ze moet dus eigenlijk de weg weten naar Bob. Deze weg wordt ook wel kanaal, of channel genoemd.<br /></div><br /><div><strong>queue manager </strong>Omdat Alice en Bob niet alles zelf willen regelen maken ze gebruik van hun eigen postbode. De postbodes van Alice en Bob kennen elkaar en hebben een weg (channel) afgesproken waarop ze elkaar kunnen ontmoeten om post over te dragen. De postbode beheert dus de post en zorgt dat deze op de plaats van bestemming aankomt door in contact te treden met andere postbodes. De postbode wordt ook wel queue manager (oftewel postvak beheerder) genoemd. Alice en Bob willen eventueel ook met anderen kunnen communiceren zodat ze meerdere brievenbussen (queue) kunnen hebben. Deze kunnen echter wel allemaal door één postbode beheerd worden.<br /><strong></strong></div><br /><div><strong>transmission queue </strong>Als Alice een bericht naar Bob stuurt, geeft ze deze niet direct aan de postbode, maar legt ze deze in een postvak met de naam "UIT naar Bob". Op deze manier ziet de postbode dat er een bericht naar Bob gestuurd moet worden en verzorgt hij de aflevering. Hij gooit het bericht in zijn fietstas. Zo'n fietstas heet in WebSphere MQ wereld een transmission queue.<br /></div><br /><div>Er zijn nog enkele begrippen die ook van belang zijn om bovenstaande uitleg wat meer te detaileren:<br /></div><br /><div><strong>request/response messages </strong>Vaak is het zo dat er de berichtenstroom een vraag/antwoord karakter heeft: de één vraagt en de ander antwoord. In dat geval is een vragend bericht een request message en het antwoord erop een response message.<br /></div><br /><div><strong>correlation identifier </strong>Als Alice een vraag stelt aan Bob dan is het wel handig als ze weet welk bericht het antwoord op haar vraag bevat. Zeker als in het antwoord de vraag niet herhaald wordt of als ze snel achter elkaar meerdere vragen stelt zonder op antwoorden te wachten. Om dit probleem op de lossen nummert Alice alle vragen met een uniek nummer. Bob zet dit nummer boven ieder antwoord zodat Alice precies kan zien welk antwoord op welke vraag volgt. Dit unieke nummer wordt correlation identifier genoemd.<br /></div><br /><div><strong>local/remote queue </strong>Een postvak kan lokaal zijn bij de gebruiker zelf, of op afstand bij een ander persoon. De postvakken van Alice zijn voor haar lokaal (local queues) en de postvakken van Bob zijn voor Alice op afstand (remote queues). Het postvak IN van Alice is voor haar dus een local queue en het postvak "Uit naar Bob" is dus een remote queue.<br /></div><br /><div><strong>sender/receiver channel </strong>Zoals gezegd spreken postbodes met elkaar af om berichten over te dragen. Als Alice een bericht naar Bob stuurt volgt de postbode van Alice de versturende weg (sender channel) en de postbode van Bob de ontvangende weg (receiver channel). Dit is zo omdat er op sommige wegen slechts éénrichtsverkeer mogelijk is. De weg van Alice naar Bob is dus niet altijd dezelfde weg als die van Bob naar Alice. </div><br /><div></div><br /><div><strong><span style="font-size:130%;">De berichtuitwisseling</span></strong></div><br /><div>Stel dat Alice aan Bob een uitnodiging stuurt voor een etentje, dat vervolgens door Bob (hopelijk) positief wordt beantwoordt. Hoe gaat dat dan? We zullen het protocol stap voor stap doorlopen.<br /></div><br /><ol><br /><li>Alice stelt het bericht op en plaatst het in haar postvak "UIT naar Bob"; </li><br /><li>Alice' postbode pikt het bericht op en gooit het in zijn fietstas; </li><br /><li>Alice' postbode brengt het bericht via de voor hem bekende weg naar de postbode van Bob, die al staat te wachten; </li><br /><li>Alice' postbode overhandigt het bericht aan Bob's postbode; </li><br /><li>Bob' postbode plaatst het bericht in Bob's postvak IN; </li><br /><li>Bob leest het bericht; </li><br /><li>Bob stelt een antwoordbericht op en plaatst het in zijn postvak "UIT naar Alice"; </li><br /><li>Bob's postbode pikt het antwoordbericht op; </li><br /><li>Bob's postbode brengt het antwoordbericht via de voor hem bekende weg naar Alice' postbode; </li><br /><li>Bob's postbode overhandigt het antwoordbericht aan Alice' postbode; </li><br /><li>Alice' postbode plaatst het antwoordbericht in Alice' postvak IN; </li><br /><li>Alice leest het antwoordbericht.</li></ol><br /><div>In MQ terminologie staat er het volgende. We doen het maar even in het Engels aangezien alle termen Engels zijn: </div><br /><ol><br /><li>Alice puts a message in her remote queue to Bob; </li><br /><li>Alice's queue manager picks up the message and puts it in the transmission queue; </li><br /><li>Alice's queue manager sends the message via the sender channel to Bob; </li><br /><li>Bob's queue manager receives the message via the receiver channel from Alice; </li><br /><li>Bob's queue manager puts the message in Bob's local queue; </li><br /><li>Bob reads the (request) message; </li><br /><li>Bob puts a (response) message in his remote queue to Alice; </li><br /><li>Bob's queue manager picks up the message and puts it in the transmission queue; </li><br /><li>Bob's queue manager sends the message via the sender channel to Alice; </li><br /><li>Alice's queue manager receives the message via the receiver channel from Bob; </li><br /><li>Alice's queue manager puts the message in Alice's local queue; </li><br /><li>Alice reads the (response) message</li></ol><br /><p>Bovenstaande opzet wordt weergegeven in het schema.<br /></p><p></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3756903478844982901?l=isaacdevelopers.blogspot.com' alt='' /></div>Harm2007-10-04T13:22:00ZEen opstap naar meer: ISAAC bij de City Run EindhovenLeoniehttp://www.blogger.com/profile/13696550720926907229noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-25119283307268635552007-10-04T07:22:13Z2007-10-04T07:19:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_z_Eh1tixdX0/RwSUO-L5QeI/AAAAAAAAAAM/cVbzskQZcNw/s1600-h/marathon_07.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_z_Eh1tixdX0/RwSUO-L5QeI/AAAAAAAAAAM/cVbzskQZcNw/s320/marathon_07.jpg" alt="" id="BLOGGER_PHOTO_ID_5117378061531693538" border="0" /></a>Aangezien het personeel van ISAAC graag voorop loopt, qua technische kennis maar ook op sportief gebied, zullen er een aantal 'ISAAC-ers', na weken van hard trainen, mee gaan rennen met de City Run Eindhoven van 6 kilometer welke plaats zal vinden vooraf aan de Marathon Eindhoven op 14 oktober 2007.<br /><br />In 1993 vond voor het eerst de City Run plaats, met destijds 250 deelnemers. Inmiddels is dit onderdeel van de Marathon Eindhoven uitgegroeid tot een groot hardloopfeest met in 2006 maar liefst ruim 5800 deelnemers. Scholen, sportverenigingen, beginnende lopers en groepen die voor de gelegenheid zijn samengesteld leggen een ronde van 6 km af door het centrum van Eindhoven. Het parcours start om 10.30 uur en de route komt zelfs voorbij het ISAAC kantoor op de Stratumsedijk.<br /><br />ISAAC wenst haar renners veel succes en bij deze een oproep om hen met z'n allen toe te gaan juichen tijdens het parcours of bij de finish en daarna gezellig te proosten op een goede gezondheid!<br /><br />Parcours: <a href="http://www.marathoneindhoven.nl/nl/Deelname/City_Run_6km/Parcours">http://www.marathoneindhoven.nl/nl/Deelname/City_Run_6km/Parcours</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-2511928330726863555?l=isaacdevelopers.blogspot.com' alt='' /></div>Leonie2007-10-04T07:19:00ZiPod touch: first contactKoenhttp://www.blogger.com/profile/15792957947065429923noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-16226473700413959652009-01-28T15:45:20Z2007-10-03T18:56:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_l5QRTpnEFt0/RwPo5UQk7mI/AAAAAAAAAAM/ojheT2ZxHS4/s1600-h/ipod_hero_touch_20070905.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_l5QRTpnEFt0/RwPo5UQk7mI/AAAAAAAAAAM/ojheT2ZxHS4/s320/ipod_hero_touch_20070905.jpg" alt="" id="BLOGGER_PHOTO_ID_5117189673011441250" border="0" /></a><br /><p>Heb vandaag ein-de-lijk mijn iPod touch mogen ontvangen van mijn chinese vrienden. Ik heb de afgelopen maanden al veel mooie gelezen en gehoord over de iPhone interface, maar nu ik hem zelf heb mogen ervaren moet ik zeggen: W-A-U-W. Wat een verschrikkelijk mooi scherm, wat een fijne bediening, wat een supervormgeving, wat een ingenieuze manier van browsen en wat heb ik al snel een lijstje van dingen die ik mis. En omdat ik niet hou van om de hete brei heendraaien: meteen maar mijn lijstje van dingen die ik graag verbeterd zou zien.<br /></p><p>Ten eerste mis ik echt de mogelijkheid om ook afspraken aan mijn agenda toe te voegen. Dat is echt een enorme rotstreek van apple: een werkend stuk techniek in de vorm van de iPhone opzettelijk kreupel maken. Dan doet Microsoft met de nieuwe Zune dat toch een stuk beter: de oude Zune voorzien van alle functionaliteit die ook in de nieuwe is gestopt! Kijk, schaam je en leer, Apple.<br /></p><p>Ten tweede zou ik graag mijn muziek kunnen streamen naar mijn airport express en naar mijn apple tv vanaf de ipod. Thuis zit ik niet altijd achter mijn pc en loop ik ook niet de hele tijd met die koptelefoontjes op, maar zo’n iPod kan je wel bij je dragen en dus volledige controle houden over de muziek of de podcasts die op dit moment uit de speakers knallen.</p><p> Ten derde zou ik graag wat meer invloed hebben op de vormgeving van de interface: de achtergond instellen, dat soort dingen. Iets wat wel kan in windows mobile als ik me niet vergis.</p><p>Ten vierde zou ik graag kunnen kiezen uit een berg third party apps: spelletjes, handige tools (skype of zo yeah ), een offline editor, etc. En niet alleen maar online, via safari, omdat ik niet altijd de beschikking heb over wifi (kom op NS, schiet eens op!). Maar ik denk dat dit toch redelijk snel van de grond zal komen: de vraag is te groot.<br /></p><p>Ten vijfde zou ik graag 3G kunnen bellen… toch die tweede generatie iPhone maar kopen dan, ergens in mei of zo. Nog meer wachten. Pffff</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-1622647370041395965?l=isaacdevelopers.blogspot.com' alt='' /></div>Koen2007-10-03T18:56:00ZJOGL (Java OpenGl)Edwinnoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-75731864314757406922009-01-28T15:45:29Z2007-10-02T19:48:00Z<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tbn0.google.com/images?q=tbn:kbtFv3-YCGCg_M:http://content.answers.com/main/content/wp/en/b/b9/JOGL_Refrection_Demo_Screenshot.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://tbn0.google.com/images?q=tbn:kbtFv3-YCGCg_M:http://content.answers.com/main/content/wp/en/b/b9/JOGL_Refrection_Demo_Screenshot.png" alt="" border="0" /></a><br />Lang geleden, toen ik nog op school zat, werd er beweerd dat Java goed was voor bussinessapplications maar voor grafische zaken te traag was. Daar waren dan wel uitvindingen als Swing voor het creëeren van grafische applicaties, en de Java3D API voor het creëeren van softwarematig gerenderde 3D applicaties in Java. Om hiermee te expirimenteren hebben we hier toen een project mee gedraaid, en ja, Java3D bleek echter wel degelijk retetraag. Maar er bestond wel degelijk een API die het mogelijk maakte om hardwareacceleratie te gebruiken in een Java applicatie, door middel van de heilige API: JOGL (Java OpelGL).<br /><br />JOGL maakt het mogelijk de OpenGL libraries te gebruiken in de Java klassen van de JOGL API. Ik heb enkele demo's aanschouwt en ben lichtelijk in de ban geraakt van de mogelijkheden van deze API. Daarom wil ik gaan proberen hier wat mee te gaan expirimenteren, gewoon omdat ik het leuk vind, maar ook omdat het in de toekomst bruikbaar zou kunnen zijn.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-7573186431475740692?l=isaacdevelopers.blogspot.com' alt='' /></div>Edwin2007-10-02T19:48:00ZSupported JBoss AS versiesFrisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-56640251731882106122007-10-02T06:08:04Z2007-10-02T06:03:00ZDe laatste weken valt het me op dat onze Java-goeroes bij JBoss wat strikter aan het worden zijn met het verlenen van support (zowel development support als production/maintenance support) op "niet enterprise"-versies van JBoss. Op zich begrijpelijk, omdat er intussen zo'n lading van versies en plugin-modules beschikbaar is dat het domweg ondersteunen van *alle* versies niet meer doenlijk is. We moeten daarom opletten dat we zo veel mogelijk gebruik maken van JBoss-versies die te downloaden zijn via network.jboss.com, waarvoor we onze JBoss Support login nodig hebben. In het kort komt het erop neer dat momenteel de "mixversie" 4.2.1. niet onder de support valt, en 4.2.0 die te downloaden is achter de login wél. Daarnaast valt de hele 4.0.X-range nog wel onder de ondersteuning.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5664025173188210612?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2007-10-02T06:03:00ZTutorial: Custom TagLib in JSP (Deel 1)Pieternoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-49782164782253640762009-01-28T15:13:08Z2007-10-01T11:16:00Z<a href="http://1.bp.blogspot.com/_MlgmCqJKfpo/RwDfFkDEKnI/AAAAAAAAAAU/sCaOUkivwSg/s1600-h/tutorial.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_MlgmCqJKfpo/RwDfFkDEKnI/AAAAAAAAAAU/sCaOUkivwSg/s320/tutorial.jpg" alt="" id="BLOGGER_PHOTO_ID_5116334463361755762" border="0" /></a><br />Dit is het eerste deel in een serie tutorials over het maken van een eigen tag library (taglib) in JSP. In dit eerste deel zal ik de basis van custom taglibs bespreken en hoe je een “Hello World” tag maakt. Na dit deel volgen in de komende dagen / weken nog vier delen in deze serie zodat alles over taglibs aan bod kan komen. Hou het blog dus in de gaten.<br /><br />JSP tags en custom tags zorgen ervoor dat je de scriplet code in je JSP bestanden weg kunt laten (de code tussen <% %>). In plaats daarvan plaats je een tag die verwijst naar een stuk JAVA code in je backend. Dit zorgt voor een overzichtelijker JSP bestand. Het verminderd, namelijk, het “Spaghetti code” probleem dat je vaak tegenkomt in webapplicaties en maakt je code stukken leesbaarder.<br /><br />Een taglib bestaat uit een aantal onderdelen. Allereerst wordt de code van de tag geplaatst in een tag-handler, een java klasse die erft van javax.servlet.jsp.tagext.TagSupport. Daarnaast wordt een beschrijving van de tag in een .tld bestand geplaatst, de tag library descriptor. Dit is een XML bestand die in de WEB-INF map geplaatst wordt. Uiteindelijk wordt in de web.xml de taglib gekoppeld aan een URL zodat de tags benaderbaar zijn in je applicatie.<br /><br /><strong>Een “Hello World” tag maken</strong><br /><br />Voor onze “Hello World” beginnen we met het beschrijven van de tag in de tag library descriptor. In de WEB-INF map maken we een submap “/tlds” met daarin onze descriptor file “helloworld.tld”. Hieronder zie je de code die we in “helloworld.tld” plaatsen.<br /><br />Helloworld.tld<br /><br /><pre><br /><?xml version="1.0" encoding="ISO-8859-1"?><br /><!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library<br />1.2/EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"><br /><br /><taglib><br /><tlib-version>1.0</tlib-version><br /><jsp-version>1.2</jsp-version><br /><short-name>helloworld</short-name><br /><uri>http://www.mysite.com/taglibs/helloworld</uri><br /><br /><tag><br /> <name&rt;helloworld</name><br /> <tag-class>nl.mysite.tags.HelloWorldTag</tag-class><br /> <body-content>empty</body-content><br /></tag><br /></taglib><br /><br /></pre><br /><br />In de bovenstaande code zie je op de eerste twee regels wat standaard XML code staan die je waarschijnlijk wel gewend bent van andere XML bestanden, er wordt verwezen naar de taglibrary dtd van Sun. Daarna wordt een “taglib” element gemaakt met daarin een paar standaard gegevens “tlib-version” (de versie van deze taglib) en “jsp-version” (de versie van de jsp taglib beschrijving). Bedenk voor de “short-name” een logische naam voor de taglib en maak ook van de “uri” een logische url. Onder deze header worden de tags geplaatst. In dit voorbeeld wordt een heel eenvoudige tag aan gemaakt. Hierin staat een naam (“name”), de Java klasse waarin de code voor de tag te vinden is (“tag-class”) en of de tag een body heeft (“body-content”).<br /><br />Hierna openen we de web.xml en voegen het onderstaande toe in <web-app>.<br /><br /><pre><taglib><br /><taglib-uri>http://www.mysite.com/taglibs/helloworld</taglib-uri><br /><taglib-location>/WEB-INF/tlds/helloworld.tld</taglib-location><br /></taglib><br /><br /></pre><br /><br />Dit geeft aan waar de taglib te vinden is. Uiteindelijk moet er ook nog een implementatie komen. Hiervoor maken we een nieuwe klasse aan nl.mysite.tags.HelloWorldTag. Hieronder vind je de code van deze JAVA file.<br /><br /><pre><br />package nl.directa.tags;<br />import java.io.IOException;<br />import javax.servlet.jsp.tagext.TagSupport;<br /><br />public class HelloWorldTag extends TagSupport {<br />public int doEndTag() {<br />try {<br />pageContext.getOut().println("Hello World");<br />} catch (IOException ignored) { }<br />return EVAL_PAGE;<br />}<br />}<br /><br /></pre><br /><br />Zoals je kunt zien in onze HelloWorldTag klasse een subklasse van TagSupport. De methode doEndTag() wordt uitgevoerd op het moment dat de endtag van onze tag is bereikt en schrijft de tekst “Hello World” naar het scherm. Dit gebeurt via het object “pageContext”. Dit object kun je gebruiken om je JSP pagina te bereiken en kun je o.a. gebruiken om “out” te gebruiken, om het request object op te halen of om pagina’s te includen. In het voorbeeld wordt de JspWriter van de pagina opgehaald en hierin wordt een tekst geprint. De methode geeft een int terug, in dit geval “EVAL_PAGE”. Dit is een constante van TagSupport die aangeeft dat de rest van de pagina kan worden geëvalueerd. Natuurlijk zijn er nog meer mogelijke constante die teruggegeven kunnen worden, deze worden in de volgende delen belicht.<br /><br />In je JSP bestand kun je de nieuwe tag pas gebruiken als je de taglib hebt toegevoegd aan de pagina met de onderstaande code.<br /><br /><%@ taglib prefix="tutorial" uri="http://www.mysite.com/taglibs/helloworld" %><br /><br />Vervolgens kun je de tag op de onderstaande manier gebruiken.<br /><br /><tutorial:helloworld /><br /><br />Daarmee is het eerste deel van onze tutorial ten einde, in deel twee gaan we kijken hoe we ons "Hello World" voorbeeld interessanter kunnen maken.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-4978216478225364076?l=isaacdevelopers.blogspot.com' alt='' /></div>Pieter2007-10-01T11:16:00ZMyEclipse Workbench 6.0GA releasedValentijn Scholten (ISAAC)http://www.blogger.com/profile/12425265502283982291noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-30699449519954228482009-01-28T15:05:06Z2007-09-24T13:01:00ZVoor sommigen oud nieuws, maar toch het vermelden waard; Er is weer een nieuwe versie uit van MYEclipse.<br /><br />De nieuwste versie is 6.0GA en bevat een groot aantal nieuwe features en bugfixes.<br /><br />Zo ondersteunt MyEclipse nu Eclipse3.3/Europe, Spring/JAP integration, Ready to run Application servers (tomcat, jboss) en heeft het een toolkit gebaseerd op WTP2.0<br /><br />De complete berg met informatie over deze release is te vinden op:<br /><br /><a href="http://www.myeclipseide.com/module-htmlpages-display-pid-340.html">http://www.myeclipseide.com/module-htmlpages-display-pid-340.html</a><br /><br />Persoonlijk lijkt met de JPA Entity generator wel een handige feature. Op basis van je database meteen een set entities, daos en annotations genereren.<br /><br />Zelf hoop ik ook op verbeterde stabiliteitit, in het verleden wilde MyEclipse nog wel eens crashen met de welbekende out of memoery exception.<br /><br />Ga heen en download!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3069944951995422848?l=isaacdevelopers.blogspot.com' alt='' /></div>Valentijn Scholten (ISAAC)2007-09-24T13:01:00ZJavapolis Aanmelding!Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-59474177512090279912009-01-28T15:05:38Z2007-09-24T11:59:00Z<a href="http://4.bp.blogspot.com/_Vtk4Llv11Gw/RvepU-BfcjI/AAAAAAAAAAc/FMEBmGblEBo/s1600-h/register.jpg"><img id="BLOGGER_PHOTO_ID_5113742079614218802" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://4.bp.blogspot.com/_Vtk4Llv11Gw/RvepU-BfcjI/AAAAAAAAAAc/FMEBmGblEBo/s200/register.jpg" border="0" /></a><br /><div>Zo... De Javapolis 2007 aanmeldingen van ISAAC Software Solutions zijn de deur uit richting de Belgische Java Users Group (BeJUG). Ik heb er alle vertrouwen in dat deze lieden ook dit jaar Javapolis weer maken tot dé Java-conference van Europa. Nu zelfs Java-godfather James Gosling komt als spreker, begint het meer en meer op een Europese JavaOne te lijken. En dat is natuurlijk maar goed ook, want het is lekker dichtbij en bovendien kun je in Antwerpen veel beter eten dan in California...<br /></div><div></div><div>Naast James Gosling zijn als spreker o.a. al bekend: Bruce Eckel (Thinking in Java), Chet Haase & Romain Guy (Swing-goden), Joshua Bloch (Effective Java) en Danny Coward (JDK1.7 spec lead). Daarnaast komt het hele team van de Java Posse podcast over. "Registrations will get cut off at 3000!" staat groot op de <a href="http://www.javapolis.com/confluence/display/JP07/Home">Javapolis </a>site, maar in elk geval zijn daar elke dag vier ISAAC'ers bij!</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5947417751209027991?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2007-09-24T11:59:00ZDDR-WRTLarsnoreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-38705871226520120392009-01-28T15:46:23Z2007-09-24T07:47:00ZVeel thuisnetwerk gebruikers maken gebruik van een linksys (submerk van cisco) router.<br />Met name de WRT54 reeks is zeer veel in omloop. Buiten de standaard firmware op deze router die door Cisco geleverd wordt, bestaat er ook nog een alternatieve firmware genaamd DDR-WRT.<br /><br />DDR-WRT is open-source en biedt ondersteuning voor meer functionaliteit waaronder VPN, SNMP, SSH Shell en Xbox Kaid. Met name als men bittorrent gebruikt worden een groot aantal poorten naar buiten geopend wat mening firmware laat vastlopen op den duur. Zowel de eerste versies van DDR-WRT als de firmware van Cisco zelf kennen dit probleem alsmede andere typen routers. Nieuwe versies van deze firmware kunnen hier veel beter mee omgaan, waardoor je router minder snel zal vastlopen.<br />Voor het upgraden moet je wel even gaan zitten, het is niet moeilijk, maar het komt wel nauw.<br /><br />Voor meer informatie zie <a href="http://www.dd-wrt.com/wiki/index.php/What_is_DD-WRT%3F">hier</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-3870587122652012039?l=isaacdevelopers.blogspot.com' alt='' /></div>Lars2007-09-24T07:47:00ZTime Breakdown of Modern Web DesignISAAC Developershttp://www.blogger.com/profile/15501257959342459001noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-67040198275149437752007-09-05T11:23:06Z2007-09-05T11:13:00Z<a href="http://4.bp.blogspot.com/_cEjPLB0pWmM/Rt6QKNVH9fI/AAAAAAAAAAM/1uGB_pTa-x8/s1600-h/pic_092872001188920844.png"><img id="BLOGGER_PHOTO_ID_5106677532536075762" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_cEjPLB0pWmM/Rt6QKNVH9fI/AAAAAAAAAAM/1uGB_pTa-x8/s400/pic_092872001188920844.png" border="0" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-6704019827514943775?l=isaacdevelopers.blogspot.com' alt='' /></div>ISAAC Developers2007-09-05T11:13:00ZXSQL: fijn!Frisohttp://www.blogger.com/profile/03705106024817895004noreply@blogger.comtag:blogger.com,1999:blog-7522123552486127216.post-58674253536834859852007-09-04T17:59:47Z2007-09-04T17:46:00Z<p align="left"><a href="http://3.bp.blogspot.com/_Vtk4Llv11Gw/Rt2cxLlbXtI/AAAAAAAAAAU/D7C7o7hLLTA/s1600-h/xSQLLogoWithStripesSmall3%5B1%5D.jpg"><img id="BLOGGER_PHOTO_ID_5106409921245306578" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_Vtk4Llv11Gw/Rt2cxLlbXtI/AAAAAAAAAAU/D7C7o7hLLTA/s320/xSQLLogoWithStripesSmall3%5B1%5D.jpg" border="0" /></a>Soms doe je iets heel lang "met de hand", tot je er op een dag schoon genoeg van hebt, en op zoek gaat naar een tool. En heel soms vind je dan dé perfecte tool, waarvan je je later gaat afvragen hoe je ooit zonder kon. We hebben ooit zoiets gehad met de invoering van Eclipse, Subversion en Beyond Compare, en een recent nieuw voorbeeld voor dit "ik kan niet meer zonder"-rijtje is XSQL Data Compare (en het broertje ervan, XSQL Object Compare).<br /><br />Met XSQL (van de slijmerig klantvriendelijke Amerikanen van <a href="http://www.xsqlsoftware.com/">http://www.xsqlsoftware.com</a>) kun je twee Microsoft SQL Server-databases vergelijken op metadata- of data-niveau, en met één druk op de knop een (deel)script genereren dat de twee servers synchroon maakt. Nog één extra druk op de knop maakt een backup snapshot, draait het script op de target database, ét voila: harmonie, symmetrie en gelijkwaardigheid alom. Perfect!<br /><br />Er bestaan natuurlijk wel meer van dit soort tools, maar XSQL doet het gewoon duidelijk, zonder poespas en moeilijke settings, en eigenlijk ook gewoon precies zoals je verwacht. Ik heb de evaluatieversie van dit pakketje ooit eens gevonden via een link in een SQL-server nieuwbrief, dus de vijf minuten per dag die het lezen van die nieuwsbrief me kost is wel te rechtvaardigen geloof ik.<br /><br />Als er nu ook eens zoiets bestond om een complete Linux/Firebird-server synchroon te trekken met een Windows2003/SQLServer2005-server... tsja.<br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7522123552486127216-5867425353683485985?l=isaacdevelopers.blogspot.com' alt='' /></div>Friso2007-09-04T17:46:00ZBrengt Silverlight het licht?