• Klooien met css-bugs

    Dát was gedomme al eens heel heel heel lang geleden: worstelen met vreemde dingen in css, tegen de rand van de standaard aan.

    Het probleem: ik wil een tabel maken waarvan de cellen een achtergrondkleur hebben en de randen halfdoorschijnend zijn. En dat lukt niet als de tabelcellen position: relative hebben.

    Illustratie! Dit is de situatie, met twee tabelcellen die naast elkaar staan (de vakjes zijn pixels, voor de duidelijkheid):

    tabel0.png

    De rand van een tabelcel, dat is soms iets raars. Het kan op deze manier:

    tabel00

    maar het kan ook, met border-collapse: collapse op de tabel, op deze manier:

    tabel01.png

    Of, als ge in plaats van #a4a4a4 zoals hierboven, dat gewoon grijs is, in de plaats een halfdoorschijnend zwart als rgba(0,0,0,0.25) neemt, dan wordt het iets in deze zin:

    tabel02.png

    Ah. Hm. Raar, juist. Eigenlijk zou een mens die lijn in het midden het liefst van al op deze manier zien gebeuren:

    tabel03.png

    …al gaat dat natuurlijk niet, wegens dat er niet echt geen halve pixels bestaan.

    Maar goed, we hebben dus een halfdoorzichtige lijn, met

    table { border-collapse: collapse; }
    td { border: 1px solid rgba(0,0,0,0.25: }

    …en dan komt de kat op de koord. Ik wil een tooltip laten verschijnen als ik over een tabelcel ga. Dat kan op veel verschillende manieren, de gemakkelijkste is om de inhoud van de tooltip in de tabelcel in een verborgen element te steken, en dat element bij :hover zichtbaar te maken in iets dat relatief ten opzichte van zijn parent is gepositioneerd.

    En om dat mogelijk te maken, moet de tooltip position: absolute krijgen, en het parent-element position: relative. Zo gezegd, zo gedaan, en de tooltip werk helemaal zoals hij zou moeten werken, maar wat doet in dat geval die border? Dit:

    tabel04.png

    Gah! Mijn border-collapse: collapse is weg, en ik krijg een halfdoorschijnende grijze lijn op een achtergrond van wit! Even een intensieve Dokter Google-bepotelingssessie gehouden, en jawel: ‘t is iets dat al lang zowal overal fout gaat, en ‘t heeft voor zover ik begrijp iets te maken met ambiguïteiten in de definitie van hoe borders zich gedragen.

    De theorie is dat een stippellijn-border zich bijvoorbeeld zou zou moeten gedragen:

    tabel06b.png

    …maar dat dat niet echt het geval is. En dat het fout loopt met die position: relative en die border-collapse, maar dat er geen consensus is om het degelijk op te lossen.

    Ik dus op zoek naar een workaround. Men zegt dat het zou werken met background-clip: padding-box; men doolt. Het werkt niét met background-clip: padding-box.

    Een beetje hoofdscharten later is het dit geworden:

    box-shadow: inset 1px 1px 0 0 rgba(0, 0, 0, 0.25);

    Read ’em and weep, boys and girls. 🙂

    Een schaduw aan de td gegeven, maar aan de binnenkant. Een pixel naar rechts en een pixel naar onder verschoven, zonder blur, en 75% doorschijnend zwart. Dat doet dan dit:

    tabel07

    …en als er een reeks cellen onder elkaar staan, geeft dat iets in deze zin (de lijnen zijn deze keer de randen van de tabelcellen, 4 keer uitvergroot):

    tabeldetail

    Good enough for me.

    Behalve dat ik bij het nemen van de screenshot merkte dat er hier en daar cellen zijn die geen 20 pixels maar wel 21 pixels breed waren. En andere die geen 20 maar 21 pixels hoog waren. En natuurlijk ook een paar cellen die 21 op 21 pixels waren.

    Grr!

    De schuldige is die zwarte rand, die ik stomgaweg met een border: 2px solid #000 gedaan heb, maar die wegens die niet-meer-werkende border-collapse blijkbaar de cel breder maakt in plaats van naar binnen te groeien.

    Ziet, de rode pijltjes geven aan waar het te breed of te hoog is:

    tabelaargh.gif

    En ja, ik lig daar dus wakker van. Als het op de pixel juist kan zijn, dan moet het van mij op de pixel juist zijn.

    Poging gedaan om het allemaal met box-shadow: inset te doen, en jawel, dat is enorm veel beter:

    tabelanim

    Behalve dat er exact twee keer vier pixels te weinig op staan: onderaan in de rechterbenedenhoek van april 2017, en bovenaan in de linkerbovenhoek van augustus 1971, daar waar de hoek van juli naar augustus 1970 zit:

    tabelteweinig

    Ja, ook daar lig ik wakker van. Maar ‘t zal toch voor na een nacht slapen zijn.

    Wie geïnteresseerd is: het staat allemaal hier op github.

    En ja, ik hoor u roepen, daar in de achtergrond, dat ik het allemaal niet met tabellen had mogen maken, en dat het allemaal met SVG had gekund. Jaja.

    Jajaja.

  • Macchiato

    Ik drink normaal geen koffie, maar we hebben op het werk een machine die vanalles kan maken, en ik dacht hey waarom niet?

    (Dat was trouwens mijn tweede tas, wegens dat de eerste niet-doorschijnend was.)

    Ik denk dat ik vanaf nu elke ochtend begin met zo’n tas van dat.

  • Het voorvaderlijk vliegtuig

    Kijk, ziet, het voorvaderlijk vliegtuig uit Black Panther:

    ancestral.gif

    De vertaler van dienst dacht om de één of andere reden dat het om een Ancestral Plane ging, en niet een Ancestral Plane.

    Tsk.

  • Om de zoveel jaar deed ik eens een update van mijn levensverhaal-in-een-grafiekje:

    leven-20170506-1-1

    Dat is niet moeilijk te maken, maar ‘t is wel een beetje, euh, bewerkelijk. In de zin van “het is eigenlijk manueel gemaakt in Excel en dan een beetje beprutst in Photoshop”. En ook in de zin van “het is eigenlijk prutswerk en na de denk ik vijfde keer dat ik die Excel kwijtgeraakt ben, was ik het beu om het met de hand opnieuw te maken”.

    Dus heb ik in de snelte iets geschreven om het automatisch te maken.

    De bron is een eenvoudig json-bestandje met daarin mijn geboortedatum en dan een reeks “periodes” (school of werk, in de veronderstelling voorlopig dat er niets echt overlapt):

    leven

    Ik geef zo’n periode telkens een naam, een kleur, een start- en een einddatum, en een code. (De code is eigenlijk niet nodig, maar hey, voor het gemak.)

    Dan is het gewoon die dingen inlezen, en loopen over de maanden van mijn leven, brutekracht kijken of een bepaalde maand in één van die periodes valt, en in voorkomend geval het vakje de juiste kleur geven.

    Dat geeft voorlopig iets dat er toch al zwaar op begint te trekken:

    leven2018

    Lachen met mijn belachelijk lelijke en inefficiënte code mag, ze staat op Github. 🙂

     

  • Westworld, seizoen 2

    Een collectief fandom is een raar iets.

    Pak bijvoorbeeld A Song of Ice and Fire: hints die George R.R. Martin o-zo-meticuleus weggestoken had, worden genadeloos gevonden en doodgeanaliseerd. Niets blijft overeind als vele vele duizenden zeer gemotiveerde mensen iets van zeer dichtbij bekijken.

    Zo was R+L=J al jááááren lang zowat 250% bevestigd, lang voor het in de tv-serie ook écht bevestigd werd. En was zelfs Hodor’s naam plusminus verklaard jaren voor datum.

    Westworld was ook zoiets: ik denk dat het vanaf de derde aflevering van seizoen 1 op r/westworld bijna zeker was hoe het seizoen in elkaar zat, wie wie was, en min of meer de richting die het uit zou gaan. En met elke aflevering werd het meer en meer bevestigd, zodat het einde niet echt écht meer een verrassing was.

    Dit jaar dachten de makers sod it, we gaan gewoon het onvermijdelijke niet afwachten. En dus kwamen ze met een ingenieus plan op de proppen: voor wie wou — maar alleen voor wie écht heel het seizoen wil gespoilerd zien — zouden ze een video online zetten.

    Vijfentwintig minuten, heel het seizoen uitgelegd van begin tot einde. Op die manier kunnen de moderatoren van de discussies op het internet een oofje in het zeil houden, en speculatie mogelijk maken, maar tegelijkertijd ook de pistes die teveel in de juiste richting gaan afhouden.

    Geniaal plan. Ge moet er maar op komen.

    En dus bij deze, without any further ado:

    Zeer erg spoilerachtig, dat spreekt. Een paar reacties gesprokkeld:

    A bold move, but probably foolish. It robs the story of both its impact and the satisfaction of solving the puzzles. There isn’t even the devilish fun that it came from a leak. It feels like some strange scorched earth policy meant to protect the story (and the IP) but it really just feels like self-sabotage.

    All the more shame that the plot is so clever now it’s spoilt like this… Probably ruined the season for me to be honest. I hope we don’t have to wait 2 years again.

    Of, in de andere richting:

    For me knowing how this season is going to roll is kind of like watching the Harry Potter movies. I mean I had already read all of the books so it’s not like I thought Voldemort was going to turn out to be Harry’s long-lost uncle Rick. I still enjoyed the movies even though I knew exactly what was going to happen. That’s kind of how I’m feeling here. Some people are just way too sensitive about this kind of thing that they’re willing to just give up based on a 25-minute video – that’s not even half an episode in length!

    Ge waart gewaarschuwd.

  • De krengen zijn terug.

    Zondag was het al een beetje, maar nu helemaal: muggen.

    Drie maand zonder, negen maand met. Kakbeesten.

    Bestaan die blauwe tabletten eigenlijk niet meer? Die in zo’n elektrisch ding geschoven moesten worden dat in het stopcontact zat, en waarvan alle muggen doodstuikten?

    Elizan, dacht ik?

    Update jawel. het bestaat nog. Bitches beware.

  • Programmeren

    Jam moet iets maken deze vakantie. De keuze is gevallen op een spelletje op een raspberry pi, iets retro en met ook scores of iets in die zin met echte lampjes en zo.

    En dan denkt een mens, wat is een goed spel om te maken, niet te simpel genre “raad het getal” maar ook niet te moeilijk genre “onhaalbaar voor iemand die nog nooit echt geprogrammeerd heeft”.

    Het is Snake geworden.

    Hij heeft de logica helemaal zelf gedaan, we hebben het samen (wegens zeer aanschouwelijk) eerst eens in Pico-8 gedaan, en dan heb ik snel met pygame een skelet gemaakt in python.

    Zijn opdracht is nu dat python programma te proberen snappen, door hier en daar wat te veranderen en zo.

    En dan kijken we morgen verder.

  • Dat weten we dan ook weer

    Ik dacht, ik doe eens de stemtest. Want jawel, die staat al online.

    Ahem ja. Nu nog eentje voor de gemeenteraad en ik weet helemaal voor wie ik zou moeten stemmen.

  • Allemaal vreemde luizen

    Morgen komen er gelijk een stuk of zes zeven mensen uit allemaal verschillende landen logeren. Tot ergens eind volgende week.

    Allemaal mensen van 18 jaar, die Zelie heeft leren kennen toen ze in Oxford studeerde. Spannend, denk ik.

  • In ‘t groot

    Het is eens wat anders: ik heb al voor veel grote bedrijven gewerkt, maar ik heb nog nooit in een echt groot team gewerkt.

    Maar kijk, vandaag was het na een workshop twee weken geleden de eerste echte dag van een project waar echt zeer veel mensen aan gaan werken. Gelijk echt zeer veel. Zó veel dat iets als SAFe echt nodig is.

    BP-4.5-potfolio-Not-title@2x

    En dus heb ik mij daar de afgelopen tijd met veel plezier in ingewerkt. ‘t Is wel grappig als het eigenlijk vooral knikken is van “haja, makes sense“, en als ge in al die honderden pagina’s uitleg vooral dingen terugvindt die ge in andere contexten al jaren tegenkomt, maar die hier allemaal in één groot framework samengeplakt zijn.

    Had ik al eens gezegd dat nieuwe dingen bijleren zeer wijs is?

  • Refu-Interim intakedag

    Hoera! Het was vandaag weer van spreken met Potentiële Belgen, wegens alsdat Refu-Interim een intake deed voor nieuwe mensen.

    Refu-Interim? Refu-Interim:

    Ik heb allemaal mensen geïnterviewd. ‘t Was een fijne namiddag.

  • Goed nieuws is goed

    Ik was een hele tijd ziek, en dan was ik een hele tijd zeer ziek, en dan ben ik uiteindelijk naar de dokter gegaan, en de dokter zei me dat ik me geen dingen inbeeldde, want dat ik niet gewoon ziek was, maar levensecht en niet om te lachen terminaal ziek.

    Gelijk, als ik er een jaar of drie geleden niets aan had gedaan, was ik nu al een paar jaar overleden.

    Maar hey, er zijn allerlei Chirurgische en Andere Ingrepen geweest, en ik neem alle dagen mijn pillen, en kijk: een paar jaar na datum ben ik (voorlopig) (even) (voor de tijd dat het duurt) buiten onmiddellijk levensgevaar.

    Komt daar nog bij dat mijn bloeddruk normaal is, en mijn cholesterol en de rest van mijn bloed (op de te voorziene gevolgen van net-niet-meer-terminaal nierfalen na natuurlijk) allemaal ook normaal is.

    adore.gif

  • Dit dus

  • Telenet is kapot

    We zitten op smalband. Een paar keer teveel een paar grote games geïnstalleerd op een paar computers teveel, schat ik.

    Allemaal goed en wel, dat gebeurt wel eens meer naar het einde/begin van de maand, maar nu is het vervelender. Want er is iets kapot bij Telenet, waardoor we de “pas op ge gaat naar smalband gaan”-boodschap niet kunnen wegkrijgen.

    Wegens op het moment dat die boodschap er zou moeten komen, er dit komt:

    DZu5SiJXcAA7c8G

    Zeer sympathiek. Want die boodschap komt niet alleen bij het webbrowsen, maar ook van tijd tot tijd bij het gamen. Waardoor het gamen dan gewoon ook kapot op zijn gat valt.

    Telenet “zijn op de hoogte van dit probleem en proberen hier zo snel mogelijk naar een oplossing te zoeken”. Damned.

  • Mislukt 🙁

    Ik keek er zó hard naar uit, maar ‘t is mislukt bij gebrek aan slachtoffers: de beste 1 april ooit wegens Pasen en 1 april in één!

    Ingrediënten: chocolade en eieren. Men neme een rauw ei, men dope het in chocolade, men geve het aan de buurkinderen.

    De buurkinderen waren op vakantie. Ik stond er met mijn chocolade-eieren. Bah.