• Zzzz

    Zaterdagochtend gaan slapen om 5u35 en zondagochtend om 6u08, dat is niet zo’n goed idee, als ge de  maandag om 7u op moet om kinders eten in hun hoofd te steken en boekentassen te maken en brood te smeren en naar school te voeren.

    Ik was niet zo goed wakker, vandaag op het werk. Ik heb dan maar in plaats van middagpauze snel mijn boterham opgegeten en dan een beetje shuteye gedaan voor de computer.

    Anders was ik de lange meeting van de namiddag niet zonder kleerscheuren doorgeraakt.

    En vanavond vroeg in bed, denk ik.

    ⁂

  • Gedaan vakantie

    Voor mij was het al een tijd gedaan, de vakantie, maar nu is het voor iedereen in het gezin gedaan.

    Terug naar school, voor Anna en voor Zelie het laatste semester van respectievelijk lagere school en humaniora. Voor Jan en Louis  ongetwijfeld een positieve tweede helft van het eerste en vierde jaar. En voor Z & A hopelijk elke week en elke maand wat meer normalisatie.

    De eerste week van het jaar was eigenlijk maar een aanloopweek. Ik ga alsnog proberen het niet allemaal te zwart in te zien. Het zal niet evident zijn wegens redenen, maar een mens moet zijn best doen. Denk ik dan. Al was het maar om niet helemaal zot te worden.

    ⁂

  • 10 bullets

    Zeer inspirerend.

    Via de onvolprezen AvE.

    ⁂

  • Filmavond met dochter

    Ge moet dat ook eens doen, met uw dochter naar films kijken waar ze niet van weet wat of hoe.

    Wij hebben achtereenvolgens naar Swiss Army Man en 10 Cloverfield Lane  gekeken.

    U hu hu.

    Ik vond het twee uitstekende films, trouwens.

    ⁂

  • Links van 13 december 2016 tot 5 januari 2017

    Renewing Medium’s focus
    Upon further reflection, it’s clear that the broken system is ad-driven media on the internet. It simply doesn’t serve people. In fact, it’s not designed to. The vast majority of articles, videos, and other “content” we all consume on a daily basis is paid for — directly or indirectly — by corporations who are funding it in order to advance their goals. And it is measured, amplified, and rewarded based on its ability to do that. Period. As a result, we get…well, what we get. And it’s getting worse.

    Carl Paladino, Donald Trump’s New York co-chairman, says he’s “not racist” in apology for Michelle Obama remarks – Salon.com
    “Michelle Obama,” Paladino wrote. “I’d like her to return to being a male and let loose in the outback of Zimbabwe where she lives comfortably in a cave with Maxie, the gorilla.”

    Wikipedia:Wikipedia Signpost/2016-12-22/Special report – Wikipedia
    On 18 December, the ten-member German Wikipedia ArbCom (widely known as "the SG" for Schiedsgericht, or "arbitration court", in German; Google translation) suffered its eighth resignation since September, leaving only four arbitrators—fewer than the quorum of five for making case judgments. There is no provision for by-elections, and the next election is not due until May 2017; former arbitrators are unable to undo their resignation.

    The Case Against Hiring a PR Agency | Mike Maney
    No seed funded or pre-A round startup should have a PR agency on their balance sheet.

    Opinie: Blijkbaar zijn er in de regering die denken dat thuiskomen van de oorlog is als thuiskomen van vakantie | Standpunt | De Morgen
    Ik denk dat ik de radio maar af zet als een federaal regeringslid straks weer met een cheque het geweten komt sussen in De Warmste Week.

    ⁂

  • Het betert niet

    Nope, het betert niet.

    2017 wordt niet mijn jaar, vrees ik.

    Ze hebben mij ooit geleerd dat het daarom is dat  godsdiensten uitgevonden zijn: dat de goeden gestraft worden en de slechten beloond, en dat dat een probleem geeft in een maatschappij die groter is dan een paar huizen rond een waterpomp, en dat  een systeem met beloning en straf na de dood zorgt voor rust en berusting in het ondermaanse.

    Maar godsdienst is fabeltjes, en ondertussen blijft het onderliggende probleem. Ja, zorg voor eigen zingeving en intrinsieke motivatie en yada yada. Maar  van zodra een mens links of rechts van zich kijkt, en ziet dat ge er met liegen en bedriegen veel sneller raakt, is dat redelijk demotiverend.

    Ik sprak onlangs met iemand die aan het afgeven was op de regering en het Belgisch systeem en de belastingen en dat het godgeklaagd was en dat er niets overbleef en dat gewone simpele mensen als hij, die hard hun best doen om altijd binnen de lijntje te kleuren, gestraft worden, terwijl  anderen alles gratis krijgen. Dat ‘alles gratis krijgen’ is zo’n beetje een shibboleth, en bij doorvragen bleek inderdaad: mens redelijk rechts van instelling, en dat “zijn best doen om altijd binnen de lijnen te kleuren”, dat was eigenlijk maar beperkt gebleven tot een zéér korte periode als werknemer.

    Zeer snel daarna had de mens beseft dat hij zelfstandige moest worden, als hij de staat een kloot wou kunnen afdraaien. En dat hij nu alles doet om geen belastingen te betalen, en  dat het toegegeven niet zeer moreel  in orde is en juridisch en fiscaal enorm zeer hard op en rond de lijn en soms erover maar dat is onvermijdelijk — maar “ze” kunnen nu niet meer aan zijn geld, en hij verdient bíkken geld en het is alleen voor hém en godverdomme het moest eens gedaan zijn met al die profiteurs die op onze rug leven en al dat gratis verdju.

    De ironie deed bijna lichamelijk pijn.

    Maar zo zit de wereld dus wel degelijk in elkaar.

    ⁂

  • Fuck de wereld

    Ik dacht, ik schrijf eens voornemens voor 2017. Dat is in, iedereen doet dat, en het is altijd positief en zo. En dan eindig ik mijn bericht met iets in de zin van

    En nu is het aan jou. Wat ben  jij van plan in 2017? Wat zijn je wensen en verzuchtingen? Wat kan beter, of wat kan anders? En wat ga je  niet meer doen?

    en dan  vergeet ik niet hier en daar wat mensen te namechecken en wacht ik op de positieve commentaren.

    Maar neen. Het is om zeep. Het is echt om zeep.

    De enige ‘oplossingen’ die ons aangereikt worden op het internet, zijn varianten op “trek het u allemaal niet aan”. Of dat nu “koester uw naasten” is of “doe een digital detox” of “lees minder de krant”, het komt op hetzelfde neer: doe uw ogen dicht, word niet verontwaardigd, berust in de miserie.

    Ik ken mensen (nu ja, ‘kennen’, ik weet van mensen die ik op het internet ‘ken’) die zonder ironie tweets van Donald Trump fijn vinden en retweeten.  Dat was voor mij eind vorig jaar  wat de deur dicht deed.  Dat, en naar Michael Van Peel’s eindejaarsconferentie kijken. En de niet-aflatende stroom desinformatie en nonsens die sinds  post-truth woord van het jaar werd alleen maar lijkt erger te worden.  En het racisme en de intolerantie die  ook alleen maar erger en erger en meer en meer aanvaard wordt.

    Niets dat ik niet wist, niets verrassend, maar  ik word er depressief van. Omdat ik geen oplossing zie.

    Fuck it, dit jaar, dus. Fuck it.

    ⁂

  • Zelie, Jolein en Lana

    Die ochtend, in de  nationale pers:

    Ha! En met foto en al!

    ⁂

  • Jan krijgt Arduino-les op school, en hij vond dat wel wijs, en dus had hij weinig subtiel laten weten dat hij graag ook Arduinodingen zou doen thuis.

    De vrienden van DealExtreme hebben extreme deals, en onder het motto  een lichte overdaad kan geen kwaad, hebben we nu dus meer sensoren dan we een stok naar kunnen schudden in huis, en een lcd-scherm, en joysticks  en allerlei waar ik nul verstand van heb.

    Ik weet nog altijd niet hoe ik ook door mijn studies geraakt ben op school. In principe deed ik een wetenschappelijke richting,  en ik herinner mij vaag dat er een hele tijd sprake was van  electriciteit, dat ik ooit zelfs van die schema’s moest tekenen en debuggen, maar bij gebrek aan toepassingen  is dat nooit langer dan een semester blijven hangen.

    Maar nu dus die Arduino.

    Ik snap het concept min of meer, en ik ben samen met Jan op verkenning gegaan.

    Eerste probleem: Jan leert het op school eerst met Ardublock, een soort Scratch-achtige interface, maar dat werkt niet meer met de laatste versie, dus was het in code te doen.

    Eerst een simpel circuit gemaakt, van pin 3 naar het breadboard en dan  door een weerstand en naar een  LED, en dan terug naar grond.  Een simpel scriptje geschreven:

    void loop() {
      analogWrite(3, 255);
      delay(500);
      analogWrite(3, 0);
      delay(500);
    }

    Dat doet wat een mens ervan zou verwachten:  zeggen dat de snok naar 3 veel moet zijn en dan wachten en dan dat de snok niets moet zijn en  weer wachten en terug herbeginnen.

    So far so good. Tweede poging: twéé lichtjes. Alletwee na elkaar, en ziet nu: dat werkt, ze knipperen samen.

    Derde poging: verkeerslichten! Een rood, een oranje euh geel wegens geen oranje, en een groen.

    En dan proberen groen, oranje, rood en herbeginnen:

    void loop() {
      analogWrite(1, 255);
      delay(3000);
      analogWrite(1, 0);
      analogWrite(2, 255);
      delay(1000);
      analogWrite(2, 0);
      analogWrite(3, 255);
      delay(3000);
      analogWrite(3, 0);
    }

    Ow, maar da’s allemaal onleesbaar en onduidelijk. Tijd om Jan het concept can variabelen te tonen:

    int groen = 1;
    int geel  = 2;
    int rood  = 3;
    
    int aan = 255;
    int uit = 0;
    
    void loop() {
      analogWrite(groen, aan);
      delay(3000);
      analogWrite(groen, uit);
      analogWrite(geel, aan);
      delay(1000);
      analogWrite(geel, uit);
      analogWrite(rood, aan);
      delay(3000);
      analogWrite(rood, uit);
    }

    Hoera!

    Tijd om  nog wat loops te doen: wat als we het oranje licht een paar keer  laten knipperen vóór het op rood springt?

    Dat kan zo:

    analogWrite(geel, aan);
    delay(1000);
    analogWrite(geel, uit);
    delay(100);
    analogWrite(geel, aan);
    delay(100);
    analogWrite(geel, uit);
    delay(100);
    analogWrite(geel, aan);
    delay(100);
    analogWrite(geel, uit);
    delay(100);
    analogWrite(geel, aan);
    delay(100);
    analogWrite(geel, uit);
    delay(100);
    analogWrite(rood, aan);

    Maar da’s een beetje achterlijk, wat als we het tien keer zouden willen doen?

    Dus zo kan het ook, ziet:

    int teller = 0;
    
    while (teller <= 4) {
      analogWrite(geel, aan);
      delay(100);
      analogWrite(geel, uit);
      delay(100);
      teller = teller + 1;
    }

    Hoera een loop!

    En als we toch al een loop hebben, dan kunnen we  misschien eens proberen om het licht van 0 naar 255 te laten gaan en te zien wat dat geeft?

    In plaats van

    analogWrite(geel, aan);

    doen we dan

    int helderheid  = 0;
    
    while (helderheid <= 255) {
      analogWrite(groen, helderheid);
      delay(10);
      helderheid  = helderheid  + 5;
    }

    En hoera! Dat  dimt het groen aan, in plaats van het meteen aan te steken!

    Maar als we dat voor elk licht willen doen, zouden we dat drie keer moeten schrijven, terwijl het ook zo kan:

    void aandimmen(int kleur) {
      int helderheid = 0;
      while (helderheid <= 255) {
      analogWrite(kleur, helderheid);
      helderheid = helderheid + 5;
      delay(10);
    }

    en dan

    aandimmen(groen);
    aandimmen(geel);
    aandimmen(rood);

    …maar wat als we de snelheid van het dimmen zouden willen instellen? En als het zowel aan- als afdimmen zou moeten zijn?

    Enfin,  een beetje gedoe later was het dit scriptje geworden:

    arduino1

    Er gaan geen prijzen mee gewonnen worden, maar op  geen tijd was Jan toch mee met variabelen en loops en booleans en  functies en al.

    En dit was het resultaat:

    AAARGH. Het werkt niet! Het groene lampje doet een propere aan- en uitdimming, maar oranje en rood niet.

    Het ligt niet aan de lamp zelf (we hebben lampen verstoken en als ik een andere lamp op de plaats van de rode of gele zet, werkt het ook niet). Het ligt niet aan de groene lamp (andere groene lampen werken ook niet op andere plaatsen, en andere kleuren werken op de plaats van de groene).

    Ik heb het zelfs een gesimuleerd  op  circuits.io, en jawel: dat gaf hetzelfde. Alleen groen dimt, de rest niet.

    Yep, da’s waar het een goed  idee zou zijn om met iéts meer kennis van zaken aan de lag te kunnen gaan.

    Ik weet niet waarom of hoe, maar als ik de lichten op pin 3, 5 en 7 zet, dan werkt het wel.  En alleen  op 3, 5, 7, 9, 10 en 11. Niet op 1, 2, 4, 6, 8, 12 en 13. Very weird:

    Ah euh wacht. Als ik een beetje dichter kijk:

    pins

     

    Er staat bij de pins  waarmee het werkt een ~-tekentje. Ahem ja.

    Een  halve zoekopdracht later (“arduino 3 5 6 9 10 11”) weet ik nu dus dat er maar zes pins zijn met pulse width modulation, waarmee dimmen überhaupt  kan werken.

    Mysterie opgelost.

    Pfff.

    Misschien moet ik toch eerst wat meer lezen, voor ik dat LCD-scherm naar de knoppen help.

    ⁂

  • Verder ook een prettige dag

    Ik moest nog wat laatsteminuutdingen gaan halen (saffraan, een paar extra vellen zalm), en voor die zalm stond ik in de GB aan het stadhuis.

    Er waren drie soorten zalm, van 65, 38 en 19 euro per kilo.  En ik had eigenlijk geen idee hoeveel ik moest meenemen, dus bel ik naar Sandra om te vragen. Het is vier schellen van de dure geworden en dan nog een pakje van de goedkope voor de zekerheid.

    Juist als ik de telefoon ging neerleggen, krijg ik een stamp in mijn rug, reikt er een hand over mijn schouder naar het schap voor mij, en tegen dat ik doorheb wat er gebeurt, zie ik een kale meneer vloekend en scheldend wegbenen.

    Het moet even inzinken, maar ik moest schaterlachen: die kerel had misschien dertig of veertig seconden achter mij gestaan, en moet zich zó hard op staan winden hebben. En geen moment blijkbaar gedacht om op mijn schouder te tikken om te vragen of hij even door mocht of zo.

    De kerel heeft mij horen lachen en draaide zich om — als blikken konden doden, ik  lag in intensieve.

    Om het uit te balanceren heb ik een oude Franstalige mevrouw met een kruk en slecht te been laten voorsteken aan de kassa, haar kar geleegd en de zak strooizout die ze moest hebben naar buiten gedragen en in haar fietstas gestoken.

    Het leven is te kort om u nijdig te maken.

    (Hou ik mezelf voor, tussen twee of drie episodes van mij zéér kwaad maken per uur.)

    En ondertussen  zijn we bijna klaar met al het voorbereiden hoera!

    20161231_150715

    (En realiseren we ons dat we  misschien wel een beetje teveel zullen hebben voor de mensen die maar komen. :))

    ⁂

  • Voorlaatste

    Voorlaatste dag van het jaar, en hoera! Morgen koken voor eindejaar!

    ’t Is al denk ik achttien jaar of zo geleden  (en dat was de allereerste keer) dat nieuwjaaravond bij ons thuis is, en ik zie het helemaal zitten. 🙂

    Het is tot bijna het laatste moment improviseren wat het eten betreft, maar ondertussen staat  het ongeveer vast:

    Hapjes:
    ceviche van heilbot, zalmpralines, foie gras en appel en bloedworst

    Spaanse looksoep

    Lam  met groensels

    Negen sorbets en  een beetje fruit

    Peren-cardamom-cake

    Tralala!

    We hebben al een beetje voorbereid:

    Ik zou “caldo de pollo” kunnen zeggen, ik zou ook gewoon “kiekenbouillon” kunnen zeggen.

    En omdat er naar mijn goesting nog iets zuur/fris ontbrak in de sorbets:

    Limoensorbet met basilicum.

    Yum.

    ⁂

  • Gelezen: Shadows of Self

    Brandon Sanderson
    Tor Books, 2015, 383 blz.

    Deel twee van de tweede Mistborn-trilogie.

    De wereld van Mistborn (nog altijd maar één stad, eigenlijk) zit ondertussen in een soort negentiende eeuw, met een groeiende economie en alsmaar meer technologie, industrialisering en bijhorende sociale spanningen, politiek en  corruptie, religieuze strubbelingen en terrorisme, the works. Het plan is nog altijd dat Wax zal trouwen, maar er gebeuren rare dingen. En het heeft te maken met wat er in de eerste trilogie gebeurde.

    Er is niet veel over te zeggen zonder spoilers, maar het is wel aangeraden.

    Ik heb het te traag gelezen om goed te zijn: veel te veel andere dingen te doen, veel te veel andere dingen te zien en te maken.  In meer normale omstandigheden zou ik het op een dag of zo uitgelezen hebben, wegens goed geschreven en spannend en goed verhaal en zo.

    [van op Boeggn ]

    ⁂

  • Feeling hothothot

    ’t Is van toepassing:

    Ik ging een boterham eten met wat zalm. De zalm was een beetje tam, zelfs met ajuin. En dus dacht ik: ik doe er wat pikant op. Eerst een stapeltje piment d’espelette, maar daar kwam niets van door de smaak van de zalm. En dan dacht ik er nog wat harissa bij te doen, maar ik heb mij mispakt en er een redelijke kwak van de redelijk pikante gedroogde habanero er over uitgeschud.

    Ahem ja. Een beetje teveel scovilles. Maar wél lekker.

    ⁂

  • Nieuwjaaravond: beslist

    Het oorspronkelijke plan voor nieuwjaar was lasagne. Maar uiteindelijk: neen, da’s geen nieuwjaareten.

    Dus wordt het toch iets een beetje feestelijker. Maar wel even gemakkelijk: lam in de oven met allemaal groenten. En een ceviche van zeebaars als voorgerecht, denk ik, als Sandra haar recept terugvindt.

    En dan een moedige poging doen om al de sorbet op te eten die ik de afgelopen tijd heb gemaakt. Of misschien moet ik nog wat bijmaken? Citroen- of limoensorbet bijvoorbeeld, dat heb ik nog niet.

    ⁂

  • Vuile data en grafieken maken

    Maar allez.

    Ik houd  bij wanneer ik ga slapen en wanneer ik wakker word, al een tijd. Al sinds 10 augustus 2013 om exact te zijn.

    Ik had daar ooit al eens deze  semi-manuele grafiek van gemaakt (klik voor detail):

    2AYWgKb

    …en ik dacht, ik smijt er eens wat python tegen om die grafiek automatisch te maken.

    De gegevens zijn  te downloaden bij Sleepbot, dus hoe moeilijk kan het zijn? De ruwe data ziet er zo uit:

    sleepdata

    Dat is te downloaden als csv, dat kan ik inladen, en dan maak ik er twee kolommen van — starttime is Date plus  Sleep Time  en endtime is  Date plus  Awake Time:

    starttime endtime
    27-12-16 02:53 27-12-16 02:53
    26-12-16 01:49 26-12-16 01:49
    25-12-16 02:55 25-12-16 02:55
    24-12-16 01:37 24-12-16 01:37
    23-12-16 00:42 23-12-16 00:42
    22-12-16 01:34 22-12-16 01:34
    21-12-16 02:15 21-12-16 02:15
    20-12-16 03:14 20-12-16 03:14
    19-12-16 04:11 19-12-16 04:11
    18-12-16 01:39 18-12-16 01:39

    So far, so good.

    Alhoewel. Om die strings als datums geparsed te krijgen, heb ik een dik kwartier hard gevloekt. Kijk of ge de fout ziet:

    import csv, pandas as pd
    df = pandas.read_csv('sleep.csv', sep=',')
    df['starttime'] = df.to_datetime(df['starttime'], format='%d/%m/%Y %H:%M')

    Dat geeft een propere

    AttributeError: 'DataFrame' object has no attribute 'to_datetime'

    Ja, lach maar. Natuurlijk bestaat

    df.to_datetime

    niet en moest het

    pd.to_datetime

    zijn  —  uiteindelijk maakte ik er trouwens  gewoon

    df['starttime'] = pd.to_datetime(df['starttime'],infer_datetime_format=True)
    df['endtime'] = pd.to_datetime(df['endtime'],infer_datetime_format=True)

    van, pandas was slim genoeg om het allemaal zelf te herkennen.

    Het moet allemaal niet zo performant zijn, dus deed ik de bijzonder domme aanpak: loopen van de eerste datum tot de laatste datum, en dan voor elke minuut van elke dag  kijken of die minuut ergens  tussen een  starttime en een endtime valt. Als dat zo is, dan  zet ik een  1 in een lijst, anders een 0.

    En op het einde maak ik een tweedimensionele array van die lange lijst, die ik  via Pillow’s Image.fromarray() omzet naar een png, een beetje schaal  en opsla.

    Dat geeft mij dan  iets als dit, dat er op het eerste zicht in orde uitziet:

    uren1

    …maar als ik naar beneden kijk, dan zitten er allemaal gaten in:

    uren2

    En neen, ik  heb geen gaten in mijn data. Ik ben daar zeer consciëntieus in.

    Iets mis met het “algoritme”? Welneen, dat is  zo achterlijk dat het niet fout  kan zijn.

    Het heeft geen kwarier geduurd. Zelfs geen vijf minuten: de data was wel degelijk slecht, maar het is niet mijn schuld, het is de schuld van Sleepbot. Want ja,  starttime is Date plus  Sleep Time  maar neen, endtime is niét  Date plus  Awake Time. Op die manier heb ik gegeven deze data

    geslapen van 11/12/2016 om 23u07 tot 11/12/2016 om 9u55,  in plaats van tot 12/12. Idem van 14/12 23u49 tot 14/12 7u02, in plaats van tot 15/12 7u02.

    Gelukkig staat die Duration er ook bij, dus was het gewoon    starttime is Date plus  Sleep Time  en endtime is starttime plus het aantal uren en minuten  in  Duration.  Zucht.

    Dat geeft dan een grafiek die er wel juist uitziet. Of euh wacht:

    Getver. Het is omgekeerd, zowaar. Endtime is Date plus  Sleep Time  en starttime is endtime min het aantal uren en minuten  in  Duration. Dubbel zucht.

    Maar jawel dus:

    En als dat  werkt, dan is het  1 fluit van 1 cent om er wat kleur aan te geven, en dat geeft dan deze grfiek voor elke minuut van elke dag sinds augustus 2013 (klik voor enorm groot beeld):

     

    Euh ja, het is geen zicht. Een totaal onbruikbare grafiek. 🙂

    Ik ga morgen dan eens kijken om er iets nuttigers van te maken.

    ⁂