Il radicale (a piede) libero

Lascia un commento

[Cose non mie] Importing data is hard: a rant about integrating open data projects

Avviso: Questo post è stato originariamente pubblicato il 30 novembre 2012 da Alex Bayley su, con licenza CC BY 3.0 Unported, ma allo stato non è più disponibile. Sperando di non incorrere nelle ire dell’autore, lo ripubblico sul mio blog, perché è un interessante analisi su quanto sia complicato lavorare con i dati aperti e su cosa può andare storto (hint: molte, molte cose).

Disclaimer: This post has been originally posted on November 30, 2012, by Alex Bayley on, under a CC BY 3.0 Unported license, but it is currently unavailable. Hoping not to bother the original author, I republish his post on my blog, because I think it is an interesting analysis about how complicated working with open data is and about what can go wrong (hint: lots of things, seriously a lot).

* * *

A few times on the Growstuff mailing list or IRC channel, someone’s excitedly suggested that we should import data from another CC-​licensed data set. Each time, I say, “Trust me, that’s pretty complicated,” but I’ve never actually sat down and explained the full gory details of why.

The following is something I wrote up for our wiki so that I could point people at it next time the subject comes up. I thought it might be interesting to a wider audience, too, so that’s why I’m posting it here.

Importing data is hard

This is a bit of a rant by Skud, who used to work on Freebase, a large open-​licensed data repository which imported data in bulk from a range of sources, including Wikipedia, Netflix, the Open Library Project, and many more. She’s had a lot of experience in this area, and learnt a lot about the weird complications of mass data imports.

The simple case

They have a database. You have a database. Your fields are the same. Their API is easy to use and their license is compatible.

  1. map their fields to ours, eg. their “name” is our “system_​name”
  2. import data
  3. PROFIT!

Their fields aren’t the same

What if the fields aren’t quite equivalent? For instance, let’s say they have measurements in imperial and we use metric. We’ll need to have ways to convert them. That’s actually a really simple example. Import incompatibilities are more often at a semantic/ontological level. Growstuff has the idea of “crops” and “varieties” but what if the other database only has “plants” with no distinction? Or what if they have crops and varieties but draw the line somewhere slightly different to where we do? These sorts of incompatibilities are more common than not, and massively complicate any import effort.

Some of their data is bogus

Nothing against that other database – some of everyone’s data is bogus! But we need to check it. What “bogus” means will vary from place to place, but it might be spam entries, duplicate records, simple errors, or it might be cruft from their own broken imports. We need to look carefully at every import and make sure we’re skipping as much of this as possible. And this is largely a manual process, since what the bogosity will never be the same twice. You can do this by sampling, of course, but you still need to look at something on the order of a hundreds of records, and know what you’re looking for. Could you spot a mixed-up scientific name on a randomly chosen herb? I couldn’t.

The stub problem

Let’s say we want to import from a database of plant life that lists 10,000 edible plants and their nutritional content. Growstuff has 300 crops at present. We import everything! Now we have 9,700 pages with nothing but nutritional data. Nobody on Growstuff is using them, they have no pictures, they have no planting data, they have no discussions (except maybe spam comments that nobody cleans up because nobody notices). Our “newest crops” page, usually a source of interest, is now just a wasteland of grey placeholder images.

Should we have imported all 10,000 plants, or just the nutritional data of the 300 we already have? Or something in between? The answer is usually “something in between” – you might want that data if and only if you can get other partial data from other imports to make it more interesting.

The best way to do this is to import the 300 and make a note of the 9700. Then later, you can cross-​correlate the notes you’ve made from various data imports and re-​import those that have, say, at least 3 useful data sources and a picture. But that’s pretty complicated. (Also, see the discussion of repeated imports, below.)

Don’t forget the license

Let’s assume that their data is licensed compatibly – that means CC-​BY-​SA or CC-​BY in our case, since we’re CC-​BY-​SA and none of the other clauses (ND, NC) are compatible with us. (Ignoring CC-​0 and public domain stuff for now – those don’t need attribution at all.)

So by importing, we have to credit them. Now we need some way to represent that in the database. If we do this at the object level, it’s fairly simple: each thing in the database (crop, etc) has many licensors, each of which includes a name for the work (eg. “Katie’s Plants”), a license (eg. CC-​BY), a licensor name (eg. Katie Smith), and a URL to link to the original data.

Now we have to display them on the page. Where? Probably at the bottom somewhere: “Some information on this page came from: Katie’s Plants (that would be a link) – CC-​BY Katie Smith; SuperPlantDB under CC-​BY-​SA SuperPlants Inc; etc.”

The license chaining problem

Now imagine that the data on those sites came from other sites. For instance, let’s say Katie’s Plants previously did an import from, and SuperPlantDB did one from Wikipedia. We not only need to credit Katie’s Plants and SuperPlantDB but also those places.

Some questions to consider:

  • Are those second-​degree sources, their licenses, licensors, etc available via the API? When Freebase imported images from Wikimedia Commons, we encountered this problem, because the license metadata had to be scraped from inconsistently-​formatted HTML. Getting this wrong leads to complaints from licensors whose licenses we’re violating.
  • Do we know what part of the data on Katie’s Plants was sourced from Freebase? Maybe it was the international names, but we’re importing medicinal uses and not touching that part of her data. Does Katie’s license notice express this? Probably not – there’s no requirement in the CC licenses for the attribution to be at the field level, and our own attribution notices definitely don’t operate at this level of detail. Because we don’t have the detail, this means we end up with attribution inflation: pretty soon, every page on Growstuff has a hundred attributions at the bottom of every page.

Sure, we could just choose not to chain licenses, or to do it in some restricted way… but the moral high road here is to respect everyone’s license and attribution, and besides, if you only attribute some contributors, where do you decide to draw the line?

The infectious NC clause problem

This is a subset of license chaining problems. Let’s say Growstuff (a commercial entity using CC-​BY-​SA) imports from Katie’s Plants (a non-​profit entity using CC-​BY-​SA) which imports in turn imports from Hippie Herbs (a non-​profit entity using CC-​BY-​NC – note the “non-​commercial” clause).

Katie’s fine – she imports from Hippie Herbs’ data with impunity because she’s non-​profit. She attributes them on her site, and Hippie Herbs is happy. She doesn’t have to use the same license as them because they don’t have a “SA” (Share Alike) clause.

Now Growstuff comes along and wants to import data from Katie’s Plants. Katie’s Plants is CC-​BY which is compatible with Growstuff… but what about the data that originally came from Hippie Herbs? We’re commercial, so we’re not meant to use it.

But how do we tell what’s what? Katie probably doesn’t attribute HH at the level of individual bits of data, so we can’t extract just the ok-​for-​commercial-​use bits.

Basically, if you believe in license chaining (and as I said, it’s definitely the moral high road to take, so I think we should) then you have to be constantly vigilant for the taint of NC-​licensed data anywhere in the sprawling tree of ancestors to your data.

What if we already have some data? (the merge case)

The simple case is fine for a green-​field import with no existing data, which is described above. But let’s say we’re importing data into an area where we already have some contributions from Growstuff members.

  1. map the fields as before
  2. for each piece of data imported, compare with Growstuff
    1. is Growstuff’s field empty? IMPORT!
    2. are the two the same? no-​op!
    3. do they differ?
  3. If they differ, do we trust our own community or the import source? Or do we need to adjudicate?

Let’s say we decide to adjudicate. We now need to build an app to let people vote on which one is “correct” – probably best of three or something like that. Freebase did this (multiple times) and I was involved in some of it. We called them “data games” and had leaderboards for who’d voted the most. We couldn’t get enough throughput, though, and sometimes by the time something had been adjudicated, another community member had edited the field on our site, thus invalidating the whole thing. We ended up paying people in developing countries to churn through these votes for us (we used ODesk, but you could use Amazon’s Mechanical Turk or whatever). However, they needed training, and weren’t cheap – even after all the work of setting up the voting queue, there was still considerable expense.

Do we let people edit the data after import?

This came up quite often with Freebase because sometimes they would import from “authoritative sources” who licensed their work specially to Freebase but didn’t generally have a CC license or an open community editing process. For instance, the time when I was talking to some people from the BBC, and one (an older dude) said, “If we gave you our programme data, we wouldn’t want anyone to edit it because we are the experts on our programmes.” This was pretty silly of course – another, younger BBC dude immediately turned to him and said “Ha ha ha, I’ve got two words for you: Doctor Who.” – but sadly these situations are common when you’re dealing with closed/non-community-based/”authoritative” data sources who don’t understand the power of crowdsourcing information.

But even when dealing with compatibly CC-​licensed sources with open developer communities, there can still be some problems around the “authority” of the data and how it’s attributed.

Take the case where Katie’s Plants community have spent heaps of time editing their data and are very proud of it. We import it to Growstuff, then our community looks at it and decides that bits of it are wrong and change it.

Do we leave the license link to Katie’s Plants intact? Most likely yes, because our data has theirs in its DNA, so to speak. But what if we essentially deleted all the data from there? This might happen if, for example, we’d imported a picture from Wikimedia Commons then found that the picture was incorrect or inappropriate, so we blew it away. Now we should probably remove the license note. But how do you tell when data has been completely removed as opposed to modified or built upon?

In the Katie’s Plants example, what if Katie’s high quality medicinal plant information gets mixed up with ($DEITY forbid!) low-​quality data from less experienced Growstuff members or from yet another import? What implications does this have for Katie’s site and their reputation? Under the license we’re allowed to mess it up because there is no “No Derivatives” (ND) clause, but socially/​culturally they’ll be pretty unhappy if we do, and we can expect some backlash.

Repeat imports

Great news! Katie got a government grant and some fantastic press coverage, and her database has expanded enormously. We want to re-​run the import. But now consider this case:

  • Katie’s plants, original: “Tomato – red”
  • Growstuff, original: “Tomato – red, yellow, green, black”

When we first imported, we put it to adjudication and found that Growstuff’s data was better, so we went with that.

Now we re-​import, and Katie’s data has changed:

  • Katie’s plants, changed: “Tomato – red, yellow, green, striped”

So of course we put it through adjudication again. The correct answer is probably a union of the two sets.

Now, Katie’s database is growing fast, and so is Growstuff. We want to do a regular import from there – perhaps monthly. But somehow along the way, we’ve ended up with different ideas of tomato colour. Every month, their data is different to ours, and we have to keep re-​adjudicating the same question: what colour/​s are tomatoes? Boring. Our community is tired of playing the voting game, and/​or it’s costing us money with our Mechanical Turk people.

So we decide to implement a check: if nothing’s changed on either side since the last adjudication, leave it. But now we have to implement change tracking, not just on Growstuff, but on Katie’s Plants as well. We need to keep a history of changes for every site we import. This is in addition to the infrastructure we’ve had to build to automatically run imports at regular time intervals.

How do we make our data available in return?

Obviously we have an API for people to access our data under CC-​BY-​SA. But keep in mind the license-​chaining effect: if anyone uses data from Growstuff, they will also be constrained by the licenses of all the data sources we import. We will need to make that license information available in the API alongside our data, and make sure all our API docs and related materials explain the necessity of license chaining.

Take a look at Freebase’s Attribution Policy. They use CC-BY, but because of attribution chaining, they can’t just say that – they need a whole page with a wizard to help people figure out how to attribute something on the site. It’s incomplete, too: Freebase decided that they would only require license chaining for “content” as opposed to “facts” (a complicated issue in itself) which means images Wikipedia-based descriptions. They don’t require chained license information for other data sources. This is dubious in terms of the legality and culture of how Creative Commons works – there’s no really firm guidelines on this, but in my opinion the most moral/ethical stance is to always chain your attributions, and Freebase has chosen otherwise. In the past, this has caused some concern from the owners of other data sources that were imported to Freebase. Even Wikipedians have complained that Freebase doesn’t enforce their Wikipedia attributions strongly enough. This sort of thing can lead to reputation problems, if not legal ones.

Just the facts, ma’am

One final complication. Various courts have ruled that “facts” aren’t copyrightable. For instance, the fact that the crop “Corn” has the scientific name “Zea mays” can’t be copyrighted. Even if you have thousands of these facts all together, they can’t be copyrighted, because they’re not a “creative work”. They’re just a statement of fact.

This actually throws the whole idea of CC-​licensing collections of data into doubt. And yet we have nothing better, so we do it anyway.

Some data projects have come up with various justifications for this. For instance, Freebase says that the arrangement of the facts is a creative work – that what’s CC-licensed is their schema. That’s pretty creative in itself! The thing is, none of this has really been tested. And so most open data projects have some kind of Terms of Service which explains what they think the CC-license is for and how it’s meant to be used. These generally say, “By accessing our data via our website or API, you agree to behave as if this CC license applied to it (even if there’s not a very strong legal basis for that outside this TOS).”

The original idea of CC licenses was to stop people having to write their own terms and conditions of use for their work, and standardise in such a way that people could easily re-​use creative content. Yet for data projects, we end up having to make up our own TOS just to apply a CC license, and we’re back where we started – having to peer at a bunch of legalese and figure out what the hell it means.

Of course once you get into the complexities of license chaining described above, you now also have TOS chaining – if Growstuff uses Katie’s data under their TOS, and Katie uses Hippie Herbs’ under their TOS, is Growstuff now subject to Hippie Herbs’ TOS? No idea! I am not a lawyer! I don’t want to be one! I just want to make a website about growing food!


Importing data is hard! That doesn’t mean we shouldn’t do it, but we should go into it with an awareness of the potential potholes, and carefully weigh up whether importing something is the best choice for us at any given time.

Final note

Katies Plants, Hippie Herbs, and SuperPlantDB are all made-​up examples. Any resemblance to actual open data projects is coincidental. Freebase, Wikimedia Commons, and the BBC are real, though.


Lascia un commento

Diffidate della realtà che vi raccontano

Tanto tempo fa, quando avevo ancora il mio vecchio blog ed ero un ragazzino col sogno di diventare giornalista, mi interessai alla vicenda di una madre che lottava per riavere la potestà della figlia. Questa madre arrivò fino allo sciopero della fame e della sete e a incatenarsi di fronte al tribunale, pur di riottenerla. Alla vicenda si interessarono vari blogger e anche un giornalista di un certo rilievo.

Per farla breve, la vicenda si rivelò essere un gigantesco abbaglio: buona parte delle accuse della donna erano infondate e l’avvocato del padre mi contattò chiedendo di rimuovere il post incriminato, pena azioni legali nei miei confronti. Non lo rimossi, ma lo editai al punto tale da rendere totalmente impossibile capire di che cosa si stesse parlando e aggiunsi un disclaimer in cui chiarii che quel post restava là, così come l’avevo ridotto, a eterna memoria di “come non si gestisce un caso giornalistico”.

Nello specifico, da quella vicenda imparai che il principio di autorità è una stronzata: il fatto che una certa cosa sia affermata da una persona esperta nel campo non significa che quell’esperto non possa aver preso una cantonata. Imparai anche che non è vero che la verità sta nel mezzo, ma è vero che si desume quantomeno dall’ascolto di entrambe le campane.

(A margine: non ho ritenuto di dover importare quel post in questa versione del blog, d’altronde la lezione l’ho imparata ed è questo quello che conta).

* * *

Circa un anno fa, vidi uno di quei video-servizi che circolano su Facebook riguardo una ragazza che, nel privato della sua abitazione, adorava vestirsi da bambina. Il servizio era completamente incentrato sulla sua “scelta di vita”, ufficialmente non giudicandola, ufficiosamente mostrando quanto fosse strana.

Solo per un brevissimo attimo, chi ha realizzato il servizio si è lasciato scappare che questa ragazza di 20 e qualcosa anni era stata qualche tempo prima vittima di violenza sessuale.

Nessuno mi toglie dalla mente che quel servizio andava completamente ripensato, che il vero fulcro della notizia (se pure vogliamo chiamarla tale) era che quella violenza subita aveva a tal punto segnato quella ragazza da rifiutarsi più o meno consciamente di crescere e diventare adulta. Pur mantenendo una vita fittiziamente normale al di fuori delle mura domestiche, nel privato della sua esistenza ha scelto e ottenuto di rimanere una bebè, di rifugiarsi in un’epoca della sua vita dove “tutto è bello e tutto è puro”.

* * *

Il caso recente del 13enne della provincia di Padova tolto alle cure della madre perché “tende in tutti i modi ad affermare che è diverso e ostenta atteggiamenti effeminati in modo provocatorio” ha ovviamente generato la solita ondata di commenti stile “viviamo ancora sotto il Papato”.

Quello che mi ha impedito di reagire pavlovianamente alla notizia è stato una sorta di “sesto senso”, che mi ha portato istintivamente a diffidare della notizia così come riportata. Già scorrendo l’articolo, si poteva leggere come la madre avesse denunciato che il figlio fosse stato vittima di abusi e che avesse dunque ottenuto la custodia, ma anche come il giudice avesse notato un rapporto estremamente morboso fra madre e figlio e come i comportamenti del minore fossero “provocatori”, nel senso di una evidentissima, disperata richiesta di attenzione da parte di un ragazzo nemmeno adolescente che stava soffrendo per la separazione dei suoi genitori.

Anche stavolta, si è scelto di raccontare solo una parte della storia – che poi è la solita storia di due genitori impegnati a litigare sulla proprietà del figlio (non ho scelto le parole a caso) e scambiarsi accuse a vicenda, al punto di non avere tempo di riflettere sul danno che gli stanno arrecando a livello emozionale.

È bastato, qualche ora dopo, uno status di Simone Spetia (che in altri tempi sarebbe stato semplicemente “uno che fa il proprio lavoro” e che, proprio per questo, oggi è uno dei più affidabili su piazza) per ascoltare finalmente anche l’altra campana e ricondurre la storia a una sua “verità” o, perlomeno, a una “verità” più consona rispetto al mirabolante “caso gggender” su cui si voleva lucrare click e visibilità.

* * *

Le conclusioni da molti anni sono il mio punto debole quando scrivo. Sono stanco di dover per forza trarre una morale da quanto scrivo o dover riassumere in poche righe quello che scrivo.

In parte, è come se volessi dire a chi mi legge “fammi il piacere di capirla da solo la morale, anche perché è facile da capirla”, come se mi sentissi stupidamente lapalissiano a dover statuire delle ovvietà.

In parte, è che non riesco ad accettare nel profondo quest’idea per cui il mio simile è talmente stupido da non comprendere la morale di questo post. Anche perché basterebbe leggere il titolo e basta, cosa che molti stupidi fanno già.

E no, niente link. Non voglio fornire ulteriori accessi a gente che non se li merita.

Lascia un commento

Perché non può non finire così

​Un giorno saprò affrontare il peggiore dei miei nemici, la persona che odio di più, che mi fa più paura di tutti, che mi ostacola e mi gambizza in ogni occasione, che mi fa pensare che la stasi sia preferibile al cambiamento “perché tanto come vuoi che vada a finire”.

Un giorno ci riuscirò, ma la verità è che vivo sempre come se quel giorno fosse la terra di Utopia.

Ma di certo non può finire che così. Perché non può non finire così.

Lascia un commento

E se Trump fosse l’ultima reazione di una generazione tradita?

Questa cosa l’ho pensata stamattina, ma avrei dovuto metterla per iscritto prima. Non so cosa ne verrà fuori. Non so se ha senso quanto sto per scrivere. Magari no.

Molti non sanno o non capiscono perché Trump guadagni così tanto successo fra gli elettori. Ma se ci fosse una motivazione più profonda, più sottovalutata, soprattutto della mia generazione?

Rifletto spesso su come la mia generazione sia incattivita, soprattutto perché siamo nati in un momento in cui… beh, avevamo vinto. Il Muro di Berlino era caduto, l’URSS è stata sconfitta, il capitalismo e l’Occidente avevano vinto, si teorizzava la Fine della Storia e le guerre a zero morti – da parte nostra, ovviamente (che gran cazzata) – insomma, un mondo più bello, in cui davvero si poteva creare un quasi-Superstato europeo senza confini e con una moneta unica.

Poi l’11 settembre ci ha svegliato. Poi è venuto il precariato, la lotta sull’articolo 18, la lunga stagione del “declino del Paese” (che io continuo a pensare sia stato primariamente generato dalle stesse menti ottuagenarie che ne parlavano nei vari talk show) e poi il colpo di grazia della crisi del 2008. E ti domandi perché poi abbiamo tutta questa rabbia repressa…

La cosa però è ancora più profonda. Noi non siamo solo cresciuti in un mondo in cui l’ottimismo era nell’aria. Il nostro ottimismo, l’idea che lavorando sodo avresti potuto raggiungere vette impressionanti ce l’ha trasmessa il cinema statunitense, come parte di quella proiezione di soft power della nostra Superpotenza preferita.

Ricordo un filmetto degli anni ottanta, andato di notte su Italia Uno che vidi quando avevo… boh, 10-11 anni, forse. C’era una fabbrica di auto statunitense che rischiava la chiusura a causa della concorrenza spietata giapponese. A un certo punto, gli operai e la dirigenza fecero i conti e si accordarono per lavorare di più e riuscire a battere i giapponesi sul loro campo: il numero di auto prodotte al giorno. Alla fine ci riescono e via di classica celebrazione americana.

Il punto è qui: era un momento in cui l’America era grande perché lo era, perché aveva la forza di esserlo. E lo slogan di Trump, non a caso è Make America Great Again. Perché, così come Aaron Sorkin fa dire a Jeff Daniels/Will McAvoy in The Newsroom, “America is not the greatest country in the world anymore” – e questo purtroppo lo abbiamo capito. Possiamo anche interrogarci se fosse vero che gli USA fossero grandi anche prima (secondo me, sì), ma sicuramente adesso non lo sono. E allora serve qualcuno che possa incarnare quello spirito nascosto, ferito. Qualcuno che possa risvegliare quel sentimento di un’America forte, orgogliosa, grande.

Non dico di averci preso in pieno, non dico che la mia analisi sia corretta, forse ho solo scritto stronzate, ma trovo che questo dubbio che dovrebbe essere approfondito. Abbiamo già commesso l’errore di sottovalutare l’impatto di una figura come quella di Berlusconi in Italia e, forse, abbiamo commesso l’errore di sottovalutare il motivo per cui è arrivato al potere: non il fatto che sia riuscito a rincoglionire un intero Paese, ma il fatto che quel Paese fosse esattamente come lui.

Lascia un commento

Come si dovrebbe costruire una timeline alternativa?

Questo post ci ha messo tanto a vedere la luce. Nato con l’intenzione di dare delle riflessioni sparse su un tema (la fantascienza ucronica) che a me piace tantissimo (e che, purtroppo, spesso e volentieri viene eseguita male), è diventato forse un po’ più complesso di quanto inizialmente previsto.

In parte, le riflessioni influenzate dal fatto che non molto tempo fa ho finito di vedere The Man in the High Castle (tra l’altro il libro da cui è tratto è stato il mio primo vero libro), che mi piace spesso giocare a Civilization, in particolare con un mod che si chiama Caveman 2 Cosmos (che fa largo uso di ipotesi alternative) e soprattutto dalla visione di molti video di AlternateHistoryHub. Insomma, come ho già detto, a me la fantascienza ucronica piace molto.

Il linguaggio non sarà sempre carino e coccoloso, siete avvertiti.

Ok, basta con l’introduzione, “let’s get straight to the biscuits” (cit.).

Continua a leggere

Lascia un commento

Cose che ho imparato

Ho smesso di sopportare i bulli e i prepotenti un mattino del 2001, quando ebbi la forza di dirne quattro a un mio compagno di scuola più alto e grosso di me. Io non volevo fare una piazzata, ma lui sì. Mal gliene incolse, perché lo smerdai di fronte a quello stesso pubblico di fronte al quale lui voleva smerdare me.

Dire che rimasi da solo, dopo quel gesto di liberazione, sarebbe scorretto e ingiusto nei confronti dei pochi, ma buoni, amici che rimasero con me, ma rimasi comunque isolato all’interno della mia stessa classe.

Vorrei poter dire che non me ne fotte più niente a distanza di 13 anni, ma non è del tutto così. Perché quell’evento mi ha lasciato dei segni dentro, come è normale che sia. E perché quel giorno imparai alcune cose.

La prima è che uno il prepotente lo fa finché glielo si lascia fare. La prepotenza è dettata non solo dalla ricerca di consenso sociale, ma dal silenzioso assenso della società. “Sono ragazzi, che vuoi che dica? E poi ci siamo passati tutti…”

La seconda è che prendere di petto qualcuno che gode di questo silenzioso assenso genera un sentimento ipocrita nella massa: nessuno avrà il coraggio di prendere il prepotente e mandarlo col culo per terra, ma sta sicuro che in privato ti verranno a dire che sei stato bravo.

La terza è che, se prendi di petto qualcuno, lo fai solo per te stesso. Certo, ti guadagni anche l’amicizia sincera di chi ti rimane accanto, ma la guadagni perché “you stood up for something, sometimes in your life“, citando Churchill.

Ieri qualcuno ha avuto la pessima idea di venire (metaforicamente, si intende) a cagarmi nel giardino di casa. Lo ha fatto per voler marcare la sua forza nei miei confronti, lo ha fatto come per dirmi “qui comando io, carino, impara a non disturbarmi”.

Grave, gravissimo errore.

Perché si da il caso che io non sia soltanto puntiglioso, testardo, egocentrico, parecchio presuntuoso e ancor di più incazzoso, nonché uno che, se gli fai girare i coglioni, sa “tenere la cottura” per anni se necessario, perché ha un’ottima memoria per i torti subiti.

Si da il caso che io, 13 anni fa, non ho imparato soltanto che un bulletto si può sconfiggere, ma anche che delle sue motivazioni, delle sue carenze, della sua storia personale che lo ha portato a essere tale, me ne sbatto altamente i coglioni.

Perché io non sono motivato dalla vendetta come Edmond Dantes. “Hatred is too strong an emotion to waste on someone you don’t like“. (cit.)

Perché io, molto più modestamente, sono la personificazione di quel karma che ti sei attirato da solo e che adesso ti prenderà a calci nel culo, finché di chiappe non te ne trovi tre.

The game is on.