Dit is niet de meetup waar ik was. Maar daar had ik geen foto’s van. Foto: Sham Hardy / CC-BY-SA
Het was een woensdagavond. Ik had niet zoveel te doen, dus ik ging naar een meetup. Een meetup is een avond waar mensen bij elkaar komen om te luisteren naar lezingen over technische dingen. Meestal wordt het gesponsord door een bedrijf, dus is er gratis eten en drank. Vaak is het ook een manier voor recruiters om nieuw talent te werven.
De meetup zou gaan over Typescript, een programmeertaal van Microsoft die lijkt op Javascript. Ik had eerder wat experimenten gedaan met Typescript en wilde er wel meer over weten.
Ik kwam uit de lift op de vijfde etage en werd gelijk welkom geheten door een meisje van het bedrijf: âdrinks are on the left, pizza on the rightâ. Expats zijn een belangrijke doelgroep van meetups, dus de voertaal is meestal Engels.
Ik ging vooraan zitten en keek een beetje om me heen. Zoân tachtig mannen en -afgezien van wat dames van het bedrijf zelf- twee vrouwen. Er waren grote problemen met de livestream dus het zou allemaal iets later beginnen. Een jongen die er uitzag alsof hij vaak aan de gewichten hing paste de welkomstslides aan. Op het scherm stond: âWeâll start in 12 minutesâ.
Na iets meer dan de aangekondigde twaalf minuten begon de introductie. De jongen met de spierballen die eerder de welkomstslides aanpaste heette ons in een vreemd Duits accent hartelijk welkom en vroeg meerdere malen om applaus voor het bedrijf dat de ruimte en de versnaperingen had geregeld. Vervolgens kwam iemand van het bedrijf een korte presentatie geven over wat ze allemaal deden. Bij de helft van de slides zei hij: âhier ga ik het nu niet over hebbenâ om het vervolgens over die slide te hebben.
Na de introductie was het tijd voor de hoofdspreker. Hij kwam uit Spanje, had een zwaar accent en praatte erg snel. Het was lastig hem te volgen. Hij had ongeveer 100 slides over Typescript en vroeg na elke slide heel snel âAny questions? No? Next slideâ.
Ik kreeg spijt dat ik helemaal vooraan was gaan zitten en besloot om dan maar van het gratis bier gebruik te maken. Ik sloop naar de tafel met drankjes helemaal achteraan in het zaaltje, maar iemand vertelde me dat er alleen nog maar Heineken 0.0% was. Ik liep schoorvoetend terug naar mijn plaats.
Na de presentatie was het tijd voor een spelletje. Iedereen werd gevraagd om zân smartphone te pakken en Kahoot te openen, waarmee we konden meten hoeveel iedereen van de presentatie had opgestoken. Helaas was de spreker vergeten in te loggen op de presentatielaptop, en duurde het ongeveer een kwartier voordat het hem lukte om zân wachtwoord te herinneren zodat hij de quiz aan kon zetten. Iedereen logde in en moest een naam invullen. Ik vulde een huilende emoji in.
Mijn huilende emoji kwam snel in de top drie tussen de andere 80 deelnemers. De spreker ging de top drie af en noemde mijn emoji een âcry iconâ.
Toen kwam de vraag of Typescript ĂĄlle elementen bevatte van object-georiĂ«nteerd programmeren. Ik vond het maar lastig. Want wat zijn die elementen dan? Bovendien was Typescript een vrij nieuwe taal. Ik antwoordde dus âneeâ. Maar dat was niet goed, want volgens de spreker had hij duidelijk in zijn presentatie laten zien dat alle elementen erin zaten.
Ik zag dat er nog tien vragen zouden volgen en besloot dat ik al te veel tijd kwijt was geweest aan deze avond. Ik droop af. âBedankt voor het komen!â zei het meisje bij de ingang, terwijl ik wachtte op de lift.
âGood morning there! Welcome to the booking.com travel agency. How can I help you?â
âHi. My wife and I are celebrating our wedding anniversary. I want to surprise her with a romantic weekend in Paris.â
âLovely. Where are you going and when?â
âWell, Paris. Next weekend.â
âExcellent, the historic city centre of Paris, next weekend.â
The employee types and looks at the computer screen.
âYou want to go to Paris during a very popular period. Thereâs a 76% increase of people looking for a place to stay there. I recommend booking soon.â
âWell, Iâm here now? Whatâs on offer?â
ââChez Madrigalâ, a ten-minute walk from the Eiffel Tower, excellent for two people, free wifi and itâs heated.â
âAre you offering any unheated hotels? Well, that sounds splendid, letâs go ahead and bookâŠâ
âSorry. Itâs gone.â
âExcuse me?â
âYou just missed it. Very popular dates apparently. The last room just sold out.â
âThen why are you proposing this hotel?â
âItâs wonderful and gets a 9.7 on average for the location.â
âAh, my wife is very keen on antique furniâŠâ
âThis place is in high demand, thereâs only 1 room left on this site. It has been booked 12 times in the last 6 hours.â
âPlease, could you calm down for a bit?â
âSomebody from Belgium booked a room in this hotel 32 minutes ago.â
âSo what? What are the rates?â
â250 euros per night.â
âJeez! Donât you have anything more affordable?â
ââRoyal Saint Honoreâ is available for only 100 euros per night. Thatâs a rare find, usually itâs booked months in advance. Youâre very lucky! I would make a reservation right now before itâs sold out.â
âPlease, could you be a little less agitated? This is a nice place to stay?â
âVisitors rate it with an 8.9 on average. Veronica from the Czech Republic calls it âmagicalâ, it felt like home.â
âWell, that sounds excellent.â
âI like to give you the full picture. Maura from Israel disliked it heavily and rated it 3.8. Mugur from Romania was awake all night because of mosquitos. Jacqueline from England was disgusted by the mold in the bathroom.â
âWait a second. Are we talking about the same place?â
âBruno from Germany compares the interior to a fairytale. Chris from Australia was really satisfied with the modern clean bathroom. Jeanine from the USA was startled by the beauty of the room.â
âIâm confused.â
â96% of all guests rated this hotel as good or better than their expectations.â
âYou know what?â
âYes?â
âWeâll stay at home. Iâm going to make a reservation at a restaurant.â
âOh, but weâve also added that to our services. I could make a reservation for youâ
âI would prefer that you donât.â
â84% of all restaurants have a reservation already, but thereâs this lovely Thai that has a single unreserved table. Kelly from Austria writes that it saved her marriage. Bob from Norway found cockroaches in his food. Somebody from Poland made a reservation 12 minutes ago.â
âGoodbye.â
This post originally appeared in Dutch in the 73th edition of De Circulaire, my biweekly newsletter.
Elke twee weken verstuur ik mijn nieuwsbrief: De Circulaire. Behalve kattengifjes (de reden van mijn ongeëvenaarde succes) bevat mijn nieuwsbrief ook een tien tot vijftiental zorgvuldig geselecteerde linkjes naar leuke websites. Maar hoe maak ik elke twee weken die selectie?
Oogst
Linkjes oogsten gaat op veel manieren: via sociale media als Twitter, Facebook en Reddit. Via media die ik lees. Doordat ik plotseling op een gekke website terecht kom. En natuurlijk via mijn trouwe lezers die me dingen sturen.
Dat is de eerste stap. Het linkje komt terecht in een lijstje in Wunderlist, mijn favoriete lijstjesapp. Meestal ben ik lui en wil ik het niet meteen lezen, dus komt het linkje terecht in het lijstje âLinkjes ongelezenâ. Op het moment van schrijven zitten daar zo’n 79 linkjes te wachten. Vaak zijn het er veel meer.
Schiften
Eens in de zoveel dagen ga ik door dat lijstje heen, lees ik een paar dingen en ben ik aan het schiften: als ik na een paar zinnen al geen zin meer heb gaat het onherroepelijk de prullenbak in. Maar als ik door blijf lezen betekent dat nog geen plaatsing: het linkje gaat eerst naar een ander lijstje: ‘Linkjes gelezenâ.
Als ik eenmaal toe ben aan het schrijven de nieuwsbrief ga ik weer door dat lijstje heen en bekijk ik kort nĂłg een keer of het linkje wel iets is voor voor de aanstaande Circulaire. Dan bedenk ik in welke van de drie vage categorieĂ«n het thuishoort: nieuw & belangrijk, kunst & techniek en grappig & opmerkelijk. Ik probeer me te richten op zo’n 3-5 linkjes per categorie. Als er al te veel linkjes van een bepaald type zijn dan gaat het linkje weer terug naar de lijst en wacht het op een volgende editie. Soms komt die editie nooit en valt het linkje alsnog af.
Door dit kritische proces kan ik de beste linkjes aan mijn lezers bieden. Ik schat dat elk linkje dat in het ‘ongelezenâ lijstje komt slechts zo’n 20% kans heeft om in de nieuwsbrief te belanden.
De afvallers
Om een idee te geven wat u elke twee weken niet leest, hier een greep uit de afgewezen linkjes en waarom ze afvielen:
De laatste stap is een tekstje verzinnen. Ook dat is nog best een proces, want mijn lezers moeten goed weten wat ze kunnen verwachten, maar ik wil ook niet meteen alles verklappen. En zelfs dĂĄn besluit ik nog wel eens dat het linkje toch niet Circulaire-waardig is en verdwijnt het naar de prullenbak.
âIemand uit de OekraĂŻne heeft 32 minuten geleden een kamer in dit hotel geboekt.â
âSo what? Hoeveel kost dit hotel?â
ââŹ250 euro per nacht.â
âJeetje! Heeft u niet iets goedkopers?â
âIk heb âBed and breakfast Guido Gezelleâ voor âŹ100 per nacht. Meestal is die niet beschikbaar. U heeft heel veel geluk! Ik zou nu reserveren voor het uitverkocht is!â
âJaja, niet zo opgefokt. En dit is een goed hotel?â
âBezoekers geven gemiddeld een 8.9. Veronika uit TsjechiĂ« vond het een magische ervaring, het voelt alsof ze thuis was.â
âNou, dat klinkt uitstekend.â
âIk geef u graag het hele plaatje. Maura uit IsraĂ«l vond het afschuwelijk en gaf een 3.8. Mugur uit RoemeniĂ« had de hele nacht last van muggen. Jacqueline uit Engeland had schimmel in de badkamer.â
âWacht, is dit hetzelfde hotel?â
âJoanna uit Engeland vond het interieur als uit een sprookje. Caroline uit AustraliĂ« was erg blij met de moderne schone badkamer. Jeanine uit Amerika kon niet meer ademen toen ze de kamer binnenkwam, zo mooi vond ze het.â
âIk ben een beetje in de war.â
â96% van de gasten vonden dit hotel net zo goed of beter dan ze hadden verwacht.â
âWeet je.â
âJa?â
âWe blijven thuis. Ik reserveer wel een restaurant.â
Ik was met mijn vriendin drie weken in Griekenland. We vlogen op Thessaloniki en maakten een rondje over het vasteland tot aan Delphi. We zijn op geen enkel groot eiland geweest maar wel in prachtige natuurgebieden, bergen en rustieke dorpjes. En we kwamen na drie weken tot de conclusie dat Griekenland het ideale vakantieland is. Waarom? Lees verder…
Melitzanosalata, ansjovisjes en dolma
1. Griekenland heeft fantastisch eten
De meeste mensen zullen bij de Griekse keuken vooral denken aan grote porties vlees en ouzo. Maar Griekenland heeft een fantastische gevarieerde keuken, juĂst voor mensen die niet zo van (veel) vlees houden. Ja, souflaki en moussaka krijg je overal, maar ook alomtegenwoordig zijn mezze: kleine gerechtjes, vergelijkbaar met de Spaanse tapas. Als je er drie of vier van neemt heb je een uitstekende maaltijd. Gegrilde oesterzwammen, auberginedip (melitzanosalata), Griekse salade, fava, gerookte makreel, het is allemaal even smakelijk.
Een kat bij het dakpannen en bakstenenmuseum in Volos
2. Griekenland heeft gezellige straatdieren
Behalve dat een maaltijd precies âŹ23,50 kost (meerdere malen gebeurd) is een andere zekerheid dat er altijd schooiende katten en honden zijn. Soms irritant, maar meestal gewoon heel gezellig. Ook bij de meeste hotels waar wij zaten waren er altijd straatdieren om je te amuseren (en te bedelen om eten).
Ondergetekende doet even voor hoe je op z’n Grieks rijdt
3. Griekenland is prima te berijden
We hadden dramatische verhalen gehoord over autorijden in Griekenland, want slechte wegen en automobilisten. Het klopt dat Griekenland een van de landen is binnen de Europese Unie waar de meeste verkeersdoden vallen. Maar afgezien van onze brakke auto (huur nooit een auto bij âSurpriceâ op het vliegveld van Thessaloniki!) viel dat eigenlijk heel erg mee.
De wegen zijn over het algemeen prima (bedankt, EU!) en lang niet zo druk als in Nederland. Het klopt wel dat Grieken er een rare rijstijl op nahouden: half op de vluchtstrook rijden is doodnormaal (of een uitnodiging om in te halen), iedereen rijdt stelselmatig twintig kilometer te hard (het liefst met een arm uit het raampje) en dubbel parkeren is schering en inslag.
Maar Nederlanders rijden ook raar. Opeens drie banen op de snelweg oversteken om nog even snel een afrit te halen, bumperkleven, inhalen zonder richting aan te geven: in Griekenland rijden ze veel relaxter.
De wagenmenner van Delphi
4. Griekenland heeft de wagenmenner
In het Nationaal Museum van Rome werd ik vorig jaar verliefd op de rustende bokser, een meer dan 2000 jaar oud bronzen beeld. Toen ik zag dat ze in het Griekse Delphi óók zo’n oude brons hadden wist ik dat ik daar heen moest. De wagenmenner van Delphi is te zien in het museum daar en is net zo’n ontroerende ervaring.
5. Griekenland heeft de liefste mensen
Het viel me terug in Nederland op hoe afstandelijk iedereen is. Als je een winkel binnengaat word je geholpen, er vindt een transactie plaats, maar over iets anders dan die transactie heb je het niet.
Hoe anders is dat in Griekenland. Zelfs als je in een supermarkt bij de kassa afrekent beginnen mensen tegen je te kletsen: waar kom je vandaan? Wat vind je van Griekenland? Waar ben je al geweest? Het is echt geen trucje: iedereen babbelt de hele dag met elkaar. Je moet daarom wel lang wachten als je de rekening wilt, want de ober moet met iedereen een gesprek gaande houden.
Grieken geven je ook de hele tijd kadootjes. We hebben een tros bananen gekregen, chocolaatjes, ruitenwisservloeistof(!) en eindeloze toetjes en stukken meloen. Het toppunt was ons hotel in Arachova (bij Delphi), dat door een familie werd bestierd die ons de hele dag wilde verwennen met koffie en gebakjes. Weigeren was lastig: de lobby van het hotel was tevens hun huiskamer. Als je terugkwam van een uitje werd er gelijk een tafelkleedje neergelegd en kwam er zoetigheid en deegflapjes op tafel.
ongeveer 100 gram verse spinazie (3 handen) en eventueel wat om rauw mee te garneren
200 gram basmati rijst
Bereiding
Fruit de ui samen met de knoflook.Roer er de kurkuma, garam masala, knoflook, tomatenpuree en zout door. Doe de linzen erbij met 400 ml koud water en breng aan de kook. Laat minstens 30 minuten koken zonder deksel op laag vuur, terwijl je het af en toe roert tot het een puree wordt. Hoe langer je kookt, hoe lekkerder het wordt. Voeg regelmatig water toe als het te droog wordt.
Maak ondertussen de rijst klaar.
Als de linzen bijna klaar zijn roer je de spinazie door de linzen. Voeg het beetje bij beetje toe, steeds als het geslonken is weer een handje.
Serveer met yoghurt, rijst, rauw spinazie, cranberries en wat je verder maar lekker vindt
One way to measure ‘celebrity’ is by counting how many language editions of Wikipedia have an article on the subject. Running the query again with that addition provides some well-known names. At the top with 165 articles is Stephen Hawking. After that we find the recently deceased Anthony Bourdain (90 articles) and science-fiction author Ursula Le Guin (84 articles).
So, who edits those articles when a person dies?
After getting a list of celebrities we now can investigate who first edited their Wikipedia articles to indicate that they died. Unfortunately this takes some manual labour so I restricted myself to the first 26 names and the English Wikipedia for the edits.
For those 26 articles there were 26 different ‘deaditors’. And what was surprising: two-thirds of those edits were done by anonymous users.
‘Anonymous’ means that they edit without being logged in. Their edits are logged under their current IP address instead. Those edits tend to be a bit controversial, because the majority of vandalism on Wikipedia comes from anonymous edits. But those anonymous editors apparently are pretty fast when someone dies.
Another interesting observation: almost a third of those 26 edits were done from a mobile phone. I can assure you: editing Wikipedia from a smartphone is not very user-friendly. Most Wikipedia contributors use the desktop version.
Did those ‘deaditors’ write about their subjects earlier? Usually not. For one out of four of the articles, the ‘deaditors’ belong to the top 20 of users with the most edits of the article. They only appear in the top 5 in two cases.
Other patterns
I plotted the number of edits in the article by month. When observing those plots you notice that for Wikipedia, your death is the most important event in your life. In only 3 of the 26 edit histories there was a peak at a different moment. Some people have a constant flow of edits (e.g. Stephen Hawking). With others there’s a big difference between the ‘death peak’ and the other edits. Sometimes because death was unexpected (Dolores O’Riordan of Cranberries fame). Sometimes because little happened in the last years of their lives (Barbara Bush).
In a nutshell
When a celebrity dies, who edits their Wikipedia article so quickly? The answer seems to be: a highly diverse set of people, often anonymous, and surprisingly often from their smartphone.
Why they edit those articles is beyond the scope of this short article and limited research scope. But you could speculate that knowing you’re the first person pronouncing someone dead on such a visible site as Wikipedia might be interesting.
Toen ik een paar weken geleden mijn zolder aan het opruimen was kwam ik een map tegen met recepten. Jarenlang had ik met veel ijver recepten uit de Allerhande gescheurd, geperforeerd en in een mapje gestopt. Want ooit zou ik een goede keuken krijgen en dat allemaal gaan koken.
Nu, zo’n tien jaar later, bladerde ik er doorheen. Ik had helemaal niks met die recepten. Moet ik dit nu allemaal gaan koken omdat ik dat in 2008 wilde?
Jammer voor de 24-jarige versie van mezelf, maar ik heb alle recepten weggegooid.
En wat bleek? Het was heerlijk. Een heel fijn rijstgerecht wat je zo kan serveren in een groezelig maar goed tentje op de Zeedijk. Met wat eigen aanpassingen presenteer ik jullie: wat ik tien jaar geleden wilde dat ik ooit ging koken.
Hoisinroerbakschotel met broccoli, erwten en sesamzaadjes Voor vier personen
Ingrediënten
120g ongekookte witte rijst
4 el BBQ saus
4 el hoisin saus
1 el oestersaus
1 el pindakaas
1 el sojasaus (b.v. kikkoman)
2 teentjes knoflook
stukje gember
1 rood pepertje
sesamolie of arachideolie
2 uien
1 winterpeen of 1-2 flinke wortels.
1 kleine broccoli
300g diepvrieserwten
2 eieren
3 el sesamzaadjes
400g rund, kip, varken of vegavervangers, in dunne reepjes gesneden.
Bereiding
Maak eerst de saus. Deze gebruik je zowel voor het gerecht als voor het marineren van het vlees. Snipper of pers de knoflook, gember en rode peper en meng met de BBQ saus, hoisin saus, oestersaus, pindakaas en sojasaus. Voeg eventueel een scheutje water toe als de saus niet goed mengt.
Marineer het vlees in een Ă twee eetlepels van de saus.
Kook de rijst gaar in weinig water.
Snipper ondertussen de uien, snij de broccoli in roosjes en snij de wortel julienne.
Blancheer de broccoli: laat deze een paar minuten koken, giet af en overgiet vervolgens met koud water.
Als de broccoli is geblancheerd, de groentes gesneden en de rijst gaar kun je het gerecht gaan maken. Zorg ervoor dat je alle spullen bij de hand hebt, want een roerbakschotel dient snel en op hoog vuur te worden gemaakt.
Verhit een wok zo heet als je durft. Bak kort even de sesamzaadjes tot ze een beetje bruinig zijn in de droge wok en zet ze opzij.
Verhit olie in de wok. Roerbak het vlees op hoog vuur tot het gaar is.
Voeg de ui en wortel toe en roerbak gaar in enkele minuten. Voeg dan de rijst toe, en iets later ook de broccoli en de erwten. Blijf omscheppen op hoog vuur. Als het gerecht te veel plakt aan de pan kun je altijd een klein scheutje water toevoegen.
Maak wat ruimte midden in de pan en breek hier de twee eieren. Schep ze om met de rest van het gerecht zodra ze enigszins gestold zijn.
Voeg de helft van de saus toe, meng goed, proef en voeg dan de rest van de saus toe naar smaak.
Garneer met de sesamzaadjes en serveer met je favoriete selectie aan condimenten. Ik ben zelf fan van srirachasaus en de pittige roti sambal tomaat van Lekkerbekkie.
Over anderhalve week mogen we stemmen voor de gemeenteraad. Maar op wie? De gemeente Amsterdam kent maar liefst 28 partijen die meedoen.
Ja, er zijn stemwijzers, partijprogrammaâs en debatten. Maar wat gaan de partijen voor mijn persoonlijke situatie doen?
Ik besloot om alle partijen een mailtje te sturen met een concrete vraag. Ik woon op de Oostelijke Eilanden in Amsterdam, waar de laatste tijd nogal wat ellende heeft plaatsgevonden.
Dus dit vroeg ik een week geleden:
Beste, Ik ben mij aan het oriënteren op welke partij ik ga stemmen voor de gemeenteraadsverkiezingen in Amsterdam. Vandaar dat ik alle partijen aanschrijf met dezelfde vraag.
Ik ben zelf woonachtig op de Oostelijke Eilanden. Zoals u wellicht weet zijn daar recent meerdere gewelddadige incidenten geweest, waarvan een aantal zelfs met dodelijke afloop, en zijn er problemen met drugscriminaliteit.
Mijn vraag is daarom: wat gaat u doen aan deze problematiek op de Oostelijke Eilanden als u in de gemeenteraad komt?
Resultaten van dit onderzoekje onder alle partijen zal ik publiceren in De Circulaire, mijn tweewekelijkse nieuwsbrief.
Bij voorbaat dank voor het beantwoorden van mijn vraag.
Met vriendelijke groet, â Hay Kranen
De eerste stap was de contactgegevens achterhalen van alle 28 partijen. Bij voorkeur mailde ik direct de lijsttrekker. Dat was niet altijd mogelijk, dus dan zocht ik het algemene mailadres van de Amsterdamse afdeling. In sommige gevallen kon ik alleen een Facebook-pagina vinden en heb ik daar een bericht naar gestuurd. Soms bleek dat ook de enige manier om de lijsttrekker te bereiken.
Het achterhalen van al die gegevens was trouwens niet makkelijk, zelfs bij de grotere partijen. De PvdA had dan wel de vriendelijke campagnekat Bert, maar de apenstaart-icoontjes bij de nummers 1 en 2 van de lijst leidden niet naar een mailadres. De VVD had de contactknop in een carrousel zitten, waardoor je ze per ongeluk liket op Facebook in plaats van mailt. Het dieptepunt was toch wel Groenlinks, die op hun website geen enkele contactmogelijkheid bood voor de kandidaten in Amsterdam en zelfs niet om de afdeling Amsterdam (zes zetels in de raad) te contacteren. Ik heb uiteindelijk maar iets gestuurd naar het algemene landelijke(!) mailadres van Groenlinks.
Opvallend was ook de dominantie van Facebook: 3 partijen hadden zelfs alleen maar een Facebook-pagina. Uiteindelijk heb ik er 8 via Facebook gecontacteerd.
Wat gaan die negen partijen doen aan de problemen op de Oostelijke Eilanden?
De SP wil meer politiecapaciteit en verder gaan met de top 600, waar de grootste criminelen van de stad in staan. Maar ze willen ook meer preventieve maatregelen, zoals meer en goedkopere woningen voor jongeren. Ten slotte wil de SP de jeugdwerkeloosheid aanpakken, aangezien veel jongeren thuis zitten vanwege discriminatie op de arbeidsmarkt.
De Piratenpartij wil de nationalisering van de politie ongedaan maken en meer kleine politiebureaus openen en wijkagenten inzetten.
Het legaliseren van XTC en cannabis, dat is volgens de Basisinkomen Partij de belangrijkste maatregel.
De Amsterdamse Juffers zijn vooral van het informeren en uitzoeken van wat er aan de hand is en vervolgens extra maatregelen treffen zoals cameraâs en politie-inzet. Misschien dat de Juffers iets anders bedoelen, maar dit is volgens mij exact wat er al gebeurd is.
Samen heeft een hele innovatieve oplossing: een âgeheime camerahotspotâ waar de criminelen stiekem op vastgelegd kunnen worden.
Carry on the move geeft eerlijk toe dat ze als 1-vrouw partij zich vooral wil focussen op haar belangrijkste punt (participatie van mensen met een handicap) en daarom geen concrete ideeën heeft.
50PLUS wil meer wapencontroles, desnoods elke week. En verder moet de politie de oplossingsquotas verhogen en moeten de criminelen uit de top 600 veel harder worden aangepakt.
De SGP wil het âingezetenebeleidâ handhaven (alleen inwoners van Nederland mogen cannabis kopen in een coffeeshop), op termijn alle coffeeshops sluiten, meer voorlichting geven aan jongeren over drugs en meer politie tegen drugshandel inzetten.
Tenslotte U-Buntu Connected Front, die het invoeren van de duurzame ontwikkelingsdoelen van de Verenigde Naties als de oplossing ziet.
Ik weet nog niet op wie ik ga stemmen, maar ik ben wel blij dat bijna een derde van de partijen de moeite hebben genomen om een antwoord te sturen.
Want dat viel mij het meest op: het uitblijven van een reactie van alle partijen die nu in de raad zitten, afgezien van de SP. Van D66, de PvdA, VVD, Groenlinks, Partij voor de Dieren, CDA en Partij van de Ouderen heb ik niks teruggehoord.
De grote partijen kunnen wat dat betreft wat leren van de kleintjes. Want met ongetwijfeld minder budget en mankracht lijken zij deze verkiezingen een stuk serieuzer te nemen.
I was migrating some git repositories. A repository is something developers use to safeguard code. One of the most popular systems to do that is called git. For reasons that are beyond the scope of this blogpost the git repositories for my team were located on a personal account instead of a company account. Obviously this is a situation that needs to be fixed.
This task seemed simple enough: copy the repositories, change a couple of references and be done with it. The first step (the copying) was actually finished in just a couple of minutes.
Unfortunately things (and my afternoon) went downhill from there. One of the repositories was used as a Javascript dependency in around 250 projects that my colleagues and i have been working on for the past couple of years. A dependency in a software project is another piece of software that is needed to perform some well-defined task.
I needed to make sure that the more recent of those 250+ projects got an up-to-date version of this dependency, specifically one that was above version 3.0.0. This dependency was included as a direct link to the git repository, opposed to the more regular method of using a ‘registered package’ (this distinction is important later on in this story).
I already had this working (or so i thought), but one colleague mentioned to me earlier that for some reason the dependency didn’t install on his laptop. The thing is, i already had a hunch what the problem could be. One of the most popular options to install dependencies in the Javascript world is called npm, the so called node package manager (note that ‘package’ and ‘dependency’ are more or less the same thing). Because Javascript is in constant flux and things get outdated very fast there is actually another popular package manager that’s basically the same thing as ‘npm’ but does things slightly different. That package manger is called yarn.
I use yarn, my colleague uses npm. And that was, i thought, the cause of the problem.
So, i experimented with the dependency and the quite esoteric syntax to get ‘i need version 3.0.0 or later of this package’ working with the two different package managers (npm and yarn).
It didn’t work. In any of those package managers.
First i thought i was doing something wrong with the syntax. Then after many failed attempts i gave up and decided that maybe this method just wasn’t working. Instead of using the direct link to the git repository i decided to publish the whole thing as a ‘registered package’. This means that the package is published under a short name in a public register (known as the ‘npm registry’) instead of the direct url to the git repository.
However, publishing the package didn’t work. I got a pretty cryptic error message. After some Googling it turns out that my package name was ‘too similiar’ (but not identical!) to another package.
No worries, apparently i could use something called ‘scoped packages’ that would fix this problem and make my package name unique (at least unique enough to stop npm from throwing errors).
Turns out that making my package ‘scoped’ ment i also needed to change lots of code in all of those 250 projects that depended on it.
That seemed like a lot of extra work, so i decided to try one last time getting the git repository link to work as intended.
And then, after a closer look, i realised i didn’t transfer any of the version tags from the old to the new repository, i only transferred the files. Npm and yarn need those tags to install dependencies of a certain version.
So, after transferring the version tags i tried installing the dependency again with ‘npm’ and voila: it worked!
Just as a precaution i checked if my dependency installed with ‘yarn’ as well (remember the story about the two package managers that do the same thing but aren’t the same thing?).
It didn’t.
From a situation where installing dependencies in yarn worked but not in npm i now had the complete opposite.
I got some pretty esoteric error from yarn this time, which is weird, given that i’ve used the official documentation to figure out the exact way to indicate a ‘version range’, and the thing installed with npm perfectly.
So i sighed, and turned to Google again. I looked at all the known bugs and issues with yarn and found a couple that seemed similar to my problem, but none that were really helpful. So i reported a bug with the yarn project, figuring i would probably need to postpone the whole repository migration.
Fortunately i got a response pretty quick and it turns out this was actually a known problem, and already fixed in a new version of the tool that was released in a beta version just a day before. I tried the new version and voila: no problems installing the dependency. This beta version of yarn is probably going to be released in a couple of days, so if i had waited with transferring the repositories just a few days and updated my installation of yarn then i wouldn’t have encountered this problem at all.
After i was finally done migrating the git repositories and making sure all dependencies were installed i looked at the clock. Three pretty useless hours had gone by.
So, is there any moral to this story? Things that could have prevented me from spending my afternoon chasing ghosts and cryptic error messages?
I guess i could have taken a longer look at some of the error messages, so i might have realised earlier my files were transferred but my version tags were not. I guess the yarn project could spend some time rephrasing their error messages to be less cryptic. I guess git might transfer files and tags by default. I guess npm could warn about the problems you might encounter if you use scoped packages.
But in all honesty i think it’s just another story that shows that software development is a difficult, tricky and error-prone practice. Situations like this happen to me virtually every day and i guess, to every other developer in the world as well.
And we, humble programmers, should just accept that as a sad and sobering fact of life.