Echte kerels

back-to-the-future-2-biff-tannens-pleasure-paradise-poker-set

Het tijdperk van de echte kerels is aangebroken. Trump in Amerika, Poetin in Rusland, Erdogan in Turkije. En straks vast Wilders in Nederland en Le Pen in Frankrijk (een vrouwelijke echte kerel).

Veel mensen hebben op Trump gestemd, maar er zijn ook heel veel mensen die niet op Clinton hebben gestemd. Volgens mij een van de belangrijkste redenen: ze is een sterke vrouw.

In de documentaire The Choice (nog te zien via npo.nl) werd een beeld geschetst over de jeugd van Clinton. In groep 8 was ze het hoofd van de klaar-overs. Op haar viertiende was ze aanwezig bij een speech van Martin Luther King. Bij haar afstuderen mocht ze speechen, als eerste student ooit op haar middelbare school. Ze gaf ook nog eens kritiek op de hoofdspreker, een senator, die de Vietnam-protesten onnodig had genoemd. Hillary Clinton. Echt een strebertje.

Typisch zo’n vrouw waar Donald Trump een hekel aan zou hebben.

Clinton is niet te vertrouwen. Dat is het beeld. Maar ik geloof er niks van. Mensen zoeken een excuus, zoals die e-mails, in plaats van te zeggen dat ze sterke vrouwen eng vinden.

Een hoop van die mensen, en dat zijn mannen én vrouwen, stemden op Trump. Een echte kerel, die gehandicapten belachelijk maakt, van kernbommen houdt, klimaatverandering als een Chinese hoax ziet, oproept om de andere kandidaat dood te schieten en, oh ja, vrouwen graag in hun kutje grijpt.

Een echte kerel dus. En vanaf 20 januari is hij de 45ste president van de Verenigde Staten, samen met zijn gevolg van klimaatontkenners, creationisten, birthers en andere post-waarheid types.

Wat dat gaat betekenen is onduidelijk, maar ik weet wel: het gaat écht niet meevallen. En de nationalistische partijen in Europa zullen flink winst boeken bij de verkiezingen in 2017. Wilders hier, Le Pen in Frankrijk, Frauke Petry in Duitsland. Want de leider van de vrije wereld is vanaf 2017 een xenofoob en zet de toon.

In een democratisch land is de enige manier om dat te voorkomen: zorgen dat mensen niet op ze stemmen. Door ze te overtuigen, weten wat de problemen zijn en gewoon, door met ze te praten.

Die mensen zijn namelijk echt niet allemaal achterlijk, racistisch en boos. Dus niet de hele tijd het vingertje heffen. Gewoon thee met ze drinken (of wat sterkers).

Ook met hen die het liefst stemmen op een echte kerel.

Cargo culting

Foto: Tom Mesic / CC-BY-NC-ND

Stel je een eiland voor in Micronesië (een archipel in de stille oceaan), ergens in het midden van de twintigste eeuw. Het eiland is sinds een paar decennia gekoloniseerd door de Fransen en de Britten, want er is sandelhout ontdekt, handig voor het maken van wierookstokjes en als medicijn tegen syfilis en andere geslachtsziektes.

De lokale bevolking leeft er nog traditioneel. Behalve contractarbeid (een systeem wat zeer dicht tegen slavernij aanschurkt) hebben de Europeanen ook het Christendom geïntroduceerd. En zo rond 1940 begint er ook de Tweede Wereldoorlog.

300.000 Amerikaanse troepen worden gestationeerd. Lekker dicht bij Japan. Die troepen hebben voorraden nodig, en die komen meestal per vliegtuig uit de lucht. Sommige van de soldaten delen gedeeltes van de voorraden ook met de lokale bewoners. Voorraden die uit de lucht kwamen.

Stel je even voor hoe dat voor moet zijn, als je altijd hebt geleefd zonder moderne technologie. Rare objecten die vanuit de lucht eten en spullen aanleveren. Dat is heel raar. Zoals de science-fictionschrijver Arthur C. Clarke ooit al opmerkte: Any sufficiently advanced technology is indistinguishable from magic. Geavanceerde technologie is niet te onderscheiden van magie.

Na een paar jaar was de oorlog voorbij en, droevig voor de eilanders, ook de leveringen. Gelukkig bedachten een paar van de eilanders een oplossing: nadoen wat de soldaten deden. Dus bouwden ze vliegvelden van hout, compleet met controletorens, walkie-talkies en koptelefoons (van bamboo) en hielden ze elke ochtend militaire drills in nagemaakte uniformen.

Het zal je niet verbazen, maar er kwamen geen vliegtuigen en geen voorraden.

De antropologische term voor een groep mensen die dit gedrag vertoont is een cargo cult. De Amerikaanse natuurkundige Richard Feynman was een van de eersten die opmerkte dat cargo culting net zo goed plaatsvindt in de westerse wereld.

In fraai Latijn heet het post hoc ergo propter hoc: een drogreden in de vorm ‘na dit, dus vanwege dit’. Gisteren vond ik een euro op straat toen ik een Magnum Almond eet, dus als ik me ongans aan roomijs eet ben ik snel miljonair.

Het gebeurt vaak genoeg.

Bijvoorbeeld: het is lastig om programmeurs te beoordelen, zeker als je zelf niet kan programmeren. Waar baseer je dan je oordeel op? Meestal zijn dat dingen die niet zoveel zeggen. Zoals dat op een CV iets staat over ‘agile development’. Dat klinkt wel goed, en je baas wilde daar iets mee, dus je neemt de kandidaat aan, met al z’n scrumcertificaten. Net zoals z’n collega’s.

En daar staan ze dan elke ochtend standups te doen, stickies op een bord te hangen, en elke twee weken te dot voten tijdens de retrospective. Maar ondertussen hebben ze eigenlijk geen enkel idee hoe je goede code schrijft. Het product wat ze moeten maken doet het daarom niet. Maar godzijdank kunnen al die problemen weer als blocking issues in de bug tracker, zodat ze op een backlog komen en ze in de volgende sprint kunnen worden opgepikt.

En zo ben je de hele dag bezig met allemaal rituelen, die geen enkele relatie hebben met waar je ooit voor bent aangenomen: een werkend product afleveren. Je maakt jezelf wijs dat je met al die scrumrituelen een werkend product aflevert. Maar iets maken, dat kan alleen door het te maken.

Begrijp me niet verkeerd: ik heb niks tegen scrum of agile development an sich. Maar ik heb wel iets tegen het doen van dingen zonder dat je weet waarom je dat doet.

Dus de volgende keer dat je iets doet waarvan je niet helemaal zeker bent waarom je het ook alweer deed, denk dan: heeft dit echt zin, of ben ik aan het cargo culten?

iOS 10 promises better video handling in Safari, but doesn’t deliver

iphone-animated-gif-22

I’ve written before about all the caveats with using multimedia files on mobile devices. Especially iOS Safari on iPhone is a difficult beast to tackle: videos can’t autoplay, and they’re restricted to playing fullscreen. So, if we want to do ‘background video’ without audio on mobile we’re basically still restricted to the honourable (but outdated) animated GIF format.

iOS 10 promised some improvements on that. In a recent blogpost on the Webkit blog the playsinline attribute, in combination with the autoplay attribute is named as a way to replace the animated GIF format.

Unfortunately, the current implementation of playsinline/autoplay on iOS Safari makes it very hard to use the <video> tag as a GIF replacement. Characteristics of GIFs are that they’re muted, looping, autoplaying and play inline.

Crucially, there can be many GIFs playing on the same page.

Unfortunately, iOS Safari doesn’t seem able to play more than one <video> element at the same time. Of course, this wasn’t very noticeable given that inline video was impossible on the iPhone anyway. However, when using the new playsinline/autoplay combination on more than one video on a page this becomes noticeable immediately given that only one video will start playing. The other ones can’t even play because the play button is disabled on playsinline videos.

As a web developer, for anything else than a really basic use case, this is very frustrating. The only way i can imagine to get proper GIF-like behaviour with the current implementation is to have some Javascript running to check whether the GIF is in the viewport and then toggle the current playing video, which is pretty complex and error-prone compared to just using regular GIF images.

I’ve filed a bug with Webkit, so it might be fixed sometime in the future. But for now, this change seems to be just another hack we can add to the endless list of workarounds instead of a true solution.

Stapes.js 1.0.0

stapes

In 2012, more than four and half years ago, i started to work on a small Javascript library called Stapes.js. At that time there was a big upswing in MVC libraries. People were building larger and more complex apps, and were looking for ways to better structure their code.

There were many libraries, but to me they seemed quite complex. Many libraries were more like frameworks: you needed to accommodate your code into their way of thinking, instead of the other way around.

I didn’t like that mentality. So i did what any good nerd would do: i wrote my own library.

I decided early on to follow the UNIX philosophy: do one thing, and do it well. Turns out that my library did three things: class creation, custom events, and data manipulation. But still, that was a lot less than virtually all the other libraries.

Another thing i decided on was that i would write good documentation. A depressing number of libraries, especially Javascript ones, have awful documentation. And even when there is documentation, there are no examples, which to me is the most important thing.

Development proceeded, and applications were built using Stapes. I’m especially proud of the projects at VPRO where i used Stapes, like 3voor12. Apparently, they are still using my little library.

Anyway, the last major release for Stapes was almost three years ago. After that, development has stopped. I occasionally responded to issues and pull requests. But it seems that most people are quite happy with the current state of Stapes.

In the meantime, the world of web development hasn’t stopped. People are building ever more complex apps. They use all kinds of new tools that didn’t even exist three years ago. And the development of the language hasn’t stopped as well: adaptation of ECMAScript 6 (the latest Javascript standard) is looking good, either with or without transpilers like Babel.

So, i need to take a hard look at the future of Stapes. Class creation will be useless because everyone will be using ES6 classes anyway. Custom events are nice, but there are lots of other libraries doing that as well. The data methods are useful, but the implementation in Stapes has never quite hit the sweet spot that i wanted.

And frankly, other people do better. One library that i’m especially fond of is called Vue.js. It shares the same ‘less is more’ philosophy of Stapes, but it’s far more versatile. It’s basically all the good bits of Angular.js 1.x without all the Java-enterprise-like nonsense and complexity.

Which leads me to this conclusion: Stapes simply doesn’t need more than it already has. It’s not dead. It will continue to work fine for your projects, and i might still fix some bugs in the future. But don’t expect any new features or radical changes.

An API that won’t change anymore. No new features. No surprises.

Sounds like the perfect time to finally release Stapes 1.0.0 :)

Brexit

c057065b-a581-43de-915f-997bc26ad4ca

Dit gifje laat zien wat er is gebeurd in het Verenigd Koninkrijk. Je bent van plan iets te doen. Je ouders zeggen “Dat is onverstandig!”. Maar het is ook leuk om lekker tegen je ouders in te gaan. Dan doe je het, en dan opeens realiseer je je (dit is het moment dat het blikje het gezicht van het meisje raakt): hoe hadden we zo dom kunnen zijn? En dan heb je spijt, en moet je huilen.

Volgens mij is het deel van een trend. Weg van de feiten, vertrouw vooral op je gevoel. Weg met de experts.

Een voorbeeld: afgelopen zaterdag stond in de Volkskrant een stuk over ouders die hun kinderen, tegen beter weten in, niet laten vaccineren.

Het is hetzelfde patroon: mensen hebben het gevoel dat ze geen controle hebben over hun leven. Dus doen ze iets waar ze wél controle over hebben: tégen de bestaande conventies, instituten en wijsheid. Een poging terug te keren naar een tijd waarin we zalig leefden van het land, er biggetjes in huis rondscharrelden, en we genoeg hadden aan liefde en gevoel. Dat je waarschijnlijk voor je 40-ste stierf aan de pokken of aan cholera is dan wat minder belangrijk.

Proberen er tegenin te gaan met wetenschappelijk onderbouwde feiten heeft geen zin: mensen gaan dan juist meer in hun eigen ideeën geloven.

Nog zoiets. Ik moest laatst weten of tempeh glutenvrij is (ja). Maar behalve die informatie vond ik ook een alternatieve wereld waarin mensen beweren dat soja ongezond is. Want ‘er zitten stoffen in die de schildklier ontregelen (…) mijn inziens troep‘. Maar anderen zijn het daar niet mee eens, want er zijn ergere dingen: ‘rare westerse producten als aspartaam‘.

Het gaat niet om de vraag of dingen wel of niet gezond zijn, het gaat erom of dingen wel of niet gezond voelen.

Je hoeft niet lang te zoeken om overeenkomsten te zien met de fans van Donald Trump. In the face of all the evidence blijven mensen Trump steunen, ook al liegt hij dat hij barst, en kan hij z’n idiote uitspraken niet onderbouwen.

Van zijn meest significante en nieuwswaardige uitspraken is 77% grotendeels onwaar, compleet onwaar, of volkomen slap gelul (ter vergelijking: Clinton zit op 27%, Sanders op 29%). Trump zegt dat Clinton van plan is om alle criminelen vrij te laten (gelul), dat er duizenden mensen in New Jersey aan het juichen waren op 9/11 (gelul), en dat 81% van de moorden op blanken door zwarten zijn veroorzaakt (gelul).

Maakt dat zijn aanhangers iets uit? Nee, natuurlijk niet.

Dat is ook het deprimerende. Het voelt vast lekker om op Trump te stemmen. Voor ‘leave the EU’. Of iedereen te vertellen dat sojabonen kanker veroorzaken en inentingen autisme.

Maar op een ochtend word je wakker en blijkt dat je geen lid meer bent van de EU en dat je er economisch net zo slecht voorstaat als tijdens de crisis. Dat Donald Trump de leider is van de westerse wereld en op zijn golfbaan aankondigt dat moslims het land niet meer in mogen. En dat kinderen zonder inentingen toch echt ziek kunnen worden en kunnen overlijden.

Natuurlijk, de huidige onvrede heeft diepe en complexe oorzaken. Mensen zijn teleurgesteld in loze beloftes van politici en voelen zich vernederd. Ik realiseer me terdege dat ik deel uitmaak van een hoogopgeleide elite die makkelijk praten heeft.

En ik zou willen dat het antwoord op dit alles “meer kattengifjes” is (sorry).

We moeten ons minder door ons gevoel laten leidden. Maar we moeten niet gevoelloos worden. Ja, we moeten lief zijn voor elkaar.

Succes

deeba877-abf8-4f28-b2d7-8cb954c7b0bb

Een goede vriend van mij vind “succes” een gek woord. Hij heeft gelijk: om “succes” hangt een zweem van stockfoto’s van managers die in de lucht springen met hun duimen omhoog (zie boven).

Toch ga ik het over succes hebben. Mensen vinden het blijkbaar leuk wat ik doe, dus vragen ze me om advies. Wat ik ontzettend leuk vind om te geven en ook graag doe: er zijn weinig dingen zo strelend voor je ego als andere mensen uitleggen wat je doet, en dat ze dan óók nog eens aandachtig luisteren en je later mailtjes sturen dat ze er echt iets aan hebben gehad.

Maar het is ook lastig. Je moet dan je keuzes achteraf gaan analyseren. Dan kom je vaak uit bij one-liners zoals ‘doe, in plaats van denk’. Of ‘volg je passie’. Er bestaan hele industrieën die alleen maar bestaan bij de gratie van het uitgeven van boekjes met dat soort frases.

Alsof je daar wat aan zou hebben.

De beste lessen leer je niet vooraf, maar achteraf. Als je al fouten hebt gemaakt. Of als iemand achteraf tegen je zegt hoe het beter had gekund. Of als je zelf ergens een vaag knagend gevoel hebt dat zegt: ‘dat kan beter’.

En achteraf denk je dan inderdaad: ‘ik had moeten doen, in plaats van denken’. Of: ‘ik had beter naar mijn eigen gevoel moeten luisteren’.

Ook daar koop je niks voor.

Maar toch ga ik een advies geven.

Het is niet belangrijk wat je doet, maar dat je doet.

Dat je doet is dus niet heel lang nadenken. Of vergaderen. Of een groot beleidsstuk schrijven. Je bezig houden met irrelevante details die pas belangrijk zijn bij de uitvoering. Van die bureaucratische dingen.

Dat is dingen doen.

Iemand opbellen. Ergens naar toe fietsen. Iets doen wat je nog nooit eerder hebt gedaan. Een ticket boeken naar een land waar je de taal niet spreekt. Met mensen praten die je niet kent.

Ergo: iets doen zonder dat je al van tevoren weet wat de uitkomst gaat zijn. Experimenteren. Uitproberen. Prutsen.

‘Uit je comfort zone stappen’ heet dat tegenwoordig. Hoe weet je wat je comfort zone is? Makkelijk: bedenk iets dat je gaat doen. Zo. Voel je je nu bang? Angstig? Huiverig?

Goed zo. Dat is buiten je comfort zone. Ga dat doen.

Welkom in 2050

psychic
Er zijn veel manieren waarop je jezelf belachelijk kan maken. Proberen de toekomst te voorspellen is misschien wel de beste. Het klopt nooit, en áls het toevallig wel klopt klinkt het in het heden bizar onwaarschijnlijk.

Maar ik hou van dingen waardoor mensen me belachelijk kunnen maken. Dus ga ik voorspellen hoe het leven er uit ziet over 34 jaar, in 2050.

Hier is het lijstje in het kort. Scroll verder voor de uitleg per voorspelling.

2050 ziet er zo uit:

  1. Iedereen is vegetariër.
  2. Het gebruik van de pil van Drion is gemeengoed geworden.
  3. Geen lid zijn van een sociaal netwerk is een strafbaar feit.
  4. Alcohol drinken is net zo ‘fout’ als roken nu.
  5. Vliegen is een luxe, en daardoor is digitale communicatie veel innovatiever dan nu.
  6. Contant geld is verleden tijd geworden en offline winkelen een uitje.
  7. Engels is de voertaal in vrijwel alle niet-persoonlijke communicatie.
  8. De realiteit is niet meer wat het is geweest.
  9. ‘Staat’ is een vreemd begrip geworden.
  10. Veel blijft ook hetzelfde.

1. In 2050 is iedereen vegetariër

Steeds meer mensen eten vleesvervangers. Of kweekvis. Insecten zitten al in het standaard assortiment van de Jumbo. En in 2050 is kweekvlees vast ook ruim verkrijgbaar.

En zeg nou zelf: de kwaliteit van nepvlees is toch inmiddels al zo goed dat het bijna niet meer te onderscheiden is van echt?

“Echt” vlees wordt in 2050 nog wel gegeten, maar alleen als je een keer ‘luxe’ uit eten gaat, bijvoorbeeld in de retro-snackbar (“Bitterballen met écht vlees, dat ken ik nog uit mijn jeugd!”). Eater.com schreef al eens een recensie over een retro-restaurant in 2081 waar je nog echt vlees kan krijgen.

Doordeweeks eten mensen aardappelen, groentes en een goed stuk kweekbiefstuk.

2. In 2050 bestaat de pil van Drion (en wordt sterk aangeraden)

Als je denkt dat we nu al veel merken van de vergrijzing stel je dan de situatie voor in 2050: veel van de babyboomers uit de jaren 50 leven dan nog steeds dankzij de steeds beter wordende gezondheidszorg. Een enorm probleem, want wie gaat al die zieke hoogbejaarden verzorgen? Vanaf 2040 krimpt de beroepsbevolking en niet iedereen kan of wil bejaardenverzorger worden.

Nu is het nog een misdaad om 99-jarigen te helpen als ze zelf vinden dat hun leven ‘voltooid’ is, in 2050 is het de gewoonste zaak van de wereld. Sterker nog: mensen boven de 80 die weinig eigen geld of kinderen hebben om in hun eigen levensonderhoud (en medische kosten) te voorzien zal de pil van Drion als alternatief worden aangeboden in plaats van minimale verzorging.

3. In 2050 is geen lid zijn van een sociaal netwerk een strafbaar feit

Over dertig jaar zijn de begrippen privacy en ‘persoonlijke levensfeer’ volkomen onbelangrijk geworden. De onthullingen van Edward Snowden tonen aan dat de overheid ons de hele tijd in de gaten houdt. In 2050 is het echter volkomen geaccepteerd dat je lid bent van een, door de overheid gecontroleerd, sociaal netwerk, al dan niet in nauwe samenwerking met een groot bedrijf als Facebook of Google. Geen lid zijn is dan net zoiets als er voor kiezen om geen paspoort te hebben.

Als je te veel online artikelen leest over illegale zaken krijg je een coach langs die moet uitzoeken of je niet aan het radicaliseren bent. Het gevolg is ook dat al je acties vastgelegd worden en gedeeld met bijvoorbeeld verzekeraars. Een zorgverzekering aanvragen wordt onbetaalbaar als je bijvoorbeeld meer dan een biertje per dag drinkt.

Steeds meer mensen zullen daarom onverzekerd door het leven gaan. Jezelf behoeden voor je eigen fouten is te duur geworden. Maar een minderheid zal er juist trots op zijn om niet verzekerd door het leven te gaan: een leven zonder zekerheden is ook wel weer spannend.

4. In 2050 is alcohol voor sukkels

In de jaren vijftig was het simpel: als je niet rookte deed je dat omdat je ziek was. Anders was je gewoon een beetje raar. Tegenwoordig moet je jezelf verantwoorden als je niet elk weekend laveloos in de kroeg staat met je tiende vaasje.

Maar in 2050 wordt je met je tiende biertje direct naar een heropvoedingskamp gestuurd. Meer dan sporadisch alcohol drinken (en dan bij voorkeur alcoholvrij of alcoholarm) is voor de zwakken.

Je ziet het al op bijvoorbeeld muziekfestivals in Scandinavië: daar mag je alleen alcohol drinken in speciaal daar voor aangegeven gebieden. En zelfs Jan Smeets van Pinkpop dacht in 2012 dat het in 2017 ook op Pinkpop ook al het geval zou zijn.

In 2050 ga je ‘naar buiten’ of naar ‘het bierhok’ als je een biertje wilt drinken. Niet erg gaaf, en daarom alleen iets voor de verstokte alcoholisten. Bovendien is alcohol in 2050 een stuk duurder: denk de prijzen die je nu betaalt in Noorwegen of Finland.

5. In 2050 zitten mensen liever in de cloud dan in de lucht

Het meest milieuvervuilende wat je kan doen, na kinderen krijgen, is vliegen. En ook al gelooft een minderheid van de wereldbevolking dat het met de opwarming van de aarde wel meevalt, in werkelijkheid zijn er al genoeg bedrijven die minder energie gebruiken en duurzamer werken. Niet omdat het beter is voor het milieu, maar ook omdat het simpelweg geld scheelt. Vliegen wordt dus weer iets voor de happy few, net zoals een jaar of vijftig geleden.

Wat gaan mensen dan doen? Manieren om niet-lijfelijk met elkaar te communiceren worden steeds innovatiever. Zoals bijvoorbeeld de double, een iPad op wieltjes die je op afstand kan besturen. Het lijkt een gimmick, maar er zijn ook mensen die letterlijk niet zonder kunnen.

Iedereen doet nu natuurlijk al aan Skype en gewoon ouderwets bellen, maar in 2050 is het zo ingeburgerd dat het nog nauwelijks uitmaakt waar je bent: communicatie verloopt voor het overgrote deel digitaal.

6. In 2050 is contant geld verleden tijd en offline winkelen een uitje

Hoe lang blijft contant geld nog bestaan? Er zijn al veel winkels die pin-only zijn. Niet alleen veilig, maar ook fijn voor de overheid die alles kan volgen (zie voorspelling #3). In 2050 is contant geld óf verboden, óf alleen nog maar in gebruik bij louche massagesalons en voor hele kleine betalingen (denk onder de €20).

Straten in het centrum zullen in 2050 trouwens een stuk minder winkels bevatten. Dat zie je nu al doordat winkelen verschuift naar het internet. Boeken en muziekwinkels sluiten, Vroom en Dreesman is niet meer en hoe vaak bent u de afgelopen tien jaar nog binnen geweest bij een reisbureau?

In 2050 zullen winkelstraten vooral bestaan uit servicezaken, zoals kappers en schoonheidssalons, horeca en winkels waar je pakjes op kan halen en misschien een reep chocola kan kopen.

7. In 2050 is Engels de voertaal in vrijwel alle niet-persoonlijke communicatie

Het basisonderwijs in Nederland is in 2050 volledig dubbeltalig (of wellicht drietalig, met Spaans of Mandarijn als derde taal), een grote minderheid van het onderwijs is zelfs geheel Engelstalig. Vanaf de middelbare school is het grootste deel van de lessen Engels, als je op een HBO of Universiteit nog Nederlands spreekt doe je dat alleen in de pauze met je Nederlandse vrienden.

8. In 2050 is ‘staat’ een diffuus begrip geworden

Landen bestaan in 2050 nog wel, maar het zijn er een stuk meer dan in 2016, en je zult ze niet gelijk herkennen als land. Veel landen zijn opgesplitst (denk Vlaanderen en Wallonië, Californië), maar er zullen ook gebieden zijn die we nu niet als land zouden (h)erkennen. Nu zijn er al gebieden waar andere regels geleden om de economie te stimuleren, zijn er ‘gated communities’ en kun je in Japan je laatste rustplaats hebben in een bedrijfsgraf.

In 2050 is dat nog veel extremer doorgevoerd en hebben ‘bedrijfszones’ misschien wel eigen wetten en worden ze erkend als aparte staat.

9. In 2050 is de realiteit niet meer wat het is geweest

De realiteit staat onder druk. Door het uitkomen van de Oculus Rift is Virtual Reality (VR) voor het eerst bereikbaar voor de massa, en andere technieken, zoals de Hololens van Microsoft, laten zien dat ook Augmented Reality (AR) mogelijk is. Daarnaast is de software zo goed geworden dat het onmogelijk is om met het blote oog nog het verschil te zien tussen computergegenereerde beelden en fotografie of video. Nu al heb je al technieken om gezichten perfect te animeren.

Het gevolg zal zijn dat er de komende decennia veel discussies zullen worden gevoerd over wat ‘echt’ is. Dode acteurs zullen vervolgen maken op hun populairste films. Mensen zullen onterecht worden opgesloten omdat camerabeelden zijn vervalst met dit soort technieken. In 2050 zullen die discussies er nog steeds zijn, maar zal het grootste deel van de mensheid hebben geaccepteerd dat realiteit verleden tijd is geworden.

10. Veel blijft ook hetzelfde.

2050 is heel anders dan 2016, maar veel dingen blijven ook hetzelfde.

  • Mensen klagen nog steeds over het weer. En daar kunnen we, ook in de verre toekomst, niks aan doen.
  • Er is geen medicijn gevonden tegen de meeste vormen van kanker en tegen AIDS. Wel zijn de vooruitzichten een stuk beter, en de behandelingen veel effectiever en minder ingrijpend. Maar hét geneesmiddel tegen al die nare ziektes is er nog niet.
  • We kunnen nog steeds niet tijdreizen of eeuwig leven.
  • Nederland is nog steeds een koninkrijk met een net gekroonde nieuwe Koningin Amalia.
  • We hebben nog steeds de Euro en de Europese Unie. Wellicht is de EU dan wel wat kleiner, zo  zonder de UK, Griekenland en een paar Oosterse staten.

En misschien wel het ergste: ook in 2050 is NEC nog steeds nooit landskampioen geweest.

Tot in 2050!

Handling complex nested dicts in Python

Python is a lovely language for data processing, but it can get a little verbose when dealing with large nested dictionaries.

Let’s say you’re using some parsed JSON, for example from the Wikidata API. The structure is pretty predictable, but not at all times: some of the keys in the dictionary might not be available all the time.

Consider a structure like this:

animals = [
    {
        "animal" : "bunny"
    },
    {}
]

If you would try to directly access the animal property in a fashion like this:

for item in animals:
    print item["animal"]

You would get an error like this:

bunny
Traceback (most recent call last):
    KeyError: 'animal'    

Because the animal key is missing in the second item in the list. You could use the handy get method:

for item in animals:
    print item.get("animal", "no animal available")

The second argument to get is a default value that will be used if the key is not available:

bunny
no animal available

Excellent! However, this leads to problems when having a nested structure:

animals = [
    {
        "animal" : {
            "type" : "bunny"
        }
    },
    {
        "animal" : {}
    },
    {}
]

You could nest the get statements

for item in animals:
    print item.get("animal").get("type")    

But leads to an error because the animal key is lacking in the third item.

You could do something like this:

for item in animals:
    if "animal" in item:
        print item.get("animal").get("type")    

But with deeply nested structures (i counted seven levels in the Wikidata API) this gets unwieldy pretty fast.

Wouldn’t it be awesome if you could simply do this?

for item in animals:
    print item.get("animal/type")

Note the / in the get method.

Unfortunately, this is not possible in vanilla Python, but with a really small helper class you can easily make this happen:

class DictQuery(dict):
    def get(self, path, default = None):
        keys = path.split("/")
        val = None

        for key in keys:
            if val:
                if isinstance(val, list):
                    val = [ v.get(key, default) if v else None for v in val]
                else:
                    val = val.get(key, default)
            else:
                val = dict.get(self, key, default)

            if not val:
                break;

        return val

Now you can do this:

for item in animals:
    print DictQuery(item).get("animal/type")

bunny
{}
None

Nice, huh?

De belachelijke wachtwoordeisen van de Belastingdienst

Wachtwoorden zijn net als puisten. Iedereen heeft ze, maar je gaat er niet uitgebreid over orereren tijdens de vrijmibo. Toch moeten we het even over wachtwoorden hebben, met dank aan de Belastingdienst.

Afgelopen week deed ik aangifte. Mijn wachtwoord was verlopen vanwege “nieuwe veiligheidseisen”. Als klein tipje kreeg ik vast wat eisen waar mijn nieuwe wachtwoord aan moest voldoen:

3381de49-dece-48dd-9cd9-f922dbf59f7c

Ik moest gelijk denken aan dit klassieke Dilbert-stripje:

5945df16-8a42-427b-9316-ea0567ac531c
Even een experimentje: dit zijn wachtwoorden die volgens deze wachtwoordtester van Dropbox ‘eeuwen’ duren om te kraken. Maar bij de Belastingdienst zijn ze niet geldig:

  • zoh8Cea6ah@2Mui6iezaev4ieduo0g (te lang)
  • uYiRaenoeaoV (geen speciale tekens)
  • ahxaith4oov7oh! (geen hoofdletters)
  • #uad2airuWah0a (vier keer de letter ‘a’)

Hier zijn een paar wachtwoorden die wél geldig zijn:

  • Password1
  • Welcome2
  • Hello123

Leuk detail van dit lijstje: al die wachtwoorden komen uit de lijst van de 20 meest gebruikte wachtwoorden. Niet zo veilig dus, en volgens de wachtwoordtester te kraken in minder dan een seconde.

Dit is trouwens een interessant detail uit het lijstje (met dank aan Niels voor het spotten):

04a6b6c3-5a54-416c-8a63-e96160764767

Dit is een beetje curieus. Het kan namelijk de suggestie wekken dat de Belastingdienst wachtwoorden niet veilig versleuteld opslaat.

Dat zit zo: als je het goed doet sla je wachtwoorden nooit ‘zo’ op in een database. Ze worden altijd versleuteld door hashing. Dat hashen gaat maar één kant op: je kan een hash berekenen van een wachtwoord, maar andersom kun je niet terug van hash naar wachtwoord.

Ondanks dat je het wachtwoord zelf niet weet kun je wel controleren dat het klopt: de hash van wat iemand intikt bij een inlogscherm moet matchen met de hash in de database. Je vergelijkt dus nooit twee wachtwoorden, altijd twee hashes!

Als je dit mechanisme gebruikt (wat praktisch alle grote internetbedrijven doen) is het onmogelijk om te zien welke karakters er in een oud wachtwoord voorkomen.

Zowel in de comments hier beneden als op Twitter wordt gesuggereerd dat de BD wél veilig toegang heeft tot je wachtwoord, namelijk op het moment dat je het oude wachtwoord moet intikken. Dan zouden ze die check kunnen doen. Dat is een goed punt, maar helaas weten we niet op welke manier de Belastingdienst die check uitvoert.

Ook is er de eis dat je wachtwoord anders moet zijn dan je vorige wachtwoorden (meervoud). Je zou alle vorige wachtwoorden als hash kunnen opslaan, en het op die manier kunnen checken. Maar waarom zou je dat doen? Het creëert alleen maar extra complexiteit in het systeem en het voegt geen echte verbeteringen toe in de veiligheid.

Wat zou de Belastingdienst dan wél moeten doen? Zoals je kan lezen in dit inmiddels klassieke stripje van XKCD en dit lange technische artikel van Jeff Atwood is de oplossing simpel: eis gewoon langere wachtwoorden (minimaal 12 tekens), zónder al die gekke regels. ‘appelmoes kerk paars konijn’ is als wachtwoord eindeloos veel veiliger én beter te onthouden dan ‘B3l@st!ng’ en alle andere lelijke varianten.

Alle huidige bizarre regels zorgen er voor dat mensen slechte wachtwoorden bedenken die niet veilig zijn. En ze maken het én niet leuker én niet makkelijker. Zonde.

Naschrift: in een eerdere versie van dit artikel werd stelliger gezegd dat de Belastingdienst wachtwoorden onveilig opslaat. Dat heb ik aangepast na commentaar op dit blog en de gelinkte tweet.

Het lijstje, editie 2015

Er zijn enkele zekerheden in het leven rond het einde van het jaar: pijnlijke kerstdiners met je schoonfamilie, te veel geld betalen voor een matig feestje met oud en nieuw en het lijstje, mijn jaarlijkse opsomming van het mooiste en het beste op muziekgebied.

Ik doe dit al twaalf jaar. Daardoor zijn er inmiddels patronen te herkennen. Zoals een soort omgekeerde Star Trek Movie Curse: oneven muziekjaren lijken beter te zijn dan de even jaren. En inderdaad: 2015 was een goed jaar! Wel jammer voor volgend jaar, want dat gaat dus bagger worden. Ook opvallend: net zoals in 2010 hebben Sufjan Stevens en Joanna Newsom een nieuw album uit dat hoog staat in deze lijst. En zoals altijd is het veel alternatieve muziek met een elektronisch randje (of andersom) en zo af en toe een uitstapje richting de hiphop en R&B.

De twintig van 2015

  1. Jlin – Dark Energy
  2. Joanna Newsom – Divers
  3. Sufjan Stevens –  Carrie & Lowell
  4. Father John Misty – I Love You, Honeybear
  5. Tame Impala – Currents
  6. Björk – Vulnicura
  7. Natalie Prass – Natalie Prass
  8. Floating Points – Elaenia
  9. Grimes – Art Angels
  10. zZz – Juggernaut
  11. Oneohtrix Point Never – Garden of Delete
  12. Deafheaven – New Bermuda
  13. Jamie xx – In Colour
  14. Panda Bear – Panda Bear Meets the Grim Reaper
  15. Miguel – WILDHEART
  16. Kurt Vile – b’lieve i’m going down…
  17. Kendrick Lamar – To Pimp a Butterfly
  18. Aphex Twin – Computer Controlled Acoustic Instruments pt2 EP
  19. FKA Twigs – M3LL155X
  20. Beach House – Depression Cherry

Ik heb ook een YouTube playlist gemaakt met van vrijwel alle albums hierboven een representatief nummer én, gewoon omdat het lekker is, Run Away With Me van Carly Rae Jepsen.

Videostill door Iris van Vliet

Dan het beste concert van 2015: Joanna Newsom in TivoliVredenburg zou een eenvoudige keuze zijn. Maar laat ik dat eens niet doen. De launch party van het nieuwe album van zZz in OT301 was behoorlijk legendarisch. Ik denk dat ik zo’n beetje enige was die geen drugs op had, in die kolkende massa in dat veel te kleine zaaltje. Beste concert van het jaar!

Talk Talk - Laughing Stock

De herontdekking van dit jaar vond eigenlijk al plaats in 2014, maar mag ook dit jaar nog best genoemd worden: Talk Talk, en dan vooral de laatste twee albums Spirit of Eden en Laughing Stock heb ik de afgelopen 24 maanden vaak gedraaid. Wat een briljante muziek. Heel gek om dan te lezen dat Mark Hollis, het brein achter de band, na zijn soloplaat in 1998 eigenlijk nooit meer iets heeft uitgebracht. Blijkbaar had hij alles gezegd en gespeeld wat hij wilde.

Dat was het voor dit jaar. Voor meer lijstjes zie Sander Spek, Pitchfork, Best Ever Albums, The Guardian, Metacritic, Tiny Mix Tapes, Plato, Kindamuzik, Rate Your Music en 3voor12.

Als je benieuwd bent wat ik de afgelopen 12 jaar (!) leuk vond: hier zijn de edities van 2014, 20132012201120102009, 2008, 2007, 2006, 2005, 2004 en 2003.