Log in
Seblog.nl

Seblog.nl

Mijn Apple Music Replay'23

Henrique zit me al een paar dagen achter mijn broek aan dat ik mijn Spotify Wrapped moet delen. Uitleggen dat ik op Apple Music zit hielp niet: prompt kreeg ik links van blogposts waarbij juist Apple Music Replay werd gedeeld. Dus ja.

Mijn grootste probleem ermee is dat ik me niet genoeg identificeer met muziek, en dat ik het niet vaak genoeg luister. Ik heb wel Apple Music, maar juist om gewoon even wat op te zetten. Vaak luister ik naar de playlists van Apple, en ik heb vrijwel geen enkele zelf-gecureerde playlist. Mijn 'milestone' van 2500 songs heb ik aldus het overzicht pas op 11 oktober gehaald. Ik weet niet wat de volgende mijlpaal is na 10.000 minuten, maar aangezien ik die op 8 augustus haalde vermoed ik dat ik onder de 20.000 minuten voor het hele jaar zit.

Verder kan ik me ook niet zo vinden in de top-5 lijstjes. De nummer 1 song (Dream 1 (before the wind blows it all away [Pt. 4]) van Max Richter) heb ik kennelijk 11 keer afgespeeld, maar herken ik verder totaal niet (misschien per ongeluk op repeat en in slaap gevallen?). De nummer 2 song klopt wel (What Was I Made For? van Billie Eilish, 9×), want die stond op repeat tijdens een kleine episode van liefdesvertriet.

Mijn top-albums zijn ook een lachertje: op nummer 1 staat de soundtrack van Succession seizoen 4, met 51 plays en op 2 staat een DJ mix van Trixie Mattel met 40 plays. Voor context: de soundtrack heeft 25 nummers, de DJ mix 20. Twee keer luisteren en je staat op 1.

Mijn top-artiest is uiteraard De Kift en dat is gewoon terecht.

Maar als ik iets meer zelf mag kiezen, hieronder de héle top 15 aan artiesten, zoals gegeven door mijn Apple Music Replay, maar met toelichting. Daar weer onder mijn 'gecureerde' top 20 aan songs, gebaseerd op data van Apple, maar met wat skips.

Artiesten

  1. De Kift 350 minuten (terecht op 1, ik hou hiervan)
  2. De Jeugd van Tegenwoordig 234 minuten (nieuwe en oude albums een paar keer geluisterd)
  3. Arctic Monkeys 162 minuten
  4. Thursday 159 minuten (weilen Jonas Neubauer, de Tetris-kampioen, had dit ooit opstaan op een stream en dus speel ik het af en toe als ik die emo-vibe wil)
  5. Spinvis 133 minuten (gewoon fijn)
  6. Sufjan Stevens 126 minuten
  7. Pink Floyd 112 minuten
  8. Death Cap for Cutie 111 minuten
  9. Queens of the Stone Age 105 minuten
  10. Nicholas Britell 103 minuten (deze moest ik opzoeken, maar dit is dus de componist van Succession)
  11. GALNERYUS 97 minuten (hoofdzakelijk 'DESTINY' wat gewoon een fijn nummer is)
  12. The Decemberists 93 minuten (mijn auto startte soms 'gewoon' muziek en daarbij staat 'A Cautionary Tale' op nummer één, want alfabet. Sindsdien zitten ze zwaar in mijn algoritme ingebed, maar voor alle andere nummers vind ik dat niet heel erg ook)
  13. Kamasi Washington 93 minuten (ja)
  14. Joe Hisaishi 93 minuten (ja)
  15. Troye Sivan 91 minuten (voornamelijk Rush afgelopen zomer, denk ik, maar 2.5 × 8 is 20 minuten dus eigenlijk snap ik dit niet)

Nummers

  1. What Was I made For [from Barbie] - Billie Eilish
  2. Dai Zero Kan - 10-Feet
  3. Kaikai Kitan - Eve
  4. Rush - Troye Sivan
  5. Rage on - OLDCODEX
  6. Tattoo - Loreen
  7. All My Friends - LCD Soundsystem
  8. Horizon (Extended Version) - Xinon
  9. Ze is pas net begonnen (Leerstage / werkstage) - De Jeugd van Tegenwoordig
  10. Black Honey - Thrice
  11. The Archaic Revival - Henry Homesweet
  12. The Invincible Youth - Kamasi Washington
  13. Attack Vector - Covox
  14. Body Paint - Arctic Monkeys
  15. Understanding in a Car Crash - Thursday

'Sure I will take a 7 hour train to Nürnberg, I will work on stuff' quickly derailed into compulsive sudoku solving. Now for the last hour, finally got my laptop out again.

Mijn schijf was vol, dus ik ben weer lekker even met du -sh * 2> /dev/null op pad geweest door mijn computer. En ja hoor: weer een logfile waarin PHP me elke seconde vertelt dat het niet lukt om op te starten ter waarde van 340 GB. En gewoon wéér rond Pasen.

Floppies

It just hit me. I learned how to code via an article in a Dutch school magazine (Taptoe), which explained how to create a website on a floppy disk. They were already old, but at least our computers had the drives still. The article just explained how to write flat HTML, but it was enough to spark this fascination that ended up being my job.

What hit me is that actually most websites these days won't actually fit on a 1,44 MB floppy anymore. (The content on this site already is more than 1 GB.) It would be a nice challenge again, to make a website fit 1,44 MB.

Related to this is the 10 KB Club, who try to keep their homepage under 10 KB. My site fails that test too, but at least the homepage fits a floppy.

Slim huis

Ton schreef over zijn Hue-lampen die middenin de nacht aan gingen omdat de stroom uitviel. Ik had onlangs een soortgelijke ervaring, maar met een andere oorzaak.

Ik woon alleen, dus ik had mijn huis 'geleerd' dat de lampen uit moeten gaan zodra ik wegga, aan moeten gaan als ik thuiskom en de zon onder is, en ook aan moeten gaan als de zon onder gaat terwijl er iemand thuis is. Allemaal gewoon in Apple's Woning-app, niet heel spannend.

Maar soms zijn mijn huis en telefoon van elkaar ontvreemd en gaan dus middenin de nacht mijn lichten opeens aan als ze elkaar weer gevonden hebben. Dat gebeurde vorige maand een paar keer per nacht, dus ik heb momenteel de hele feature uitgezet.

Op mijn eindeloze lijst aan projecten staat dat ik eigenlijk wat meer bewegingsmelders wil aanschaffen. Die van Hue detecteren beweging, maar ook hoe sterk het licht is, en gaan alleen aan als het te donker is. Ik heb er al een in de badkamer en een in de keuken en eigenlijk is dat ideaal.

Het enige probleem met je hele huis vol bewegingssensors is dat de timeout wat lastiger in te stellen is. Voor de badkamer kom ik prima weg met de lampen uitzetten na 3 minuten zonder beweging, maar een timeout van een uur instellen omdat je graag rustig op de bank wil kunnen lezen zonder opeens in het donker te zitten voelt ook inefficiënt.

Het project op de lijst is dan ook: programmeer mijn Raspberry Pi zo, zodat hij Homekit spreekt, en dus het brein wordt van mijn huis. Hou dan in de Pi bij welke kamer het laatst beweging zag. De timeout is daarna altijd 3 minuten, tenzij je de kamer met laatste beweging bent, dan krijg je, zeg, een uur. Volgens mij werkt die strategie ook voor huishoudens met meerdere personen. Alleen als ik het huis verlaat moet ik dat nog op een bepaalde manier kenbaar maken aan het huis.

Maar ja, ik geef toe: soms sta ik tegen mijn telefoon te schreeuwen en vraag ik me af of ik niet beter gewoon even naar het lichtknopje had kunnen lopen.

Spelidee: trek voor elke speler een willekeurige provincie en een willekeurige partij. Doe allemaal een kieswijzer. Wie het dichtst bij zijn of naar partij scoort wint.

Nederlandse go-termen

Vandaag was ik in Tilburg voor het go-toernooi aldaar. Een goed excuus om hier wat op te schrijven over go.

Go is een eeuwenoud spel, maar hier in het westen is het minder bekend. Schaken zit veel dieper in de cultuur, wat je ook ziet aan de naam (de sch-) en aan de namen van de stukken op het bord: wij hebben 'paard' waar Engelsen het over een 'knight' hebben en Duitsers over een 'Springer'. In go gebruikt men vooral Japanse leenwoorden, maar door de invloed van het internet – waar iedereen Engels spreekt – zijn er veel Engelse termen ons go-jargon binnengeslopen. Ik denk dat 'pincer' het hardnekkigste voorbeeld is. Toch hebben we voor veel zaken ook echt onze eigen termen, die ik hier graag beschrijf.

Allereerst de naam van het spel: vrijwel iedereen spreekt het uit met de Engelse g, van 'goal' en het werkwoord 'go'. Dit komt ook overeen met waar we de naam vandaan hebben: het Japanse woord 'igo'. Maar diverse oudere spelers heb ik een Nederlandse g horen gebruiken voor go, wat ik ook best charmant vind. (Wie wil googelen op 'go' kan misschien beter het Koreaanse 'baduk' of het Chinese 'weiqi' gebruiken, maar dat is een ander onderwerp.)

De voorgenoemde 'pincer' kan ook een 'klem' zijn, al zou ik zelf 'tang' leuker vinden. Ik hoor ook vaak: 'dan neem je een enclosure', terwijl we dan ook kunnen zeggen: 'dan sluit je de hoek af'. Sommige spelers gebruiken voor deze twee dingen trouwens de Japanse termen 'hasami' en 'shimari', wat ik persoonlijk dan leuker vind dan de Engelse variant, maar misschien dat dit type speler wel langzaamaan uitsterft.

Ik denk dat 'ko' en 'atari' de meest gebruikte en diepst ingeburgerde Japanse termen in het Nederlandse go-jargon zijn. Het Engels gebruikt ze ook, maar vooral ook omdat het zeer specifieke concepten zijn waar je echt een compleet nieuw woord voor zou moeten verzinnen.

Een tegenvoorbeeld daarop is het concept 'vrijheid', als in: 'deze groep heeft twee vrijheden'. In het Engels heet dat 'liberties' (die hoor ik ook gebruiken op de club). Aan de ene kant is het een logische term: het is het aantal 'vrije zetten' dat een speler nog heeft voor de betreffende groep gevangen is. Aan de andere kant voelt het soms zo erg als eigenschap van een groep dat ik het zelf bijna als concept op zichzelf zie.

Qua onvertaalbare leenwoorden uit het Japans doen Engels en Nederlands het soms ook anders. De termen 'sente' en 'gote' zijn elkaars tegenhangers en verwijzen naar een zet waarop de tegenstander wel (sente) of niet (gote) hoeft te reageren. In het Engels hebben ze de termen gewoon overgenomen (met enigszins verbasterde uitspraak), maar in Nederland kennen we ook de prachtige letterlijke vertalingen: 'voorhand' en 'nahand'. Ik hoop echt dat die nooit verloren gaan.

Expanding the search in Vim

I just discovered a new Vim trick I think I am going to use quite often, so I am sharing it here to look it up when I forget.

As you may know, you can issue the / command in Vim to start a search. Every character you type will be in the search, until you hit enter, which will jump you to the first occurance of your searched text.

Another thing you may know, is that you can use this search-motion as a motion to other commands as well. When you do v/here, you will visually select everything between the current cursor position and the first occurance of 'here' in the buffer. I use this to delete stuff that I can't target using the f and t motions.

Then there is the thing I once found out, but never could remember: once you press /, you are in a little submode I can find the name for. In this mode, you can use Ctrl+L and Ctrl+H to increase or decrease your search string by the characters of the first match. You can also use Ctrl+G to move that virtual cursor to the next match, or Ctrl+T to get to the previous. Once you hit enter you are on that last position, removing the need to do n.

But here it comes: when you are deleting with d/, you can also use Ctrl+G to get to that next match. If you searched for a small snippet that accidentally occurs before the place you wanted to go, you can press Gtrl+G to jump over it, and pressing enter will delete the full distance.

Gisteravond luisterde ik een aflevering van de Remote Ruby podcast met Derek Sivers, waarin hij uit de doeken doet hoe hij alle logica van zijn applicaties in de database zelf stopt, en waarin hij ook zijn persoonlijke database noemt, waarin hij zo'n beetje zijn hele leven vastlegt.

Zijn database staat in interessant contrast met de gebruikers van Obsidian, die juist voor 'plain text' gaan als opslagformaat, in de hoop dat tekst over twintig, vijftig, honderd jaar nog steeds gelezen kan worden door computers. Maar tegelijkertijd staat het óók in interessant contrast met de Ruby on Rails en Laravel developers die alle logica uit de database proberen te houden en de database alleen maar gebruiken voor domme opslag van data.

Het is fijn om af en toe even uit je comfortabele doos te worden gestuurd. Dit weblog slaat alle posts ook op in losse tekstbestanden en op mijn werk werk ik met Laravel en een relatief domme database.

Derek wijst in de aflevering ook op de Simplicity Matters talk van Rich Hickey, wiens talks eigenlijk allemaal heel goed zijn. De talk gaat in op de concepten 'makkelijk' (easy) en 'simpel' (simple), en hoe mensen die twee concepten door elkaar halen terwijl ze fundamenteel andere dingen zijn. Ook voor niet-programmeurs wel een aanrader, denk ik, al moet je af en toe even door wat jargon heen.

Ik kwam laatst langs een buitenreclame die iets zei als 'als op je bank wachten je kansen kost'. Ik dacht eerst: ik vind het best lekker om op de bank te zitten als ik wacht. Daarna dacht ik: o ja, L. heeft een bank gekocht en moet daar nu op wachten. Pas daarna drong het tot me door dat het reclamebord waarschijnlijk een ander soort bank bedoelde.

Vandaag geleerd in HTML en CSS

Ik ben dus mijn RSS-reader aan het uitmesten en daarbij leerde ik een paar dingetjes over HTML en CSS die ik kon niet wist of kende.

Bijvoorbeeld dat je dus een uitklapbare boomstructuur kan maken met alleen maar HTML en CSS, dus zonder Javascript, door gebruik te maken van <ul> en <li>, met daarin <details> en <summary>. Vooral die laatste twee elementen kende ik niet, weer wat geleerd.

In CSS-land zijn ze kennelijk ook bezig met een nieuwe manier van kleuren uitdrukken, genaamd LCH of oklch. Wie rgb of cmyk gebruikt, specificeert zelf hoeveel licht of inkt er moet worden gebruikt om de kleur te maken. In feite is dat een hele imperatieve manier van een kleur beschrijven. Een meer declaratieve manier is hsl, waarbij je je kleur beschrijft in termen van tint, verzadiging en helderheid. Deze methode heeft echter nog steeds een directe vertaling naar rgb en is dus een 'leaky abstraction'. De lch is een abstractie die rekening houdt met welke kleuren wij als mensen kunnen waarnemen, en maakt berekeningen met kleuren ('deze kleur maar dan iets donkerder') veel makkelijker.

Verder kwam Hidde met een leuke manier om flexbox te gebruiken voor data-visualisatie.

Naming things

Er zijn een paar gevleugelde uitspraken die ik vaak gebruik op werk (zoals '500 is nooit het goede antwoord') en dit software-cliché is waarschijnlijk de aanvoerder op die lijst:

There are only two hard problems in computer science: naming things, cache invalidation and off-by-one errors.

Vooral omdat het waar is: dingen een naam geven is moeilijk, en zonder namen zijn het eigenlijk alleen maar berekeningen zonder betekenis. Er valt pas geld te verdienen als er betekenis – en dus waarde – aan die getallen zitten.

Maar nu las ik een stukje van ntietz, waarin i signaleert dat beschrijvende namen voor stukken code problematisch zijn. De OrderCreateService maakt waarschijnlijk een order aan, maar zodra hij ook mails gaat sturen naar de klant, moet het dan niet de OrderCreateAndEmailSendService zijn? Succes met overal in je codebase de naam van de service aanpassen.

In plaats daarvan, zegt ntietz, moeten namen vooral leuk zijn (mijn vertaling). Diens belangrijkste punt: namen zijn een manier om identiteit uit te drukken, niet om te beschrijven. Het artikel noemt verder geen voorbeelden, maar in mijn hoofd heb ik nu een service genaamd Truus die de orders aanmaakt. De e-mail? 'O ja, die stuurt Truus.'

Ik denk niet dat ik mijn collega's overtuigd krijg, maar ik vind het een geweldig idee.

Deze week kwam ik tot de conclusie dat ik dit hele jaar mijn RSS-reader nog niet had geopend, en die periode bevat natuurlijk ook de kerstweek (Eerste tot en met Zevende Kerstdag), dus er was nogal een voorraadje ontstaan. Zoals altijd denk ik nu 'ik moet ook meer bloggen' en daarom vandaag dus een paar posts achter elkaar, over dingen die ik tegenkwam in mijn RSS-reader, zodat die ook in jullie RSS-reader staan.

Meer laden