Webassembly, de toekomst van het web?

Door elhopo op donderdag 23 augustus 2018 00:02 - Reacties (11)
Categorie: Internet, Views: 4.256

https://webassembly.org/css/webassembly.svg

Geschiedenis
In de begintijd van het internet was er alleen maar html. De eerste pagina
bestond uit wat tekst en enkele linkjes. Meer was er ook niet mogelijk. De standaard werd langzamerhand wat uitgebreid, en naarmate er meer mogelijk was werden de pagina’s ook uitgebreider. Toch miste er wat, de pagina’s waren niet erg dynamisch.
Rond 1995 werd hiervoor Javascript bedacht. Met Java als inspiratie werd Javascript geboren. De naam is gekozen om mee te liften op het succes van Java, en op die manier een snelle acceptatie van het publiek te krijgen. Het werd een groot succes, en tot op heden duurt het succes nog steeds voort. In de loop der jaren is het uitgebreid en aangepast, maar toch heeft het zijn tekortkomingen en daarom zijn de grote technologiebedrijven op zoek gegaan naar een aanvulling.

Wat is Webassembly?
Webassembly is een soort virtuele machine, die draait in de browser. Deze machine kan je dan gebruiken in de belangrijkste browsers, Firefox, Chrome, Safari en Edge. De afgelopen tijd hebben alle fabrikanten hier ondersteuning voor toegevoegd. Klinkt mooi, maar wat betekent dat? WebAssembly bestanden(WASM) kunnen door browsers worden binnengehaald, en als bytecode worden uitgevoerd, om near-native te draaien. Het idee is dat ontwikkelaars een applicatie die bijvoorbeeld C of C++ is geschreven naar WebAssembly kunnen compileren, zodat deze in de browser kan worden gedraaid. Om dan een programma te draaien heb je alleen maar de link nodig naar het programma. Verder niets. De browser haalt het bestand op en voert het uit in de virtuele machine. Het werkt verder onder de meeste besturingssystemen. Hmm, waar hebben we dat eerder gehoord? Java servlets? Flash? Allemaal soortgelijke initiatieven, maar ze bleken op den duur zo onveilig dat besloten is er weer vanaf te stappen. Hoe is dit anders dan? Volgens de documenten hierachter werkt het in een gesandboxte (is dat een woord?) omgeving. Net als in een zandbak met hoge muren kan je er dus niet uitkomen en kan je alleen spelen met het zand wat in de bak zit.

Wat kan je er nou mee?
Wellicht eerst wat voorbeelden.
tanks
Tanks!
Dit is Tanks, een spel wat wordt beschreven in een Unity tutorial. Dit spel is geŽxporteerd naar Webassembly. Je kan met z’n tweeŽn spelen, de blauwe tank kan je besturen met WASD en schieten met de spatiebalk, de rode tank kan je besturen met de pijltjestoetsen en schieten met enter.
zen
Een ander voorbeeld is de Epic zen garden
Let wel op, laden en starten duurt heel even. Hierna is het alsof je een lokaal geÔnstalleerd spel speelt.

Veel bedrijven gebruiken een programmeertaal als C++ voor het maken van hun software. Om dergelijke functionaliteit te ontwikkelen voor het web in Javascript is vaak erg tijdrovend. Bedenk maar eens hoeveel tijd het zou kosten om Autocad te maken voor het web. Door nu Webassembly te gebruiken kunnen bedrijven zoals de makers van Autocad veel code hergebruiken, en zo op de kosten sparen.
Andere bedrijven hebben bijvoorbeeld veel software in Javascript geschreven. Browsers zijn de laatste jaren steeds sneller geworden in het uitvoeren van Javascript, maar ondanks alle performance verbeteringen is het nog lang niet zo snel als een native programma. Denk bijvoorbeeld aan gezichtsherkenning. Met Javascript is een snelheid van 1 beeld per seconde te halen, terwijl met Webassembly op dezelfde machine 15 beelden per seconde te halen is. Allemaal prima resultaten. Ook een update van een programma is veel makkelijker te installeren. De beheerder hoeft niet alle computers langs, enkel de server moet worden geupdate.

Betekent dit dan het einde van Javascript?
Nee, aldus de organisaties erachter. Webassembly en Javascript zijn bedoeld om naast elkaar te gebruiken. Vanuit Javascript kan je dus Webassembly aanroepen en andersom. Sommige dingen zijn wat makkelijker te doen vanuit Javascript, zoals DOM manipulatie, het veranderen van hoe je webpagina eruit ziet of de inhoud ervan. Zoals ze zelf aangeven: Javascript is here to stay!

Voordelen
  • Webassembly is efficient en snel. Omdat het al gecompileerd is hoeft de browser dat niet zelf te doen. Ook de bestanden zijn kleiner, omdat niet de broncode wordt gebruikt maar het gecompileerde eindresultaat.
  • Er is een open standaard, zodat iedereen er gebruik van kan maken. Momenteel kunnen via de officieele weg alleen C, C++ en RUST als programmeertaal worden gebruikt, maar er zijn al opensource partijen die bijvoorbeeld Java ondersteunen. Later zullen meer talen officieel ondersteund gaan worden. Een voorbeeld hiervan is Teavm, die zelfs een online editor hebben waar je wat in kan proberen: http://teavm.org/sandbox/index.html . Bij de Examples afdeling zijn zelfs wat grafische voorbeelden te vinden. Microsoft is ook bezig met een C# versie
  • Webassembly is erg veilig. Door de gesandboxte omgeving en de virtual machine constructie zouden beveiligingsproblemen tot het verleden moeten horen
  • Webassembly is zelfs in de browser te debuggen. Vaak is dat lastig bij gecompileerde code, maar hier is speciaal rekening mee gehouden. Hierdoor is het ontwikkelen ervan ook makkelijker.
Nadelen
  • Door de sandbox omgeving kan je simpelweg niet alles lokaal benaderen. Dat wil je ook niet, niet iedere webapplicatie mag bijvoorbeeld in je email of in je documenten kijken. Je kan wel, net als op het web, een bestand uploaden, maar niets zonder expliciete toestemming. Echter kan het soms onhandig zijn.
  • Dan de assembly’s zelf. Ze zijn weliswaar gecompileerd, maar nog steeds leesbaar. Hierdoor is het iets makkelijker om code te lezen, en bijvoorbeeld software te kraken. Gelukkig is code dan wel weer te beveiligen.
  • De code is niet zo snel als native code. Mocht de code echt optimaal moeten presteren dan zal je een gewone applicatie moeten installeren.
  • Niet alle platformen worden volledig ondersteund. Op mijn IPhone kan ik bijvoorbeeld de Epic zen garden demo niet bekijken.
De toekomst
Webassembly is nog volop in ontwikkeling. Enkele belangrijke dingen die er aan komen zijn multithread ondersteuning. Hierdoor kan de applicatie beter gebruik maken van de aanwezige cores in je processor. Een andere belangrijke ontwikkeling is ondersteuning van een garbage collector. Dit is tevens waarom momenteel alleen C, C++ en Rust worden ondersteund. Deze talen hebben geen garbage collector. Wat een garbage collector doet: Tijdens het programmeren gebruik je allerlei variabelen om even wat in op te slaan. In talen zonder de garbage collector moet de programmeur deze zelf weer opruimen als hij ze niet meer gebruikt. Talen met een garbage collector, zoals Java doen dit automatisch. Wanneer een onderdeel nergens vandaan meer gebruikt wordt, is deze dus niet meer nodig en wordt deze opgeruimd.

Tot slot
Het is afwachten of Webassembly echt zo veilig is als dat men zegt. Helaas komen we daar pas na verloop van tijd achter. In het verleden bleek dat Java en Flash toch niet zo veilig was als gedacht. Wat wel een verschil is met het verleden is dat er nu grote namen achter staan, zoals Google, Mozilla, Apple en Microsoft. Mijn verwachting is dat het net zo’n revolutie teweeg zal brengen als destijds Javascript deed. We zullen er in de toekomst nog veel van horen! Meer weten? Hier kan je alles vinden: https://webassembly.org/

Mijn tijd als BBS sysop

Door elhopo op woensdag 15 augustus 2018 00:01 - Reacties (35)
CategorieŽn: BBS, Nostalgia, Views: 3.495

Vroeger, ja heel vroeger, voordat er Internet was bestonden er Bulletin Board Systemen, oftewel BBS'en. Op een BBS kon je inbellen met een modem en wat software, vaak Telix, en nadat je was ingelogd kon je post bekijken, kletsen met de sysop, bestanden up- en downloaden en je instellingen wat bijwerken. Je had ook nog zogenaamde 'doors', waar je een extern programma achter kon hangen. Een vriend van me had een BBS en ik vond dat reuze interessant. Vaak inbellen, nieuwe bestanden bekijken, even wat prut uploaden en dan mocht je weer downloaden. Vaak was er een ratio van bijvoorbeeld 1:10. Van iedere 1 kb die je uploadde mocht je 10 kb weer downloaden.

Zoals gezegd vond ik dat reuze interessant. Ik belde veel lokaal en interlokaal. Helaas konden mijn ouders mijn nieuwe hobby niet zo waarderen. Ze hadden een autorijschool, en waren voor de inkomsten afhankelijk van de telefoon. Regelmatig klapte mijn verbinding er weer eens uit als mijn ouders weer zo nodig een klant moesten bellen, waarna wij weer boos waren op elkaar. na iets van twee maanden kwam de telefoonrekening waarna hun enthousiasme voor mijn hobby, voor zover die er al was, helemaal tot een dieptepunt daalde. Ik mocht even 50 gulden aftikken en het modem mocht voorlopig alleen in de late uren worden gebruikt. Daar moest ik dus wat op verzinnen. Een aparte lijn leek me de oplossing en aangezien ik een BBS zo leuk vond bedacht ik me dat ik zelf maar een BBS zou nemen.

Ik had destijds een vakantie- en weekeindbaantje en ik had de werkgever zo gek gekregen dat hij mijn telefoonlijn wilde sponsoren, in ruil voor reclame. Bij inloggen kreeg je dan mijn BBS naam en Gesponsord door <werkgever>. Met een mogelijkheid om later nog wat meer toe te voegen. De aanleg en maandelijkse abonnementskosten betaalden zij, en ik betaalde de tikken. Of beter gezegd: die werden automatisch ingehouden van mijn salaris.

Toen een naam. je had destijds "De Gecontroleerde BBSlijst van Nederland", en het leek mij handig om bovenaan in die lijst te staan. Aangezien ze allemaal met een cijfer of letter begonnen, bedacht ik me dat leestekens daarboven komen, en dat mensen, als ze wat willen uitproberen, bovenaan beginnen. Dus werd het ! BBS. Later imiteerden anderen mij of zetten ze er andere leestekens bij, maar voorlopig stond ik bovenaan!

Dan de software. Samen met die vriend van me gekeken, en toen Frontdoor en Remote Access geÔnstalleerd. Frontdoor verzorgde het ontvangen en versturen van berichten, terwijl Remote Access het eigenlijke BBS programma was. Toen menuutjes maken. Alles wat je zag was in ANSI en ASCII art, en moest met een niet zo heel gebruikersvriendelijke editor worden ingetikt. Voor een Engelse variant kon je alles nog es overdoen, maar dan in het Engels...
Een hoop gepruts met batchfiles, mailtossers, fossil drivers, F-mail, Golded, Bluewave, Bimodem, DBridge en andere wazige programmaatjes, maar uiteindelijk was ik online. Met 2400 baud!

Vanaf de eerste dag liep het redelijk storm, althans, 10 gebruikers per dag scheen redelijk veel te zijn. Best leuk en aardig, maar intussen kon ik nauwelijks zelf bellen, want meestal waren er mensen online... En dan de klets met de sysop functie. Hoe haalt iemand het in zijn hoofd om om 3 uur 's nachts met de sysop te willen praten! Bij mij begon dan de PC te piepen en dat 30 seconden lang! En als ze dan denken: Hij ligt vast te slapen... Nee hoor, gewoon nog eens proberen! Gelukkig kon het PC speakertje ook uit...

Intussen hadden we nog een andere sysop leren kennen, en samen werden we de High Speed Brothers! Helaas waren we met 2400 baud niet echt high speed, maar gelukkig had je toen Sysop deals. 14K4 modems waren net uit, en als eigenaar van een BBS kon je met korting zo'n modem kopen. Voor 600 gulden in plaats van 1000! Na wat wikken en wegen vonden we nog een vierde man die mee wilde doen, en voor het bedrag van 600 gulden per persoon hebben we vier Supra 14K4 modems besteld. Die werden helemaal uit de VS opgestuurd. Man, wat een snelheid. Ik moest bijna een helm op! Helaas kon mijn PC die snelheid niet helemaal handelen, dus moest er ook nog een gebufferde seriŽle chip komen, de 16550. Weer 60 gulden lichter, maar toen konden we blazen!

Helaas liep de harddisk al snel vol, maar voor het luttele bedrag van 550 gulden kon ik een 200 MB schijf kopen, en daar kon ik weer tijden mee vooruit. Hoe krijg je die ooit vol vroegen vrienden van me...

Tijdens wat rondkijken op andere bulletin boards kwam ik erachter dat van Remote Access ook een Pro versie bestond. Reuze interessant natuurlijk, maar ik besloot deze niet te installeren, want dat zou natuurlijk niet legaal zijn...

Met wat creativiteit in de ANSI editor kon je ook naar boven, beneden enzovoorts simuleren, dus had ik achter mijn niet geregistreerde versie van Remote Access Pro neergezet. Zag er stoer uit! Tot ik op een middag uit school kwam, en een berichtje had van de importeur. Of ik even contact met ze wou opnemen. Ik ze gebeld, en de man die ik aan de lijn kreeg meldde mij dat hij had geconstateerd dat ik een illegale versie had gebruikt en bla bla en dat ik een schikkingsvoorstel kreeg thuisgestuurd van iets van 850 gulden, anders zou hij aangifte doen.

Ik was compleet in paniek, en voelde me echt niet prettig. 850 gulden kon ik als student echt wel beter besteden! Ik moest mijn verhaal kwijt en ging even chatten met een andere bevriende sysop. Hij vroeg me wie ik gesproken had en wat het nummer was. Toen zij hij: Wacht maar even, ik bel je zo wel terug.

Even later belde weer iemand in op mijn BBS, het was die andere sysop. Hij had even gebeld en zich voorgedaan als mijn advocaat :P Het ging schijnbaar niet zo goed met de importeur, en dit leek hem een goede manier om wat geld binnen te halen. Mijn 'advocaat' heeft er toen wat juridische termen tegenaan gegooid, en gelukkig heb ik er toen nooit meer wat van gehoord. Wel heb ik gauw de software omgebouwd naar een ander pakket, SuperBBS. Wel even mijn lesje geleerd!

Zo langzamerhand werd het allemaal een beetje een sleur, en na iets meer dan een jaar was ik wel klaar met het sysop zijn. Iedere keer als ik wat wilde kijken zat er iemand op mijn BBS. Ook kon ik zo de computer niet gebruiken voor school en gamen, waar ik hem eigenlijk voor gekocht had. En mijn harddisk zat steeds vol! Ik besloot te stoppen. Mijn werkgever was er wat minder blij mee, maar goed, toch maar de lijn laten verhuizen. Zijn zoon ging op zichzelf wonen en had ook een telefoonlijn nodig.

Jaren later sprak ik zijn zoon nog eens. Regelmatig werden ze nog midden in de nacht gebeld en als ze dan opnamen hoorden ze weer zo'n fluittoon van een modem...

Achteraf was het best een leuke tijd, en vooral erg leerzaam wat betreft communicatie, batch files, berichtenverkeer en wat er verder nog bijkomt. En natuurlijk als voer voor een weblog!

Voor de statistieken: Het bestand wat met stip op 1 stond kwa meest gedownload was The anarchist cookbook, gevolgd door zowat alles uit de xxx selectie...

Ons lasergame avontuur.

Door elhopo op donderdag 9 augustus 2018 00:00 - Reacties (10)
Categorie: Lasergame, Views: 2.089

Het zal zo rond de zomer van 1992 geweest zijn, dat de eerste Lasergame arena’s in Nederland kwamen. Als student mocht ik altijd en overal gratis reizen met het OV, en dus besloot ik met wat vrienden om wat arena’s te gaan bekijken. Als eerste gingen we naar Amsterdam. De Lasergame arena daar was in een of andere kelder, en het geheel stelde denk ik niet zoveel voor, maar het Lasergamen zelf was echt super leuk. Na een paar potjes gespeeld te hebben gingen we weer naar huis en besloten we andere hallen eens te bekijken. We zijn vervolgen in Zandvoort, Scheveningen en Utrecht geweest en overal was het dikke pret.

Ik had toen een weekend en vakantiebaantje in de bioscoop en ik kon goed opschieten met de eigenaren. Ik vertelde ze over het Lasergamen, en zij wilden het ook wel eens zien. Met zijn drieŽn zijn we toen in Amsterdam wezen kijken, en zij wilden wel eens weten hoe de techniek in elkaar zat. De jongen die het spel begeleidde zat wel wat raar te kijken toen hij ons in een hoek zag zitten terwijl wij uitgebreid de pakken bestudeerden. De laser scheen er niet veel toe te doen, en de techniek leek verder niet al te ingewikkeld. Onderweg naar huis fantaseerden we hoe we zelf zoiets konden opzetten. Althans, ik dacht dat we fantaseerden, want achteraf bleken de plannen wel erg serieus te zijn!

Eenmaal teruggekomen hadden we via via uitgevonden dat er een systeem uit AustraliŽ was, waarbij je je aan erg strenge voorwaarden moest houden, en best wel veel geld moest afstaan als een soort van huur. De bioscoop eigenaren waren wat vrije types en hielden niet zo van strenge voorwaarden. Ik zat toen op een technische computeropleiding waar we onder andere ook leerden programmeren met microcontrollers, de Intel 8031, een soort mini alles in 1 computertje wat bijvoorbeeld wordt gebruikt voor de besturing van videorecorders en magnetrons en zo. Ik opperde dat we wellicht wat zelf konden maken, en daar hadden de mannen wel oren naar.
Zo gezegd zo gedaan, en een paar dagen later was ik al druk aan het programmeren om te zien wat we precies wilden hebben. Dat programmeren ging toen in Assembly, en daarna kon je het programma op een EEprom bakken. Die priktje je dan naast je processor en dan kon je zien of alles een beetje werkte. Toen wat componenten erbij gezocht. Als je schiet verstuur je een infra rood code, net als bij een afstandsbediening. …ťn van de directeuren was erg technisch en die had nog wel wat liggen. Het werd een Philips IC, wat 5 bits kon versturen. Dit gaf ons 32 mogelijkheden, wat ons wel voldoende leek. 20 Lasergame pakken, starten van een spel, stoppen van een spel, misschien nog wat mijnen.. Met een lensje konden we de infrarood straal mooi focussen, dus moest je echt wel mikken om iemand te raken.

Dan hadden we een geweer nodig. Bij de lokale speelgoedwinkel hadden ze een leuk modelletje, en het leek erop dat we die wel aardig konden verbouwen. De eigenaresse stond wel wat gek te kijken toen we er meteen 20 bestelde, en ook nog eens 20 sleutelhangertjes met schietgeluidjes. Die konden we mooi inbouwen in het pak en daarmee geluiden produceren

Toen de laser. Via een bevriende eigenaar van een elektronica winkel wat laserpointers gekocht. Met wat gepruts kregen we die netjes in het geweer. Met een 4 aderig telefoonkabeltje koppelden we het geweer aan het pak, en het begon al ergens op te lijken.

In de Electuur hadden we een schemaatje voor een looplichtje gevonden, wat we leuk konden gebruiken voor het pak. Hiervoor heb ik heel wat bandkabels gesoldeerd, maar het effect was best leuk!

Toen het pak. Waar monteer je alles op? Na lang zoeken en denken kwam de andere eigenaar, die best commercieel was met 20 beschermingsharnassen voor motorcrossen op de proppen, en 50 meter transparante slang voor melkmachines! Die slang maakten we met tie-wraps vast aan het pak en schoven daar de bandkabel met het looplichtje in, samen met de infrarood ontvangers op de schouders en aan de voorkant. Op de achterkant een project box met 5 D-cel oplaadbare batterijen (die waren opgekocht van een partij afgekeurde noodverlichtingen), en de elektronica.

Toen nog communiceren met een computer. Dat moest serieel gebeuren, en ons leek het het handigst om de zender op een infrarood led te koppelen, en de ontvangen op een infrarood ontvanger. Na wat gepruts werkte dat best aardig, en we hadden bedacht om continu de paknummers uit te sturen en zodra iemand onder de zender / ontvanger doorliep te reageren op het nummer, en dan door te sturen hoe vaak je geschoten had en door welke paknummers je was geraakt. Omdat ik ook druk was met school had iemand anders intussen het ontwikkelwerk voor de microcontroller overgenomen, en een mooi printje laten maken, gebaseerd op de 80535. Dit is familie van de 8031, met wat meer in- en uitgangen. Om de namen in te voeren en te communiceren hadden we ook een PC programmaatje nodig, en een andere medewerker van de bioscoop en een vriend van me hebben wat in Turbo Pascal gemaakt om dat deel te dekken.

Ook wilden we de score laten zien op een groot scherm, dus moesten we daar wat voor bedenken. We konden en wilden dat niet op dezelfde PC doen, dus werd dat een aparte PC. Met Novell Lite hebben we toen een netwerkje gemaakt, en via een aparte PC liet ik de score’s zien als die beschikbaar waren. Om ook wat anders te kunnen laten zien hadden we aan de printerpoort een sturing gemaakt waarmee een videorecorder bediend kon worden. Als er geen score’s waren werd een instructiefilmpje getoond en anders de score’s. Binnen een paar maanden was alles klaar.

De bioscoop eigenaren hadden een hal op een industrie terrein gehuurd, om onder andere bioscoop apparatuur te verkopen en de administratie te doen. We hebben in die hal overal houten schotten neergezet en alles zwart geverfd. Toen wat blacklight TL’s opgehangen en een rookmachine. Met fluoriserende verf en stickers wat accenten aangebracht, en klaar waren we!

We hadden er niet veel ruchtbaarheid aan gegeven, maar zo langzamerhand kwamen er wat mensen kijken en spelen. Dat werden er steeds meer, en zo af en toe hadden we zelfs alle pakken in gebruik! Zo af en toe ging er wat fout met de communicatie. Hiervoor hadden we de random functie bedacht Als een score niet goed binnenkwam berekenden we een soort gemiddelde. Nooit klachten over gehad!

Helaas, aan al het goede komt een eind. Na een paar maanden kwam de gemeente erachter dat we een lasergame hal hadden, en volgens het bestemmingsplan mocht dat niet op het industrieterrein. Hadden de eigenaren geen rekening mee gehouden. Alles werd toen maar weer afgebroken en opgeborgen. De hal was eigenlijk ook weer nodig voor de verkoop van bioscoop apparatuur. Later is alles verkocht aan iemand die het op elektrische karts wou verkopen en zo een soort van tanks in het donker wou maken. Helaas is dat nooit echt van de grond gekomen…

Volgende keer zal ik vertellen hoe ik met de huidige techniek een professioneel lasergame systeem zou maken. Ik heb er in het verleden veel aan gedacht, maar ik heb nu niet meer de behoefte om dat te maken, wellicht kan iemand anders er wat mee of is het in ieder geval interessant om te zien hoe nou zoiets werkt.

Bedankt voor het lezen!