The new stuff (RIA)

Sinds zeer recent ben ik begonnen aan een nieuw project. Het project is nog heel vers, maar aangezien ontwikkelingen snel gaan wil ik toch al over wat technische overwegingen schrijven.
Als frontend hebben we na korte overweging voor Adobe Flex gekozen. Ik was nooit erg enthousiast over de HTML/Javascript combinatie, dus eerste keus is een RIA-framework (over GUI, zoals dat vroeger heette) dat ook echt bedoeld is voor RIA. In tegenstelling tot de 13-dozijn DHTML/Ajax/XHTML frameworks is de keuze dan gelukkig wat overzichtelijker. Gezien voorgaande ervaring hebben we voor Flex gekozen boven JavaFX. W

Heel toevallig, las ik nu een artikel van een oud-collega, over Spring Security in combinatie met Flex. RIA-applicaties zijn wat veiligheid betreft risicovoller: op de client is dikker (qua software en logica) dan bij tradionele HTML-interfaces. Wanneer geen rekening mee gehouden wordt, is er grotere kans dat de server onbeschermd ontbloot is.
In het artikel wordt uitgegaan van de combinatie Flex/Spring/BladeDS als basis voor de architectuur van de applicatie. BladeDS is een remoting-framework, waarmee de Flex-client-applicatie, op de computer van de gebruiker communiceert met de applicatie op de server. Spring-security is een wordt als een filter-class op de server-side toegevoegd. Samen met wat client-side code in flex, zorgt het geheel ervoor dat de gebruiker een nette login-box krijgt, wanneer hij de applicatie wilt gebruiken. Lees de details in: Integrating Flex, BlazeDS, and Spring security op de Adobe Developer Center.

Cloud computing en Obama

“Wat kan de nieuwe president van Amerika, Obamo doen voor Cloud Computing?” Deze tekst las ik in een artikel, waar blijkbaar meegevaren wil worden op de hype. ‘Wat heeft hij uberhaupt te doen met cloud computing?” vroeg ik me als eerst af. Als je een beetje interprereert, heeft hij in zijn campagne en programma blijkbaar er positieve zaken over cloud computing gezet.
What Does Obama Revolution Mean to Cloud Computing?

(en orginele blogbosting op CloudAve hier)

Een van de argumenten: Obama is voor klimaatvriendelijke energieontwikkeling.  Dus, aldus het artikel, voor miluevriendelijke datacenters waar ‘clouds’ op draaien. En wat minder vergezocht: hij is voor een open internet (net neutrality), dat wil zeggen dat bedrijven evenveel moeten betalen voor toegang tot internet. Hierdoor hebben kleine bedrijven een kans in de cloud- en SaaS (Software as a Service) -markt.
Tot slot, Obama is voor betere privacy-wetgeving en -waarborging door overheden. Hierdoor zouden mensen minder bang hoeven te zijn, hun gegevens op een webapplicatie (zoals online boekhoudingspakket) te zetten, waar de overheid of bedrijven zomaar hun gegevens in zou kunnen inzien.

J-Fall

Gisteren heb ik de J-Fall bezocht, en het was een zeer inspirerend en interessant congres!
In dit stukje een kort verslag. Aldus mijn verslag! Ik ben al lang niet meer de eerste, getuige deze weblog-entries op blog.leenarts.net.
Wat eruit sprong, waren onderwerpen op Rich Client Applications, closures en parellel en distributed software!

Pragmatic Java
Na de keynote was de eerste sessie die ik bezocht was ‘Pragmatic Java’. De presentatie werd gegeven voor een groot publiek. De spreker, Allister Smith, een aimabele man van over de 50, demonstreerde hoe Java ook gebruikt kon worden op de manier zoals bij Python en Ruby. Eerst werd een stuk Java-code gedemonstreerd dat veel gebruik van Entity-beans, DAO-classes gebruik maakte om een XML-document te genereren aan de hand van een databasetabel. Vervolgens een stuk Python code waar via veel minder code hetzelfde werk werd gedaan en tot slot demonstreerde de spreker Java-code die op soortgelijke wijze, via dynamische code hetzelfde werk deed. Enkele jaren terug was dit onderwerp misschien nog vernieuwend en ‘op tijd’. Nu bleek uit de onderwerpen hoezeer in Python (en te meer Ruby, hoewel die taal niet gedemonstreerd werd) in veel gevallen eleganter en beter werken.

Rich clients

De keynote werd gegeven door een evangelist van Adobe, Duane Nickull. Hij heeft in meerdere standard-commissies gezeten, bij onder meer W3C. Hij heeft (mede) design patterns vastgesteld voor Web 2.0, en RIA, analoog naar design patterns voor object oriented design zoals de GoF ze ooit heeft opgesteld. Onderwerpen waar iedereen een andere definitie voor heeft, dus een goede zaak dat veel begrippen vast gezet worden.
Veel onderwerpen behandelden Rich Clients-frameworks met name JavaFX en Flex van Adobe.

Verder heb ik nog veel andere zeer interessante onderwerpen gezien, over het Java Memory Model door Peter Veentjer en Closures stonden me vooral erg goed bij. Binnenkort een followup!

Multi core processors en parallel programming

Een van de belangrijkste revoluties in ICT-land is de stagnatie van die kloksnelheid van chips en de opkomst van multi-core processors in computers. Globaal gezegd: processors van nu kunnen nauwelijks meer achterelkaar, maar kunnen nu steeds meer tegelijk.
Dit biedt een flinke uitdaging voor softwareontwikkelaars (programmeurs, architecten): in plaats van programmacode die achter elkaar wordt uitgevoerd, moet programmacode geschreven worden die tegelijkertijd uitgevoerd kan worden.

Metafoor van werkverdelen
Voor heel veel software is dit buitengewoon moeilijk. Om in metaforen te spreken: heel veel werk, of het nu het verven van een huis is of het ontwikkelen van nieuwe belastingsoftware kan niet door een iemand gedaan worden. Het werk moet met meerdere mensen gebeuren. Om te zorgen dat het werk nog steeds goed gaat, is alleen wel een coördinator of leider nodig, in de vorm van projectleider, hoofdschilder, aannemer, etc. Daarnaast zijn vaak secretaress, boekhouders, etc. nodig ter ondersteuning van de leider. Die leiders en ondersteunend personeel dragen niets direct bij aan het eindproduct: dan doen de schilders, programmeurs, timmermannen. Bij een goed bedrijf zal er ook zo min mogelijk ondersteunend en coordinerend personeel zijn.
Om de metafoor verder te trekken: voor de bovenstaande problemen is geen generieke oplossing. Het aannemersbedrijf, of schildersbedrijf, of softwarehuis dat slecht loopt kan niet al zijn problemen oplossen door een algemeen coordinator in te huren. Als iemand ingehuurd wordt, zal hij zich eerst in de problemen en de bedrijfssituatie moeten verdiepen, voor hij een passende oplossing kan aanbieden of mensen kan gaan aansturen.
Bij een slecht werkend bedrijf zal er heel veel coordinerend en ondersteunend personeeel nodig zijn. Of het gebeurt zeer vaak dat een schilder erachter komt dat alle verf al door iemand anders in gebruikt wordt. Of verwarmingsinstalleur wil de buizen gaan aanleggen terwijl de stuccadoor al alle muren heeft afgewerkt.

Zelfde geldt ook binnen de softwareontwikkeling: generieke oplossingen als een gedistribueerd database, een nieuwe applicatieserver of hercompileren van programmacode zorgt er niet voor dat oude software meteen goed werkt op een multi-coreprocessor.
Evenzo is het zomaar verdelen van werk over meerdere threads of processen meestal niet mogelijk, of levert dit verdelen zoveel overhead dat de prestatiewinst minimaal is.

Parellel programming, Nightmare on core street
Eerder schreef ik al, dat programmeurs en architecten dit probleem negeren of in het gunstige geval schromelijk onderschatten. Desalniettemin waren ten tijde van mijn posting al fraaie artikelen die het probleem van parellel programming goed uitleggen. Op een weblog van Rebel Science News, staat een erg heldere serie van postings die het probleem goed uitleggen: Nightmare on core street. De eerste entry legt al heel helder het probleem van software schrijven voor meerdere cores, en waarom threads niet de beste oplossing zijn.
De stelling van de weblogauteur, dat we (de programmeurs) in de toekomst geen algoritmes meer schrijven vind ik alleen wat kort door de bocht: dat hangt geheel van je interpretatie van algoritme af.

Uitdagingen voor multi-core

Het schrijven van gedistribueerde software of parellele software door een programma op te splitsen in meerdere threads werkt voor simpele taken als sorteren (zie de heldere posting op javaworld: Java Concurrency in Practice), maar naar mate het werk ingewikkeld wordt (volgens de bovenstaande metafoor) wordt de overhead van coordineren van threads èn de kans op fouten exponentieel groter (zie ook een latere artikel op javaworld: Multicore: New chips mean new challenges).
Bedrijven als NVIDIA werken aan ander model van chips: GPU’s: vectorprocessors, terwijl Intel blijft vast houden aan thread-based programming volgens de auteur. Wellicht een antwoord op de auteur van Rebel Science: ik vond een weblog entry waar Intel elk geval onderkent dat programmeren met meerdere threads niet bruikbaar is om parallelle software te schrijven en een andere model nodig is om met de multi-core processors van Intel om te gaan. Desalniettemin geloof ik de auteurs van Rebel Science dat een geheel ander model van chips nodig is: Parallel Computing: Why the Future Is Non-Algorithmic.

Kortom parellel programming wordt komend jaar denk ik een erg hot onderwerp! Zelfs met of zelfs dankzij de kredietcrisis: softwareontwikkel- en -consultancybedrijven zullen moeten zoeken naar oplossing om zo goedkoop mogelijk, zulke goed mogelijke programma’s te schrijven die gebruiken van van multi-core processors. Simpel het budget verhogen om veel meer servers en mankracht in te kopen of te huren leidt niet tot een oplossing.

Rich clients en kringloopwinkels

Zo’n 8 jaar geleden waren kringloopwinkels en en tweedehands spullen bepaald niet populair. Hoogstens voor studenten die op kamers gingen of (andere) armlastige mensen. Sinds enkele jaren is het hebben van tweedehands spullen helemaal hip, en zijn kringloop winkels druk bezocht. Hoe komt dat? Simpel door markplaats (overigens ooit een dochterorganisatie van een kringlooporganisatie Het Goed). Markplaats zorgde ervoor dat kopen van tweedehands goederen veel laagdrempeliger was. Een indirect gevolg van de toename van kopen van tweedehands goederen via internet, was dat kringloopwinkels ook weer populair werden. Voordeel van een kringloopwinkel bovenop Markplaats is ten slotte dat je makkelijke artikelen direct kunt zien voor aankoop, zonder allerlei adressen eerst te hoeven bezoeken.

Ik denk dat de desktop-applicatie, in de vorm van de rich-client een soortgelijke ontwikkeling doormaakt qua populariteit aan het doormaken zijn.

Begin jaren 2000 werd de desktopapplicatie plots een stuk minder populair. Heel veel, vooral administratieve, applicaties werden als webapplicatie gebouwd of omgezet.
Men kwam er snel achter dat de UI van webapplicaties zo zijn beperkingen heeft. Oorspronkelijk is het WWW ontworpen voor online bekijken van artikelen en online formulieren bedoeld voor verzenden van berichten als bestellingen of klachten. Bij een webapplicatie verwacht een gebruiker veel meer dan die beperkte functionaliteit: sneltoetsen, makkelijk kunnen scrollen, makkelijk kunnen doorklikken (dus een snelle interface).

Als oplossing hiervoor kwamen technieken als Javascript, Ajax en slimmere web-browsers als Google Chrome, Firefox3 of IE8 (probeer maar eens een moderne webapplicatie met IE6 te gebruiken). Op die manier kan toch een redelijk soepel voelende en uitgebreide applicatie geschreven worden, die helemaal in een webbrowser werkt.
Los van het probleem dat rich internetapplicaties (RIA) als Google Docs of Zoho nog steeds soms wat traag aanvoelen, ligt het grootste probleem in de ontwikkeling van die applicaties. De ontwikkeling van webapplicaties is een stuk moeilijker en omslachtiger. Aanwijzing hiervoor zijn de vele webframeworks voor webapplicaties zoals voor HTML/Ajax: Wicket, Spring Webflow, JSF, Struts, GWT.  Dat deze applicaties zo snel opkomen en vaak weer in populareit dalen zegt volgens mij wel wat over de kwaliteit.

Er komen inmiddels ook frameworks die niet op html zijn gebaseerd: Flex, Microsoft, Mozilla Xul of Sun’s JavaFx. Als je een webapplicatie in zo’n framework bouwt, bouw je bijna applicatie die bijna hetzelfde werkt als een tradionele desktopapplicatie.
Ofwel, via een omweg wordt de desktopapplicatie weer populair. De voordelen van een webapplicatie: leesbare html, automatisch indexbare tekst bestaat of niet-nodig-zijn van een extra plugin blijken opeens niet zo belangrijk. Kortom, de desktop-applicatie is stiekem weer hot geworden.

The Perry Bible Fellowship

Gisteren wat tijd verspild in het zien van de bizarre comics van de The Perry Bible Fellowship. Veel absurde plaatjes, vaak wreed, soms flauw en vaak erg grappig.
Leuk om een hoop tijd aan te verspillen met de Older/Newer button.

De comics zijn geproduceerd voor enkele Engelse kranten. Er worden geen nieuwe meer gemaakt. De auteur heeft een boek uitgebracht met alle comics. Zover ik weet staan er geen nieuwe comics in, maar het leest wel een stuk makkelijker van papier:
The Trial of Colonel Sweeto and Other Stories