Soundbyte 37: Welcome to the jungle

25 maart 2012

Sorry, this entry is only available in Nederlands.

It could become a little hectic…

When I was talking with Marcel about working for Luminis Technologies he warned me that it is quite the hectic group. “Expect changes all the time and a lot of stuff will come at you” I can still hear him say. That was not an overstatement, because hectic it is. But man, we are doing exiting stuff….

That’s also the link to a song of one of the most exiting bands ever: Guns N’ Roses with “Welcome to the Jungle”. They only produced one really great album with Appetite for Destruction that also contains this song. A fun fact is that this was the first CD I ever bought, and after that my music taste never got any better. Slash (the lead guitar player) will play in the Heiniken Music Hall this June. Looking forward to see that. Don’t worry by the way, I’m not completely stuck in the 80s with my musical taste. Next soundbyte I will try to choose something a little bit more recent.


Last year Bert Ertman and I had a pretty busy conference schedule with talks at JavaOne, Devoxx, JUDCon and JFall. We were wondering if this year could even come close to that. That’s working out well so far. We had two talks at JFokus (Stockholm), will speak at JavaOne Moscow in a few weeks and I have three talks at JUDCon and JBoss World in Boston end of June. The call for papers for other big conferences (JavaOne, Devoxx, etc.) later this year is also open or will open soon, and we expect some more talks there. It’s also fun to see that we are invited personally to speak at conferences more and more often. One of the talks that we did several times now is the three our live-coding talk about Java EE 6. This talk was recorded at Devoxx and can be viewed at Parleys. If you don’t know Parleys yet, you should definitely have a look at it. It contains a huge amount of interesting talks from different conferences.

The reason to speak at conferences is all about brand awareness; showing that Luminis is a company that is leading in technology instead of just always following a step behind.

Leren-op-Maat (Personalized Learning)

The hectics that I was talking about earlier is largely caused by Leren-op-Maat. I should confess to have had some doubt about how realistic the project is when I first heard about it. Changing the complete secondary education market, integrate with all kind of initiatives around digital learning content and knowing that we have to deal with many unknown factors while still having hard dead lines. I knew Hans (the CEO) a little already and didn’t expect less, but still, it was a bit of a shock… After working as the architect of Leren-op-Maat for a few months I’m completely convinced we are going to make it. We are far from done, but are making giant steps to a version that will go into production at several schools this August. The concepts that make Leren-op-Maat so unique, but where still very vague last year are now either implemented or getting close to that. I should note that Leren-op-Maat is a lot more then just building a really cool educational system. Much more important is that it will find it’s way into the market. Although we are developing with a small team, there are many more people involved in the project: Educational experts, teachers, content authors, publishers, school boards etc. This also shows that Leren-op-Maat really has the potential to have a major effect on the educational market.

Technology-wise the project is also extremely interesting. We have to deal with a few difficult constraints:

  • Scalability: Per school there will potentially work hundreds of students concurrently with the system.
  • Multi-device: Different schools use different devices (iPad, other tablets, desktops etc.)
  • Flexibility: Very fickle functional requirements because we work with so many other parties (e.g. publishers)

To deal with this Leren-op-Maat runs completely in the cloud. This is based on Amdatu and Apache ACE. Amdatu makes it possible to build OSGi based applications that can run in the cloud, ACE makes it possible to actually deploy the software on servers. At this moment all servers are running in the Amazon cloud. We also use S3 and CloudFront for content storage and serving and use RDS as a database. The cloud abstraction in Amdatu makes sure we can easily switch cloud providers however. It’s important that we can update software on running systems easily (even when we’re working with 100 schools). ACE makes this possible, we could even support continuous delivery to schools. Continuous delivery doesn’t mean that every commit will go to production immediately by the way. In this Parleys talk you get a pretty good impression of what continuous delivery is.

To deal with all the different devices the UI is completely based on HTML5. This is the only technology that is really cross-platform. We also don’t use any “old-school” server-side web frameworks, but only RESTful web services and a large amount of JavaScript. Some Java developers will not like this, because you can’t possibly take JavaScript as a serious technology… My view is that this is the future of UIs (whether you like it or not), so you better just get really good at it. In practice this works out very well, although we do get the occasional headache from differences between browsers and browser versions. With this architecture it is also much easier to develop the UI and the “backend” separate of each other.

The biggest challenge for Leren-op-Maat is probably the constantly changing requirements. Nobody exactly knows how Leren-op-Maat will look like in a few months, and let’s not even talk about two years. We receive feedback from our pilot schools, content authors and educational experts continuously and the ideas get more and more clear every day. Just building the system in one go is not going to work; the traditional waterfall of software development is not going to get us very far (did it ever?). We work in sprints of two weeks (the first few months even one week) and at the end of a sprint we deliver the new components. This is always input for new discussions and most of the components will also be delivered to our pilot schools each sprint. Nothing new so far, but it does come with a new challenge; how do you build software step-by-step without creating technical debt very fast when making big changes every sprint? Modularity is key to do this at large scale. Obviously we use OSGi to do so. The UI is also modular because it is based on OpenSocial gadgets. Instead of having one big clunk of code we now have many small separated modules. With this you can even just throw away and re-implement complete bundles if necessary without touching the rest of the system.

New releases and interesting software

JBoss Forge, the project that I have been contributing to for about the past one and a half year has gone final. The 1.1 version is now available. This tool is interesting for anyone who uses Maven; it helps configuring frameworks etc. and it is a platform to easily create your own plugins. If you do the same work on projects on a regular base it is easily worth to build a plugin for this.

BndTools, is now pretty stable and is absolutely the best choice for OSGi development. Specially the updating of bundles in a running framework during development is a huge time saver. We use BndTools for Leren-op-Maat. After publishing this soundbyte I will send a pull-requiest to the BndTools project with support for Apache ACE; send bundles directly to an ACE server (and targets) at code changes.

Amdatu Platform, is working hard to a 1.0 version with a completely transparent multi-tenancy model.

Amdatu Semantic, now also has support for OWLIM Lite besides Sesame. This semantic store has much more options such as OWL inferencing. This is also used in Leren-op-Maat.

Back to static again

On a few occasions I recently noticed open source projects that move to a static HTML website for their project. In most cases project websites and documentation are not changed on a daily base and developers are writing the content. Re-generating the pages from a database dynamically at every request doesn’t make much sense it this case. Something that those projects have to deal with however is that any person should be able to contribute to documentation and other pages, without having a world-writable CMS. It would be much easier to treat pages and documentation as source code, and send changes as pull-requests. Apache has it’s own solution for this and many new Jboss projects are using Awestruct. The idea is that a website is developed in abstractions such as Haml, Markdown and Textile and is compiled to static HTML. In those languages you can still use things such as templating (e.g. includes or compositions) like you would do in a server side solution. Development feels very much like working with a simple server side framework but the result are static pages. Those static pages can even easily be hosted on GitHub or Bitbucket like we did with the new JBoss Forge website. Of course this is a solution for a very specific problem (developer maintained project websites), but the trend is certainly interesting. At the next Lightning Talks I will tell more about Awestruct.

Paul Bakker

Het zou wel wat hectisch kunnen worden…

Toen ik vorig jaar met Marcel praatte over werken bij Luminis Technologies waarschuwde hij al dat het nogal een hectische club is. “Ga er maar vanuit dat er zo nu en dan weleens wat verandert en er heel veel op je af komt” hoor ik hem nog zeggen. Dat was zeker niet overdreven,  want hectisch is het. Maar wat doen we gave dingen…

Dat is ook meteen de link naar een nummer van één van de allergaafste bands ooit: Guns ‘n Roses met “Welcome to the Jungle”. Eigenlijk hebben ze maar één echt goed album gemaakt met Appetite for Destruction waar ook dit nummer op staat. Leuk weetje is dat dit de eerste cd is die ik ooit gekocht heb, en daarna is het ook nooit meer goed gekomen met mijn muziek smaak. In juni staat Slash (de gitarist) in de HMH, ik ben er heel benieuwd naar. Maak je overigens geen zorgen, ik ben niet muzikaal helemaal in de jaren 80 blijven hangen, in de volgende soundbyte probeer ik iets van deze tijd uit te kiezen 😉


Vorig jaar had ik samen met Bert Ertman met sessies op JavaOne, Devoxx, JUDCon en JFall een aardig drukke conferentie agenda. We vroegen ons af of dat dit jaar ook maar in de buurt zou kunnen komen. Dat lukt al aardig. Inmiddels hebben we twee praatjes gehouden op JFokus (Stockholm), spreken we over een paar weken op JavaOne Moscow en heb ik drie sessies staan voor JUDCon en JBoss World Boston eind juni. De call for papers voor andere grote conferenties in het najaar (JavaOne, Devoxx, etc.) gaan of zijn ook open en beloven ook nog wel wat sessies. Leuk hieraan is dat we ook steeds vaker persoonlijk uitgenodigd worden om ergens te komen spreken. Een van de presentaties die we inmiddels een aantal keer gegeven hebben is de drie uur durende live-coding sessie over Java EE 6. Deze is te bekijken op Parleys. Als je nog niet bekend bent met Parleys moet je hier zeker eens naar kijken, hier staat een enorme verzameling aan hele interessante presentaties.

De reden om dit te doen heeft alles te maken met naamsbekendheid; laten zien dat Luminis een leidende partij in technologie is in plaats van lijdend achter de feiten aan te lopen.


De hectiek waar ik het eerder over had komt grotendeels door Leren-op-Maat. Ik moet toegeven dat toen  ik voor het eerst over dit project hoorde enige twijfel heb gevoeld over hoe realistisch het project is. Het complete voortgezet onderwijs op z’n kop zetten, integreren met allerlei initiatieven rondom digitale content en nu al weten dat we met allerlei onbekende factoren te maken krijgen terwijl we wel een aantal keiharde deadlines hebben. Ik kende Hans al een beetje en had niet minder verwacht, maar het was toch even schrikken… Een aantal maanden verder als architect van het project ben ik inmiddels volledig van overtuigd dat het gaat lukken. We zijn zeker nog niet klaar maar maken enorme sprongen naar een versie die in augustus op een heel aantal scholen in productie gaat. De concepten die Leren-op-Maat echt uniek maken maar vorig jaar nog ontzettend vaag waren, zijn inmiddels gerealiseerd of zitten daar dicht bij. Overigens gaat Leren-op-Maat veel verder dan alleen een stoer systeem bouwen, veel belangrijker nog is dat het zijn weg in de markt vindt. Ondanks dat we maar met een relatief klein team ontwikkelen zijn er dan ook veel meer mensen bij betrokken; onderwijsexperts, docenten, content auteurs, uitgevers, schoolbesturen etc. Dit geeft maar weer aan dat Leren-op-Maat echt de potentie heeft de onderwijsmarkt te veranderen.

De technologie is ook zeker interessant. We hebben namelijk te maken met een aantal lastige constraints:

  • Schaalbaarheid: Per school werken er potentieel honderden leerlingen tegelijkertijd met het systeem.
  • Multi-device: Verschillende scholen gebruiken Leren-op-Maat vanaf verschillende devices (iPad, andersoortige tablets, desktops, etc.)
  • Flexibel: Zeer veranderlijke functionele eisen doordat we met zeer veel andere partijen te maken hebben (content leveranciers bijvoorbeeld).

Om hiermee om te te kunnen gaan draait Leren-op-Maat volledig in de cloud. De basis hiervan is Amdatu en Apache ACE. Amdatu maakt het mogelijk om op OSGi gebaseerde applicaties te ontwikkelen die in de cloud kunnen draaien, ACE maakt het mogelijk de software daadwerkelijk op een server te installeren. Op dit moment draaien alle servers in de Amazon cloud. Daarbij gebruiken we naast compute nodes bijvoorbeeld ook S3 en CloudFront voor het opslaan en serveren van les content en RDS als database. Door de cloud abstractie in Amdatu kunnen we echter ook eenvoudig overschakelen naar andere cloud providers. Belangrijk hierbij is dat het eenvoudig moet zijn om nieuwe versies te installeren van componenten (ook als we straks met honderd scholen werken). ACE maakt dit mogelijk, waarbij we potentieel continious delivery naar alle scholen zouden kunnen ondersteunen. Continious delivery betekent overigens niet dat iedere commit direct in productie gaat. In deze Parleys presentatie krijg je daar een aardig indruk van.

Om met alle verschillende devices om te kunnen gaan is de UI volledig HTML5 gebaseerd omdat dit de enige technologie is die echt cross-platform is. We gebruiken hierbij ook geen “ouderwetse” server-side web frameworks, maar alleen maar RESTful web services en heel veel JavaScript. Sommige Java ontwikkelaars schrikken daar wellicht van, want JavaScript kun je toch niet serieus nemen… Mijn idee hiervan is dat dit nou eenmaal de toekomst van user interfaces is; je kunt er dus maar beter gewoon heel goed in worden. In de praktijk blijkt dit ook heel goed te werken, al hebben we zo nu en dan weleens ellende met verschillen tussen browsers en browser versies. Met deze architectuur is het ook veel beter mogelijk om de UI en de “backend” los van elkaar te ontwikkelen.

De grootste uitdaging van Leren-op-Maat is waarschijnlijk de veranderlijkheid. Niemand weet nog exact hoe Leren-op-Maat er over een aantal maanden uit ziet. Laat staan over twee jaar. We krijgen constant feedback van onze pilot scholen, content auteurs en onderwijsexperts en de ideeën worden gaandeweg steeds scherper. Het even in één keer bouwen zit er dus niet in; de traditionele waterval gaat ons in ieder geval niet helpen. We werken daarom in sprints van twee weken (de eerste maanden zelfs één week). Aan het eind van iedere sprint leveren we op, wat altijd weer input voor nieuwe discussies is. Een deel van de nieuwe software gaat overigens direct naar onze pilot scholen. Niets nieuws tot zover, maar dit brengt wel een nieuwe uitdaging met zich mee; hoe ontwikkel je een systeem stap-voor-stap zonder al snel een enorme “technical dept” op te bouwen? Modularisatie is de enige manier om dit op grote schaal voor elkaar te krijgen. Wij doen dat uiteraard op basis van OSGi. Ook de UI is modulair doordat deze gebaseerd is op OpenSocial gadgets. In plaats van één hele grote bak code, heb je nu opeens allemaal kleine modules. Hiermee kun je desnoods complete modules weggooien en opnieuw bouwen, de rest van het systeem blijft onveranderd.

Nieuwe releases en interessante software

JBoss Forge, het project waar ik al zo’n anderhalf jaar aan meebouw, is een paar weken terug uitgebracht. Inmiddels is de 1.1 versie beschikbaar. Deze tool is eigenlijk voor iedereen die Maven gebruikt handig om te gebruiken; het helpt om allerlei configuratie voor bijvoorbeeld frameworks te doen en maakt het heel eenvoudig om zelf plugins te schrijven. Doe je regelmatig hetzelfde werk in een Maven project, dan is het al snel de moeite waard om daar eens een plugin van te maken.

BndTools, is inmiddels goed stabiel en is nu absoluut de beste keuze voor OSGi development. Vooral het automatisch updaten van bundels in een draaiend framework tijdens development is een enorme tijdswinst. We gebruiken BndTools onder andere voor de ontwikkeling van Leren-op-Maat. Na het publiceren van deze soundbyte stuur ik nog een pull-request naar het BndTools project met daarin ondersteuning voor Apache ACE; bij code aanpassingen worden bundels direct naar een draaiende ACE server (en bijbehorende targets) gestuurd.

Amdatu Platform, is hard op weg naar een 1.0 versie met daarin een vrijwel volledig transparant multi-tenancy model.

Amdatu Semantic, heeft sinds kort naast ondersteuning voor Sesame ook ondersteuning voor OWLIM Lite. Deze semantische store heeft veel meer mogelijkheden voor bijvoorbeeld OWL inferencing (). Dit wordt ook in Leren-op-Maat gebruikt.

Voortaan weer statisch

De laatste tijd vallen mij steeds meer open source projecten op die hun website vanuit statische HTML serveren. In de meeste gevallen worden project websites en de documentatie hiervan toch niet dagelijks aangepast en de ontwikkelaars verzorgen ook de content. Bij elke request de pagina’s dynamisch opbouwen vanuit een database is dus een vrij zinloze stap. Een probleem waar dit soort projecten wel mee te maken hebben is dat documentatie eigenlijk door iedereen moet kunnen worden geschreven, zonder dat je een CMS hebt waar zomaar iedereen bij kan. Veel handiger zou zijn om documentatie en pagina’s gewoon als source code te beschouwen, en wijzigingen gewoon als patches/pull-requests opgestuurd kunnen worden. Voor Apache projecten is hier inmiddels een eigen oplossing voor en veel nieuwe JBoss projecten gebruiken Awestruct. Het idee is dat de website ontwikkeld wordt in tussentalen zoals Haml, Markdown en Textile waarna dit gecompileerd wordt naar statische HTML. In deze talen kun je bijvoorbeeld nog prima dingen zoals templating (includes of compositions) gebruiken zoals je kent van server side oplossingen. Het ontwikkelen voelt heel erg als werken met een eenvoudige server-side oplossing, maar het resultaat zijn statische pagina’s. Dit kan dan bijvoorbeeld weer direct op GitHub of Bitbucket gehost worden zoals we bijvoorbeeld ook voor de nieuwe JBoss Forge website doen. Uiteraard is dit een oplossing voor specifieke problemen (door developers onderhouden semi-statische websites), maar de trend is interessant. Tijdens de eerstvolgende Lightning Talks vertel ik wat meer over Awestruct.

Paul Bakker

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *