Seblog.nl

Welkom op Seblog, het weblog van Sebastiaan Andeweg. Ik ben een schrijver en nerd uit Nijmegen. Ik ben ook te vinden op Twitter, Instagram en af en toe op Github. Als ik rondjes ren staat dat op Strava, naar Snapchat kan ik niet linken en ik ben Facebookloos sinds 2014.

Seb leert unittesten met PHP (deel 1)

Oké, dit wordt zo'n blogpost die ik voor mijn gevoel voor niemand schrijf, omdat het grootste deel van mijn lezers geen idee heeft van PHP en de lezers die wel een idee van PHP hebben naar mijn gevoel allang weten wat unittesten is. Maar hé, misschien ben jij ook wel zoiemand als ik, die wel z’n weg weet in PHP maar gewoon nooit aan unittesten is toegekomen. Bij dezen draag ik deze blogpost op aan jou.

Vorig jaar wist ik eigenlijk niet goed wat Git was, terwijl ik zag dat vrijwel iedereen dat gebruikte. Het was er gewoon nooit van gekomen, na HTML en CSS en PHP en MySQL en Javascript en al die duizend andere dingen die je moet leren als je een website wil bouwen. Dus leerde ik het afgelopen jaar Git (en Github) te gebruiken en daar ben ik heel blij mee. Het resulteerde in mijn eerste gemergede pull request, wat gewoon een knip-en-plakwerkje was, maar toch goed voelt.

Wie de PR leest ziet dat ik na mijn knip-en-plakwerkje nog werd gevraagd om ook even de test te knip-en-plakken. Spannend. Dus ik knipte en plakte en hoopte dat alles goed kwam. Ik hoorde er niets meer over en het werd gemerged, dus alles was blij en bloemetjes, maar er bleef wel een knagend gevoel over: hoe zit dat, geautomatiseerd testen?

Na enig research bleek dat zowel php-comments als Kirby (het CMS waar dit weblog op draait) hun tests uiteindelijk bestaan uit een class die PHPUnit_Framework_TestCase extend. Eén duckduckgo later vond ik phpunit.de, wat blijkbaar dé testsuite voor PHP is. Ik sloot alles af en besloot er later weer naar te kijken.

Later

Vandaag was ik dus vastbesloten om uit te zoeken hoe dit werkte. Of beter eigenlijk: ik kwam het weer tegen en raakte er langzaam in verzeild toen ik eigenlijk iets anders zou moeten doen.

Het begon allemaal heel simpel. Op de site van phpunit stond een link voor ‘Take the first steps’, die wel relevant leek. Daar stond het volgende stappenplan voor in de terminal:

$ wget https://phar.phpunit.de/phpunit.phar

$ chmod +x phpunit.phar

$ sudo mv phpunit.phar /usr/local/bin/phpunit

$ phpunit --version
PHPUnit 5.7.0 by Sebastian Bergmann and contributors.

Ik had al problemen bij stap 1 omdat mijn Mac kennelijk geen wget heeft. Ik probeerde nog wat met curl https://(…) -L | nano maar dat lukte ook niet geweldig. Uiteindelijk heb ik ‘m gewoon even via de browser gedownload. De overige stapjes werkten prima.

De volgende stap blijkt dan dus om in terminal naar de map te gaan waar het bestand phpunit.xml in zit, in mijn geval dus cd ~/code/php-comments/. Toen ik phpunit deed in die map, kreeg ik een foutmelding dat /vendor/autoload.php niet bestond. Dit los je op in de volgende twee stappen, die ik natuurlijk in de verkeerde volgorde deed:

  1. Roep phpunit aan met de bootstrap-vlag:

    $ phpunit --bootstrap vendor/autoload.php
  2. Installeer indien nodig eerst (!) de dependencies via composer.
    $ composer install

Toen ik nogmaals stap 1 uitvoerde kreeg ik het volgende:

$ phpunit --bootstrap vendor/autoload.php
PHPUnit 5.7.5 by Sebastian Bergmann and contributors.

.................................                                 33 / 33 (100%)

Time: 105 ms, Memory: 12.50MB

OK (33 tests, 82 assertions)

We kunnen dus gerust stellen dat mijn knip-en-plakwerkje alle tests haalt. Volgende stap is om zelf tests te gaan schrijven voor dingen die ik maak, maar dat bewaren we even voor een andere keer.

Homebrew Website Club

Bar Beton CS, Utrecht Centraal

Are you building your own website? Indie reader? Personal publishing web app? Or some other digital magic-cloud proxy?

If so, you might like to come to a gathering of people with like-minded interests. Exchange information, swap ideas, talk shop, help work on a project, whatever...

Another take on uploading screenshots to a Micropub Media Endpoint

Over the last months I’m on IRC more often. I like the simplicity of sending plain-text messages, but from time to time I like to send a picture as well. The best way to do that on IRC is to upload the file somewhere else and send a link. Uploading files can be a hassle though.

I must admit that this problem is somewhat born because I already found a solution for it elsewhere. I followed Aaron’s recipe for creating a folder that uploads images, but for the times I needed it, I found it tedious to drag my screenshots to that folder. So here’s my alteration of it.

My workflow is nearly the same, but I choose the type ‘Voorziening’ (what’s that in English?), which makes it available in the right-click-menu. I can just select a file, right-click, and go to Voorzieningen > Upload to Media Endpoint.

I let it accept images, but you can go for documents in general as well, and the rest of the workflow is the same as Aaron’s. (Make sure to pass the input to the shell script as arguments!) The only thing is that it will receive a list of files, so I changed the shell script to:

for f in "$@"
do
    curl -i -F "file=@$f" -H "Authorization: Bearer xxx" https://example.com/media-endpoint | grep Location: | sed -En 's/^Location: (.+)/\1/p' | tr -d '\r\n' | pbcopy
done

Note that this uploads multiple files and only saves the last url to the clipboard. I just select one file per upload, so that will be fine.

Ideeën over een terugkeer naar Facebook

Net terug van de speciale kerstaflevering van de schrijfwerkplaats van Wintertuin, waar we het voor de verandering over dingen rond het schrijven hadden in plaats van over teksten zelf. Mijn persoonlijke conclusie van de avond is een beetje dat ik misschien weer terug naar Facebook moet, vooral voor punt 7 van het whiteboard: Netwerken.

Ik ben nu iets meer dan twee jaar van Facebook af en op zich gaat dat prima. Als in: ik leef nog en ken nog mensen. Als in: ik mis vast dingen maar zij missen me ook niet. Als in: er is een wereld waaraan ik kies niet mee te doen omdat het inschrijfgeld zo hoog is. Facebook is gratis, zeggen ze, maar dat is niet helemaal waar. Het kost je tijd en het kost je privacy. En ik ga nu eenmaal graag de andere kant op dan de massa. Soms. Gek genoeg zit ik wel gewoon op Whatsapp, Instagram en Twitter, zelfs op Snapchat.

Nu mijn weblog meer en meer functies overneemt van Instagram en Twitter verandert ook mijn kijk op Facebook. Eerst was het een kwaad ding waarover ik geen controle had, maar met mijn weblog als hub is het misschien niet eens meer zo gek om Facebook aan het rijtje silo's waarnaar ik kopieën stuur. Het is gewoon een van de vele kwaden die ik gecontroleerd gebruik.

Mocht ik Facebook weer willen gaan gebruiken, dan moeten Facebook en ik wel even wat afspraken met elkaar maken over wat er wel en niet kan. Ik zal ze ter zijner tijd wat duidelijker opschrijven, maar hier een korte lijst:

  • Alles wat ik op Facebook post, post ik eerst op mijn eigen weblog. Dit doe ik nu al met Instagram en Twitter, inclusief reacties en likes.
  • Ik wil eerst een reader, zodat ik niet afhankelijk ben van de feed van Facebook, maar zelf de profielen die ik interessant vind kan inlezen en op één plek kan zien naast alle andere dingen die ik interessant vind. Als ik dan wil filteren kan ik filteren op mijn eigen voorwaarden. (Iemand die ik ken heeft een browserplugin die zijn Facebookfeed blokkeert. Dat wil ik dan ook. Geen gescroll daar.)
  • Ik wil een (ad?)blocker die externe scripts blokkeert, zodat Facebook me niet overal in de gaten houdt. (Dit heeft niet zo veel met terugkeren te maken, want nu blokkeer ik ze ook niet en weten ze dus precies waar ik kom op de interwebs.)
  • Het voordeel is dan dat mensen via Facebook met mijn weblog kunnen praten. Mocht ik dan daarna nog eens weggaan, dan hoop ik dat ze door hebben dat mijn weblog gewoon doorgaat.
  • Theoretisch hoef ik dus helemaal niet meer in te loggen op Facebook.com, maar gaat alle informatie geautomatiseerd van en naar mijn weblog.

Tja. Weer Facebook. Je zou deze post ook kunnen samenvatten als: vanavond piekte mijn FOMO tot historische hoogtes. We zullen zien hoe het morgen is.

Eurojacht

Ik koop vandaag de gekste zaken in de hoop de Litouwse euro-set voor mijn moeder te vervolledigen. Op dit moment ontbreken alleen de 5 en 20 cent, dus koop ik vooral zaken die hoge kans geven op die twee munten. Zo beging ik net de fout om een kleine karamelinis makijatas te kopen. Los van de karamel in de koffie gaf de kleine latte met € 2,20 maar kans op één 20-centmunt, terwijl de grote met € 2,60 kans had gegeven op twee 20-centmunten. Het meisje gaf één 20-cent-munt terug, maar dat was een Franse, dus nu moet ik nog iets kopen. Een aankoop van 0,75 is nu het beste, omdat dat zowel kans geeft op 20 als op 5 cent.

Er is geluk nodig bij het eurojagen. Eerder kocht ik de gebruikelijke ansichtkaart voor diezelfde moeder, voor op de koelkast. Litouwse internationale postzegels kosten 81 cent, en ze ronden niet af. Kans op 5 cent, dacht ik verheugd toen ik het bedrag zag, maar ik kreeg een hand vol 1 en 2 centen die ik al had en waar ik in Nederland ook niets aan heb. Gelukkig kon ik bij de supermarkt terecht met 1 euro en 9 centen om een broodje van 0,49 te kopen. Dat leverde een bruikbare 50-centmunt op.

Nu het latte-plan is mislukt moet ik weer iets nieuws kopen, liefst in de supermarkt. In de supermarkt heb je de meeste rust om het ideale totaalbedrag samen te stellen om zo veel mogelijk kans te maken op een Litouwse 20 en 5 cent. Het ziet er alleen zo vreemd uit als je elke keer opnieuw in de rij aansluit, dus ik denk dat ik het beste op zoek kan gaan naar een andere supermarkt. De latte is op, dus ik moet sowieso door.

Privéstukjes

Ik heb zojuist twee privéstukjes op dit weblog gepost. Het is een beetje onzinnig misschien, privéstukjes op een weblog, maar ik vind het idee leuk. Er is momenteel een soort hang naar meer privacy met dingen die je deelt. Twee mensen die ik ken zijn (net als anderen) nieuwsbrieven begonnen in plaats van of in aanvulling op hun blog. Snapchat en Instagrams imitatie van Snapchat zijn ook mooie voorbeelden: mensen delen er foto’s, maar tijdelijker en minder openbaar. Het jammere ervan is dat alle bovengenoemde voorbeelden niet meer tot het web behoren. Privéstukjes op weblogs horen wel bij het web, met alle voordelen van dien.

De stukjes zijn privé omdat ik ze eigenlijk niet goed genoeg vond, maar ik ze wel wilde bewaren binnen mijn weblogarchief. Ik had het daar laatst met Wout over. Op een of andere manier schrijf ik graag voor de openbaarheid. Mijn tekst moet een plekje hebben, dat het af is en dat ik het ergens neerzet en dat mensen daar dan naar kunnen kijken of niet. Dat hoeft natuurlijk helemaal niet, maar ik voel me daar beter bij.

Het alternatief is voor mij een mapje met tekstbestandjes voor ‘drafts’, of een opschrijfboekje met aantekeningen. Maar in beide gevallen voelt dat zo fragiel, zo nietsig. Ik heb stapels opschrijfboekjes die half-vol zijn en waar ik me schuldig over voel als ik er naar kijk en veel te veel mapjes vol schrijfsels waarvan ik niet meer precies weet hoe of wat en wanneer en waarom. Ik vind het fijn om een stukje te kunnen posten op een datum, dan is het af. Met dit privé-systeem kan ik het later altijd weer kopiëren, redigeren en opnieuw publiceren op een nieuwe datum.


Terug naar de stukjes. Je kan er hier een zien. Dat wil zeggen, er is niet zo veel te zien, want de instelling staat gewoon op private: true, wat zoiets betekent als ‘alleen voor mezelf’. In de planning staat wel om een soort inlog-ding te maken zodat vrienden en bekenden bepaalde stukjes kunnen lezen, maar hoe ik dat precies ga vormgeven is nog in brainstormfase.

Ik ben voorlopig weer content.

als antwoord op seblog.nl

De vierde wesp

Ik heb vannacht de hele nacht wakker gelegen van de vierde wesp op mijn kamer. Steeds tegen het raam tikkend, omhoog zoemend, dan weer stil. Ik weet dat het heel lastig is om zo'n beest het raam uit te bonjouren als het nacht is en rond het vriespunt buiten, en het raam is ver van mijn bed, dus ik hing mijn klamboe op en stopte mijn hoofd onder het kussen.

's Ochtends dat geluid weer, af en toe. Maar ook andere geluiden. Die wesp, denk je dan, o nee toch een auto. En toen ging ik twijfelen. Zit er wel een wesp? Veel geluiden waren eigenlijk iets anders, maar altijd als ik nét weer bijna in slaap dommelde was er een geluid dat onmiskenbaar een wesp was.

Uiteindelijk heb ik me vermand. Ik stapte uit het warme bed, onder de beschermende klamboe uit. Ik trok snel wat aan, liep langzaam naar het raam, trok met twee vingers het gordijn opzij. Geen wesp. Ook achter de tweede helft niet. Er was geen wesp. De wesp die me de hele nacht wakker heeft gehouden zat in mijn hoofd. Opgelucht ging ik naar beneden om te ontbijten.

‘Natuurlijk zit er een wesp,’ zei huisgenoot J. net. ‘Die beesten zijn zo goed in zich verstoppen, die vind je echt niet terug als ze dat niet willen.’ Ik denk dat ik vannacht ook weer goed slaap.

Beesten op je kamer

Twee weken geleden zat er een Heel Gek Beest in mijn kamer. Ik schrok ervan, ving het in een glas, en liet hem een nacht zo onder het glas op mijn printer staan. De volgende ochtend liet ik 'm vrij en deed tevreden mijn raam dicht.

Even later zat er een wesp op mijn kamer. Een wesp. Het is niet alsof ik met dit weer mijn raam heb openstaan of zo, dus ik heb geen idee hoe hij hier binnen kwam. Ook de wesp probeerde ik op humane wijze buiten te krijgen, maar eenmaal met het raam open bleef hij in de vensterbank zitten. Te koud buiten. Na lang treuzelen heb ik 'm toch nog vermoord. Sorry wesp.

Twee dagen geleden zat er weer een Heel Gek Beest in mijn kamer. Ik schrok er weer van, ving het in een glas, en liet hem een nacht zo onder het glas op mijn printer staan. Daarna ben ik 'm stiekem een beetje vergeten.

Vanochtend werd ik wakker van gezoem en getok. Dat klinkt als een insect, dacht ik. O ja, het Hele Gekke Beest zit nog in dat glas! Die moet er nodig uit. Maar bij het glas aangekomen bleek het beest zich heel rustig te gedragen. Voorzichtig schoof ik het gordijn opzij en jawel: daar zat een wesp. Hoe zat het ook weer? Tweemaal is de duivel, driemaal is God? We wachten af.

(Inmiddels zijn alle beesten weer buiten.)

Je moet meer schrijven

Wout zei dat ik me meer op het schrijven moest richten. Ik wist dat hij gelijk had.

De dagen nadat Wout dat zei, richtte ik me op het bouwen van een Micropub Endpoint. Nu kan ik stukjes op mijn weblog plaatsen via (web)-apps die door anderen gemaakt zijn. Mits ze Micropub ondersteunen, wat vooralsnog tamelijk zeldzaam is, maar toch. Mijn weblog ondersteunt zowel de FormEncoded als de JSON-variant, mét Media Endpoint én de configuration query. Ik was nog bezig met syndication targets en updaten en deleten via Micropub, maar toen hoorde ik Wout weer in mijn hoofd: je moet meer schrijven. En ik wist dat hij gelijk had.

Ik schrijf dit stukje in een web-app die door iemand anders gemaakt is. Want: een weblog bijhouden gaat niet om de ideale schrijfomgeving programmeren. Het gaat om het schrijven van stukjes. En dat kan prima in iemand anders’ ideale schrijfomgeving. (Mits zowel die schrijfomgeving als jouw weblog Micropub ondersteunen. Of ja. Dan gaat het makkelijker. Dan hoef je na het typen alleen maar op de knop te drukken.)

Dat ik uit de code ben ontwaakt, Wout hoorde en ben gaan schrijven komt vooral omdat ik het gevoel had dat ik er niet doorheen kwam. Dat achter elke functie die ik implementeerde wel weer een nieuwe bug zat, of een nieuwe functie die dan ook geïmplementeerd moest worden voor ik eindelijk stukjes kon gaan schrijven. Dat ik er nooit kwam.

Vroeger zeiden mensen tegen me dat ik er wel kwam. Ik nam aan dat ze daarmee iets met schrijven bedoelde, dat hoopte ik althans. Zelf heb ik een tijdje geloofd dat ik er bijna was, maar eerlijk gezegd weet ik nog steeds niet precies waar ‘er’ dan is. Dat geeft ook niet. ‘Er’ is misschien ook wel helemaal geen plek waar je kan zijn. Het is net als de regenboog achternalopen: je komt er nooit, maar als je om je heen kijkt zie je toch best leuke natuur. Maar dan moet je wel om je heen kijken, even stil staan en genieten van wat je al hebt.

Ik ga in deze web-app op ‘Publish’ drukken. Als er geen bugs zijn staat het daarna op mijn weblog. Wish me luck. Ik heb in ieder geval iets geschreven.

Hardlopen naar het centrum

Vandaag, 1 juni, blijkt internationale hardloopdag te zijn. Tenminste, dat zei Strava. Goed excuus om eindelijk eens een stukje over hardlopen te schrijven.

Beginnen met hardlopen

Een paar jaar geleden stelde ik mezelf een sportief doel: wat zou het vet zijn om non-stop naar het centrum te kunnen rennen. Ik woon in de Bijlmer, dus het is een tocht van ongeveer zeven kilometer die ik een aantal keer per week heen en terug fiets.

Vandaag, 1 juni, internationale hardloopdag, ging ik dan eindelijk op weg. De afgelopen maanden heb ik getraind met een app die me beloofde dat ik na 8 weken 5 kilometer kon rennen. Dat begon heel simpel, met zes keer 1 minuut rennen en daarna steeds anderhalve minuut lopen. De volgende rendag werd dat acht keer, en zo steeds meer, drie dagen per week. Ik weet nog hoe ik aan het vechten was voor tweeënhalve minuut rennen, alsof het nooit eindigde.

Maar als je eenmaal 8 minuten kan rennen slaat het om, dan ga je niet meer de renminuten tellen, maar de loopminuten. Bovendien denk ik dat ik die eerste paar keer ook veel te hard liep. Ik weet dat niet zeker, want destijds nam ik mezelf niet op.

Voor mijn verjaardag (3 juni, maar ik had ze eerder nodig) kreeg ik van mijn ouders nieuwe hardloopschoenen. Dat was nodig, want hoewel de app 8 weken zei, had ik al tweemaal een vrijdag strategisch geskipt vanwege (verkeerd) pijnlijke benen en dus daarna de week over gedaan. Vanaf toen, 20 april, ben ik mijn hardloopsessies ook met Strava gaan opnemen, waarmee ik erachter kwam dat ik idioot hard liep. Met nieuwe schoenen en een rustigere pace heb ik verder geen dagen meer hoeven skippen.

Op naar de 5k

Precies in week 10 was er op zaterdag de 5km-race van de Leidse marathon, ’s avonds door het centrum van Leiden. Omdat ik opgegroeid ben in Leiden, omdat het precies was toen mijn 5k-app klaar was, en omdat ik van dit soort symbolische toevalligheden hou, heb ik me ingeschreven.

Een week voor de wedstrijd had ik 40 graden koorts, maar dat weerhield me er niet van om twee dagen later de voorgeschreven 25 minuten met de app te rennen. En: ik haalde de 5km al, in 24:18. De rendag daarop moest ik 28 minuten rennen, waarvan de eerste 23:22 al 5km waren en bij de voorlaatste sessie van 30 minuten had ik 5km na 22:53. De 35 minuten op vrijdag skipte ik zodat ik zaterdag de race kon lopen. Daar liep ik 22:19, wat best wel idioot is voor iemand die 10 weken rent.

Inmiddels probeer ik nu rust te nemen met het hardlopen. Minderhardlopen. Dat wil zeggen. Ik heb geprobeerd 10km te lopen, voor mezelf, en met twee wandelingetjes tussendoor kwam ik toch nog onder het uur uit, vier dagen na mijn 5k-race. Het gematigd hardlopen is iets wat ik dus nog moet oefenen. In een poging tot ‘het rustig aan doen’ heb ik van dezelfde makers als de 5k-app hun 10k-app gekocht. Ook hier zal ik wel veel eerder de 10km vinden, maar het gaat ook om aan een stuk door kunnen lopen. Ik gedij goed bij een strak ritme van driemaal per week een programma hebben.

Maar eerst het centrum

Toch onderbrak ik vandaag het maandag begonnen regime van de 10k-app. Het punt is: ik ga verhuizen. En mijn eerder genoemde doel van naar het centrum rennen is natuurlijk minder leuk als ik niet meer in Amsterdam woon. Het moest nu gewoon even gebeuren. Bovendien is het vandaag dus internationale hardloopdag, dan moeten dat soort dingen.

De tocht zelf ging goed. Een dikke vrouw met dito kinderwagen versperde ergens het pad zó erg dat ik half door de bosjes moest. Vervolgens was zij boos dat ik haar liet schrikken, maar ik ben gewoon doorgerend. Ze kon me toch niet inhalen, of ik nu versnelde of niet.

Bij Amstel is de Treublaan, waarvan ik al dacht dat het misschien lastig werd die rennend over te steken. En inderdaad: rood licht, veel auto’s, dus ik stopte. Daarna heb ik dus even anderhalve minuut moeten lopen, want eenmaal stilstaand merkte ik dat ik, ja, toch best wel moe was van de eerste 4,1km in 19:16. Bij de Sarphatistraat had ik gelukt: de brug stond open, dus geen auto’s, ik kon zo doorrennen.

Het stuk langs de Amstel is altijd zo idyllisch, dáár wil ik rennen. Maar nu ik eraan terug denk was ik eigenlijk vooral bezig met het ene been voor het andere te zetten, en proberen niet in een fietser te knallen. Bij Waterlooplein is weer een drukke straat, maar omdat het verkeer vast stond kon ik er zo tussendoor floepen.

Op Waterlooplein hebben ze dus heel leuk een stukje atletiekbaan op de grond geschilderd. Het is maar een meter of 30, dus ik ging superenthousiast als een malle eroverheen. Het kostte me geloof ik 6 seconden, maar ik weet niet hoe accuraat de GPS is. Deze idiote inspanning zorgde ervoor dat ik alsnog met de ademhaling van een oude man over de Waterloopleinmarkt jogde.

Maar, ik hield vol, en haalde het: van Bijlmer naar Nieuwmarkt, 7,2km, in 35:42. Ik ben best trots op mezelf.

Die toevallige symboliek weer

Toen ik van Nijmegen naar Amsterdam verhuisde had ik twee kameropties gehad: eentje middenin het centrum, nabij Nieuwmarkt, in een huis voor ‘masterstudenten van ver’. Ik kwalificeerde en kwam zowaar op plek 3. Natuurlijk wilde nummer 1 de kamer al wel hebben. Het werd voor mij de tweede optie: een container in de Bijlmer.

Maar daarom ben ik Nieuwmarkt toch altijd een beetje als thuis in het centrum blijven beschouwen. Vooral omdat de Latijnse naam voor Nijmegen, ‘Novio Magus’ dus ook Nieuwe markt betekent. Ik heb tijdenlang twee fietsen gehad, waarvan er een standaard in de Bijlmer stond en een op de Nieuwmarkt, waartussen ik de metro nam.

Nu ik dus over een dag of 10 naar Nijmegen terugverhuis leek het me mooi symbolisch om vandaag naar het centrum te rennen. Bovendien is het dus de internationale rennersdag (wist ik veel). En deze 7,2 kilometer duwen de afstand die ik op Strava met mijn nieuwe schoenen heb gelopen naar de 100 kilometer. En aangezien ze dus een verjaarscadeau waren, ik vrijdag jarig ben, en ik morgen niet ren, heb ik daarmee precies 100 kilometer op de schoenen gerend voor ik de officieel cadeau krijg. En: als ik naar mijn nieuwe huis in Nijmegen was gerend was ik daar ook ongeveer 100 kilometer mee verder. (Niet dat ik was gefinisht, maar toch.)

Toevallige symboliek is overal.

Mijn weblog is 10 jaar

Hier is een stukje waar ik al de hele dag een beetje tegenop zie. Het zou namelijk een vrolijk stukje moeten zijn, met veel hoera en – waarom ook niet – blije emoji. Mijn weblog bestaat 10 jaar en dat ga ik vieren! Dat soort dingen.

Maar zoals jullie misschien ook wel weten is mijn weblog in de laatste paar jaar niet per se een heel actief weblog geweest. Er zijn meer weblogs die daar last van hebben. Sociale media en aanverwanten hebben het overgenomen. Wie nu iets te zeggen heeft, zegt het op Medium.com. Wie een punt wil maken, doet het op Twitter. Wie een latte drinkt, zet het op Instagram. En als je echt niets te zeggen hebt hebben we Snapchat nog. Het weblog is dood.

Tegelijkertijd komt het dus ook weer een beetje terug, merk ik. Daar las ik laatst over, op een blog, maar omdat ik toen zelf niet blogte heb ik de url niet opgeslagen. Anders waren hier dus linkjes, weet je nog, van die zinnen met alleen maar linkjes. Maar ook merkte ik dat Walter van den Berg weer stukjes schrijft, de laatste tijd. Het weblog zal wel nooit meer zo springlevend worden als het ooit was, maar het is nog niet weg. Leve het weblog.

Diezelfde Walter van den Berg schreef daar laatst ook iets over in zijn nieuwsbrief, waar ik door de vorm (als e-mailnieuwsbrief) niet naar kan linken. Hij vond dat de nieuwsbrief een veilige vorm was, juist omdat je er niet naar kan linken, en je dus ook geen risico loopt om viral te gaan met je domme gedachte. (Ik parafraseer er even op los.)

Ik zou zeggen dat een weblog in een bepaald opzicht ook nog veilig is wat betreft viral gaan. Viral ga je vooral op sociale media, op een blog heb je toch net iets meer controle over wanneer de content erop en vooral er weer af gaat. Het is opener dan een nieuwsbrief, maar dat is ook juist goed. De openheid van het web, weet je nog? Die is ook aan het afnemen. Maar hé, laten we die bewaren voor een ander keer.

Een andere keer. Want als ik mijn weblog dus een cadeau kan geven, voor deze tiende verjaardag, dan denk ik dat het vooral nieuwe stukjes zijn. Dat is een stukje vandaag, en hé, maandag nog een. Fijne verjaardag, weblogje van me!

Dan sluit ik af met iets dat toen je geboren werd nog niet bestond, maar nu op elke digitale verjaardag thuishoort: 🎉

Tosti

We zijn bij Tom thuis. Zijn moeder zei dat ze iets te eten zou maken, maar Tom liep direct naar boven. Ik heb nog vriendelijk ‘hoi’ tegen haar gezegd, omdat ik geleerd heb om beleefd te zijn. Volgens mij was het goed, want ze lachte nog even tegen me.

Tom zet de computer aan. Je ziet dat hij een gamer is aan de manier waarop hij achter de computer zit: zijn rechterhand op de muis, zijn linkerhand bij de W, A en D, duim op de spatiebalk, klaar om te schieten.

‘Ken je Unreal Deathmatch al?’

Tom kent alle spellen. Ik niet. Ik schud mijn hoofd. Tom voert zijn wachtwoord in.

‘Echt vet is die.’

Zijn bureaublad verschijnt. Het is een nogal blauwige afbeelding van een boogschutter. Het is nauwelijks een mens, maar ook geen bestaand dier. Je zou het een robot kunnen noemen, maar er zijn geen draadjes. Er verschijnen icoontjes op het scherm en Tom dubbelklikt op een rode schedel met hoorns. ‘UnReal DM’ staat eronder.

‘Die gaan we spelen,’ zegt Tom, terwijl het spel opstart. ‘We’ is in dit geval vooral Tom, vrees ik. Bij Mitch spelen we nog wel eens samen, maar hij heeft een Xbox. Op een computer kan er nou eenmaal maar één iemand de muis vasthouden.

Net als Tom op ‘start’ heeft geklikt, roept zijn moeder. ‘To-om, komen jullie? Er is tosti!’

‘Kutklote,’ mompelt Tom.


Beneden staan drie borden met tosti’s op tafel. Toms moeder zit al.

‘Daar zijn jullie dan,’ zegt ze.

‘Ja, ik moest toch even de computer uitzetten,’ zegt Tom terwijl hij aan tafel gaat zitten. Eigenlijk heeft hij nog een paar zombi’s neergeschoten en staat het spel nu op pauze, nadat zijn moeder nog twee keer had geroepen. Hij spuit ketchup op zijn bord. Ik ga zitten voor het laatste bord.

‘Toch niet weer zo’n schietspel hè?’ vraagt Toms moeder.

‘Nee hoor,’ zegt Tom. Hij neemt een hap van zijn tosti.

Ik kijk naar mijn tosti. Er zit ham op.

‘Ik geloof er niets van,’ zegt Toms moeder.

Ze neemt ook een hap. Tom haalt zijn schouders op.

Ik kijk naar mijn tosti. Dit is ham. Toms moeder kijkt me aan.

‘Is het niet goed?’

Ik schud mijn hoofd. ‘Nee hoor, is prima.’

‘Lust je geen tosti?’ vraagt Toms moeder.

‘Hij lust geen ham,’ zegt Tom.

‘Nee, ik lust het,’ zeg ik snel.

‘Maar je eet het nooit,’ zegt Tom. ‘Hij eet geen vlees.’

‘Hou je mond eens,’ zegt Toms moeder.

Tom spuit meer ketchup op zijn bord.

‘Mijn moeder is vegetariër,’ zeg ik.

‘O, dat wist ik niet,’ zegt Toms moeder.

‘Geeft niets,’ zeg ik en neem een hap van mijn tosti. Er zit ham op. Het voelt heel gek, ik weet dat dit een dier is en dat ik hem nu aan het opeten ben.

‘Maar jij bent geen vegetariër?’ vraagt Toms moeder.

‘Nee,’ zeg ik, hoewel dat strikt genomen niet waar is.

Tom kijkt weer op. ‘Ik heb je nog nooit vlees zien eten.’

Ik kijk naar mijn tosti. Tom heeft gelijk. Mijn moeder geeft me nooit vlees mee naar school. Bij de kerstmaaltijd had ze doorgegeven dat ik geen vlees at. Als enige kreeg ik een kaassoufflé, iedereen was jaloers.

‘Je mag het gewoon zeggen hoor,’ zegt Toms moeder, ‘dan maak ik een ander voor je, zonder ham.’

‘Nee,’ zeg ik, ‘ik wil het nu gewoon.’

Tom lacht. Zijn moeder kijkt hem aan.

‘Hij weet niet hoe vlees smaakt,’ zegt Tom. Ik kijk naar mijn bord.

‘Laat hem nou,’ zegt Toms moeder. ‘Je mag hem opeten als je wil, zeg het maar.’


Als ik thuis kom staat mijn moeder in de keuken.

‘Hoi Rick, hoe was het?’

‘Leuk,’ zeg ik, en gooi mijn tas in de hal.

‘Wat hebben jullie gedaan?’

‘Gewoon, spelletje.’

‘Leuk hoor. Blijf je hier? Het is zo klaar.’

Ik loop de trap op en ga op bed liggen. Mijn keel voelt raar. Mijn buik ook. Ik heb een dier gegeten. Mijn moeder roept. Ik blijf op bed liggen.