Log in
Seblog.nl

Blog

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.

Spelletjesweek

Tussen kerst en oud-en-nieuw ben ik naar Wintergo geweest, een winterkamp voor go-spelers waar stiekem ook andere spellen worden gespeeld. In combinatie met feestdagen bij familie levert me dat 15 verschillende spellen in één week op. Hier een overzichtje, in chronologische volgorde.

Pandemic

De klassieker uit 2020, die stiekem al uit 2013 komt. De twist van het spel is dat je met z'n allen tegen het spel speelt: iedereen werkt samen om de virussen te bestrijden en dus win je allemaal, of helemaal niemand. Ik heb deze al veel vaker gespeeld, inclusief een maand-lang potje waarbij ik elke ochtend de stand van het bord in een whatsapp-groep deelde. Met Eerste Kerstdag heb ik het met mijn stiefmoeder en broertje gespeeld, twee potjes, gelijkspel tussen ons en het virus.

Regenwormen

Dit is ook een klassieker en mijn (andere) broertje bleek dit te hebben en leuk te vinden (hij is niet van de spellen). Dus hebben we op Tweede Kerstdag met z'n tweeën een potje gedaan, dat best wel spannend was. Ik ken het spel vooral als een fijn spel voor in een café met een groep mensen, omdat je in principe gewoon een gesprek kan voeren in de tijd dat je niet aan de beurt bent: voor je de dobbelstenen in handen gedrukt krijgt kan toch alles anders liggen.

Go

Naamgever van Wintergo en het spel der spellen. Het spel valt in dezelfde categorie als schaken en dammen: twee spelers, zwart en wit, alle informatie is beschikbaar, heel veel mogelijke zetten, erg diep spel. Het nare is dat ik er inmiddels zo goed in ben dat ik dit niet meer met zomaar iemand kan spelen, maar daar hebben ze dus Wintergo voor bedacht: een midweek elke ochtend om 10 uur een partij spelen met mensen die vaak nog véél beter zijn.

Paleo

Dankzij Pandemic zijn coöperatieve spellen populair, en Paleo is er ook zo een. Zoals de rest van de spellen op deze lijst kende ik deze nog niet. Het speelt zich af in de prehistorie en je bent een groep mensen die probeert te overleven door voedsel en spullen te verzamelen. Het is een wat uitgebreider spel, met veel verschillende opties, maar nog steeds goed speelbaar met familie, denk ik. Ik heb er drie potjes van gedaan en de laatste hebben we verloren – het kan wel knap lastig zijn. Maar dat hoort er ook bij.

Samurai Swords (voorheen 'Shogun' en nu 'Ikusa')

Dit spel kwam volgens Bart uit de kringloopwinkel voor een paar euro, maar is dus een pareltje waar je ook 100 dollar voor kan betalen. Het spel is door juridische en marketing-technische redenen een paar keer van naam veranderd, maar wij speelden dus 'Samurai Swords', mét zwaardjes om de spelvolgorde te bepalen. Het is een soort Risk, maar dan met samurai-saus en een apart bordje waarop je drie grote legers kan bijhouden, wat het spelen aanzienlijk veel duidelijker maakt. We hebben de partij helaas niet af kunnen maken, maar mijn vermoeden is dat het even lang duurt als Risk (uren).

Ocean: Great Barrier Reef

Dit vond ik van alle spellen de minste. Het is een kaartspel waarbij je kaarten met vissen in allerlei kleuren kan verzamelen (een beetje zoals treinkaartjes bij Ticket to Ride, inclusief joker) die je vervolgens kan inwisselen voor kaartjes die punten en bonussen geven. We hadden helaas twee best essentiële regels verkeerd begrepen, dus het was een rommelig potje. Ik moet het eigenlijk nog eens een kans geven, maar vooralsnog ben ik er niet kapot van.

Perseverance: Castaway Chronicles - Episode 1

Dit spel won de competitie voor 'grootste en intimiderendste doos'. Het is eigenlijk twee spellen in één – episode 1 en 2 – en wij hebben alleen episode 1 gespeeld. Met anderhalf uur speeltijd viel dat enorm mee ten opzichte van wat je van de doos zou verwachten. Je bent een cyberpunk-leger dat een eiland vol dino's probeert te koloniseren, waarbij dino's continu je kampementen aanvallen. Best interessant spel, ik ben ook benieuwd naar episode 2, die je dus met dezelfde dino-poppetjes kan spelen.

The Crew: Mission Deep Sea

De grote ontdekking van de week. Ook dit is een coöperatief spel, maar dan vele malen simpeler. Het bestaat uit een soort-van gewoon kaartspel waarmee je slagen moet spelen. De twist is dat je samenwerkt om opdrachten uit te voeren zoals een bepaald teamlid de blauwe 4 te laten winnen, of evenveel van twee kleuren. Juist omdat het eigenlijk 'gewoon kaarten' is, denk ik dat dit het toegankelijkste coöperatieve spel is dat ik ken. Er is ook een space-editie maar men zei dat daar nog wat 'fouten' in zaten, dus neem vooral de duikboot.

Terraforming Mars: Ares Expedition

Een kaartspel met heel veel icoontjes en acties en combinaties. Ik speelde het met z'n tweeën, maar Yvonne speelde het daarna ook nog eens met vier en zei achteraf dat het daar een beetje een ander spel door wordt. Zij is er erg over te spreken als tweespeler-spel. Ik vond het heel interessant, maar vrees wel dat het hierbij weer wat lastiger is om een medespeler te vinden, omdat er dus zo veel verschillende dingetjes in zitten. Maar het zit goed in elkaar!

Wonder Woods

Bij dit spel moet je paddenstoelen verzamelen op basis van informatie uit kaartjes die alleen jij kan zien ('deze paddenstoel is niet 5 waard'). Speelt lekker makkelijk weg, maar ik deed iets te veel paddenstoelen in één mandje en ging daarmee een beetje het schip in. Wel geinig.

Keyflower

Een woordspeling op de Mayflower: schepen met kolonisten arriveren en jij bouwt in vier seizoenen een dorp door te bieden op gebouwen. Het heeft een interessant systeem met hexagonale tegels, waarbij elke speler z'n poppetjes aan één kant van de tegel zet om er zo op te bieden, óf op de tegel om de actie van dat gebouw uit te voeren. Ondanks de tip ging ik toch voor schepen en dus raakte ik aan lager wal, maar wel een leuk spel.

Night of the Ninja

Betere versie van Weerwolven van Wakkerdam, met één nadeel: ik hou echt niet van die psychologie ervan (daarom ben ik bij Weerwolven altijd de verteller, maar die is hier niet bij). Voordeel van Night of the Ninja is dat je wel echt meer informatie hebt (je kan een kaart spelen om te kijken wie wie is) en dat je dus niet blind dorpsbewoners op de brandstapel aan het gooien bent. We speelden het met 5 en dat was goed te doen, maar vanaf 8 spelers is het waarschijnlijk leuker.

Mindbug: First Contact

Op de laatste avond nog even een nieuw spel leren omdat je een halfuurtje moet wachten tot het volgende begint – ook dat is Wintergo. Gelukkig is Mindbug dus inderdaad in 10 minuten uit te leggen en in 10 minuten te spelen, al helpt het wel heel erg als je ooit Magic the Gathering uitgelegd hebt gekregen, want veel mechaniekjes zijn hetzelfde. De twist is dat je tweemaal een kaart van de tegenstander mag jatten door een Mindbug te spelen, waarna vaak heel veel effecten nog een keer triggeren. Ging helaas veel te snel, maar ik wil zeker nog een potje.

Verder heb ik nog talloze andere spellen gespeeld zien worden, maar goed, je kan ook niet alles spelen in zo'n week.

Vegan kaas

De afgelopen weken ben ik bezig met vegan kaas uitproberen. Aanvankelijk zag ik het als project om een lange blogpost over te schrijven, waarin ik alle opties die op de markt zijn op een rijtje zet, maar gaandeweg is die afgezwakt tot deze blogpost, waarin ik zeg: het is wennen, maar daarna goed te doen.

Ik eet al een paar jaar (vijf? zes?) geen vlees meer: een lang verhaal waarin een McDonalds op 50 meter naast mijn huis oppopt, en een weggegeven fiets werd omgezet in een avond in een restaurant waar ik het beste – en dus laatste – vlees ooit heb gegeten. Maar de belangrijkste reden is denk ik dat ik mezelf hypocriet vond dat ik wel vlees at als ik het niet herkende, maar niet als er nog bot aan zat.

Al een tijdje ben ik ook wat aan het zuivel-minderen, en de 'zuivel is niet zo zuiver als we denken' reclames maken dat ik daar nog net weer iets bewuster op let. Ik koop nu zelf geen kaas meer voor op brood, maar dat was ergens wel een gemis, want wat doe je er ander op? Ik ben fan van hagelslag maar alles heeft grenzen.

De vegan kaas biedt uitkomst. Vaak zijn deze kazen op kokos-basis, lijkt het, en hoewel dat je dat in het begin ook erg goed proeft, merk ik dat het me nu nauwelijks nog opvalt en dat ik het gewoon zie als een plak kaas.

Mijn trainingsplan om aan vegan kaas te wennen, wat stiekem ongeveer mijn eigen pad is: eet eerst een maand geen kaas. Koop daarna de vegan komijnenkaas van de Albert Heijn. Omdat de komijn extra smaak geeft en daarmee de specifieke vegan-smaak verhult, is dit misschien wel een goede start.

Probeer vervolgens eens de pittige smeltkaas van WildWestland. Ik heb hem zelf niet gesmolten, maar ik heb inmiddels een tosti-ijzer, dus als hij weer eens voorradig is ga ik dat zeker proberen.

Probeer daarna de Violife kazen. Er is een 'normale' en een Goudse variant, die ik in die volgorde heb geprobeerd. Volgens mij zijn dit hele prima kazen. Op dit punt in het proces kon ik al bijna niet meer beoordelen of dit nu écht zo goed naar kaas smaakte, of dat ik gewoon aan vegan kaas gewend was.

Ik heb net ook nog de Albert Heijn huismerk Goudse kaas geprobeerd en die was ook oké. Mijn stelling hierin is: ja, het is een ander smaakje, zoals ook soya-yoghurt en havermelk net een ander smaakje hebben, maar daar kan je aan wennen en als je er eenmaal aan gewend bent zijn ze heel lekker. Dat is het bespaarde dierenleed wel waard.

Zevenheuvelenstress

Zometeen is de start van de Zevenheuvelenloop en hoewel ik weet dat ik er gewoon van moet genieten ben ik behoorlijk zenuwachtig en onzeker. Mijn huidige record is 1:15:10, die liep ik in 2017. Daarna heb ik hem in 2019 nog eens gelopen in 1:22:04. Het idee is dat ik hem deze keer weer rond de 1 uur en 15 minuten zou kunnen lopen.

Maar de zenuwen zitten er dan nu in dat het, als ik dat wil, vandaag wel moet gebeuren. Het is behoorlijk kouder dan de afgelopen tijd, en het gaat waarschijnlijk vanmiddag nog regenen ook. Ik ben nu een beetje aan het samenstellen wat ik aan moet tijdens de wedstrijd, maar waarschijnlijk ga ik net te veel aan hebben omdat ik niet te weinig aan wil hebben.

En dan de training. Het ging echt heel erg goed, met meerdere keren per week een rondje, maar de afgelopen twee weken heb ik het helemaal laten versloffen. Zo voelt het, maar aan de andere kant kan je dit 'taperen' noemen en dan is het precies het juiste. Maar heb ik wel genoeg gegeten in de afgelopen week? Drink ik vandaag genoeg of net te veel? Allemaal onzekerheden.

Een paar weken geleden droomde ik dat ik naar een hardloopwedstrijd had moeten gaan, maar dat ik niet ging, omdat het niet meer ging, omdat ik niets meer gedaan had in de weken ervoor. Ik droomde de zelfsabotage die ik nu een beetje voel dat ik weer aan het doen ben. Je kan ook zeggen dat het druk was op werk.

Enfin, het plan ligt klaar, het horloge aan de oplader, de kleren hier naast me op de bank. Als het echt niet gaat gelden er twee regels: hou je vorm goed, geniet van de tocht.

Muis

In de traditie van bloggen over beesten in mijn kamer, door de jaren heen, hier een nieuwe aflevering: ik had een muis.

Ik hoorde mijn buren al eens smoezen dat er muizen waren. O jee, dacht ik, daar heb ik dus hélemaal geen zin in. Ik negeerde het een beetje omdat ik zelf nergens last van had. Mijn bovenbuurman ging flink aan het schrobben, kon ik horen.

Op een dag kwam ik thuis en zag ik het snoer van mijn staafmixer half uit het keukenkastje hangen. Dat is gek, dacht ik nog, dat zou ik toch nooit zo laten hangen, ik werk vast veel te hard. (Ja.)

Een avond later die week was ik dus weer veel te hard aan het werk tot veel te laat, toen ik opeens iets bij de deur van mijn kantoor zag bewegen. Ik schrok daar een beetje van, maar het schrok ook van mij, en ging er in een dolle vaart vandoor.

Dit was het moment dat ik de connectie naar het keukenkastje maakte: in dat kastje zit achterin een gat naar een stopcontact, voor mijn elektrische fornuis. Toen ik het beter inspecteerde zag ik er inderdaad wat zaagsel liggen, alsof er iemand door dat gat naar binnen was gekomen.

Het punt van het keukenkastje is echter: zodra die dicht is gevallen, kan je als muis in elk geval niet zo makkelijk meer naar buiten via diezelfde weg. En verder zijn hier niet zo veel gaten in de muur, wat waarschijnlijk bijdroeg aan het feit dat ik het muizenprobleem tot nu toe kon negeren.

In die week verdween er inderdaad een hagelslagje dat ik zorgvuldig op een vlek in de vloer had gelegd: de muis was er nog steeds. Toch negeerde ik het nog wat verder, tot ik op een zekere nacht wakker werd van gekraak en geknaag.

Na wat gordijnen op zij te hebben getrokken zag ik hem: de muis zat ín mijn slaapkamer. Dit was vorige week zondag. Wat volgde was een halve nacht op de bank (ben ik veel te lang voor), diverse opruimacties om de muis te vinden, slapen op een luchtbed in een andere kamer, en vooral: de deur dicht houden.

Woensdag kwam de DAR langs, en die hebben ons alles uitgelegd over muizen. 'Als er een potlood in kan kan er een muis door.' Ik met grote ogen. 'Als een potlood past, past een muis,' bleef de muizenman stellig. Zo liepen we een rondje rond het huis en vonden we inderdaad veel gaten.

Ik had dingen te doen in de randstad, dus ik heb mijn spullen gepakt en ben een paar dagen bij mijn ouders gaan logeren. Op de kamer stond een val. Nu ik net thuis ben vond ik daar de muis in. Ik moet toegeven dat ik daar dan weer even bijna van moest huilen: het arme beest, moest hij nou echt dood voor mij?

De muis is opgeruimd, de gaten zijn dicht, er ligt gif in de kruipruimte, het lijkt de goede kant op te gaan. Maar zielig is het wel.

Slome Mastodon

Mastodon is nog steeds een hot-topic op mijn Mastodon- en feedreader-tijdlijn. Zo kwam ik dit artikel van Aral tegen waarin hij uitlegt hoe een beetje populair zijn (22.000 volgers op 3000 servers) en een beetje actief posten en reacties uitlokken al snel kan leiden tot een enorme queue en dus vastzittende instances.

Zijn oplossing: populaire mensen moeten hun eigen server draaien. Ergens is daar wat voor te zeggen, op Twitter waren het ook de populaire mensen die het meeste geld kosten (en opleverden waarschijnlijk maar soit). Het is logisch dat als jij veel interactie hebt, computers daar dus harder voor moeten werken, en dat je dan misschien wat meer moet betalen aan je Mastodon-host.

Maar los van dat computers draaien geld kost, kosten computers ook stroom en dus naar alle waarschijnlijkheid CO². Een beetje minder daarvan zou best fijn zijn, en dit is in mijn optiek wel een beetje een tekortkoming van Activitypub (te actief) en Mastodon (gekke technische keuzes).

Toen Twitter begon bouwden ze het platform op Ruby on Rails, een framework bekend om het gemak waarmee je een nieuwe applicatie kan opzetten, maar niet om z'n snelheid. Twitter liep echter tegen de grenzen aan van die architectuur, met veel plaatjes van een door vogels opgetilde walvis als het weer mis ging. In stapten ze over naar een andere architectuur en kwam er eindelijk een eind aan de 'fail whale'.

In 2016 deed Gargron de eerste commit voor Mastodon. Het zette een lege Ruby on Rails applicatie neer, die later uitgroeide tot de Mastodon die we nu hebben. Als het Twitter niet lukte ermee te schalen, heb ik ook vraagtekens of Mastodon het wel kan.

Maar daarnaast ook Activitypub nogal onnodig werk: op moment van schrijven heb ik drie features van het protocol geïmplementeerd op dit weblog (webfinger, de actor, de inbox) en één keer mijn 'profiel' bezocht via Mastodon.social. Sindsdien heb ik 1507 berichten ontvangen over verwijderde gebruikers. 1507 berichten, alleen omdat iemand anders (oké ik zelf) mijn profiel bezocht. (Ik begon vanochtend al met schrijven aan deze post, maar inmiddels zie ik dat Aaron nog meer deletes heeft ontvangen. Oeps.)

Ik ben een voorstander van 'eerst gebruiken dan pas de protocollen', en aangezien we nu Activitypub gebruiken is dat een beter protocol dan elke nieuwe die we verzinnen zonder actieve gebruikers, maar ergens hoop ik wel dat we dit nog kunnen fixen.

Poging tot Mastodon

In navolging van velen sinds het aantreden van de nieuwe Oppervogelman ben ik vandaag bezig geweest met 'overstappen' naar Mastodon. In mijn geval betekende dat het opsnorren van mijn oude account, en een zoektocht naar de vraag: hoe werkt dat eigenlijk, Activitypub?

Als achtergrond: Mastodon's mogelijkheid om over meerdere servers heen met elkaar te kunnen praten is niet beperkt tot alleen servers die Mastodon-software draaien. Het is gebouwd op een open standaard die Activitypub heet. Ik heb vandaag een poging gedaan om die een beetje beter te begrijpen.

De volledige uitleg ga ik hier niet geven, want ik ben er ook maar pas net ingedoken. Maar interessante artikelen zijn deze van Eugen Rochko, de maker van Mastodon, en ook de followup ervan. Eugen legt hierin uit hoe je met wat statische bestanden en een beetje Ruby een paar Activitypub-dingen kan doen.

Een van die dingen heb ik toegepast: je kan dit domein nu webfingeren (jaja) en daarmee kan je mijn Activitypub Actor vinden, die weer leidt tot een Activitypub Inbox. Op het moment van schrijven is het er allemaal wel, maar ik beloof niets voor de toekomst, want ik ben er nog niet helemaal over uit of ik dit echt wil.

Het gevolg van het bovenstaande is dat je nu op @seb@seblog.nl kan zoeken in je favoriete Mastodon-instance, en dat je mij daar dan ziet verschijnen. Je kan daar naar alle waarschijnlijkheid ook op 'Follow' drukken en daar krijg ik dan een melding over. Vervolgens doe ik daar helemaal niets mee, want zo ver ben ik gewoon nog niet.

Ik heb veel horrorverhalen gehoord over Activitypub en ik moet zeggen dat ze deels waar zijn: het is inderdaad behoorlijk veel gedoe allemaal. Om een bericht te accepteren moet je dingen doen met public en private keys, waarvan ik nog steeds denk dat ik het niet helemaal goed doe.

Bovendien ontvang ik sinds ik mijn naam bij Mastodon.social heb ingevoerd allerhande berichten over verwijderde gebruikers. Ik heb nooit om een lijst van alle gebruikers gevraagd, dus ik ben ook niet per se geïnteresseerd in elke verwijderde gebruiker, maar ik ontvang er nu wel bericht over. Ik hoop niet dat elke server in de Fediverse dit gaat doen, want dan ben ik er wel snel klaar mee.

Misschien dat ik morgen nog wat dieper duik, maar zoals gezegd beloof ik niets en verwijder ik de functionaliteit misschien zelfs wel. Het idee is alleen zo vet: met zo veel meer mensen in contact staan via een dergelijk protocol.

Wat verder ook niet onvermeld moet blijven is deze geweldige post over hoe je de verschillende Activitypub specs zou moeten lezen, in welke volgorde en hoe de boel zich tot elkaar verhoudt. Maar dat dus misschien voor morgen. Tot toots.

Terug naar de reader

De afgelopen jaren ben ik steeds minder actief op Twitter. Ik tel ongeveer 13 tweets dit jaar, 17 tussen nu en 1 november 2021. Ik heb altijd het idee dat ik in een leeg gat praat: de mensen die mij volgen zeggen niets terug en iedereen die ik zelf volg lijkt mij niet te volgen. Ik heb 480 volgers, maar mijn recente tweet kwam niet boven de 50 weergaven.

Nu met de ontwikkelingen rond de nieuwe Oppervogelman vraag ik me af: moet ik wel welke dag zijn app openen en doorscrollen? Dus nu ben ik weer voor de zoveelste keer terug bij een RSS-reader, ditmaal een Miniflux, gehost en mij aangeboden door Henrique.

Op moment van schrijven zit ik op 10 feeds, na dit weekend met 5 te zijn begonnen. Ik heb namelijk wel vaker feedreaders gebruikt, en altijd val ik in dezelfde val:

  • ik gebruik geen feedreader
  • ik neem er een, volg een paar mensen
  • nog steeds erg leeg
  • ik volg iedereen die ik maar kan verzinnen
  • aaaaaaa
  • ik gebruik geen feedreader

Hoewel ik steeds weer tegen Twitter zeg dat ik geen algoritmische tijdlijn wil, wil ik een algoritmische tijdlijn, blijkt keer op keer opnieuw.

Het grote voordeel van een feedreader is echter dat het me indirect aanmoedigt om meer te bloggen. Dit is waarschijnlijk vreemd: de meeste mensen gaan op Twitter omdat je daar makkelijker kan antwoorden. Omdat ik mezelf de regel heb gesteld dat alle antwoorden ook op dit blog moeten verschijnen heb ik reageren op Twitter zó moeilijk gemaakt dat ik het nooit doe.

Enfin, we zien wel waar deze episode eindigt. De vorige is alweer van 2020, zo blijkt. Wie erover schrijft kan terugvinden.

Pride Run

Van de week schreef ik al over de Eurogames en dat ik daar een race van 5km deed. Gister deed ik nog een keer 5km in een race, de Pride Run in Amsterdam, en dat ging goed.

De Eurogames race was een beetje een gehaaste race: ik had de Pride Run al gepland, en schreef me pas de avond van te voren in omdat ik er toen pas achter kwam dat ik aan deze mee kon doen als ‘local hero’. Als Nijmegenaar wilde ik dat dus wel.

De ochtend was ik ook al naar Amsterdam geweest, niet voor de Pride Run maar de Pride Walk. Ik deed 20 minuten over de eerste 200 meter, maar het was fijn om mee te doen.

Het jammere was dus wel dat ik vrij gehaasd bij de Eurogames aankwam: snel thuis omkleden en toen nog flink doorfietsen om mijn startnummer op tijd op te halen. Ik dacht, da’s gelijk warming up, en dat was wel zo, maar ik had ook het idee dat ik al net te veel energie aan het verbruiken was.

Het was ontzettend heet en ik had te weinig gedronken: al na één kilometer had ik dorst. En er kwam een waterpost, want ik ging maar één rondje. En ik hield me misschien in? Al met al was ik teleurgesteld met de tijd van 24:26, maar aan de andere kant was het de eerste keer sinds een lange tijd dat ik onder de 25 zat, dus zo erg was het niet.

Dan dus gister: vrijwel alles klopte bij de Pride Run. Het was relatief koel, ik had goed gedronken, beetje ingelopen, er waren veel mensen, de route was vlak en de ondergrond ook. Ja, ik ging veel te hard van start – eerste drie kilometer 4:15/km – maar het ging goed.

Uiteindelijk had ik een tijd van 22:27, waarmee ik dus bijna twee minuten sneller was dan vorige week. En ik heb mijn ‘haha dat kan niet’ doel van 22:30 dus gehaald. Ik ben heel blij.

Shoe Dog

Net klaar met het lezen van Shoe Dog van Phil Knight, de oprichter van Nike. Het is alweer uit 2016, maar ik kwam het tegen in de boekhandel en aangezien ik volgende maand met een nieuwe baan begin in het schoenvak, leek het me interessant om te lezen.

Het bleek ook inderdaad een goed geschreven en interessant boek te zijn, waarin schoenen ook samengaan met hardlopen (waar ik de laatste tijd weer heel actief mee bezig ben) en Japan (waar Phil zijn eerste schoenen vandaan haalt en waar ik al een tijd ook interesse in heb).

Gaandeweg wordt het boek steeds iets meer een verslag van ‘legal battles’, want een groot bedrijf wordt je niet zonder dat. Dat ze worden gewonnen snap je als lezer wel, want anders was Nike niet zo groot als het nu is. Daarnaast blijft ook wel de indruk: Phil Knight houdt erg van zichzelf. Alles lijkt hij uiteindelijk te willen verbinden aan een soort voorbestemdheid, dat hij Nike wel móest oprichten van het universum, gezien alle tekens. Maar goed, als je steeds blijft winnen, is dat dan Tao, of geluk? We lezen natuurlijk niet de boeken van de mensen met Crazy Ideas die het niet gehaald hebben.

Toch vond ik het soms echt wel ‘oei’. Van bepaalde dingen kan je nog zeggen ‘ach het waren de jaren 60, 70’, maar er is dus in het boek veel sprake van ongelijkheid, van mannetjes, van machtsverhoudingen en van een beschreven cultuur die hij zelf duidelijk op het moment van schrijven nog altijd niet als problematisch zag. Aan de andere kant was hij voor die tijd juist vooruitstrevend – of zo wil het boek het – door een handel in atletische schoenen te laten runnen door o.a. een man in een rolstoel en een man met overgewicht.

Bij de hele zaak tegen de aanvankelijk samenwerkende schoenenfabrikant Onitsuka kreeg ik ook juist wel sympathie voor de Japanners: Phil heeft ook absoluut tegen ze gelogen. Leuk om daarna te ontdekken dat ze nog steeds in business zijn, alleen dan onder de naam Asics, en laat dat nou net het merk zijn van mijn huidige hardloopschoenen.

Al met al dus wel een interessant en vermakelijk boek.

Juli 2022

Geen idee of ik dit goed ga volhouden, maar ik zag een paar mensen die wekelijks of maandelijks een overzicht van gebeurtenissen uit hun leven schrijven. Ik schrijf niet al te veel meer over mijn dagelijkse bezigheden – er was een tijd dat ik dagelijks een maf stukje typte – maar eenmaal per maand een overzicht lijkt me wel een leuk idee. Hier de eerste editie voor juli 2022.

  • De maand begon met mijn eerste meerdaagse festival: Down The Rabbit Hole. Ik had er speciaal een nieuwe tent voor aangeschaft (al had ik er al twee) en ik vond vooral het kampeer-aspect heel leuk. Qua optredens vond ik Moderat het hoogtepunt, maar ook leuke dingen gezien die ik nog niet kende (zoals L’Imperatrice). Ik zou zo nog eens gaan (en ik wil nog eens kamperen deze zomer).
  • Ook heb ik deze maand besloten een overstap te maken qua werkgever: ik maak nu een prijsvergelijker maar ga binnenkort schoenen verkopen. Of ja, daarbij helpen dan, en pas vanaf september.
  • Mijn stiefmoeder was jarig en vierde dat met een heerlijke lunch aan het water met alle broers. Sowieso ben ik veel in Leiden geweest omdat het steeds iets minder gaat met mijn vader, waarvoor veel geregeld moet worden.
  • Juli is natuurlijk ook de maand van de Nijmeegse Vierdaagse. Ik ben op zaterdag naar het vuurwerk wezen kijken, ben op dinsdag (heetst van de dag, 39º) met collega’s ‘de stad’ in geweest (meer in de schaduw hangen), heb op woensdag in de pauze een collega aangemoedigd die langs kantoor kwam en op vrijdag kwamen er wat vrienden uit Amsterdam over voor de intocht. Ook zonder de hele week vrij te nemen was het best wel een fijne Vierdaagseweek.
  • Go spelen ligt een beetje stil vanwege de zomerstop op de club, maar ik ben wel nog een middagje bij de Hubert gaan zitten, waar op vrijdag vaak wel spelers zijn. Was een fijne partij in de schaduw, die ik wel verloor, maar de muziek was goed.
  • Hardlopen gaat juist steeds beter. Ik trek nu meerdere keren per week de schoenen aan voor een rondje en dat voelt lekker. Ik ben nog nooit in de buurt geweest van dik zijn, maar merk toch een verschil in mijn lichaam nu ik weer fit ben. Ik dacht juli af te sluiten met een 5k race, maar ben gister alsnog naar de zondagochtendtraining gegaan. Het is een beetje verslavend.
  • De 5k race was in het kader van de Eurogames. Die ochtend heb ik ook nog in Amsterdam meegelopen aan de Pride Walk, want Pride is a protest. Komende week ook nog een 5k bij de Pride Run, maar dat is augustus.

Broccoli-spinazisoep

Een paar jaar terug ontdekte ik de beste makkelijke maaltijd van Albert Heijn: pureersoep broccoli-spinazi. Men koopt de bak, warmt olie in een soeppan, mikt de inhoud van de bak in de pan (maar niet het zakje kruidenmix en de peterselie), bakt de groenten een beetje, voegt dan wat water (zitten zelfs maatstreepjes in de bak) en de kruiden toe en laat staan koken voor 13 minuten. Later heb ik de moeite genomen daadwerkelijk een pureerstaaf te kopen om het af te maken, maar eerlijk gezegd: die stap is optioneel als je echt lui bent.

Een paar maanden terug ontdekte ik opeens dat de broccoli-spinazisoep uit het assortiment was gehaald. Er waren diverse pureersoepen, waaronder een nieuwe groene (met courgette), maar geen van al die soepen was zo magisch als de broccoli-spinazisoep, naar mijn mening. Ik vond dit verlies best tragisch.

Een paar weken terug ontdekte ik dat hij weer terug was, of in elk geval, in een Albert Heijn waar ik normaal niet kom stond hij opeens naast de courgettesoep. Ik heb de bak direct aangeschaft, maar beter nog, ik heb een foto genomen van de lijst met ingrediënten.

Een paar dagen terug kocht ik alle dingen die ik nodig dacht te hebben.

En het is gelukt: ik heb de broccoli-spinazisoep met succes ge-reverse-engineerd. Het was iets meer snijden, maar deze soep nemen ze me niet meer af. Het gaat als volgt: fruit wat uien en wat knoflook, gooi er daarna dus de broccoli en spinazi bij, bak dat wat op, dan nog kikkererwten in de pan gooien (ik deed blikje maar je kan ook losgaan op zelf koken). De kruiden blijken eigenlijk gewoon de ‘hot curry’ mix te zijn (kurkuma, koriander, peper, mosterdzaad, fenegriek, gember, komijn, karwijzaad, piment, nootmuskaat, lavas, venkel… ongeveer dat en het zal wel goed zijn). Daarnaast natuurlijk iets van een bouillonpoeder en vergeet het water niet. Kooktijd was bij mij iets langer, want ik had iets meer, maar de smaak was heel goed (beetje bijpoederen soms, hij hoort wat scherp te zijn).

WorkOutDoors hardloop app

Om maar gewoon met de deur in huis te vallen: de beste hardloop-app voor Apple Watch heet WorkOutDoors. Ik ben helemaal blij.

Voorheen nam ik mijn hardlooprondjes op via de standaard Workouts app van Apple. Dit is een prima app: het meet wat het moet meten. Ik gebruik een app genaamd HealthFit om mijn rondjes naar Strava te syncen (en ooit, ooit ook naar dit weblog). Op Strava heb ik vervolgens allemaal analyses.

Kleine pro-tip tussendoor: je kan tijdens een workout dubbeltappen op je Apple Watch, dat neemt een nieuwe lap/interval op. Hiermee hak je je workout op in stukjes, die je later kan analyseren. Eerst vier minuten snel, dan drie langzaam? Twee tapjes tussendoor en je ziet later precies statistiekjes over de twee losse stukken.

En dat brengt me bij mijn grootste probleem met de Workout app: het geeft me allerlei gegevens tijdens het lopen, maar niet de verstreken tijd sinds het begin van de huidige interval. Eerst vier minuten snel, dan drie langzaam? Dan mag je dus zelf heen en weer naar de stopwatch-app, om een timertje te zetten. Ik vind dat niet echt lekker werken.

Nou, dan niet WorkOutDoors. Mis je in deze app een bepaald cijfertje? Binnen no-time heb je het toegevoegd op een van de vele schermen die je kan instellen. En dan echt élk soort cijfertje wat je maar kan verzinnen, op elk soort scherm dat je maar wil. Mijn enige kritiekpunt is dat de app té nerdy is, te veel is aan te passen. Maar tegelijkertijd vind ik het dikke prima: het is precies wat ik wil, zelfs als ik straks misschien wat anders wil.

Toen ik van de week bij Cifla trainde had ik het er met iemand over. Zij miste juist een andere feature: van te voren een set aan intervals en tijden instellen en dan dat programma laten afdraaien tijdens het rennen. Die feature zit hier ook gewoon in; ik heb ‘m net gebruikt voor een rondje, en achteraf gezien is dat inderdaad een feature die ik ook gemist heb. Eerst vier minuten snel, dan drie minuten langzaam? Stel het van te voren in en alles komt goed.

Ik grapte toen nog dat het een gat in de markt was dat dit nog niet bestond, dat ik zelf die app maar moest gaan maken. Maar hij bestaat dus wél, voor 6 euro. Shut up and take my money.

De twee vormen van privacy

In discussies over privacy merk ik vaak dat mensen het over verschillende dingen hebben. Van het woord ‘bank’ is vaak uit de context wel duidelijk of het om een financiële instelling of om een zitmeubel gaat, maar bij ‘privacy’ lopen de concepten een beetje door elkaar heen.

Er zijn naar mijn idee twee vormen van privacy: mens-mens-privacy en mens-bedrijf-privacy. Waar ‘bedrijf’ staat kan ook ‘instantie’ staan of iets anders dat op een onpersoonlijk rechtspersoon duidt. In beide vormen is het volgens mij belangrijk om privacy te hebben, en de reden ervoor brengt ze uiteindelijk weer bij elkaar tot één begrip van privacy.

De meest begrijpelijke vorm van privacy is denk ik de mens-mens-privacy. Persoonlijk ben ik liever alleen als ik naar het toilet ga. Sommige dingen vertel je wel aan je moeder maar niet aan collega’s en andere dingen juist niet aan je moeder maar wel aan je collega’s.

Privacy gaat over relaties, over hoe ik mij verhoud tot collega’s en mijn moeder. Het is gezond om dingen achter te houden voor bepaalde mensen, niet omdat het echt geheim is, maar gewoon omdat de omgang prettiger is zonder die informatie. Ze doen het zelf ook naar mij toe.

De andere vorm, mens-bedrijf-privacy, gaat over data. Als ik een vriend vertel over mijn weekend is dat een verhaal, als mijn telefoon verbinding maakt met de wifi van de Albert Heijn is dat een data-punt. In deze vorm van privacy gaat het nog steeds om een relatie, namelijk die van mij tegenover de instantie die mijn data interpreteert, maar de relatie is uit balans.

Bedrijven en instanties hebben veel data, en kunnen daarmee komen tot voor hen nuttige inzichten over mij. Die inzichten geven de relatie vorm die ze met mij willen hebben, maar zelf heb ik niet zo’n concreet beeld van hen. In veel gevallen weet ik niet eens wie mijn data interpreteert en met welk doel.

Ook vergeten instanties dingen niet snel meer. Dankzij regelgeving horen ze gegevens periodiek te verwijderen, gelukkig, maar als ze niet op de knop drukken hebben ze nog altijd een even scherp beeld van mij als dat ze hadden toen ze de data vergaarden. Een anekdote van een bekende in de kroeg zakt na een paar maanden wel weg.

Het belang van de mens-mens-vorm van privacy wordt ook onderschat, denk ik. Voor beide moet aandacht zijn. In beide vormen gaat het om de noodzaak om zelf controle te houden over de relaties die anderen met je op proberen te bouwen.

Neem me mee met NFC

Een tijd terug kreeg ik tijdens een IndieWebCamp van Sven een set aan NFC-stickers. ‘Jij hebt er vast creatievere ideeën voor,’ zei hij toen. Ik moet bekennen dat het even op zich heeft laten wachten voor ik er een idee mee had.

Het idee van een NFC-sticker is dat je de tag draadloos kan scannen met je smartphone, die daar dan iets mee kan. Het is exact hetzelfde als je ov-chipkaart, alleen dan is de sticker de kaart en je telefoon het poortje. Als je mijn ov-chipkaart scant met mijn telefoon opent die de NS app op ‘actuele vertrektijden’.

Het is op iOS heel simpel in te stellen: open of installeer de Apple app ‘Opdrachten’ (Siri Shortcuts), ga naar het tabje ‘Automatisering’ en voeg een ‘Persoonlijke automatisering’ toe. Als trigger kies je NFC, scan je ov-chipkaart, en klik ‘volgende’. Daarna kan je een actie kiezen die moet worden uitgevoerd.

Een paar weken geleden ben ik weer begonnen met Getting Things Done te implementeren en daar ben ik momenteel best tevreden over. Voor wie het niet kent: schrijf al je taken op, zodat je kan doordenken wat ze voor je betekenen, en hou de eerstvolgende acties bij in een systeem dat je vertrouwt en vaak raadpleegt. (En dan nog wat reviews, een paar nuances en veel oefenen.)

Eén van de lijsten die ik nu bijhoudt is een lijst van dingen die momenteel thuis liggen maar ‘ergens’ naar toe moeten. Punt is: ik vertrek wel vaker van huis, maar steeds naar andere bestemmingen, en eenmaal op die bestemming denk je pas: o ja, dat moest mee! Vandaar de lijst.

Nu hangt er dus een NFC-sticker in de hal. Als ik die scan, opent mijn telefoon de Things-app op de ‘Anytime’ view, met daarin de ‘Mee naar...’ tag voorgeselecteerd. Het is een soort snelkoppeling, maar dan in de fysieke wereld. Heel erg blij mee.

Op de plek waar in ‘s nachts altijd mijn telefoon neerleg ligt er nu ook een. Als ik die scan gaat ‘Welterusten’ aan: alle lampen in mijn huis gaan uit, behalve heel zacht het licht in mijn slaapkamer. Na één minuut gaat die ook uit. Die is ook fijn, maar het zou kunnen dat ik in dit geval gewoon hardop ‘Welterusten’ tegen Siri blijf zeggen.

Toetsenborden: 34 toetsen, hoe dan?

Dit is onderdeel van een serie over toetsenborden, zie het eerste deel voor een overzicht.

Ik wilde ze serie afsluiten met een stuk over hoe ik de 34 toetsen van mijn nieuwe toetsenbord heb ingedeeld. Want inderdaad, dat is best wel weinig. De Apple Magic Keyboard heeft er 79, de Moonlander heeft er 72, de eerder gelinkte video eindigt met een minimalistisch toetsenbord met maar 36 toetsen en dan nóg heeft de Ferris twee toetsen minder.

Zoals de video uitlegt: één van de strategieën om hiermee om te gaan, is het concept van layers. Zodra je de Shift-knop indrukt wordt de betekenis van vrijwel alle toetsen anders: alle letters veranderen in hoofdletters, maar cijfers en tekens veranderen in andere tekens. Door naast Shift een aparte ‘Symbol’-knop toe te voegen kan je in een kleiner aantal toetsen nog steeds heel veel tekens kwijt.

q w e r t   y u i o p
a s d f g   h j k l ;
z x c v b   n m , . /

1 2 3 4 5   6 7 8 9 0
! @ # $ %   ^ & * ( )
[ ] ` ~ '   " _ = + -

Toch kreeg ik het niet helemaal passend. In het bovenstaand voorbeeld mis ik toetsen voor {, }, \ en |, en eventueel § en ± – al gebruik ik die niet zo vaak. Een oplossing was om ook een ‘Num’-layer toe te voegen, maar die kreeg ik dan vervolgens niet helemaal vol. Daarnaast wilde ik een navigatie-layer, met pijltjes en volume, en voor je het weet heb je met Shift, Symb, Num en Nav al vier toetsen bezet, terwijl er dus maar vier zijn voor de duimen en ik één daarvan spatie wil houden en nog iets met Cmd en Ctrl wil.

Ik heb het nog even gezocht in het prachtige concept van de tri-layer. Hierbij heb je dus een knop voor Lower en een knop voor Raise, die dus elk een eigen layer activeren, maar dus ook tegelijk kunnen worden gebruikt voor weer een hele nieuwe layer. Helaas had ik dan nog steeds één layer teveel en vooral duimknoppen te weinig. (Andere helaas is dat je dit niet kan instellen met de Configurator en echt de code in moet duiken, maar daar voel ik me gelukkig best thuis.)

Je zou ook kunnen werken met een meer bladerend principe, waarbij je van Layer 1 naar Layer 2 komt door éénmaal op een knop te drukken en dan los te laten. Van Layer 2 kan je dan naar Layer 3 komen via een andere knop, en als je zorgt dat je vanaf elke andere layer steeds weer naar Layer 1 kan via dezelfde knop ben je in principe nooit de weg kwijt, zegt deze video, maar ik durfde het toch niet helemaal aan.

De standaardconfiguratie van de Ferris lost het probleem op door ‘Mod-Taps’ te gebruiken. Het idee hierbij is dat je een toets iets anders kan laten doen voor het indrukken en loslaten dan voor het indrukken en vasthouden. Wie de linkerknop met het bultje indrukt en loslaat krijgt een F, maar wie diezelfde knop vasthoudt komt in een Symbol-layer terecht, waardoor andere knoppen daarna symbolen geven. Het is vrij ingenieus en behoorlijk efficiënt, maar ik vind het persoonlijk erg irritant dat bepaalde letters niet direct op mijn scherm verschijnen.

Momenteel gebruik ik Combo’s om al mijn toetsen kwijt te kunnen. Ik sluit niet uit dat het nog eens gaat wijzigen in de toekomst, maar momenteel ben ik er tevreden mee. Het idee is als volgt: wie op de Q drukt krijgt een Q en wie op de A drukt krijgt een A, maar QA samen ingedrukt geeft een 1 (de toetsen sluiten op elkaar aan, dus heel lastig is het niet). Op die manier is de hele bovenste + middelste rij vol met getallen, en de middelste + onderste rij bevatten alle tekens, plus de Tab (T). Op de standaardlayer heb ik een Backspace (B) en Enter (E).

q w e r t   y u i o p
a s d f g   h j k l B
z x c v b   n m , . E

1 2 3 4 5   6 7 8 9 0
` - = T \   / ' ; [ ]

Merk op dat ik eigenlijk een andere layout gebruik dan Qwerty, maar ik wil deze post niet nog obscuurder maken dan het al is. Merk ook op dat er helemaal geen letters op mijn keycaps staan, dus daar hoef ik me niet door te laten afleiden. En merk op dat ik hier alleen vertikale combinaties gebruik: als ik netjes elke vinger voor de juiste kolom gebruik kan ik nooit per ongeluk een cijfer typen omdat ik de toetsen te snel achter elkaar indruk. (En mijn andere layout zorgt ervoor dat dergelijke combinaties op dezelfde vinger ook vrijwel nooit voorkomen.)

Wat ik hier ook fijn aan vind is dat ik hiermee geen enkele duimknop hoef op te geven voor layer-navigatie. Alle knoppen zijn gewoon vlak onder mijn vingers en los van de combinatie zelf heb ik er dus geen extra knop voor nodig: het aantal gelijktijdig ingedrukte knoppen blijft twee, maar slechts op één vinger. Voor sommige wordt dit drie: de twee knoppen voor 1 plus Shift erbij geeft een uitroepteken. Nog steeds erg overzichtelijk.

Dan voor de duimen op links zitten Shift en Command (Cmd) en op rechts zitten Ctrl/Escape en Spatie. Omdat ik veel programmeer in Vim heb ik Escape vaak nodig, maar hij combineert nooit echt met Ctrl, en hier is de vertraging net iets minder hinderlijk, dus hier heb ik de Mod-Tap techniek wel toegepast. Nergens op de duimen dus momenteel een Layer-switch.

Maar de pijltjestoetsen dan? Daarvoor heb ik op beide handen toch nog een layer weten te verstoppen: als je, als combo, je hele hand op de rechterzijde neerlegt, worden de middelste toetsen op de linkerhand een set aan pijltjestoetsen in WASD-style. Hetzelfde werkt ook andersom, maar dan besturen ze de muis-cursor, in HJKL-style. In beide layers zitten ook media-controls voor volume en play/pause.

- - ^ - -   - a l t !
- < v > -   - X X X X
- - - - -   - h y p r

a l t ! -   - - - - -
X X X X -   - < v ^ >
h y p r -   - - - - -

Als je dezelfde vier vingers één rij naar boven doet krijg je een Alt-toets. Dit werkt op beide zijden, zodat je het met je andere hand kan doen als je hem wil combineren met één van de toetsen in die rij. In de onderste rij is dit de Hyper-knop, wat weer een wereld op zich is. In kort: Hyper is Shift+Ctrl+Alt+Cmd, wat een idiote combinatie is die niemand kan indrukken en daarom altijd nog vrij is, ideaal voor je eigen globale shortcuts. Ik kan Hyper combineren met cijfers om snel naar bepaalde programma’s te springen dankzij Hammerspoon, en nog wat meer dingen.

En dat was het. Ik ben er vrij zeker van dat er nog bepaalde zaken gaan veranderen in mijn configuratie, maar vooralsnog ben ik hiermee tevreden. Het was nogal een konijnenhol, hopelijk heb ik jullie niet al te ver meegetrokken. Dan ga ik nu weer even verder oefenen op Monkeytype. Doei.

Toetsenborden: mijn persoonlijke Andeweg layout

Dit is onderdeel van een serie over toetsenborden, zie het eerste deel voor een overzicht.

Laat ik beginnen met een disclaimer: ik ben nog heel erg bezig met het leren van deze layout, en erg hard gaat dat niet omdat alle toetsen op een andere plek zitten (behalve één, bij toeval). Toch denk ik dat ik er geen grote wijzigingen meer in aan wil brengen, dus hier is hij:

z l u w v   f p o d ,
h r e s g   b n a t i
k j / m x   q c ; y .

Veel plezier ermee, dank voor het lezen.

Nee, ik zal iets meer uitleg geven bij deze ogenschijnlijk willekeurige rangschikking van letters. Het is gebaseerd op de ISRT-layout, maar dan dus totaal anders, met ook een paar andere design-overwegingen.

Laat ik beginnen bij waar we waren gebleven: Colemak voor het Nederlands. Colemak is beter dan Qwerty in veel opzichten, maar heeft daarbij wel wat keuzes gemaakt die beter uitpakken voor Engels dan voor Nederlands. Door de nieuwe locatie van de J, K en L werd bijvoorbeeld het achtervoegsel -lijk heel erg lastig te typen, terwijl het op Qwerty best lekker gaat. Hoe dieper je optimaliseert voor een bepaalde taal, hoe minder lekker andere talen passen. Wat dat betreft is Dvorak een mooi compromis dat voor veel verschillende talen werkt.

Echter: de tijden zijn ook een beetje veranderd. Om een typemachine te maken heb je een productielijn nodig; daar is behoefte aan een layout die universeel is. Dankzij het wonder van software is het wijzigen van een layout tegenwoordig veel en veel simpeler. We kunnen het ons veroorloven om te optimaliseren voor kleinere eenheden, zoals het relatief kleinere taalgebied van Nederlands. Maar waarom daar stoppen? Het zijn mijn handen, ik kan een persoonlijke layout creëren die geoptimaliseerd is voor het schrijven van Nederlands én Engels, precies in de mix zoals ik het gebruik.

Dit is waar ik op het idee kwam om de teksten op dit weblog te gebruiken. Ik heb nogal wat tekst geschreven en gepubliceerd hier, in zowel Nederlands als Engels. Het corpus dat ik daaruit samenstelde bevat 248.220 woorden in 1.560.699 tekens (inclusief spaties, etc). Vervolgens heb ik scripts geschreven om daar frequenties van letters, lettercombinaties en woorden uit te kunnen halen, om zo een beter toetsenbord samen te stellen.

Gewapend met die data nog een andere overweging. Ik merk aan mijn handen dat in de overgang van Qwerty naar Colemak, mijn rechterhand veel meer is gaan doen dan mijn linkerhand, relatief gezien. Dit blijkt te kloppen: op basis van mijn weblog-teksten heeft Qwerty een handverdeling van 60%/40% en Colemak een verdeling van 39%/61%. Vooral het verplaatsen van de E is een grote: 16.2% van alle letters is een E.

Zoals ik net al zei is mijn layout gebaseerd op de ISRT-layout. Deze layout probeert ‘same finger bigrams’ te voorkomen: veelvoorkomende lettercombinaties die je met dezelfde vinger zou moeten typen. Die zijn kostbaar, omdat je niet alvast je andere vinger kan klaarzetten terwijl je een toets indrukt. Een layout die de E, T, N, A, I en O aan één wijsvinger toewijst is erg inefficiënt in dit opzicht.

Het nadeel van ISRT is dat het zwaar geoptimaliseerd is voor Engels. In het Nederlands zijn de frequenties van lettercombinaties gewoon niet hetzelfde. Maar gelukkig heeft de maker zijn scripts online gezet, en heb ik dus een bak tekst die ik het kan voeren. Omdat er een element van randomness in zit krijg je telkens nét andere layouts, maar hier is wat er uit kwam rollen nadat ik de iteraties lekker hoog had gezet:

0    1    2    3    4    5    6    7    8    9
u    d    l    f    b    g    k    w    .    o     27.4
e    t    r    n    p    m    h    s    i    a     63.7
'    y    j    q    c    v    z    x    ,    ;     08.9
18.0 13.2 10.6 09.0 04.9 06.9 06.5 07.0 09.6 14.4

Merk op dat deze layout verschrikkelijk is: het gooit 18% van alle aanslagen op de linkerpink. Maar het is een mooi overzicht met scores, dus dit heb ik in Number (Excel) gegooid, zodat ik makkelijker met kolommen kon schuiven en totalen berekenen.

Na wat schuiven kwam ik tot deze layout:

zluwvcfod,
hresmpnati
kj/xgbq;y.
6,510,61876,94,9914,413,29,6

Deze layout heeft een handverdeling van 49%/51%, wat ik erg acceptabel vind. Het lijkt alsof de wijsvingers weinig te doen hebben, maar bedenk dat ze verantwoordelijk zijn voor twee kolommen. Als je die bij elkaar op telt kom je voor beiden op 13,9% uit, wat juist een hele mooie verdeling geeft ten opzichte van de andere vingers.

Tot slot heb ik de letters op elke wijsvinger nog wat beter neergezet op basis van frequenties. De plaatsing is hier ontzettend beïnvloed door de layout van de Ferris Sweep waar ik dit nu op gebruik. Als je ‘m op een traditioneel toetsenbord wil gebruiken zou ik de indeling voor de wijsvingers anders hebben gedaan (de plek van de Qwerty Y is erg lastig – zet daar de Q neer – terwijl de Qwerty N juist erg simpel is – zet daar de F).

Dit alles brengt ons dus tot deze layouts:

z l u w v   f p o d ,
h r e s g   b n a t i
k j / m x   q c ; y .
z l u w v q p o d ,
 h r e s g b n a t i
  k j / m x f c ; y .

Ik ben er nog niet heel bedreven in, maar ik ben vrij zeker dat ik op het moment van schrijven de snelste persoon ter wereld ben op deze layout. Het is een goede gewoonte om een toetsenbord-layout naar de achternaam van de maker te noemen (Dvorak, Colemak, Norman), dus noem deze dan de Andeweg, maar Zluw kan natuurlijk ook.

Een laatste variatie nog. De Ferris Sweep heeft heel weinig toetsen en in de laatste aflevering van deze serie wil ik het nog hebben over hoe ik dat oplos. Twee hele toetsen voor / en ; is echter een beetje zonde, dus ik heb besloten dat / wordt vervangen door Enter en ; door Backspace. Die heb ik momenteel op de aangegeven plekken zitten, maar ik overweeg om die gekke middenplekken aan , en . te geven, zodat ik Backspace en Enter op de rechterpink heb. Dit verandert wel de bigram-scores, dus ik ben er nog niet helemaal uit, maar dit kan.

Morgen de laatste aflevering van deze serie, hopelijk, over de 34 toetsen van de Ferris.

Toetsenborden: hoe leer je een andere layout?

Dit is onderdeel van een serie over toetsenborden, zie het eerste deel voor een overzicht.

Zoals ik deze week al liet doorschemeren ben ik bezig mezelf een nieuwe layout aan te leren op mijn nieuwe toetsenbord. De meeste mensen gebruiken Qwerty, eerder deze week introduceerde ik een versie van Colemak voor Nederlands en morgen omschrijf ik mijn nieuwe layout.

Voor mijn ‘Colemak Mod-NL’ heb ik ongeveer 60 woorden per minuut gehaald, dus wilde ik een blogpost schrijven over hoe je dat moet doen. Mijn nieuwe layout verplaatst echter alle toetsen, en daarvoor is nog weer iets meer moeite nodig. In deze post dus ook de geüpdatete strategie.

Maar voor ik wat tools deel: dit kost tijd en moeite. Veel tijd en moeite. Is het het waard, als je al 70+ woorden per minuut op Qwerty kan? Waarschijnlijk niet. Maar ik vind deze alternatieve layouts wel dusdanig ‘lekker’ aanvoelen dat ik wel gewoon doorga met – jawel – uren investeren.

Als je gewoon eens wat wil proberen raad ik aan om eens te kijken naar DitchQwerty.com. Het geeft je een hele lijst aan Qwerty-alternatieven, opgedeeld in levels die steeds een hand vol nieuwe toetsen introduceren. Ook kan je hem gewoon gebruiken met je standaard Qwerty-toetsenbord: de site vertaalt de toetsen naar de nieuwe layout. Als je zelf al een Qwerty-alternatief hebt ingesteld kan je deze vertaling uitzetten door in de instellingen (rechter bovenhoek) het vinkje ‘Key Mapping’ uit te zetten.

Mijn favoriete tool voor het leren van een nieuwe layout, of gewoon sneller Qwerty, is Keybr.com. Deze geeft je onzin-woorden gebaseerd op echte patronen (helaas wel Engels), voor de letters E, N, I, T, R en L. Zodra je een snelheid van 35 woorden per minuut hebt opgebouwd krijg je daar een letter bij.

Keybr kan net als DitchQwerty toetsenborden voor je vertalen, maar aangezien ik de keymapping tegenwoordig in mijn toetsenbord zelf programmeer laat ik hem meestal op Qwerty staan. Merk ook op dat de volgorde van de letters gebaseerd is op de frequentie van die letter in het Engels, waardoor je pas heel laat de J krijgt, terwijl die in het Nederlands veel belangrijker is.

Als je echt helemaal from scratch een nieuwe layout gaat leren, kom je bij Keybr op een bepaald punt wel in de knoop. In de beginfase verspringt de ‘focusletter’ steeds naar de letter waar je het slechtst in bent, maar zodra je de S erbij krijgt, blijft S de focusletter, tot je de A krijgt, die dan de focusletter is, etc.

Voor het herleren van Qwerty werkt dit prima, maar bij het overschrijven van Qwerty werkt het minder goed. Ik merk dat mijn vinger nog best vaak naar de oude locatie van een letter wil gaan. Helemaal als ik een nieuwe letter krijg die nu op die locatie staat, kan een letter die ik eerder al op 35wpm heb gekregen, opeens helemaal terugzakken. Maar omdat Keybr alleen de nieuwe letter blijft boosten, kom ik daar slecht op terug.

Mijn oplossing hiervoor is een tijdje geweest om steeds opnieuw te beginnen in een incognito-venster, en dat werkt heel goed, maar het nadeel daarvan is dat je dan heel goed wordt in het schrijven van woorden met de beginset (ill, elen, eline), maar in latere combinaties je als nog in de knoop komt met – in dit voorbeeld – de L.

De échte oplossing hiervoor is om op de ‘settings’ knop te klikken en het schuifje ‘Add letters to words’ omhoog te schuiven. Op die manier krijg je alvast toegang tot meer letters, maar blijf je in de initiële modus van de verspringende focusletter. Telkens als ik een nieuwe letter vrijspeel ga ik even naar settings, plus ik die letter erbij, en reset ik, zodat ik met de verspringende focus kan blijven oefenen. (Dit scheelt me veel uren in het programmeren van mijn eigen tool.)

Een andere usual suspect is Monkeytype. Hier kan je bestaande woorden schrijven (ook Nederlands beschikbaar) in diverse modussen. Achteraf krijg je een leuk grafiekje van hoe snel je was. Ook interessant is deze ngram tool, waarmee je tweeletter- en drielettercombinaties kan oefenen, de bouwblokken van woorden als het gaat om typen. Ook deze zijn weer op het Engels gebaseerd, maar desalniettemin fijn. Alleen al voor afwisseling met Keybr zijn het fijne tools.

Wie gewoon sneller wil typen moet vooral ook meer gebruik maken van Option + Backspace, om een woord in één keer te verwijderen, en überhaupt Option + pijltjes om sneller door je tekst heen te springen. (Option is Alt, maar verder weet ik niet precies hoe goed dit zich vertaalt naar Windows en Linux. Op Mac werkt dit fantastisch. Verder zou je natuurlijk eigenlijk overal Vim-bindings moeten hebben maar dat is een ander onderwerp.)

Morgen dus meer over mijn nieuwe layout!

Toetsenborden: De Ferris Sweep

Dit is onderdeel van een serie over toetsenborden, zie het eerste deel voor een overzicht.

Deze post liet even op zich wachten, want ik wilde hier eigenlijk iets schrijven over goede manieren om een nieuwe layout te leren. Aangezien ik dat nu zelf aan het doen ben en een beetje struggle stel ik die post nog even uit. Daarom nu eerst: dit is mijn nieuwe toetsenbord!

Het is een Ferris Sweep, wat wil zeggen dat het een wat makkelijker in elkaar te zetten Ferris is. Het is een split keyboard met een best heftige column stagger: de toetsen verspringen per vinger en volgen daarmee heel erg de vorm van in elk geval mijn type hand.

De stagger lijkt ontzettend overeen te komen met die van de Kyria (gemaakt door een Nederlander). Die laatste heeft echter 40 tot 46 toetsen, terwijl de Ferris er maar 34 heeft. En oké, ik moet wel toegeven: dat is vrij weinig.

Ik wilde in deze blogpost nog wat info geven over de manier waarop ik een toetsenbord in 34 toetsen prop, maar aangezien ik de Ferris pas sinds dinsdag echt af heb, ben ik daar nog te veel mee aan het stoeien om te delen. De basis ervan werkt in elk geval al wel prima. Het is heerlijk om de tekens naar je vingers toe te laten komen, in plaats van je vingers de hele tijd naar de tekens te brengen.

Qua verslag over het bouwproces kan ik deze video aanraden, want dat zijn de stappen die ik zelf ook gevolgd heb. Het was best een avontuur en iets waarvan ik eerlijk gezegd niet had gedacht dat ik het kon, maar met gewoon beginnen kom je een heel eind.

Rest me niets anders dan nog een paar foto’s te delen. Binnenkort meer over de indeling. O en ik heb nog wat PCBs over, mocht je er ook een willen bouwen...

Toetsenborden: Colemak voor Nederlands

Dit is onderdeel van een serie over toetsenborden, zie het eerste deel voor een overzicht.

Eergisteren vertelde ik over hoe ik overstapte van Qwerty op Colemak en weer terug en weer terug. Nou ja, terug. Momenteel gebruik ik dus Qwerty op mijn Apple toetsenborden (inclusief die in mijn MacBook) en Colemak op de Moonlander. Maar niet helemaal Colemak, daar ga ik het vandaag over hebben.

Het probleem met een efficiënte toetsenbordindeling met compromissen zoals Colemak, is dat er altijd andere compromissen te maken zijn. Vrij veel bronnen over Colemak vertellen je direct over het bestaan van ‘Colemak Mod-DH’. Voor het gemak, hier is Colemak, met wat ruimte om duidelijker te zien welke vinger wat moet doen:

Q W F P G   J L U Y ;
 A R S T D   H N E I O
  Z X C V B   K M , . /

Bij Colemak zie je dat de D en de H te verkrijgen zijn door de wijsvinger zijwaards te bewegen. Dit komt voort uit het principe dat de middelste rij het gemakkelijkste te bereiken is. Niet iedereen was het daar mee eens: de zijdelingse verplaatsing is wat onhandig. Mod-DH verplaatst de D en H naar de locatie van de V en de M, om zo net wat efficiënter te zijn, ten kostte van wat meer verschuivingen.

Nou ja, dacht ik toen ik het las: dat is optimaler voor Engels, maar dat hoeft niet per se waar te zijn voor Nederlands. En standaard Colemak is al beter dan Qwerty, dus laat ik dat gewoon doen. Maar dat is dus wel een punt: voor Engels, voor Nederlands…

Problemen voor het Nederlands

Eén van de problemen waar ik al snel tegenaan liep, is dat Colemak bepaalde letters enorm ‘straft’, die voor het Nederlands niet eens op zo’n heel gekke plek zaten op Qwerty. Het meest in het oog springend is de J, wat in het Engels gek genoeg de minst voorkomende letter van het alfabet is.

De J krijgt (zoals je hierboven zag) de linker bovenhoek van de rechterhand. Nou zit ik inmiddels op een columnar layout met de Moonlander (zoals gister uitgelegd), dus daarmee is het effect iets minder erg, maar het is nog steeds best wel een enorme uithoek van het toetsenbord. Daarnaast krijgt de Y (in het Nederlands de twee-na-zeldzaamste) een toppositie.

Zie Colemak bovenin en zoek het in het Nederlands toch behoorlijk veelvoorkomende achtervoegsel ‘-lijk’. Drie van de letters moet je typen met dezelde wijsvinger, en geen van die drie zit op de middelste ‘home-row’ rij. Ik kreeg hier gewoon echt een beetje pijn van in mijn hand. (Zoek ‘m ook even op op Qwerty: zie? Daar zit '-lijk' eigenlijk heel lekker in een driehoekje.)

Aanpassingen voor Nederlands

In stijl van Colemak heb ik dus een paar aanpassingen gedaan toen ik opnieuw begon met het gebruiken van de Moonlander. Ik wilde heel graag de R en S weer terug omdraaien, want ik vind dat een heel gekke aanpassing in Colemak, maar ik merkte dat dit al best diep in mijn muscle memory zat, dus ik heb die zo gelaten.

q w d p f   y h u l ;
 a r s t g   k n e i o
  z x c v b   j m , . /

De ‘-lijk’ is nog steeds niet optimaal, maar in elk geval al een stuk beter. Ik was over het algemeen best tevreden met deze layout en ben tot ongeveer 72 woorden per minuut gekomen, wat ik acceptabel en ook werkbaar voor werk vindt.

Full disclosure is wel dat ik veel met Vim werk en dus de maffe designoverweging heb meegenomen dat HJKL pijltjestoetsen kunnen zijn. In deze layout staat H netjes links van L en K netjes boven J.

Als je dit zelf wil proberen is het goed om te bedenken dat ik dit allemaal niet in software op mijn Mac oplos. De Moonlander is een ‘programmable keyboard’, wat wil zeggen dat je elke knop iets anders kan laten doen als je dat wil. Ze hebben daar een heel makkelijke website voor, waar je zelf die toetsen kan instellen en op je toetsenbord kan zetten.

Dit maakt dus dat mijn Mac gewoon denkt dat ik op Qwerty typ, terwijl stiekem alle toetsen op een andere plek zitten. Dit betekent ook dat ik mijn Moonlander in elke laptop of tablet kan pluggen en dan gewoon mijn eigen layout heb. Dat maakt zo’n persoonlijke layout ook bruikbaar: ik neem mijn eigen handen en eigen toetsenbord mee.

Maar goed, ik moet dus bekennen dat ik dit alweer niet meer gebruik. Inmiddels ben ik bezig een andere knotsgekke zelfgemaakte layout te leren, maar meer daarover later deze week in een eigen blogpost. Als je geïnspireerd bent om af te stappen van Qwerty, kijk ook naar die post, maar Colemak is wel veel makkelijker om mee te beginnen vanuit Qwerty, of kijk naar Minimak voor zelfs nog minder wijzigingen.

Meer laden