All posts by bart

Toerisme, god en de Mammon

Naar aanleiding van de voortdurende discussie over het massa-toerisme in Amsterdam (maar wat op zich ook een wereldwijd probleem is), schreef ik een klein stukje dat ingaat op de verhouding tussen het wonen en het toerisme; een stukje dat op 10 augustus in Trouw verscheen.


De discussie over het massa-toerisme in Amsterdam gaat fundamenteel over het wonen: hoe houden we de binnenstad bewoonbaar terwijl we de toeristenstroom in goede banen leiden?

Het grote verschil tussen bewoners en niet-bewoners van een stad heeft te maken met de verbondenheid die de eersten ervaren: een verbondenheid met hun gedeelte van hun stad, met hun buren en buurtbewoners. In en rondom hun woning verzamelt zich een conglomeraat van voorwerpen en situaties die voor hen een bepaalde betekenis hebben die voor toevallige passanten verborgen blijft: de speeltuin waar hun kinderen de lome zomermiddagen doorbrachten, de fijne bakker op de hoek, de irritante losliggende stoeptegel of de overlast veroorzakende buurman. Persoonlijke biografieën en gemeenschappelijke anekdotes vormen verhalen die samenhangen met de omgeving en die door de bewoners direct herkend worden. Door deze verhalen voelen zij zich hier werkelijk thuis.

De korte tijd die de toerist in de hoofdstad verblijft, is nooit lang genoeg om een vergelijkbare betekenisvolle relatie hiermee aan te gaan. Hij brengt er zijn jeugd niet door, ziet er zijn kinderen niet opgroeien en zijn moeder niet sterven. Zijn bezoek aan de Wallen of het Leidseplein vormt slechts een korte episode in het verhaal dat zich alleen voor hemzelf ontspint. Stoned over de Wallen naar de prostituees kijken staat op zijn ‘bucket list’, net als snorkelen bij het Great Barrier Reef.

Verbondenheid is volgens de Franse filosoof Michel Serres ook terug te vinden in de herkomst van het woord religie. Religie komt van het Latijnse ‘religare’, wat zoveel kan betekenen als ‘verbinden’ of ‘verzamelen’. De betekenis van religie, zo vervolgt Serres, komt echter pas goed naar voren, wanneer gekeken wordt naar het woord dat hier traditioneel tegenover gezet wordt: dat betreft niet ‘atheïsme’ maar ‘veronachtzamen’. Mensen voor wie de verbondenheid verborgen blijft, veronachtzamen het belang van de ander – omdat ze het niet als belang zien of herkennen. De toerist in Amsterdam is in deze zin de a-religieuze, omdat hij de belangen van de bewoner veronachtzaamt. Allereerst omdat hij diens verbondenheid met de buurt en de medebewoners ontbeert, maar ook omdat hij niet weet dat er überhaupt een ander belang dan het toeristische vermaak in het spel is.

Bezien door deze bril komt de discussie over het Amsterdamse massa-toerisme in een nieuw licht te staan, omdat dit de mogelijkheid opent hem te confronteren met de opmerking van Mattheüs dat je niet God én de Mammon kunt dienen. God staat in deze analyse voor het religieuze, namelijk het belang van de stadsbewoners: hun onderlinge verbondenheid, de waarde en betekenis die zij toekennen aan ‘hun eigen buurt’ en de verhalen die zij hierover kunnen vertellen. God dienen wil dus zeggen: de binnenstad bewoonbaar houden.

Ondanks de pogingen van het hedendaagse stadsbestuur om bijvoorbeeld airbnb aan banden te leggen en een vermindering van het aantal souvenirwinkels te bewerkstelligen, lijkt het er toch op dat hier vooral de Mammon gediend wordt. De grote toeristenstroom die sinds de economische crisis de weg naar Amsterdam heef weten te vinden, komt weliswaar de stadseconomie ten goede, maar gaat voorbij aan de verbondenheid en de verhalen die een stad zijn bewoonbaarheid geven.

Amsterdam staat voor een lastige keuze: óf ze zet in op bewoonbaarheid, wat ongetwijfeld gepaard zal gaan met vermindering van de inkomsten uit toerisme; óf ze zet in op toerisme, wat de bewoonbaarheid verder zal doen afnemen. Maar, zoals Mattheüs al stelt, beide aspecten evenveel waarde toekennen, dat zal niet lukken.

EP54: Religie en verbondenheid

Willow
In ‘Grave’, de laatste episode van seizoen zes van Buffy the Vampire Slayer, wordt Tara, de vriendin van Willow, door een verdwaalde kogel geraakt en vermoord. Zinnend op wraak zet Willow (inmiddels weer veranderd in Dark Willow) al haar magische kranten om de daders te doden. Pogingen van Buffy (en de rest van de Scooby Gang) om haar tegen te houden blijken vruchteloos en alleen de ineens teruggekeerde Rupert Giles lijkt nog een serieuze tegenstander te zijn. Giles, die in Engeland voorzien is van geheime krachten, gaat het gevecht met haar aan, maar lijkt uiteindelijk ook het onderspit te moeten delven; Willow, moegestreden maar niet verslagen, maakt gebruik van dit moment om die geheime krachten van Giles af te tappen (bij wijze van a little pick me up).

Door de combinatie van deze krachten (die van haarzelf en die van Giles) verkrijgt Willow een macht als geen sterveling ooit tevoren – een macht die zich manifesteert in de volledige verbondenheid die zij nu voelt, een verbondenheid met alles en iedereen. Zij voelt alle emotie, alle pijn. Ze is niet langer in staat het grote lijden van het zijn te negeren, maar wordt er juist door overrompeld en overweldigd. “It doesn’t have to be like this; you can stop it”, zegt Giles, maar de enige manier die Willow ziet om dit lijden te eindigen, is door de wereld te vernietigen.


Serres
Aan deze scene moest ik denken toen ik onlangs Michel Serres’ etymologie van religie las:

Men zegt dat het woord religie twee bronnen of oorspongen kan hebben. Ten eerste zou het kunnen teruggaan op het Latijnse woord ‘religare’, dat verbinden betekent. De tweede oorsprong zou religie herleiden tot ‘verenigen’, ‘verzamelen’. Maar nooit zeggen ze welk sublieme woord door de taal tegenover het religieuze wordt geplaatst, om het te ontkennen: onachtzaamheid. Wie geen religie heeft, moet zich niet atheïstisch of ongelovig noemen, maar onachtzaam. Het begrip onachtzaamheid zegt veel over onze tijd. (Serres 1992;75, geciteerd in Latour 2017;219)

Serres definieert hier religie op een negatieve manier: niet door te omschrijven wat het is, maar vooral door aan te geven wat het omgekeerde is. Vanuit dit licht bezien gaat religie over samenleven en gemeenschappelijkheid, over empathie en mededogen, over de mogelijkheid zelf de pijn en het lijden van de ander te voelen. Het gevoel dat Willow in extreme mate ervaart, kunnen we allemaal herkennen, wanneer bijvoorbeeld iets of iemand die ons na aan het hart staat iets wordt aangedaan of overkomt – een gevoel dat ons ervan weerhoudt de ander te veronachtzamen. Dit gevoel krijgt een religieuze component, wanneer we het uitbreiden naar mensen die we niet kennen, maar waarmee we ons wel verbonden voelen. Op die manier ontstaat er een samenleving die groter is dan de directe bloedlijn; een samenleving die, in de woorden van Benedict Anderson, imaginair is.

Vanuit de archeologische record is aannemelijk te maken dat het ontstaan van grotere (en complexere) samenlevingen gepaard gaat met het ontstaan van religie, met het ontstaan van goden (zie vooral Cauvin 1995). Door het oprichten van gemeenschappelijke monumenten en het creëren van een gemeenschappelijke iconografie ontstaat een waardensysteem dat zowel geografische als chronologische beperkingen doorbreekt – het verbindt ons met onbekenden uit een ander gebied, maar ook met onze voorouders en nakomelingen (Watkins, 2008). Het fundamentele aspect van het religieuze wereldbeeld, de grote verdienste hiervan, is dus verbondenheid, een gevoel van verantwoordelijkheid voor het andere, het jezelf in een gedeelde wereld zien.

The great merit of traditional religious world-views (which naturally must be distinguished from their role in the legitimation of specific systems of domination and exploitation) has been their concern with man-in-the-cosmos, an as species being, and the contingency of life. (Anderson 1983;10)

Nietzsche
Deze analyse van religie geeft een ander inzicht in de gevolgen van de dood van God, zoals die door Nietzsche is verkondigd. Binnen het wetenschappelijk wereldbeeld, met het daaraan gekoppeld individualisme dat ons via Descartes, Locke en Kant is overgeleverd, is geen plaats voor een betekenis die zich onttrekt aan kwantificeerbaarheid (zie ook Dreyfus and Taylor 2015;25). De ‘messen van de wetenschap’ hebben niet alleen God gedood, maar tevens (of als gevolg van die theocide) het verband tussen de mens en de kosmos doorgesneden. Er is geen verbondenheid meer met de onbekende ander, geen gevoel meer van een gedeelde verantwoordelijkheid, geen beeld meer van de mens als onderdeel van een grotere kosmos. De door de wetenschap aan zichzelf overgeleverde individuele mens vind geen betekenisvolle antwoorden meer op vragen die betrekking hebben op de menselijke conditie (en Willow haar grote lijden). De verdienste van het religieuze wereldbeeld, zoals hierboven beschreven door Anderson, staat dan ook duidelijk tegenover de grote zwakte van het positivisme:

The great weakness of all evolutionary/progressive styles of thought, not excluding Marxism, is that such questions [concerning the burden of human suffering] are answered with impatient silence (ibid.)

Dit verschil in metafysica (Anderson spreekt in een voetnoot over the abyss between protons and the proletariaat) is minder triviaal dan het op het eerste gezicht misschien lijkt. Het verdwijnen van een gemeenschappelijk grond en een gevoel van verbondenheid leidt er toe dat we alles wat niet direct in ons eigen belang is veronachtzamen – een proces dat door het marktdenken en de kapitalistische metafysica de laatste paar decennia in een stroomversnelling is geraakt. Wanneer God dood is, zo verzucht broer Ivan Kazamarov, dan is alles gepermitteerd (Dreyfus and Kelly, 2015;44). Het uithollen van de verzorgingsstaat, de onverantwoordelijke omgang met onze leefomgeving en de misstanden in de bio-industrie zijn slechts drie voorbeelden van de geperverteerde gevolgen van dit proces… het begrip ‘onachtzaamheid’ zegt inderdaad veel over onze tijd.

Nietzsche meende dat het wetenschappelijk wereldbeeld en het individualisme uiteindelijk tot een betere, sterkere mens zou leiden, dat we ons leven eindelijk in vrijheid en vreugde zouden kunnen leven. De mens die de nieuw herwonnen vrijheid niet aan zou kunnen, die heimwee zou krijgen naar vaste grond onder zijn voeten, zou eenvoudig uitsterven; de enige manier om als soort te overleven is wanneer elk individu zelf een soort god zou worden – een god met vergelijkbare krachten als Willow heeft aan het eind van seizoen zes.

Willow
De macht die Willow ervaart heeft weliswaar tot gevolg dat ze zich verbonden voelt met alles en iedereen, maar ook dat ze zich om die reden geroepen voelt een eind te maken aan het grote lijden – om, in haar eigen woorden, de wereld te redden. De enige mogelijkheid die ze daarvoor ziet, is door alles te vernietigen (by destroying it; it’s the only way). In het licht van het bovenstaande is het mooi om te memoreren dat het uiteindelijk Xander is die deze radicale oplossing een halt toeroept – niet met geweld, maar door te appelleren aan hun verbondenheid door vriendschap en door liefde.

Literatuur
Anderson, B., 1993, Imagined Communities. Verso
Cauvin, J., 1995, Naissance des divinités, naissance de l’agriculture. CNRS Éditions
Dreyfus, H. and S.D. Kelly, 2011, All Things Shining. Reading the Western Classics to Find Meaning in a Secular Age. The Free Press.
Dreyfus, H. And C. Taylor, 2015, Retrieving Realism. Harvard UP.
Latour, B., 2017, Oog in oog met Gaia; acht lezingen over het Nieuwe Klimaatregime. Vertaald uit het Engels door Rokus Hofstede en Katrien Vandenberghe. Octavo
Serres, W., 1995, Het contract met de natuur. Vertaald uit het Frans door Roel Kaptein en Robert Lemm. Kok Agora.
Watkins, T., 2008, “Supra-regional networks in the Neolithic of southwest Asia.” In: J. World Prehistorie 2008:21, pp.139-171.

Javascript Frameworks

Op 6 en 7 maart 2018 was het Nederlands InformaticaOnderwijsContres in Leeuwarden. Ik hield daar een praatje over Javascript Frameworks, waarbij ik inging op de vraag of hier sprake was van wildgroei of van gezonde diversiteit.

Om dit praatje goed te funderen had ik vanuit verschillende bronnen een boel data verzameld en die met elkaar in verband gebracht. Op die manier schetste ik een aardig beeld van de hedendaagse situatie met betrekking tot de JS frameworks. Ik concludeer uiteindelijk niet zo gek veel, maar breek wel een lans voor de gedacht dat je niet zomaar een framework in moet zetten, maar dat het nuttig is om eerst te kijken of JS niet zonder meer kan doen wat je wilt.

De presentatie zelf is hier te downloaden. Ik heb ook alle data als csv-bestanden beschikbaar.

EP53: Oud en Nieuw

1.
Tegen het eind van de prachtige film La Grande Bellezza (Sorrentino, 2013) kijkt Romano (een rol vertolkt door Carlo Verdone) terug op zijn leven van Storm und Drang, waarin hij misschien niet de grote hoogten heeft weten te bereiken die hij voor zichzelf had voorzien:

Ho trascorso tutte le estate della mia vita
a fare propositi per settembre.
Ora non più.

Ora passo l’estate a ricordare i propositi che facevo
e che sono svaniti – un po’ per pigrizia un po’ per dimenticanza.

Che cosa avete contro la nostalgia, eh?
É l’unico svago possibile per chi non crede nel futuro. L’unico!

Senza pioggia, agosto sta finendo.
Settembre non commincia.
E io sono cosi ordinario, ma non c’è da preoccuprasi.
Va bene. Va bene cosi…

In plaats van het opnieuw plannen maken voor het komende jaar, vindt hij nu zijn plezier in het terugdenken aan de plannen die hij ooit heeft gemaakt, en waar niets van terecht is gekomen. Het is deze nostalgie die het enige plezier (l’unico svago possibile) is voor hen die niet in de toekomst geloven. Het enige.

2.
December is de nostalgische maand bij uitstek. Vanaf onze bevoorrechte positie in deze laatste maand hebben we een overzicht op de gebeurtenissen die slechts twaalf maanden geleden nog in de toekomst lagen. Een nieuw jaar heeft plannen voor ons, en wij hebben plannen voor het nieuwe jaar. Allemaal plannen en ideeën die in de waan van alledag ondergesneeuwd zullen raken, die door de werkelijkheid teniet zullen worden gedaan, of die eenvoudigweg zullen verdwijnen – un po’ per prigrizia, un po’ per dimenticanza. Maar nu staan we nog even met onze rug naar het nieuwe jaar en blikken nog één keer terug op het afgelopen jaar, voordat ook dit weer tot de geschiedenis behoort.

Dit doet denken aan Benjamins analyse van Angulus Novus van Paul Klee. Op dit schilderij zien we een engel met gespreide vleugels en een weidse blik naar de aanschouwer gekeerd, van wie hij zich lijkt te verwijderen. Benjamin ziet hierin de engel van de geschiedenis, die met zijn gezicht naar het verleden alle ellende en catastrofes voor zich ziet opstapelen. De engel zou stil willen blijven staan, de doden weer tot leven wekken en de brokstukken van de geschiedenis weer helen. Maar de storm die uit het paradijs waait, blaast hem continu verder, zonder respijt en zonder rustmoment. Deze storm, zo stelt Benjamin, is wat wij vooruitgang noemen.

Deze engel lijkt niet nostalgisch, hij lijkt geen plezier te vinden in het terughalen van alles wat is bedacht en gebeurd. Zijn blik is eerder verbaasd en verontrust. Maar toch kan hij zich niet omdraaien; de storm uit het paradijs houdt zijn positie gericht op het verleden waardoor hij de onbekende toekomst altijd met de rug tegemoet zal treden – wat ook logisch is, want wat de toekomst voor ons in petto heeft, weten we niet.

“De vooruitgang bestaat niet”, schijnt Gerard van het Reve ooit gezegd te hebben, “en dat is maar goed ook, want zoals het is, is het al erg genoeg.” Voor hen die niet in de toekomst geloven is de vooruitgang, de storm die uit het paradijs waait, niet (of niet per se) een verbetering. Zij zien dat wat hen vertrouwd of dierbaar is afbrokkelen of vernietigd worden. Zij vinden hun plezier in het terugdenken aan wat ooit was, of wat ooit had moeten zijn. Hun blik is gericht op een geromantiseerd beeld van henzelf en op de toekomst van hun verleden.

3.
Januari is genoemd naar de Romeinse god Janus: de god met de twee gezichten: de god van het begin en van het einde. Het ene gezicht van Janus is gericht op het afgelopen jaar, dat nog zijn invloeden doet gelden; het andere gezicht staat naar de onzekere toekomst. De oliebollen en champagne zijn geconsumeerd en de feesten van de donkere dagen zijn voorbij. Het vuurwerk en het lawaai waarmee het nieuwe jaar wordt ingeluid, vormen de culminatie van één of twee weken opgebouwde verwachtingen, als een ingehouden orgasme dat eindelijk tot uiting kan komen. Door de stilte en afwachtende houding die de samenleving tussen kerst en oud en nieuw kenmerkt, is de geest in een nostalgische, inerte toestand terecht gekomen; de kou en de donkerte veranderden hem als het ware in een blok ijs, dat slechts met raketten van vuur (het vuurwerk, de ‘vuurspeer’) losgeslagen kan worden.

Waar december oproept tot nostalgie, staat januari in het teken van het nieuwe. De nieuwe mogelijkheden, nieuwe beloften, maar zeker ook nieuwe onzekerheden. December is een afsluiten, januari een openen. Zelfs de nostalgische mens ziet zich bevrijd van een geoorloofd, zelfs gefaciliteerd terugblikken (denk alleen maar aan al die terugblikken die de kranten en radio in de laatste week van het jaar bieden), en kan weer met frisse tegenzin de toekomst tegemoet. Met de blik naar het verleden gericht, voortgeduwd door de storm die niet te stoppen is.

Der du mit dem Flammenspeere
Meiner Seele Eis zertheilt,
Dass sie brausend nun zum Meere
Ihrer höchsten Hoffnung eilt.
Heller stets, und stets gesunder,
Frie im liebevollsten Muss; –
Also preist sie deine Wunder,
Schönster Januarius.
(Nietzsche, Januari 1882)

Het opzetten van nginx op os-x

Introductie
Nu we bezig zijn met het opzetten van een nieuwe server, vond ik het een mooi moment een oud flask/sqlalchemy weer wat nieuw leven in te blazen. Dit projectje is volgens de git-logs een jaar geleden tot stilstand gekomen, vlak voordat ik een eerste versie in productie wilde zetten. Ik had toen geen zin (want tijd maak je wel als je zin hebt) om uit te zoeken hoe dat exact moest en daarna is het in de dagelijkse drukte ondergesneeuwd.  Maar die nieuwe server was een mooie aanleiding om een maandagavond op te offeren om er eens goed voor te gaan zitten.

Flask en nginx
Flask levert een ingebouwde server mee, maar die is niet geschikt voor productiedoeleinden. Je kunt met mod_wsgi apache wel configureren om flask te serven, maar gebruikelijk is het om hiervoor de server ngnix te gebruiken. Ik had al bedacht dat als ik de applicatie via ngnix op poort 8080 (of zo) zou kunnen laten draaien, dat het dan relatief eenvoudig zou moeten zijn om dat via apache weer door te sluizen (maar dat is voor later zorg).

Voordat ik deze architectuur op de productieserver ging opzetten, wilde ik eerst eens alle noodzakelijke stappen op mijn eigen mac uitproberen en documenteren (en deze blog schrijven). Ik had al geruime tijd geleden een vrij goede tutorial gevonden, maar die is wel bedoeld voor Ubuntu en ook op details wat achterhaald. Dus ben ik zelf maar aan de slag gegaan, met die tutorial als basis.

Vreemd genoeg kon ik geen package manager voor OS-X vinden die ngnix kon downloaden. Zowel pip3 als easy_install als brew gaven aan dat ze geen distributie hiervoor konden vinden. Dus toen maar gewoon de tarball gedownload en zelf de boel installeren. De eerste configuratie ging echter mis, omdat ik iets vergeten was:

./configure --sbin-path=/usr/local/nginx/nginx  --conf-path=/usr/local/nginx/nginx.conf   --pid-path=/usr/local/nginx/nginx.pid   --with-http_ssl_module

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

Ook best logisch, want zoals de meeste webservers maakt ook nginx uitgebreid gebruik van reguliere expressies voor rewrite en dergelijke. Het is mogelijk om nginx te installeren zonder pcre, maar het is beter om ze wel mee te nemen. Dus eerst dat maar installeren, waarbij het wel van belang is dat je onthoudt wat je als prefix meegeeft, want die heb je later weer nodig bij de configuratie van nginx zelf:

$ cd pcre-8.41
$ ./configure --prefix=/usr/local
$ sudo make install

Nu kunnen we nginx goed configureren:

$ ./configure  --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.41
$ make
$ sudo make install

Als je de boel dan wilt opstarten, kun je een foutmelding verwachten: nginx luistert standaard naar poort 80, maar ik heb (zoals de meeste mensen) ook apache al draaien die ook naar die poort luistert:

$ sudo /usr/local/nginx/nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] still could not bind()

Eenvoudig de configuratie aanpassen, waarbij je de poort naar 8080 zet; dan werkt het.

nginx en uWSGI
In principe kan nginx alleen maar statische bestanden serven. Om python uit te kunnen laten voeren en het resultaat daarvan te serven heb je uWSGI nodig. Vreemd genoeg kon ik die wel gewoon met pip3 installeren:

$ pip3 install uwsgi
Collecting uwsgi
Downloading uwsgi-2.0.15.tar.gz (795kB)
100% |████████████████████████████████| 798kB 712kB/s
Installing collected packages: uwsgi
Running setup.py install for uwsgi ... done
Successfully installed  uwsgi-2.0.15
$

Voor deze test had ik een eenvoudige flask applicatie geschreven in de directory /Sites/flask/. Om nginx en uWSGI aan elkaar te knopen, veranderde ik eerst opnieuw het config-bestand van de eerste om hem naar de juiste directory te verwijzen:

server {
  listen       8080;
  server_name  localhost;
  charset utf-8;

  location / { try_files $uri @the_application; }
  location @the_application {
    include uwsgi_params;
    uwsgi_pass unix:/Sites/flask/demoapp_uwsgi.sock;
  }

Nu krijgen we een foutmelding; dat verwachtte ik ook, want dat .sock bestaat nog niet, omdat we uWSGI nog niet geconfigureerd:

De configuratie van uWSGI doen we via een .ini-bestand in de directory waar nginx naar kijkt, dus /Sites/flask/. Hier kopieerde ik voornamelijk de code in die in de tutorial staan, met wat voor zichzelf sprekende aanpassingen. Nu kunnen we de boel opstarten met

sudo uwsgi --ini demoapp_uwsgi.ini

Twee verschillende versies
In principe zou dit moeten werken, maar er gebeurde niks. Pas toen ik de error-logs keek, zag ik dat er bij het opstarten van uWSGI een foutmelding kwam:

ModuleNotFoundError: No module named 'encodings'

Het blijkt dat de python-versie die gelinkt is aan uWSGI dezelfde moet zijn als de versie die op het os draait. Stom genoeg draai ik nog standaard 2.7 (hoewel ik alles allang in 3.6 doe). Het makkelijkste is om even een virtuele omgeving op te zetten met de juiste python-versie en dan van daaruit uWSGI op te starten. Het enige is dat ik dan alle dependencies daar weer in moet installeren, maar dat is voorlopig alleen Flask dus dat valt wel mee.

$ source venv/bin/activate
(venv) argentina-minor:flask bart$ sudo uwsgi --ini demoapp_uwsgi.ini
Password:
[uWSGI] getting INI configuration from demoapp_uwsgi.ini

Nu hebben we eindelijk het gewenste resultaat (let op het poortnummer):

De volgende stap
De volgende stap is dit alles als achtergrondproces te laten draaien, maar dat is een volgend projectje. Ik ga eerst proberen deze zelfde stappen op de productieserver uit te voeren.

EP53: De fiets en de weg

Op de eerste zondag in oktober wordt in de Chianti de zogenaamde Eroica gefietst: een wielerevenement dat poogt de sfeer van de beginjaren van de wielersport op te wekken. De deelnemers dragen wollen tricots of vergelijkbare kleding en rijden op fietsen van ten minste dertig jaar oud: fietsen waarvan de pedalen voorzien zijn van toeclips in plaats van moderne cliplesspedalen en waarbij het schakelen gebeurt door klassieke handles op het frame, in plaats van met schakelaars die in de remmen zijn geïntegreerd. Een enkeling fietst zelfs volledig in stijl op een echt oude fiets en moet aan de voet van een beklimming zijn achterwiel omdraaien om een ander verzet te bewerkstelligen. Op de route zijn verschillende rustpunten, en in plaats van moderne gels en snelle suikers kunnen de deelnemers hier genieten van brood, kaas, ham, fruit en diverse jams. En wijn – het is tenslotte de Chianti.

Rustpunten met normaal eten in plaats van hedendaagse sportvoeding.

Vanzelfsprekend loopt de te volgen route niet, of in ieder geval zo min mogelijk, over regulier asfalt of beton – het grootste deel van de dag fietsen we over zogenaamde witte wegen (strade bianche): onverharde wegen waarvan het wegdek bestaat uit kiezelstenen, gravel, of gewoon aangestampt zand, af en toe aangevuld met grote stukken steen. Wegen die in ieder geval een goed beeld geven van hoe wegen er in vroeger tijden uit hebben moeten gezien, voordat de hele wereld voorzien werd van een laag asfalt. Meer dan hedendaagse wegen volgen deze strade bianche de vorm van de omgeving waar ze zich in bevinden. De weg van Murlo naar Bibiano, bijvoorbeeld, voert langs landerijen, rivieren en over heuvelruggen: hij vormt één geheel met het landschap en gaat daar ook in op.

Het rijden over dergelijke wegen appelleert aan heel andere capaciteiten dan het reguliere fietsen zoals van het station naar je werk. Vaak zijn beklimmingen te stijl en de te volgen weg te rommelig om met het beschikbare verzet te overwinnen. Afstappen en met de fiets aan de hand omhooglopen is dan ook aan de orde van de dag. Maar het is vooral tijdens het afdalen dat de weg zichzelf doet gelden. De kiezels, het zand en de helling zijn blijkbaar dusdanig imponerend dat veel coureurs ervoor kiezen om de afdaling zo langzaam mogelijk te voltooien. Met dichtgeknepen remmen schuifelen ze over de weg in een poging complete controle te houden en rationeel tot elke beweging te kunnen besluiten.

Veel beklimmingen zijn te stijl om tegenop te fietsen.

Al vrij vroeg op de dag merk ik echter, mede op advies van mijn fietsmaat M (die ook ervaring heeft met mountainbikes), dat snelheid de afdaling juist eenvoudiger maakt. Wanneer je door een bak met kiezelstenen moet fietsen, kun je dat beter op relatief hoge snelheid doen: dit creëert een bepaald spoor door de kiezels, en door het toegenomen gyroscopisch effect is het ook lastiger om van het gebaande pad af te wijken (en dus om te vallen). Indicatief hiervoor is dat de schuifelaar de afdaling zwierend en zwalkend voltooit, terwijl de snelle mannen en vrouwen een zekere nonchalance uitstralen – hoewel ze zeer geconcentreerd zijn.

Na een aantal van dergelijke afdalingen valt me op dat mijn fiets als het ware vanzelf zijn eigen route over de weg begint te creëren. Vanzelfsprekend geldt dit voor het volgen van het spoor dat al door mijn voorgangers is gevormd, maar in toenemende mate gaat de fiets automatisch in de richting van stukken weg die goed begaanbaar zijn, of waar ik weinig last heb van mijn medeweggebruikers. Ik ben steeds minder betrokken op het rijden, maar kan me verlaten op de dialoog die ontstaat tussen de weg en mijn fiets – een dialoog die kan ontstaan door het bijzondere karakter van de individuele strada biancha. En hierin manifesteert zich een interessant onderscheid tussen deze wegen en de meer reguliere asfaltweg.

Dalen over een witte weg gaat het beste wanneer je de weg de weg laat zijn.

Een hedendaagse asfaltweg is isotroop en homogeen: wanneer ik daar op fiets is de weg hier niet wezenlijk verschillend van de weg tien kilometer verderop. Natuurlijk kunnen helling en omgeving verschillen, maar de weg zelf doet er schijnbaar niet toe. In mijn activiteit van fietsen verdwijnen zowel de fiets als de weg volledig uit het beeld – pas bij een plotseling gat in de weg of bij een lekke band dringen zij zich aan mij op. Bij de strade bianche is dat anders: door hun vorm en hun ligging zijn deze allemaal bijzonder en uniek, en ook binnen de straat zelf zijn er nog geen tien meter hetzelfde. De kiezels hier en de stenen daar geven deze weg een uniek karakter dat hem onderscheidt van alle andere wegen in de wereld.

Tijdens het fietsen bedenk ik me dat de fietsers die tijdens het afdalen hun remmen zo hard dicht blijven knijpen, deze uniciteit van de weg niet erkennen. Zij proberen de weg onder controle te krijgen en negeren daarmee zijn bijzondere karakter. Voor hen is de afdaling eerder een gevecht dan een dialoog; zij zien de weg als een lastig obstakel dat overwonnen moet worden – iets dat staat tussen hier en de meet. In opperste concentratie proberen ze elke oneffenheid, elke kuil of elke bobbel te omzeilen. Hun sturen is continu betrokken op de weg; het technisch artefact waarmee ze het gevecht zijn aangegaan (de fiets) is ondergeschikt aan hun wil en dient onverwijld en onmiddellijk gehoor te geven aan elke (rationele) beslissing die ze aan hem opdringen. Niet voor niets spreken ze naderhand over de berg of de heuvel die ze hebben ‘overwonnen’.

De – schijnbare – nonchalance waarmee de snellere fietsers afdalen, vindt zijn oorspong in het feit dat zij de weg de ruimte geven om de weg te zijn. In de afdaling laten zij de weg tot de fiets spreken, en die fiets reageert op zijn beurt weer op wat de weg te vertellen heeft. In tegenstelling tot de vechters, die hun wil aan de fiets opdringen, volgen deze coureurs juist de fiets, die in dialoog met de weg zijn eigen route definieert. Zij laten de weg de weg en de fiets de fiets zijn, om in de ruimte die hierdoor geopend wordt de meest voor de hand liggende route te volgen. Hun sturen is continu betrokken op wat de fiets hun ingeeft, waarbij de ze eigenheid van de weg erkennen en accepteren. In mijn omgeving hoorde ik mensen ook spreken over een ‘chagrijnige’ weg, of een ‘vriendelijke’ weg.

Een close-up van zo’n witte weg geeft een goed beeld van de helling en de uniciteit van het wegdek.

Vallen kan natuurlijk altijd, en voorzichtigheid blijft dan ook geboden. Maar als mijn persoonlijk observatie iets waard is (wat misschien, gezien een mogelijke cognitieve bias, onwaarschijnlijk is), lijkt het er toch op dat je bij het rijden over strade bianche beter de weg de ruimte kunt geven om de weg te zijn, dan dat je het gevecht hiermee aangaat: ik heb meer mensen onderuit zien gaan doordat ze te langzaam reden dan doordat ze te snel reden. Maar de grootste plas bloed zag ik liggen in een scherpe bocht in een reguliere asfaltweg: het gemak van de isotropie en de hybris die daar het gevolg van is, blijven nog altijd het gevaarlijkst.

De kapotte mac-adapter

Omdat ik maar één oplader voor mijn macbook air heb, neem ik die al een paar jaar opgerold mee in mijn reis tussen Sneek en Groningen en weer terug. Hoewel dat oprollen natuurijk niet zo goed is voor die kabel, functioneerde het apparaat nog altijd prima. De kabel begon de laatste paar maanden aan de adapter-kant wel wat scheuren te vertonen, en tijdens het opladen werden zowel de adapter als de plug bijzonder warm, maar niets om me echt druk over te maken – niets wat een beetje ducttape niet op kon oplossen.

Niets wat een beetje ducttape niet op kan lossen.

Tot afgelopen weekend het opladen echt ophield. De kabelbreuk die ik al langer vermoedde aan de adapterkant was inmiddels blijkbaar zó groot, dat ik er slechts met veel kunst- en vliegwerk (en nog meer ducttape) voor kon zorgen dat mijn air nog opgeladen werd. Tijd voor een echte oplossing.


Fiary dust and unicorns
Bij normale computers en andere elektrische apparaten kun je gewoon de adapter openschroeven en er een nieuw kabeltje in solderen. Of desnoods koop je voor een klein bedrag een nieuwe adapter. Maar Apple heeft in al haar wijsheid besloten om een heel eigen plug te gebruiken voor de stroom-aansluiting van haar laptops (de zogenaamde MacSafe) en het verder volstrekt onmogelijk te maken hier zelf onderhoud aan te plegen. En een nieuwe adapter kost zo’n negentig euro – wat veel geld is om een eenvoudige kabelbreuk op te lossen.

Deze situatie is vergelijkbaar met de vijfhoekige schroeven die gebruikt worden om de laptops dicht te houden, en waar je dus een speciale schroevendraaier voor nodig hebt. Hierover heb ik op stackoverflow wel eens geschreven dat dat is ‘to protect all the unicorns and fairy dust that the machine runs on’. Het business-model van Apple is om redelijk goed spul te maken, maar om het verder onmogelijk te maken hier regulier onderhoud op te plegen: het geheim van de black box zorgt ervoor dat mensen denken dat het allemaal magie is wat er gebeurt; iets waar alleen Apple Geniuses (really?) als een soort magiërs mee om weten te gaan.

Het openen van de adapter
Online had ik een aantal blogs gelezen van mensen die erin waren geslaagd de kabel van de mac-adapter te vervangen. Het is in theorie ook niet zo moeilijk: de enige uitdaging zit hem in het open krijgen van die vermaledijde adapter. Maar ook dat was die mensen uit die blogs gelukt, dus blijkbaar moet het kunnen.

De adapter in de bankschroef en slopen maar.

Om dit voor elkaar te krijgen plaatste ik het ding in de bankschroef en ging met een punttang aan het werk. Initieel was daar geen beweging in te krijgen, maar nadat ik me een Stanley-mes de naden had bewerkt, gaf hij zich zowaar aan één kant gewonnen.

Helaas ging de andere kant minder eenvoudig. Uiteindelijk lukte het me pas na grof geweld, waarbij behalve de punttang en het mes ook een schroevendraaier en zelfs een kleine beitel aan te pas zijn gekomen. het apparaat open te krijgen. Niet alleen de naden bleken vastgelijmd, maar ook de behuizing op de elektronica. Tijdens dit werk had ik al bedacht dat een re-assemblage naderhand onmogelijk zou zijn, en dat ik de elektronica in een geseald boterhambakje zou stoppen – dat leek me ook nog wel grappig.

Eenmaal open bleek de elektronica aan de behuizing te zijn vastgelijmd.

Een eenvoudige oplossing
Het bleek evenwel dat de kabel gewoon twee aders had – niets bijzonders met twitsted pairs of iets vergelijkbaars. En het toeval wilde dat we nog een mac-adapter van een oudere computer (dus, vanzelfsprekend, met een andere MacSafe) in huis hadden. Dus in plaats van solderen kon ik gewoon mijn eigen MacSafe met behulp van een kroonsteentje aan die andere adapter monteren. Het was nog wel even spannend omdat het vermogen van beide adapters verschilde, maar na aansluiting laadde de computer op alsof er niets was gebeurd.

Een elegante en eenvoudige oplossing.

Kortom, in plaats van een nieuwe adapter (wat, behalve dat het geld kost, ook nog indruist tegen mijn principe van hergebruik) heb ik mijn probleem op kunnen lossen met een schaar, een reguliere schroevendraaier en een kroonsteentje van nog geen dubbeltje. Opnieuw blijkt dat weten hoe dingen werken je een bepaalde onafhankelijkheid en vrijheid verschaft. Nu nog eens kijken of ik die batterij in dit ding kan vervangen, want die begint ook wat kuren te vertonen…

De computer laadt weer prima op.

EP52: Communicatie 2 – taalgemeenschap

Het afzien van het individuele
Het ontstaan van een gemeenschap, wat in het Engels een community wordt genoemd, hangt samen met de mogelijkheid van communiceren: de overeenstemming over de mededeelbaarheid van een taal door sprekers van die taal vormt de grond op basis waarvan zij zich met elkaar verbonden voelen. Dit geldt uiteraard ook voor subculturen binnen eenzelfde taalgemeenschap: artsen, juristen, informatici of voetbalsupporters voelen zich met elkaar verbonden door hun specifieke dialect of jargon – en gebruiken dit ook om zich te onderscheiden van anderen. Iemand die het vocabulaire van een groep niet machtig is, zal altijd een buitenstaander blijven.

Opvoeding en onderwijs bestaan dan ook voor een groot deel uit het aanleren van dit specifieke vocabulaire. Hoewel een student zich daarvoor een stuk meer moeite voor moet getroosten dan een klein kind (Pinker 1994, pp.39ff.), is het eindresultaat hetzelfde: in staat zijn jezelf op onmiddellijke wijze verstaanbaar te maken en daardoor inherent onderdeel te vormen van de gemeenschap waarbinnen je je bevindt.

In het spreken zien we af van het individuele en het persoonlijke teneinde dit mededeelbaar te maken. Het overeenkomstige, de gemeenschappelijkheid van dit mededeelbare zorgt ervoor dat we door dit spreken een gemeenschap vormen: we zijn het eens over datgene dat door de taal wordt medegedeeld. Iets vergelijkbaars zien we gebeuren bij het netwerk van Chappe. Behalve goed weer en betrouwbare verrekijkers is overeenstemming over datgene wat met een bepaalde stand van de regulateur en de indicateurs wordt bedoeld essentieel voor de werking van het netwerk.

De verzenders en ontvangers vormen een gemeenschap van personen die dezelfde interpretatie toekennen aan de stand van de seintoren. Het grote verschil met de natuurlijke taal is evenwel dat deze toekenning van betekenis niet onmiddellijk verloopt. Er is daadwerkelijk eerst een bericht, een stuk tekst dat door iemand is bedacht en uitgewerkt. Deze tekst moet vervolgens worden omgezet in een serie geprotocolleerde (artificiële) codes die bij zowel de verzendende als de ontvangende partij bekend zijn (de operatoren van de tussenliggende semaforen waren onbekend met de betekenis van de codes die ze doorstuurden).

Aan de ontvangende kant worden deze codes weer terugvertaald in een stuk tekst om de betekenis van de boodschap te achterhalen. In tegenstelling tot natuurlijke taal is deze vorm van communicatie fundamenteel gemediteerd: het Chappe-netwerk was een medium.

Onderdeel van het protocol waarmee het Chappe-netwerk werkte.

Nationale eenheid
Patrice Flichy, socioloog en hoogleraar aan de Université Marne-la-Vallée, vertelt ons dat, hoewel het Chappe-netwerk primair militaire doeleinden diende (en het doorgeven van de winnende nummers van de nationale lotto, (Flicgy 1997, p. 33), er direct ook al een socio-economische werking aan werd toegekend. In het gebruik van dit medium ontstond een nationale ruimte waarbinnen een nieuwe tijdsrekening, nieuwe eenheden voor afstand en gewicht en een nieuwe algemene taal golden.

Behalve liberté, egalité en fraternité hanteerden de architecten van het nieuwe Frankrijk het trio rationalité, simplicité en universalité om de nieuwe tijd te kenschetsen (p.26). Het verdeelde Frankrijk van de laat achttiende eeuw moest tot een nationale eenheid gesmeed worden, waarbij iedere burger zich met zijn buurman verbonden voelde, dezelfde doelen nastreefde en dezelfde idealen koesterde. Individuele en regionale verschillen moesten daarvoor overboord gezet worden ten gunste van een simpeler en universeler systeem:

[Il s’agit de] supprimer les particularismes régionaux et de renforcer l’unité nationale en créant des divisions reposant sur une égalité spatiale ou démographique. (Flichy 1997, pp.21–22)

Een gemeenschap die het niveau van het dorp overstijgt kan niet ontstaan door de onmiddellijke gemeenschappelijkheid van het mededeelbare; hoe hard je ook schreeuwt, mensen aan de andere kant van de heuvel kunnen je niet horen en als ze je zouden kunnen horen is het niet vanzelfsprekend dat ze je kunnen verstaan of begrijpen. Een dergelijke gemeenschap kan alleen maar ontstaan en bestaan wanneer ze afzien van hun regionale details en eigenschappen, overeenstemming bereiken over waarden, betekenis en doelen, en een systeem bedenken en implementeren om deze waarden, betekenissen en doelen met elkaar te delen.

Om het mededeelbare te delen met mensen die zich buiten onze gehoorsafstand bevinden, om een gemeenschap te creëren die die van het dorp overstijgt, is een artificiële overdracht noodzakelijk – een overdracht die na Chappe in toenemende mate technologisch van aard werd. In het kielzog daarvan ontstond in de tweede helft van de negentiende eeuw de gedacht aan de maakbaarheid van de nationale eenheid, zoals fraai verwoord wordt door Zygmunt Bauman:

The nation-state owed its success to the suppression of self-asserting communities; it fought tooth and nail against ‘parochialism’, local customs or ‘dialects’, promoting a unifies language and historical memory at the expense of the communal traditions. (Bauman 2000, p.173)

Metrologische chaos
Het is dit project van het bouwen van een natie-staat waar de revolutionairen van 1789 zich mee bezig hielden. Ook zij zagen zich geconfronteerd met een wildgroei aan regionale dialecten, gebruiken, en gewoonten. Zo was er een grote diversiteit aan eenheden voor gewicht en afstand. Flichy beschrijft de situatie aan de vooravond van de Revolutie:

[On] était face à une véritable chaos métrologique. On mesurait des object différents avec des mesures différentes: les uns en pas, d’autres en coudées ou en pieds. Certaines mesures n’avaient pas d’objectivité physique. On mesurait la terre en fonction du nombre de journées de travail. Par ailleurs les mesures variaient d’une paroisse à l’autre. Sur certains marchés, on utilisait simultanément deus à trois systèmes de poids pour la mesure du blé. (Flichy 1997, p.25)

Deze metrologische chaos, de verschillende belastingen en heffingen die hierop werden geheven en het misbruik dat door de regionale overheden hiervan gemaakt, zorgden voor een toenemende sociale onrust die uiteindelijk mede verantwoordelijk was voor de Franse Revolutie in 1786 (Adler 2002). Gericht als zij waren op universalité, rationalité en simplicité was er hen veel aan gelegen de diversiteit aan onduidelijke en subjectieve maten, die gecontroleerd werden door monarchen of andere potentaten, te vervangen door een systeem dat de objectieve en meetbare eenheid van de aarde zelf als basis zou hebben.

De waarden die hiervan zouden worden afgeleid zouden overal in de Republiek hetzelfde betekenen en op eenzelfde manier gehanteerd zouden worden. Een kilo bloem zou in Parijs hetzelfde zijn als in Perpignan, een liter melk in Lille hetzelfde als in Lyon. Om de lengtemaat te objectiveren mat men de afstand van de pool door Parijs tot aan de evenaar en deelde dit door tien miljoen; een gebeurtenis die volgens schrijver Daniel Kehlmann met de nodige ceremonie gepaard ging:

[Humboldt] stond erbij toen in de motregen op een vertrapt grasveld buiten de stad het laatste segment van de lengtegraad gemeten werd die Parijs met de pool verbond. Toen het klaar was, namen allen hun hoed af en schudden elkaar de hand: één tienmiljoenste van de afstand werd in metaal gevat en zou de eenheid van alle toekomstige lengtemetingen worden. Men wilde haar meter noemen. (Kehlam 2013, p.34)

Literatuur
Alder, K. (2002). The Measure of all Things—The Seven-Year-Odyssey that Transformed the World. London: Abacus.
Bauman, Z. (2012), Liquid Modernity. Cambridge, UK: Polity Press.
Flichy, P. (1991). Une histoire de la communication moderne. Espace public et vie privée. Paris:La Découverte.
Kehlmann, D. (2006). Het meten van de wereld. Een filosofische avonturenroman over het leven van twee genieën. Vertaling uit het Duits door Jacq Vogelaar. Amsterdam: Querido.
Lidel Hart, B.H. (1948). The Other Side of the Hill. Germany’s Generals. Their Rise and Fall, with their own Account of Military Events 1939–1945. London:Cassel.
Pinker, S. (1994). The Language Instinct. Pinguin.
Visser, G.T.M.(1989). Nietzsche en Heidegger. Een confrontatie. Amsterdam:SUN.

Zie ook deze blog over het metrische stelsel, of deze blog over de emancipatie van het medium.

EP51: Communicatie 1 – de andere kant van de heuvel

Routers en semaforen
Over Arthur Wellesley, de eerste hertog van Wellington en de winnaar van de Slag bij Waterloo, gaat het verhaal dat hij heeft gezegd dat hij het grootste deel van zijn leven heeft gespendeerd aan het te weten komen wat er aan de andere kant van de heuvel gebeurt. Als militair en politicus bedoelde hij dit zowel letterlijk als overdrachtelijk: op het slagveld is het noodzakelijk te weten welke opstellingen er zich in het vijandelijke kamp bevinden en in de politiek moet je weten wat je opponenten denken en doen (Lidelhart, 1948, p.7).

Het is opmerkelijk dat deze uitspraak juist van de winnaar van Waterloo komt. Zijn opponent bij deze slag, Napoleon Bonaparte, was namelijk de zelf-gekroonde keizer van een imperium dat, als eerste in de wereldgeschiedenis, over een integraal en uitgebreid systeem beschikte dat hem in staat stelde nagenoeg direct informatie te verkrijgen over de situatie aan de andere kant van de heuvel: de optische telegraaf, uitgewerkt door Claude Chappe (1763–1805). Dit systeem van torens met houten seinconstructies er bovenop was uitgegroeid van één enkele verbinding tussen Lille en Parijs in 1793 tot een uitgebreid en landelijk geheel in 1815. Dankzij dit netwerk kon Napoleon in Parijs berichten ontvangen die slechts enkele uren daarvoor door zijn generaals aan de uiterste grenzen van het rijk verstuurd waren – een afstand die eerder slechts in dagen of weken overbrugd kon worden.

De snelheid en betrouwbaarheid van dit netwerk van Chappe kwam vooral voort uit zijn relatieve eenvoud. Een lijn in dit netwerk bestaat uit een aantal semaforen waarbij de ene semafoor op zo’n afstand van de volgende is geplaatst dat ze allebei met behulp van verrekijkers nog vanuit elkaar zichtbaar zijn. De seinconstructie van de semafoor bestaat uit een grote H-vormige constructie: een horizontale balk (régulateur) die vier posities kon innemen en haaks hierop twee verticale planken (indicateurs) die elk zeven posities konden innemen. Op deze manier had de totale constructie op elk moment één van 196 (7x7x4) posities.

De ‘bestuurder’ van een semafoor kijkt naar de voorgaande semafoor, neemt zijn positie over en houdt deze vast totdat hij heeft gezien dat de volgende semafoor dezelfde positie heeft ingenomen. Op deze manier wordt telkens één van de 196 tekens van Lille naar Parijs verplaatst. Hoewel dit ruim voldoende is om teksten alfabetisch – letter voor letter – over te brengen, ging men al snel over op een specifieke code, waarbij elke twee cijfers een bepaald woord op een bepaalde pagina in het codeboek representeerden. Omdat alleen de verzender en de ontvanger de beschikking hadden over dit codeboek, bracht deze verandering niet alleen een snellere maar tevens een veiligere overdracht van informatie teweeg. Indicatief voor het succes van deze methode is dat de semafoor tot 1850 in gebruik is gebleven (en in het nautische domein zelfs nog langer).

Het Chappe-netwerk in 1830.

Het primaat van de taal
Het uiteindelijke doel van het Chappe-netwerk is uiteraard niet nieuw. Mensen hebben altijd al de behoefte gehad aan gedetailleerde beschrijvingen van de situatie aan de andere kant van de heuvel: weten wat anderen bezighoudt of wie wat heeft gedaan en waarom; en dat niet alleen van mensen die zich elders bevinden, maar ook van onze directe dorps- en huisgenoten. Het is de taal die ons hiertoe in staat stelt en die, volgens taalkundige Stephen Pinker, bij onze soort hoort als het maken van een web hoort bij een spin:

People know how to talk in more or less the sense that spiders know how to spin webs. […] Some kinds of bats home in on flying insects using Doppler sonar. Some kinds of migratory birds navigate thousands of miles by calibrating the positions of the constellations against the time of day and year. In nature’s talent show, we are simply a species of primate with our own act, a knack for communicating information about who did what to whom by modulating the sounds we make when we exhale (Pinker 1994, pp.18–20).

Ondanks dat er veel discussie is over de vraag wanneer in de evolutie taal zich begon te ontwikkelen, en over de vraag of mensen de enige dieren zijn die een complex communicatiesysteem kennen (zie hierover op.cit.pp.342–354), is het duidelijk dat de evolutionaire ontwikkeling van homo sapiens niet los gezien kan worden van de evolutionaire ontwikkeling van de taal – en dat deze twee elkaar in grote lijnen versterken. Dankzij de taal kunnen kennis en kunde via een andere dan de evolutionaire weg aan volgende generaties worden overgedragen. Zaken die niet in de genetische opmaak vastgelegd liggen kunnen dieren alleen maar leren door experimenteren of door hun ouders na te doen. Mensen kunnen elkaar abstracte, theoretische of biografische situaties beschrijven en de oplossingen hiervan of leringen hieruit in de veilige omgeving van bijvoorbeeld het kampvuur met elkaar delen. Dankzij de taal zijn we in staat een zaak “in zo verstaanbaar mogelijke bewoordingen aan een ander” mede te delen (Visser, 1998, p.42).

Communiceren, het inzetten van taal, hangt samen met delen; het gaat in de taal om mede-delingen. In zijn Über Sprache überhaupt und über die Sprache des Menschen beschrijft Walter Benjamin taal dan ook in termen van mededeelbaarheid (Mitteilbarkeit). Hiermee maakt hij een onderscheid tussen de dingen zelf en de dingen voor zover ze mededeelbaar zijn. Doordat de taal altijd alleen maar de dingen uitdrukt voor zover ze mededeelbaar zijn, kan het niets uitdrukken dat niet al in de taal is. Taal, zo zegt Benjamin,

teilt das sprachliche Wesen der Dinge mit. Dessen klarste Erscheinung ist aber die Sprache selbst. Die Antwort auf die Frage: was teilt die Sprache mit? lautet also: Jede Sprache teilt sich selbst mit. Die Sprache dieser Lampe z.B. teilt nicht die Lampe mit (denn das geistige Wesen der Lampe, sofern es mitteilbar ist, ist durchaus nicht die Lampe selbst), sondern: die Sprach-Lampe, die Lampe in der Mitteilung, die Lampe im Ausdruck. Denn in der Sprache verhält es sich so: Das sprachliche Wesen der Dinge ist ihre Sprache.

De onmiddellijkheid van het mededeelbare
Omdat taal volgens Benjamin niets anders kan uitdrukken dan zichzelf, niets anders dat het talige mededeelbare, doet het dit op een onmiddellijke wijze (onmiddellijk in de zin van niet-middellijk): er is niet iets dat door middel van de taal wordt uitgedrukt, maar wat zelf niet talig is. (Dit overigens in schril contrast met wat populaire communicatie-theorieën verkondigen, die expliciet spreken van het versturen van een boodschap van een verzender naar een ontvanger – een opvatting die door Benjamin de burgerlijke opvatting van taal is gedoopt.) Het mededeelbare van het ding is niet het ding zelf. Er is geen boodschap die zich eerst vormt in het bewustzijn van een verzender, vervolgens overgezet wordt naar taal en via dat medium naar een ontvanger getransporteerd: de spreker en zijn toehoorders leren op hetzelfde moment wat er wordt gezegd:

Our thoughts come out of our mouths so effortlessly that they often embarrass us, having eluded our mental censors. When we are comprehending sentences, the stream of words is transparant; we see through to the meaning so automatically that we can forget that a movie is in a foreign language and subtitled (Pinker, 1994, p.21).

Deze onmiddellijkheid van het mededeelbare, de transparantie van de taal, geldt met name moedertaalsprekers van dezelfde taal. Iemand die louter spreekt in zijn eigen idiolect, of een mengelmoes van allerlei talen door elkaar gebruikt (zoals Jorge in In de naam van de roos), kan zichzelf slechts door grote inspanning van zijn toehoorders verstaanbaar maken. Moedertaalsprekers van dezelfde taal hebben meestal letterlijk aan een half woord genoeg om elkaar te verstaan. Dit kan gebeuren doordat zij delen in het mededeelbare: hun woorden drukken voor allen hetzelfde uit en zijn toegerust en accuraat voor de (fysieke) omgeving waarmee zij zich geconfronteerd zien (Pinker, 1994, pp.31f.).

Indicatief voor dit gemeenschap-stichtende aspect van taal is ook dat het Chappe-netwerk in het begin van de negentiende eeuw ook expliciet is ingezet voor het stichten en versterken van de nationele eenheid van Frankrijk. Dit vormt het onderwerp voor de volgende blog.

Statistieken uit een whatsapp-groep

Voor een project met een aantal studenten maakten we in het tweede semester van 2016/2017 gebruik van whatsapp voor de onderlinge communicatie. Gedurende dat semester werd er behoorlijk wat heen en weer gewhatsappt, maar toen het project eenmaal voltooid was (het had een behoorlijk strakke deadline in het weekend van 22 juli) droogde die stroom snel op. Omdat ik het jammer zou vinden als al die data verloren zou gaan, besloot ik de hele conversatie naar mezelf te mailen en eens aan een eenvoudige statistische analyse te onderwerpen.

Om de data aan jezelf te mailen kun je gebruik maken van de optie ‘Exporteer chat’ van whatsapp, die je te zien krijgt wanneer je op de gegevens van de whatsapp-groep zelf klikt. Helemaal onderaan, onder de lijst van de deelnemers, zie je deze optie (zie figuur).

De data die je dan opgestuurd krijgt, heeft een eenvoudig formaat: datum en tijd, afzender, en tekst – allemaal gescheiden door een dubbele punt gevolgd door een spate ': '. Op zich zou dit dus eenvoudig in mysql te laden moeten zijn. Hiervoor maakte ik even een tabel chat met drie corresponderende kolommen (genaamd wanneer, wie en wat) en probeerde de data in te laden:

load data local infile 
'/Users/bart/Desktop/wttv/wttv_chat.txt' 
into table chat fields terminated by ': ';

Dit gaf nog wel een zooi errors en warnings, maar belangrijker was dat bij inspectie bleek dat er in het datum-veld dingen als '2024-07-17 17:47:52' terecht waren gekomen. Op de corresponderende regel in de data zelf stond '24-07-17 17:47:52' en uit de context kon ik achterhalen dat dit een bericht betrof dat op 24 juli verstuurd was. Blijkbaar is het datum-formaat dus DD-MM-YY HH:MM:SS.

Het zou natuurlijk een optie zijn geweest om deze data in Excel op te ruimen, maar via deze link op stackoverflow kwam ik er achter dat het ook (eenvoudiger) via mysql zelf kon.

select str_to_date('24-07-17 17:47:52', '%d-%m-%Y %k:%i:%s');
+-------------------------------------------------------+
| str_to_date('24-07-17 17:47:52', '%d-%m-%Y %k:%i:%s') |
+-------------------------------------------------------+
| 2017-07-24 17:47:52                                   |
+-------------------------------------------------------+
1 row in set (0,00 sec)

Dus

load data local infile 
'/Users/bart/Desktop/wttv/wttv_chat.txt' 
into table chat fields terminated by ': ' 
(@var1, wie, wat) set wanneer=str_to_date(@var1, '%d-%m-%Y %k:%i:%s');

Query OK, 1619 rows affected, 271 warnings (0,03 sec)
Records: 1619  Deleted: 0  Skipped: 0  Warnings: 271

Een laatste probleem, wat ook al die foutmeldingen en warnings aan het begin had veroorzaakt, was dat er berichten in de data stonden waar een nieuwe regel in voorkwam; berichten zoals de onderstaande (ik heb de namen van de studenten in deze blog verzonnen):

11-07-17 11:52:34: Henk de Boer: I think it’s really important to see you all this Wednesday at 15:30
We’ll discuss the following:
- Decoration, fencing (Jan)
- Tents! Who has a tent, who needs one?
- What kind of tools does each group needs, how are we going to get them?
- Transportation
- Schedule at WTTV

Het mooiste is om even een scriptje te maken dat over alle regels van het bestand heengaat en dit soort regels tot één bericht samenvoegt: op die manier voorkom je vuile data en hou je de statistieken het meest accuraat. Om dit te bewerkstelligen kunnen eenvoudig kijken of de regel begint met twee cijfers (die van de datum namelijk); als dat niet het geval is, betreft het hoogstwaarschijnlijk een stuk tekst die over de regel is gelopen. Het onderstaande python-scriptje doet precies dat:

buffer = [];
previous_line = '';

with open('wttv_chat.txt') as f:
  for line in f:
    line = line.rstrip()
    if (line[:2].isdigit()):
      print(previous_line + ' '.join(c for c in buffer))
      previous_line = line
      buffer = []

    else:
      buffer.append(line) #buffering lines that belong to the same message

print(line) #otherwise the last line won't be printed.

Het enige probleem is dat er tijdens het festival op een gegeven moment een rooster werd verspreid waarin tijden staan waarop mensen aanwezig moesten zijn. Deze begonnen natuurlijk weer wel met twee cijfers aan het begin van de regel:

20-07-17 12:03:22: Karel de Graaf: VRIJDAG AANWEZIG  14.00 - 1.00
14.00 - 17.00 die-en-die studenten
17.00 - 20.00 andere studenten
20.00 - 22.00 nog een groepje
11.00 - 14.00 enzovoort

Dit gebeurde twee of drie keer, dus ik had het met de hand aan kunnen passen, maar programmatisch is natuurlijk altijd beter. Eenvoudig de check op regel 7 in het python-scriptje uitbreiden met het streepje dat na de timestamp komt:

if (line[:2].isdigit() and line[2]=='-'):

Er kwamen nu bij het laden nog wel een paar waarschuwingen, maar dat bleken opmerkingen te zijn van mensen die aan de groep waren toegevoegd – die konden we dus eenvoudig negeren. Voor de goede orde halen we die (en vergelijkbare) zooi er even uit:

delete from chat where wat is null;

Nu was de data alleszins acceptabel om de statistieken eruit te halen.

STATISTIEKEN
De meest eenvoudige query is natuurlijk om te kijken hoeveel appjes er in totaal zijn verstuurd
Hoeveel appjes zijn er in totaal verstuurd?

mysql> select count(*) from chat;
+----------+
| count(*) |
+----------+
|     3032 |
+----------+
1 row in set (0,00 sec)

Een ander interessant gegeven, dat eveneens makkelijk te achterhalen is, is wie er het meeste appt:

mysql> select count(*) as tot, wie from chat group by wie order by tot desc;

Wie heeft er hoeveel afbeeldingen en hoeveel video’s aan de groep toegevoegd?

mysql> select wie, count(*) from chat where wat like '%afbeelding%' group by wie order by wie;
mysql> select wie, count(*) from chat where wat like '%video%' group by wie order by wie;

Omdat dit een groep zeer gemotiveerde studenten betrof, was ik ook wel nieuwsgierig of je iets van die motivatie terug kon zien in de momenten waarop zoal berichten werden verstuurd. Omdat deze chat maar een half jaar heeft bestaan (ok, hij bestaat nog steeds, maar de analyse gaat over het voorbije half jaar), kon ik eenvoudig een check doen op de weeknummers:

mysql> select week(wanneer) as w, count(*) as total from chat group by w;
+------+-------+
| w    | total |
+------+-------+
|   11 |    12 |
|   13 |    32 |
|   14 |     6 |
|   15 |    24 |
|   16 |    32 |
|   18 |    58 |
|   19 |     4 |
|   20 |    28 |
|   21 |    52 |
|   22 |    12 |
|   23 |   182 |
|   24 |   236 |
|   25 |    16 |
|   26 |    76 |
|   27 |    52 |
|   28 |   776 |
|   29 |  1304 |
|   30 |   130 |
+------+-------+
18 rows in set (0,09 sec)

mysql>

Hier komt wel heel duidelijk naar voren dat week 29 de week is voorafgaand aan de strakke deadline van 22 juli: in deze week zijn verreweg de meeste berichten verstuurd, gevolgd door de week daarvoor. Het is nog interessant om te kijken wat er gebeurde in weken 23 en 24, want daar zijn ook veel meer berichten verstuurd dan gemiddeld (het gemiddelde is 3032/20 = 151 berichten per week, maar als we de uitbijters van week 28 en 29 negeren daalt dat naar zo’n vijftig berichten per week).

Minstens zo interessant is om te kijken naar de dagen waarop berichten worden verstuurd. Hier heb ik even een trucje moeten toepassen om de dagen op een normale (niet-lexicografische) manier gesorteerd te krijgen:

mysql> select dayofweek(wanneer) as d_nr, dayname(wanneer) as dag, count(*) as total from chat group by dag order by d_nr;

En de drukste uren:

mysql> select hour(wanneer) as h, count(*) from chat group by h;

Uit deze data bleek dat er geen enkel uur in het etmaal is waarin er geen bericht is verstuurd: de studenten werkten blijkbaar altijd door.

Maar interessanter is natuurlijk om te zien wie wanneer een berichtje stuurt; daarvoor maakte ik gebruik van de optie om een if-statement in een sum-clause te stoppen, zoals hier beschreven wordt:

mysql>
select hour(wanneer) as h
, sum(if(wie like '%Henk%', 1, 0)) as Henk
, sum(if(wie like '%Karel%', 1, 0)) as Karel
, sum(if(wie like '%Sjaak%', 1, 0)) as Sjaak
, sum(if(wie like '%Margriet%', 1, 0)) as Margriet
from chat
group by h;

Via deze query (althans, de echte versie ervan natuurlijk) konden we mooi achterhalen wie van de groep de nachtbrakers waren en wie de vroege vogels.

Conclusie
Het gebruiken van whatsapp voor onderlinge communicatie werkt heel goed. Het is snel, vertrouwd en makkelijk te gebruiken. Statistieken zoals deze zijn natuurlijk in eerste instantie alleen bedoeld voor de grap, maar wie weet kunnen we het ook eens gaan gebruiken om de inzet van bepaalde studenten te monitoren.