KNCLPRT

Nobody’s Fault but My Own.

Leesvoer: Brieven tussen hemel en hel

epsteinsInez Demarrez
De Vries-Brouwers, 2016, 208 blz.

Aan de hand van authentiek bronnenmateriaal zoals tientallen brieven vertelt dit boek het waargebeurde verhaal van Nora Epstein, née Pieruccini, en haar Letse echtgenoot Falk. Falk Epstein is een Letse Jood uit Riga die in de jaren ’30 neerstrijkt op de Gentse universiteit en droomt van een academische carrière. Daar ontmoet hij zijn toekomstige vrouw Nora, afkomstig uit de betere Gentse burgerij en op dat moment één van de weinige vrouwen aan de Rijksuniversiteit.

Op zich niet echt een meeslepend verhaal tot dusver maar Jood zijn én communistische sympathieën koesteren zijn niet bepaald eigenschappen waar je aan de vooravond van WOII vlot mee wegkomt. Als de oorlog uitbreekt kiest het koppel eieren voor zijn geld en trekt naar het (toen nog) onafhankelijke Letland. Daar wanen ze zich veilig tot ook daar het strijdgewoel hen inhaalt en het land achtereenvolgens door de Russen en dan door de Nazi’s onder de voet wordt gelopen.

Wat volgt is een nachtmerrie en beiden belandden achter tralies. Als Belgisch-Letse weet Nora de Jodenvervolging te ontkomen maar Falk heeft minder geluk. Hij wordt opgepakt, afgevoerd naar een kamp en vermoedelijk terechtgesteld na het stelen van voedsel.
Wat volgt voor Nora zijn dan jaren van onzekerheid en omzwervingen tot zij enkele jaren na de oorlog terug de draad opneemt in Gent.

Ik las dit boek in eerste instantie om persoonlijke redenen. Bij vele Gentenaars zal de naam “Epstein” ongetwijfeld een belletje doen rinkelen aangezien zij na de oorlog directrice werd van de toenmalige Normaalschool met bijhorende oefenschool (lerarenopleiding) in de Wispelbergstraat. In die hoedanigheid was zij de directrice van mijn moeder en het was ook in die (en aanpalende) school dat ik dik 12 jaar les volgde.

Vandaag blijft er van deze school enkel nog de neo-klassieke voorgevel uit de jaren 1880 over, de rest van de gebouwen werd afgebroken en opgenomen in het huidige atheneum.

Wapenstilstand

Ik ben al enkele jaren bezig met het uitpluizen en documenteren van mijn stamboom. In deze tijd van het jaar leek het mij dan ook geen slecht idee eens wat meer aandacht te besteden aan de verhalen van zij die vochten in de beide wereldoorlogen.

Oscar De SutterBinnen 2 jaar zal het exact 100 jaar geleden zijn dat mijn overgrootoom Oscar De Sutter overleed aan zijn verwondingen opgelopen tijdens de eerste wereldoorlog. Sinds ik enkele jaren terug via het Militair Archief van het Belgische leger in Evere zijn dossier in handen kreeg heeft de herdenking van 100 jaar WOI een persoonlijk tintje gekregen.

They shall grow not old, as we that are left grow old. 
Age shall not weary them, nor the years condemn.
 At the going down of the sun and in the morning,
 We will remember them.. – Laurence Binyon

Geboren op 7 oktober 1889 te Velzeke werd Oscar, landbouwer van beroep, opgeroepen voor het vervullen van zijn dienstplicht in 1909[1] als soldaat 2de klas bij de Jagers te voet. Dat hij in het leger moest had hij eigenlijk te danken aan koning Leopold II die op 14 december 1909 -3 dagen voor diens overlijden- een wet ondertekent waarin het vroegere systeem van vrijwilligers en lotelingen wordt vervangen door een dienstplicht.

Als in de zomer van 1914 duidelijk wordt dat het neutrale België er niet in zal slagen de oorlog te ontwijken worden de klassen van 1909, 1911 en 1913 onmiddellijk gemobiliseerd voor de actieve infanterieregimenten. De Jagers te voet zijn een soort lichte infanterie waarvan de 2de Jagers te voet in 1914 gekazerneerd liggen in Bergen (daar worden ze ook ontdubbeld zodat ook de 5de Jagers te voet ontstaat). De Jagers maken deel uit van de 16de Gemengde Brigade die op 3 augustus op de trein wordt gezet in de richting van de Gete. Op 16 augustus 1914 krijgen de mannen hun vuurdoop te Geldenaken. Na de val van de Luikse forten is deze linie niet langer houdbaar en de Jagers trekken zich terug in de Vesting Antwerpen. In die eerste maanden van de eerste wereldoorlog gaat het er niet bepaald zacht aan toe; de Jagers worden met de regelmaat van de klok terug in de strijd geworpen: Verbrande Brug, Eppegem,…telkens met zware verliezen.

Op 6 oktober gaat het Belgische leger in de tegenaanval tussen Duffel en Lier aan de Nete. De Jagers zijn opnieuw van de partij en lijden andermaal zware verliezen. Wat overblijft van het Belgische leger trekt zich terug achter de Schelde. Nadat ook Antwerpen gevallen is volgt de finale, tussen 17 en 31 oktober, met de Slag aan de Ijzer waarbij de Jagers in actie komen te Diksmuide, Oudstuivekenskerke en Pervijze. Door het openen van de sluizen komt het front voor de Belgen tot stilstand, een patstelling die niet meer zal wijzigen tot 1918.

Na de val van Antwerpen was de 5de Jagers ontbonden om op 26 december 1916 terug gevormd te worden. Drie dagen later op 29 december wordt Oscar De Sutter overgeplaatst naar het nieuwgevormde 5de Jagers waar hij de rest van zijn oorlog zal blijven. Wat volgt zijn jaren van schermutselingen, ontberingen, gasaanvallen en sluipschutters maar op 27 februari 1918 wordt Oscar zwaar gewond te Diksmuide. Hij wordt afgevoerd naar het veldhospitaal te Hoogstade met meerdere verwondingen door obusscherven aan de linkerdij en -bil, een rugwonde aan de rechterzijde en hij is totaal in shock.

Oscar De Sutter overlijdt diezelfde dag om 13u aan zijn verwondingen. Hij is dan 28 jaar oud en vocht 3 jaar, 6 maanden en 27 dagen. In 1921 werd hij postuum onderscheiden met 6 frontstrepen en het Croix de Guerre. Hij rust op de militaire begraafplaats te Oeren.

[1]: de wet van 8 mei 1847 bepaalde dat dienstplichtigen werden opgeroepen in hun twintigste levensjaar.

Vinyl 201610

Vanaf heden gaan we hier elke maand een lijstje neerkwakken van beluisterde of aan de collectie toegevoegde LP’s. Ik ga mij niet bezighouden met waarderingen maar zo heel af en toe kan er wel een commentaar tussen glippen.

In willekeurige volgorde:

  • The Beatles – Help!
  • Simon & Garfunkel – The Concert in Central Park
  • Michael Jackson – Thriller

Vinyl!

Dat het allemaal de schuld is van HBO zeg ik u! Enkele maanden geleden zonden ze daar namelijk de Amerikaanse tv-serie Vinyl uit. Deze speelt zich af in de New Yorkse muziekscene van de jaren 1970, kwam blijkbaar uit de koker van Mick Jagger en werd geregisseerd door niemand minder dan Martin Scorsese. Niettegenstaande de serie helaas -ik was een instant fan- werd stopgezet na het eerste seizoen hield ik er een licht gevoel van nostalgie naar de grammofoonplaat aan over. Voeg daar dan nog aan toe dat ik ten gevolge van een verhuis in de familie in het bezit kwam van een kleine platencollectie en je snapt meteen waarom een aantal oude hifi-onderdelen werden afgestoft en terug in gebruik genomen.

Daarom dat mijn werkkamer vrij recent een nogal “vintage”-look kreeg met een stereo-opzet uit de eerste helft van de jaren ’70. De installatie is vrij simpel en bestaat enkel uit 2 geluidsboxen, een versterker-receiver en een platenspeler.

De platenspeler is een eenvoudige Dual 1225. Dual is een voormalige Duitse producent van hoogwaardige audioapparatuur en sommige van deze draaitafels zijn na meer dan 30 jaar nog steeds legendarisch. Begin jaren ’80 ging Dual echter failliet door de toenemende concurrentie van de CD. Vandaag de dag is het merk in handen van het Zuid-Koreaanse Namsung die onder deze naam nog steeds electronica op de markt brengt.

20161019-stereo-img_8623

De Dual 1225 werd tussen 1973 en 1974 geproduceerd en kan zowel 33 als 45 toeren de baas. Hij werkt redelijk automatisch d.w.z. dat je de arm niet zelf hoeft te bedienen en er is een anti-skating aanwezig. Voor de rest weinig toeters of bellen aan deze draaitafel of het zou de pitch control moeten zijn.

Het hart van de installatie is uiteraard de Kenwood KR-3200 versterker-receiver combinatie uit 1972. Ik was eigenlijk van plan een simpele versterker te kopen maar eenmaal ik deze gezien had was ik helemaal verkocht. Meer jaren ’70 vind je volgens mij niet met zijn verlichte frequentievenster en houten afwerking. Een handleiding werd er niet meer bijgeleverd maar het wijst zichzelf allemaal wel een beetje uit. Met de knop uiterst links zet je hem aan of uit, uiterst rechts heb je dan een grote draaiknop om op de juiste zender af te stemmen en daartussen zitten nog enkele knoppen voor bass, treble, balans en om te switchen tussen de radio en de platendraaier.

20161019-stereo-img_8632

 
Geluid laten we knallen door een set van Kenwood KL-2020 speakers uit 1976. Ook dit onderdeel is weinig high-tech te noemen maar het doet wat het moet doen. Veel technische specificaties zijn er niet terug te vinden op het internet dus wie meer info heeft; instant karma wordt uw deel… Ik zal alvast eens beginnen met ze ook binnenin aan een grondige poetsbeurt te onderwerpen.

KL-2020

Het plan voor de komende tijd is nu elke plaat die ik hier liggen heb af te spelen van begin tot einde.

Twitter feed – vervolg

In een vorige blogpost kan u al lezen hoe je enkele eenvoudige analyses kan uitvoeren op je eigen Twitter-archief. De vorige keer hield ik mij vooral bezig met kwantitatief onderzoek; aantal tweets, wanneer, hoeveel karakters,… Deze keer gaan we het over de inhoud hebben. Als dat maar goed gaat… en voor zover je al over kwaliteit kan spreken natuurlijk.

We baseren ons uiteraard op hetzelfde archief van Tweets die we eerder reeds hebben gedownload (zie de vorige post om de stappen te zien om dat archief te bekomen), dus de eerste stappen zijn uiteraard dezelfde. Eerst gaan we de dataset en de nodige libraries inladen. (Het R-bestand kan u eveneens in mijn Github-account terugvinden voor verdere inspiratie).

## Load packages
library(tm)
library(stringr)
library(wordcloud)
## Set working directory and load data
setwd("~/OneDrive/Vault/Vlaamse Overheid/Data Science/tweets-kc/data")
tweets

De Wordcloud

De meest eenvoudige vraag die we ons kunnen stellen is welke woorden we allemaal gebruiken en of die bijvoorbeeld terugkomen en -zo ja- in welke frequentie. Om dat te bekomen kunnen we een eenvoudige visualisatie gebruiken, de wordcloud. Om een propere tekstfile te bekomen moeten we de typische Twitter-dingen zoals handles (@kcolpaert om er maar één te noemen) wel eerst uit de tekst verwijderen.

nohandles

Eenmaal dat achter de rug is kunnen we de tekst verder masseren met behulp van het text mining pakket tm. In de volgende stappen gaan we alle overbodige tekstelementen verwijderen zoals puctuaties typische stopwoorden uit het Engels en Nederlands, je kan zelfs een eigen lijst definiëren van termen die niet dienen meegenomen te worden in de analyse.

wordCorpus wordCorpus wordCorpus wordCorpus wordCorpus wordCorpus wordCorpus wordCorpus

Bovenstaande stappen zijn eenvoudige te volgen: eerst hebben we alle handles eruit gegooid, dan hebben we alle tekst in lowercase gezet (dit is niet strikt noodzakelijk maar je verkrijgt er wel een mooiere wordcloud), nadien moesten de stopwoorden eraan geloven (ook dat is niet noodzakelijk maar je loopt dan wel het risico dat je een betekenisvolle brij krijgt en alle Wordclouds op elkaar gelijken), dan volgt er een lijstje met veelgebruikte afkortingen die ook niet echt iets toevoegen om te eindigen met het verwijderen van de spaties voor en na elk woord. Op die manier verkrijgen we wat men noemt een “corpus”.

Een corpus is een collectie tekstbestanden met gesproken of geschreven materiaal waarop we onze kwalitatieve analyse kunnen baseren. Het is een term uit de NLP, Natural Language Processing, niet te verwarren met die andere “NLP”, Neuro Linguistisch Programmeren wat eigenlijk maar wat pseudo-wetenschappelijk gezwets is maar we wijken af…

De laatste stap in de bovenstaande reeks code is een speciale, het betreft “stemming”. Dit is een proces waarbij we het einde van bepaalde woorden verwijderen zodat we enkel de stam overhouden. Zo worden boodschapper, boodschappenlijstje,…etc afgekort tot boodschap. Stemming is iets wat je niet per algemene regel kan toepassen aangezien het ook aanleiding kan geven tot rare en zelfs onbestaande afkortingen. Het gebruik ervan is dus sterk afhankelijk van de gebruikte tekst. Het is dus aangewezen de oefening te doen met en zonder de stemming zodat je kan zien wat het effect juist is op de verdere analyse.

Dan is het nu tijd om eens wat te visualiseren aan de hand van een wordcloud. Een wordcloud neemt een lap tekst en visualiseert dan de woorden alnaargelang frequentie; hoe meer ze voorkomen in de tekst, hoe groter en hoe centraler ze weergegeven worden. Je kan spelen met verschillende opties zoals de grootte van de tekst, de kleuren van de woorden en per hoeveel keer voorkomen je gaat tellen.

pal pal set.seed(123)
wordcloud(words = wordCorpus, scale=c(5,0.1), max.words=100, random.order=FALSE,
rot.per=0.35, use.r.layout=FALSE, colors=pal)

tweets-kc-wordcloud

Bij het bekijken van deze wordcloud valt al meteen iets op. In de kwantitatieve analyse was reeds gebleken dat ik een periode heb gekend waarbij er redelijk wat automatische tweets de wereld werden ingevuurd komende vanuit mijn vroegere blog maar ook door andere services zoals Foursquare of LastFM. Dat wordt nu meteen bevestigd door de centrale plaats van woorden zoals Lastfm (duh!), artist, mayor, post en blog. Dit geeft ook meteen mee dat ik een weinig persoonlijke gebruiker ben van het medium.

Wordclouds kunnen echter ook nog gebruikt worden voor andere tekstelementen te visualiseren. Herinner u dat we in het begin van deze analse alle @handles verwijderd hebben? Vergeet dat, we gaan nu juist kijken naar die handles om te weten te komen wie onze Twitter-vriendjes zijn. Om de boel een beetje proper te houden maken we vanuit ons Tweet-archief een nieuw corpus maar deze keer zijn we enkel geïnteresseerd in de gebruikersnamen.

friends namesCorpus

Op deze manier hebben we een bestand gemaakt met daarin alle Twitter-accounts van de mensen die ik volg maar vooral retweet en reply. Mijn beste vriend blijkt echter @foursquare te zijn 🙁

set.seed(146)
wordcloud(words = namesCorpus, scale=c(3,0.5), max.words=40, random.order=FALSE,
rot.per=0.10, use.r.layout=FALSE, colors=pal)

tweets-kc-bff

Andere namen die er meteen uitspringen zijn een ex-collega en een paar bekendere personen zoals Marc Reynebeau en Joël De Ceulaer, naast een profvoetballer en een bekende urbex-fotograaf.

En toen werd hij even emotioneel…

Eén van de leukste dingen die je met tekst kan doen is op basis van de woorden deze in te delen in achterliggende emoties. Sentimentele analyse is echter een hele ingewikkelde bedoening. Het is immers zeer sterk contextgebonden om nog maar te zwijgen van de verschillen in cultuur, geslacht en taal. Hoe kan een computer bijvoorbeeld omgaan met sarcasme of gewoon grappig zijn? Voor deze oefening speelt dat eigenlijk allemaal maar weinig belang maar voor een wetenschappelijke toepassing vermoed ik dat er heel wat meer bij komt kijken. We gaan eraan beginnen met het inladen van de nodige libraries en dan worden we helemaal sentimenteel.

## Let's get Emotional
## Sentiment
library(syuzhet)
library(lubridate)
library(ggplot2)
library(scales)
library(reshape2)
library(dplyr )
mySentiment

Het algoritme dat we gaan toepassen is gebaseerd op het NRC Word-Emotion Association Lexicon ontwikkeld door Saif Mohammad en Peter Turney. Het basisidee is dat we alle woorden kunnen indelen in acht verschillende emoties en twee sentimenten (positief en negatief). We verkrijgen dus een lexicon waarin elk individueel woord een “ja” (1) of “nee” (0) meekrijgt voor de emoties en sentimenten. Door alles samen te tellen hebben we een score die kan dienen als het totale sentiment voor die zin. Het spreekt voor zich dat niet elk woord uit een taal isua opgenomen in het lexicon aangezien de meeste redelijk neutraal zijn qua emotionele lading. Het lexicon is uiteraard opgesplitst in verschillende talen. Arabisch, Japans, Engels,Frans en Portugees steken er bovenuit, elk met meer dan 14.000 woorden. Verbazender echter is dat pakweg het Russisch ook bij de meest “emotionele” talen hoort. Een associatie die ik nu niet direct uit eigen beweging zou maken.
Het Nederlands is vertegenwoordigd met 7,850 woorden.

Laat ons beginnen met een testje

get_nrc_sentiment("Resistance is futile")
anger anticipation disgust fear joy sadness surprise trust negative positive
1 1 0 0 0 0 1 0 0 2 0

Op basis van een dergelijke beperkte sample is er natuurlijk niet veel te vertellen. We gaan het dus wat interessanter maken en gooien er eens een stevige zin tegenaan. Ik koos voor de mooiste literaire zin van 2014 geschreven door Dimitri Verhulst.

get_nrc_sentiment("Jouw kapsel, voor zover dat nog een kapsel mocht worden genoemd, had veel weg van zo'n in die dagen in zwang rakende ecologische tuin, waarin elke menselijke ingreep als een misdaad tegen de natuur werd beschouwd")
anger anticipation disgust fear joy sadness surprise trust negative positive
1 0 0 0 1 0 1 0 0 1 0

Veel schokkends levert dit precies niet op, wat dat zegt over de waarde van het werk van Dimitri Verhulst laat ik in het midden. Tijd om onszelf eens op de rooster te leggen.

Bij het laden van de libraries had ik reeds alle tweets in een eigen dataset gestopt genaamd “mySentiment”. Het is op basis van deze set dat we nu gaan verder werken.

head(mySentiment)
anger anticipation disgust fear joy sadness surprise trust negative positive
1 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0
3 0 2 0 0 0 0 0 1 0 2
4 0 0 0 0 0 0 0 0 0 1
5 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0 0

Ik ben er niet echt kapot van moet ik zeggen dus gaan we maar terug naar de visualisaties. Stel dat we alle tweets zouden opsplitsen volgens de eerder vermelde acht emoties. Wat zouden dan de meest voorkomende emoties zijn?

sentimentTotals names(sentimentTotals) <- "count"
sentimentTotals rownames(sentimentTotals) ggplot(data = sentimentTotals, aes(x = sentiment, y = count)) +
geom_bar(aes(fill = sentiment), stat = "identity") +
theme(legend.position = "none") +
xlab("Sentiment") + ylab("Aantal") + ggtitle("Tweets volgens sentiment")

tweets-kc-sentiment

Verwachting en vertrouwen zijn blijkbaar de belangrijkste emoties in mijn berichten. Negatieve emoties als angst en boosheid volgen pas op respectabele afstand. Gelukkig spui ik niet over alles en nog wat mijn mening op Twitter of dit plaatje kon er helemaal anders uitzien. Dat is trouwens nog een idee; dit onderzoekje binnen enkele jaren nog eens overdoen om te kijken of er een bepaalde evolutie inzit. Longitidunaal onderzoek for the win! (Ja, ik heb gestudeerd en gebruik af en toe graag een moeilijk woord)

Over tijd gesproken; zou er door de jaren heen een evolutie inzitten? Zou ik bijvoorbeeld meer of minder verzuurd geraakt zijn?

## Sentiment over time
tweets$timestamp posnegtime %
group_by(timestamp = cut(timestamp, breaks="2 months")) %>%
summarise(negatief = mean(negative),
positief = mean(positive)) %>% melt
names(posnegtime) posnegtime$sentiment = factor(posnegtime$sentiment,levels(posnegtime$sentiment)[c(2,1)])
ggplot(data = posnegtime, aes(x = as.Date(timestamp), y = meanvalue, group = sentiment)) +
geom_line(size = 2.5, alpha = 0.7, aes(color = sentiment)) +
geom_point(size = 0.5) +
ylim(0, NA) +
scale_colour_manual(values = c("springgreen4", "firebrick3")) +
theme(legend.title=element_blank(), axis.title.x = element_blank()) +
scale_x_date(breaks = date_breaks("10 months"),
labels = date_format("%Y-%b")) +
ylab("Gemiddelde sentimentele score") +
ggtitle("Sentiment over de jaren")

tweets-kc-sentiment-tijd

Veel is daar niet uit af te leiden in mijn geval behalve misshien het feit dat ik in het algemeen positiever dan negatief ben in mijn uitlatingen. Nu gaan we kijken of er een relatie is tussen de emotie en de dag in de week. Hiervoor gebruiken we opnieuw de wday() functie uit lubridate en dplyr voor de groepering van de tweets volgens weekdag.

## Sentiment on weekdays
tweets$weekday weeklysentiment % group_by(weekday) %>%
summarise(anger = mean(anger),
anticipation = mean(anticipation),
disgust = mean(disgust),
fear = mean(fear),
joy = mean(joy),
sadness = mean(sadness),
surprise = mean(surprise),
trust = mean(trust)) %>% melt
names(weeklysentiment)
ggplot(data = weeklysentiment, aes(x = weekday, y = meanvalue, group = sentiment)) +
geom_line(size = 2.5, alpha = 0.7, aes(color = sentiment)) +
geom_point(size = 0.5) +
ylim(0, 0.6) +
theme(legend.title=element_blank(), axis.title.x = element_blank()) +
ylab("Gemiddelde sentimentele score") +
ggtitle("Sentiment volgens weekdag")

 

Wat eer rommeltje! Daar is werkelijk niets van te maken behalve dat mijn “verwachting” op zondag het hoogst is om dan af te nemen en vanaf woensdag terug de hoogte ingaat. De rest blinkt uit in algemeenheid qua voorkomen. Gelijkaardig hiermee kunnen we dit ook bekijken per maand in plaats van dag van de week.

## Correlation months and feelings?
tweets$month monthlysentiment % group_by(month) %>%
summarise(anger = mean(anger),
anticipation = mean(anticipation),
disgust = mean(disgust),
fear = mean(fear),
joy = mean(joy),
sadness = mean(sadness),
surprise = mean(surprise),
trust = mean(trust)) %>% melt
names(monthlysentiment)
ggplot(data = monthlysentiment, aes(x = month, y = meanvalue, group = sentiment)) +
geom_line(size = 2.5, alpha = 0.7, aes(color = sentiment)) +
geom_point(size = 0.5) +
ylim(0, NA) +
theme(legend.title=element_blank(), axis.title.x = element_blank()) +
ylab("Gemiddelde sentimentele score") +
ggtitle("Sentiment doorheen het jaar")

Ook hier is eigenlijk maar één conclusie die er uitspringt; “vertrouwen” en “verwachting” zijn de meest voorkomende wat meteen overeenkomt met één van onze eerdere grafieken. Naar het einde van het jaar toe is er precies wel een toename van enkele negatieve emoties maar al bij al verpest dat mijn kerststemming niet te veel.

Tot slot

En daarmee rond ik het rondje kwantitaief en kwalitatief ego-surfen af. Beide R-documenten met alle code die ik in deze analyse gebruikte zijn terug te vinden in de bijhorende Github-repository tweets-kc. De repo bevat ook de csv met mijn tweets tussen mei 2008 en december 2015 maar deze kan op eenvoudige wijze aangepast worden met uw eigen archief. Als laatste wens ik nog Julia Silge te bedanken voor het idee en de input. Standing on the shoulders of giants and stuff…

« Oudere berichten

© 2016 KNCLPRT

Thema gemaakt door Anders NorenBoven ↑