Mastodon computers Archives - HermanRonk.nl

Ik heb een game geschreven

Eigenlijk een hele tijd terug al, maar het was er nog niet echt van gekomen om daar hier wat over te schrijven. Nu met een klein beetje extra tijd is het wel aardig om eens wat inzage te geven over hoe ik het schrijven van een web-based spel nu eigenlijk aangepakt heb. Niet op de laatste plaats omdat ik daar 0 ervaring mee had, en als ik het kan dan kan jij het ook.

Het gaat hier om clickfarm.nl een simpele web game die uiteindelijk draait om het verzamelen van zo veel mogelijk geld met een zo goed mogelijk gebalanceerd en geautomatiseerd productie proces.

Clickfarm landbouw knop
Dit zou ik niet handmatig blijven doen 😉

Waarom heb ik een game geschreven?

Ik vroeg me af of ik mezelf iets helemaal nieuws kon leren, alhoewel ik in het verleden wat PHP geschreven heb in in mijn werk de nodige scripts schreef wilde ik graag weten of ik ook HTML, CSS en Javascript kon leren.

Wat begon met een knop die simpelweg een teller liet oplopen mondde uit in een volledig spel met meer dan 2.000 regels code (dat had vast efficiënter gekund). Ik heb veel geleerd over JavaScript en ook het nodige over HTML en CSS, maar daar ligt voor mij toch minder de focus.

Random clickfarm broncode
Random clikcfarm code (game geschreven)

Mijn doel was dus het leren van een nieuwe taal, en dit is de eerste keer geweest dat er voor mij ook echt wat geklikt heeft waarbij ik het gebruik van objecten, functions en al dergelijke zaken ook heb kunnen plaatsen. Alles wat ik hierna geschreven heb voelt aanzienlijk eenvoudiger omdat er blijkbaar wat op zijn plek gevallen is.

Hoe heb ik de game geschreven?

Excessief gebruik van Google en heel veel proberen. De aanpak was heel iteratief en ik heb niet vooraf een groot plan gemaakt over hoe de bouw er uit zou gaan zien, sterker nog, de meeste functionaliteit is on the fly bedacht terwijl ik het aan het schrijven was. In dat opzicht is het een klein wonder dat het spel zo goed werkt als dat het doet.

Verder heb ik zeker in de latere stadia van de ontwikkeling veel input gebruikt vanuit onder andere het forum op Tweakers.net om het nodige in balans te brengen.

Ik denk wel dat dit een mooi voorbeeld is van hoe je als je enige affiniteit hebt met scripting vrij eenvoudig je kennis steeds verder kan uitbreiden. Begin met een klein projectje en bouw daar op door, probeer niet meteen de lat te hoog te leggen en accepteer dat het een zeer iteratief proces gaat zijn.

Learn krijtbord

Wat is er van gekomen?

Los van dat ik er een hoop van geleerd heeft hebben een hoop mensen veel tijd van hun leven verloren met het spelen van het spel. Op de piek waren er 400+ gelijktijdige spelers met een paar duizend bezoekers per dag op de site. Ik heb nooit reclame op de site gehad, maar wel de mogelijkheid geboden om donaties te doen, en wonderwel ook daadwerkelijk voor een aardig bedrag aan donaties ontvangen (dat had ik niet verwacht).

Voor mezelf is het voornaamste doel bereikt, ik heb weer een nieuwe taal geleerd waar ik comfortabel mee aan de slag kan. De stap naar NodeJS is inmiddels ook gezet dus ook daar ben ik inmiddels de nodige kennis van op aan het doen.

Tot slot

Alhoewel ik niet uitsluit dat ik later nog een klein stukje verder schrijf aan het spel en mogelijk het een en ander zal moderniseren acht ik dit ook weer niet heel waarschijnlijk. Het is een mooi project geweest en ik heb er een hoop van geleerd, maar het verder onderhouden zou wel aardig wat tijd gaan kosten waar voor mijzelf eigenlijk niets meer tegenover staat.

De code van het spel is beschikbaar op Github, mocht iemand nog goede toevoegingen aanbieden via die route zal ik die waarschijnlijk nog wel implementeren.

GitHub – HermanRonk/Clickfarm: Clickfarm webgame

Server disk en VM configuratie

Eerder schreef ik al een stuk over de nieuwe server die ik in elkaar geklust heb, met al die hardware is het misschien ook wel zinnig om een stukje te schrijven over de inrichting van die machine. Allereerst draait de server VMware ESXi (custom image ivm drivers), dit deel draait vanaf een USB stick die achter in de server steekt.

Op deze VMware omgeving draaien de volgende servers:

– Storage (Win2k8)
– Office PC (Win7)
– VPN / DNS (Win2k8)
– Downloads (Ubuntu Server 11.04)

Storage:
Deze machine heeft de volgende hardware tot zijn beschikking:

CPU: 2 cores
RAM: 4 GB
Bootdisk: 20 GB (op een van de twee SSD’s)
Storage: 2x 2TB 1x 1TB (Vanaf 3 verschillende disken)

De reden dat ik deze server op Windows laat draaien is dat ik daar het storage stuk gewoon een stuk overzichtelijker vind. Ik wilde de shares en rechten deze keer eens fatsoenlijk regelen zodat het veilig en correct ingericht was. Naast het aanbieden van de nodige shares draait deze machine ook een Crashplan installatie, deze verzend backups van de belangrijkste data (+- 250 GB) naar Oirschot, en de belangrijke data uit Oirschot wordt naar deze server gestuurd. Tevens backuppen onze overige systemen in Dordrecht ook naar deze server.

Kingston F115 SSD
Een van de SSD's uit het systeem

Office PC:
Deze machine heeft de volgende hardware tot zijn beschikking:

CPU: 2 cores
RAM: 2 GB
Bootdisk: 30 GB (op een van de twee SSD’s)
Storage: 1x 100 GB voor dataopslag (Dropbox ed)

Mijn laptop draait Fedora Linux en mijn andere systeem is een Mac, toch ontkom ik helaas soms niet aan de nodige Windows only applicaties, dus vandaar een Windows 7 virtuele desktop. Deze VM doet verder momenteel dienst als testmachine voor het streamen van transcoded video naar onze ipads.

Windows 7 Logo
Een van de gebruikte OS'en

VPN / DNS (Win2k8):
Deze machine heeft de volgende hardware tot zijn beschikking:

CPU: 1 core
RAM: 2 GB
Bootdisk: 30 GB (op een van de twee SSD’s)

Een aantal diensten die ik in mijn netwerk draai hoeven niet aan het internet te worden gehangen maar wil ik wel vanaf mijn laptop of iPad kunnen benaderen. Daarnaast kom ik vrij regelmatig in hotels en wil ik zo min mogelijk data open over het internet versturen. Om dat mogelijk te maken draai ik dus een VPN server. Omdat ik verder ook nog mijn duurtlang.net domein ook intern wil gebruiken voor de diensten draai ik intern een kopie van dat domein met dus als toevoeging de interne services. (Niet helemaal netjes gedaan nu, maar het werkt voorlopig).

Logo windows server 2008
Windows Server 2008

Downloads:
Deze machine heeft de volgende hardware tot zijn beschikking:

CPU: 2 cores
RAM: 4 GB
Bootdisk: 30 GB (op een van de twee SSD’s)
Storage: 1x 500 GB voor dataopslag downloads en unpacking. (Op een andere disk dan de Storage VM gebruikt)

Dit is een van de linux machines in de groep, met SabNZB, SickBeard en CouchPotato is deze VM verantwoordelijk voor het download deel van de server, downloads worden binnen gehaald en uitgepakt op deze machine, en vervolgens automatisch gemoved naar de storage machine. De performance van deze machine zelf is niet zo heel belangrijk voor mij, vandaar dat ik geen moeite gedaan heb om het uitpakken en downloaden op verschillende disken te laten draaien. Wel is het zo dat het downloaden en unpacken op een disk gebeurt die niet ook door de Storage VM in gebruik is.

Ubuntu Logo
Ubuntu Linux

Naast de boven genoemde machines draaien er ook nog wat andere testzaken, maar die spelen in ieder geval geen significante rol binnen het netwerk. Al met al ben ik in ieder geval erg tevreden met de server, ik heb nog totaal geen performance problemen kunnen ontdekken en zelfs onder aanzienlijke load is het systeem zo goed als stil. Missie geslaagd dus 🙂

Nieuwe server

Tot deze week draaide in ons appartement een klein servertje op basis van een Intel Atom, alhoewel het de zaken die er op draaiden op zich goed gingen was het allemaal maar net aan, daarnaast had ik nog een aantal wensen die ik met deze hardware domweg niet voor elkaar kon krijgen. Toen Andries tijdens The Party zijn nieuwe server hardware binnen gekregen had en daarmee aan de gang ging was voor mij al vrij snel duidelijk dat zijn server krachtig genoeg was om te kunnen draaien wat ik voor ogen had en ook nog eens binnen het gestelde budget zou vallen. Dus, de nieuwe server was onderweg, door wat leverproblemen van het moederbord heb ik helaas wat langer moeten wachten dan gehoopt, maar afgelopen maandag was dan eindelijk alles binnen.

De hardware:

CPU: Intel Core i5 2500 (3,3 Ghz Quadcore)
Moederbord: Intel DQ67OW B3 iQ67, SATA600 RAID, DVI
RAM: 16GB, DDR3, PC10666, CL9
VoedingCorsair Voeding CX430 430W
HDD: 3x Western Digital Harddisk 3.5″ 2TB, SATA300, 64MB
HDD: 1x Western Digital Harddisk 3.5″ 1TB, SATA300
SSD: 1x Intel 160GB
SSD: 1x Corsair 115GB
Case: Fractal Design R3

Zowaar is het me gelukt om deze keer alles in 1x goed in elkaar te zetten en werkend te maken, normaal zit er altijd wel ergens een stekkertje of kabeltje nog niet helemaal goed, maar deze keer ben ik blijkbaar goed te werk gegaan. De case heeft daarbij wel geholpen moet ik zeggen, normaal ga ik voor een zo goedkoop mogelijke case, maar deze keer heb ik daar eens in geinvesteerd.. En ik moet zeggen dat dat het zeker wel waard geweest is, de kabels zijn netjes weg te werken, casefans zijn mee geleverd en bovenal, de hele case zit vol met geluidsisolerend materiaal.

Server met voeding
Server met voeding

 

Dat laatste is niet geheel onbelangrijk, bij de hardware keuze is het energieverbruik en de geluidsproductie van belang geweest, de machine staat in de huiskamer en mag dus eigenlijk geen geluid produceren, wat ook gelukt is. Op meer dan 1 meter afstand hoor je helemaal niets meer van het ssyteem, de casefans draaien wel (aangestuurd door het moederbord), maar zijn onhoorbaar, de CPU blijft koud waardoor die fan ook lekker rustig blijft. De disken zitten op rubber doppen waardoor de resonantie niet doorgegeven wordt aan de case enzovoorts.

 

Server ingericht 1
Server ingericht 1

Softwarematig moest er ook het een en ander gebeuren om gebruik te kunnen maken van de mogelijkheden van het systeem, zo draait er nu ESXi op met daarop een aantal Windows en Linux VM’s die een aantal verschillende zaken regelen, zo heb ik nu eindelijk een Windows 7 VM  waarop ik mijn office zaken kan regelen, is het VPN gebeuren goed ingeregeld en heb ik de storage van Linux naar Windwos over gezet (ik miste in Linux een stukje overzicht op dit gebied) en zo zijn er nog wat meer zaken eindelijk netjes zoals ik het hebben wil.

 

Server ingericht 2
Server ingericht 2

Misschien nog wel het mooiste van dit alles is dat mijn oude Intel Atom server met 1 disk minder en zonder de SSD’s een verbruik had van 58 Watt en de nieuwe tussen de 60 en 85 Watt zit, alleen dan wel met 10 Ghz en 12 GB Ram meer dan de oude.

Al met al een erg goede upgrade die gelukkig zo goed als perfect verlopen is, vooral dankzij al het voorwerk dat Andries al voor zijn eigen server gedaan heeft (waarvoor dank).

 

Zarafa open source Exchange alternatief

Ik had al een paar keer van Zarafa gehoord, een opensource alternatief voor Exchange, inclusief ondersteuning voor MAPI. Gezien ik de laatste tijd toch al aardig aan het spelen was met mijn Debian Linux installatie kon ik dit ook wel eens proberen.. De installatie op zich is niet zo heel erg lastig, echter, alle handleidingen / howto’s en wiki’s die je op internet kan vinden kloppen allemaal NET niet.. Zeer frusterend.. Maar na uren van zoeken en prutsen is het met een klein beetje hulp van Eric uiteindelijk toch gelukt :).

Een dezer dagen zal ik een volledige how to voor het installeren en instellen van Zarafa op Debian Linux online zetten die WEL klopt :).. Tot die tijd heb ik hier een aantal screenshots neergezet.

Storage en Netwerk uitdaging (2)

Vorige week besloot ik na een aantal berichten heen en weer op Twitter dat het beter was even een bericht op mijn website te zetten over het probleem waar ik op het werk mee te maken had.. Dat bericht werd wat groter dan verwacht maar stond na 2 uurtjes schrijven online. Gelukkig namen zowel Steph als Andries de tijd om met me mee te denken om tot een goede oplossing te komen.

Ik heb een 11-tal scenario’s uitgewerkt en getest (klik op onderstaand plaatje) om te kunnen bepalen waar het probleem nou zat. Mede door de tips van Andries in zijn meer dan uitgebreide reactie is het uitendelijk gelukt om te vinden waar de vertraging vandaan kwam.

metingen

Tevens heb ik een stuk performance log opgeslagen om te kunnen kijken of de bottleneck dan niet toch op de server zou zitten. Bij het bestuderen van deze logging bleek dat de disk queue length van de SSD die de data aan moest leveren onder de 0.1 bleef, dat in combinatie met een verwaarloosbare CPU belasting en een beperkte hoeveelheid netwerkverkeer bevestigden nogmaals dat de server het probleem niet kon zijn. Om dit te bevestigen heb ik als test terwijl de server 6 clients van data aan het voorzien was (met 300 Mbit) een kopieractie van 40 GB naar de 3 andere servers gestart.. Meteen zat de Gbit verbinding van de server op  92% belasting, wat in dit geval inclusief de overhead onderveer het max is (941 Mbit bij een packetsize van 64k). Vanaf dit punt was het zeker dat de server de beperking niet was.

Steph had al eerder aangegeven dat CIFS mogelijk het probleem was, nadat we de server uitgesloten hadden kwamen Andries en ik eigenlijk tot de conclusie dat het wel in die hoek MOEST zitten.. Om dit te testen heb ik de 6 laptops opnieuw ingericht en weer de standaard filetransfer gestart (490 blokken van 100 MB, 1 robocopy sessie). De netwerkbelasting op de laptosp schommeld op dat moment rond de 50-60 Mbit. Wanneer ik dan handmatig nog een extra Robocopy sessie start van een 4,5 GB bestand schiet de netwerkactiviteit naar +- 300 Mbit op de desbetreffende client.. Hieruit valt op te maken dat het verhogen van het aantal gelijktijdige Robocopy acties de snelheid drastisch doet verhogen..

Op dit punt was het probleem duidelijk en eigenlijk ook meteen de beste oplossing. De nieuwste versie van Robocopy bied ondersteuning voor simultane downloads, deze versie (XP0027) werkt helaas alleen op Windows 7 en Windows Vista.. Als noodoplossing heb ik een kort AutoIT scriptje geschreven dat 2 robocopy sessies start. Wanneer dit script gebruikt wordt starten er 2 gelijktijdige kopieracties.. De totale snelheid van 6 clients komt dan op de 807 Mbit te liggen, wat ruim voldoende is voor wat wij van plan zijn (100 Mbit per client is de max die we met dit netwerk met 10 clients gelijktijdig kunnen behalen).

cacti

Het enige dat nu nog rest is het schrijven van een net script en de implementatie in het grote installatie project, maar dit laat ik volgende week aan anderen over (die zijn daar stukken beter in).

Dan rest mij verder niets dan Steph en Andries te bedanken voor hun hulp bij het oplossen van dit probleem en het nemen van een vrije dag aan het einde van deze week..

Storage en Netwerk uitdaging

Oke, eerst een korte introductie:

Bijna 1,5 jaar geleden ben ik begonnen met een groot laptop project bij een klant van mijn werkgever. De opdracht omvat het ontwerpen en bouwen van een volledige mobiele ICT werkplek voor een specifieke gebruikersgroep van 165 personen die geen echte affiniteit met computers hebben. De opstelling moest omvatten:

  • Een robuste laptop
  • Een GPRS / UMTS / HSDPA (afhankelijk van beschikbaarheid) verbinding
  • Een printer
  • Een dockingstation
  • GPS plaatsbepaling

De software die uiteindelijk op de laptop komt is niet heel erg belangrijk in dit verhaal, een aantal wel relevante kernpunten zijn:

  • Windows XP SP3
  • MsSQL 2000 SP4
  • RES PowerFuse
  • RES Wisdom
  • Data om mee te werken (3x XML Database van 3,x GB)
  • Text, JPG, PDF en TIFF bestanden met informatie (45 GB, 3.000.000 bestanden)

Het probleem / vraagstuk waar we nu mee bezig zijn ligt in het verlengde van een probleem dat we eerder tegen gekomen zijn en deels opgelost hebben. In het begin van het originele project hadden we de volgende opstelling om de laptops mee te installeren (inspoelen)

Hardware:

  • 2x HP DL360 G5 – 2 x 74GB in RAID1 als boot + 4 x 146 GB in RAID5  voor storage + 512 MB Cache op de (standaard) RAID controller
  • 1x 48 Poorts full Gigabit Cisco switch

dl360g5

Software:

  • Inspoelen basisimage + essentiele drivers: Microsoft BDD
  • Installeren software + overige drivers: RES Wisdom
  • Filetransfers: Robocopy

Client laptops die we gekozen hebben:

6930p

Het originele probleem:

Toen we op grotere schaal de laptops gingen installeren kwamen we er achter dat het in 1 Robocopy script kopieren van 45 GB aan data geen probleem was, tenzij het 3.000.000 kleine bestanden waren, op volstrekt willekeurige punten in de job kreeg de laptop een blue-screen, wat wel vast stond was dat geen enkele laptop de gehele installatie procedure goed doorliep. Als eerste hebben we uiteraard gecontroleerd of we de meest recente AHCI en Intel Matrix Storage drivers hadden, deze bleken beiden recent te zijn. Echter, ondanks de verschillende oplossingen die we bedachten vonden we niets dat werkte.

Echter, ergens ver weg gestopt in alle Google resultaten bleek dat met de combinatie Windows XP, ons type chipset en onze drivers problemen konden ontstaan die erg sterk op die van ons leken. Oudere driver versies waren geen optie in verband met problemen met BDD en AHCI. De oplossing kon gevonden worden in een specifiek KB artikel (linkje volgt nog) van Microsoft dat een custom versie van NTFS.sys aanbood als oplossing van ons probleem.

Dit in combinatie met het inpakken (zonder compressie ivm uitpak-tijd) van de files in 4 GB blokken zorgde er voor dat we voor toen snel genoeg (14-16 laptops gelijktijdig) laptops konden installeren.

Van:

dozen

Naar:

laptops

Tussendoor:

Ondertussen hebben we de laptops uitgeleverd, zijn er gezien het zeer complexe ontwerp wel nog redelijk wat problemen die we nu stuk voor stuk aan het oplossen zijn. Al met al worden de laptops met redelijke tevredenheid gebruikt. Gezien redelijke tevredenheid niet goed genoeg is zijn we er nog steeds druk mee bezig en voeren we regelmatig optimalisaties uit. Zeer binnenkort gaat er in 1 weekend overgestapt worden op een nieuwe SAP backend, waardoor ook alle clients opnieuw ingericht moeten worden (mijn laptops dan in ieder geval). De vorige keer hadden we 174 laptops en 3 weken de tijd.. Nu hebben we 225 laptops en 3 dagen voor het inrichten en 2 dagen voor het verpersoonlijken van de laptops

Uitdaging:

De uitdaging is duidelijk, 225 laptops installeren en voorzien van 60 GB aan data (de “probleem-data” en nog wat extra) in 72 uur.. Volgens mijn planning moet het lukken als we een beetje door kunnen werken en een nieuwe inspoel-omgeving bouwen. Dat deel is gebeurt.. en goed ook.. Dus die inspoelomgeving is niet zo zeer het probleem. De specs:

  • 1x HP DL360 G5 – 2 x 74GB in RAID1 als boot + 4 x 146 GB in RAID5  voor storage + 512 MB Cache op de (standaard) RAID controller (Voor het aanleveren van de BDD basisimage voor de laptops)
  • 4x HP DC7900 Desktop systemen met on-board INTEL 82567LM Gigabit netwerk chipset
  • 4x INTEL X25-m 160 GB SSD (voor in de bovengenoemde systemen als 2e / data disk)
  • 4x Windows 7 professional (Betere SSD ondersteuning)
  • 2x 48 poorts full gigabit Cisco switches in een stack

systemen

Even een korte uitleg over het bovenstaande, de keuze voor dit type HP client is gebasseerd op de aanwezige netwerkchip die er voor zorgt dat we geen zware CPU belasting krijgen door het netwerkverkeer. Gezien we ze alleen voor deze actie nodig hebben en ze alleen maar data aan hoeven te leveren zijn “echte” servers overbodig. De SSD’s hebben we gekozen voor de enorme hoeveelheid data die dit type schijf aan kan leveren. De INTEL X25-m die wij gebruiken doet ongeveer 240 MB per seconde tegenover +- 80-90 MB voor een “normale”  disk. We hebben voor Windows 7 gekozen vanwege de betere SSD ondersteuning dan in Windows XP en het feit dat het systeem moet werken zonder dat we daar teveel aan hoeven te tunen.

Met de bovengenoemde opstelling kunnen we zonder enig probleem een volle gigabit aan dataverkeer aanleveren (per “server”) en als het zou moeten denk ik dat we in totaal (de 4 systemen samen) 6-7 Gigabit kunnen halen met extra netwerkadapters (wat neer zou komen op 875 MB per seconde (meer dan 1 cd per seconde dus). Maar voor onze plannen is 500 Mb (4 Gigabit) voldoende.

De opstelling is bedoeld om 40 laptops gelijktijdig te kunnen installeren terwijl we de batch van daarvoor afconfigureren.. Dus, 80 laptops tegelijk aangesloten aan het netwerk, wat weer de nodige bekabeling met zich mee brengt die ik gister ter ontspanning tijdens het werk heb neergelegd..

Van:

kabels0

naar:

kabels1

naar:

kabels2

Het nieuwe “probleem”:

Oke, we hebben al het bovenstaande, alleen hebben we ook een “oud ” probleem terug… Eerder spoelden we al laptops in maar hadden we meer tijd, gezien de tijdsdruk de vorige keer niet al te groot was konden we er goed mee leven dat het binnenhalen van de 45 GB aan data 3 uur duurde.. Nu hebben we echter haast.. Wanneer we de data naar de laptop toe beginnen te sturen (in blokken van 4 GB, ingepakt, uncompressed) zien we dat de laptop begint met een kleine 250-300 Mbit (25 – 37,5 MB per seconde), wat een zeer acceptabele snelheid zou zijn. Echter, na een korte periode zakt de snelheid in naar +- 30 Mbit (3,75 MB per seconde) wat dus te langzaam is. Het zou aan de drivers of de custom ntfs.sys kunnen liggen, maar daar kunnen we helaas niets aan doen.

Wat we nu morgen gaan testen is het opbreken van de 4 GB bestanden in bestanden van 100 MB, en kijken wat hij dan doet. De “grote” achives komen dus op de 4 fileservers (iedere server heeft een eigen complete set en bedient 10 van de 40 clients). Andries en Steph merkten terrecht op dat het wel eens een beperking van NTFS zou kunnen zijn waardoor de transfer na x MB inzakt, dus daar had ik vanmiddag al het een en ander voor in gang gezet (het uitpakken en opnieuw inpakken van de bestanden duurt samen ongeveer 5 uur op een laptop).

Een ander alternatief waar Steph mee kwam is het gebruiken van een nieuwe versie van Robocopy die meerdere transfers gelijktijdig kan doen, maar dit wil ik als noodoplossing gebruiken omdat Robocopy voor veel dingen gebruikt worden die we dan ook weer individueel zullen moeten testen (waar we zo goed als geen tijd meer voor hebben om dat ook nog te doen).

Het uiteindelijke doel is dat iedere client 100 Mbit per seconde aan data aangeleverd krijgt.. Het uitpakken van de data gebeurt vervolgens geautomatiseerd (net als de rest van het installatie proces overigens) op de laptops zelf. Met 100 Mbit per client kan ik de 4 “file-servers” volledig belasten (qua netwerk) en zou ik dus dus de meest redelijkerwijs haalbare oplossing hebben bereikt..

Ik vind het in ieder geval erg leuk om hier mee te werken. het is geen fijn probleem, maar wel een leuk probleem om uit te zoeken en ik denk ook wel dat we uiteindelijk een goede oplossing gaan vinden, die ik hier dan ook zeker met jullie ga delen.

Uiteindelijk is dit een iets groter stuk geworden dan ik voorzien had, maar het geeft denk ik wel een klein beetje inzicht een een deel van de technische kant van mijn werkzaamheden..