Michel Vuijlsteke's weblog

Tales of Drudgery & Boredom.

Maand: januari 2018 (pagina 1 van 4)

Weten wat ge niet wilt doen: een gemak

Ik heb voor de mensen van Refu-Interim een database gemaakt, en daar dan een simpele interface op met Django, maar ik weet eigenlijk ook wel dat dat niet echt optimaal is.

En dus heb ik ook een ontwerp voor een front-end gemaakt.

Maar voor de dooie dood heb ik geen goesting om de front-end ook effectief te maken. Niet dat het enorm ingewikkeld is, maar omdat ik er niet genoeg van afweet om het goed genoeg te doen. Ik zou mij moeten verdiepen in iets van een modern-achtig framework, en prioriteitsgewijs zie ik dat niet zitten.

Ik vind van mezelf dat ik genoeg weet van de technische kant van hoe het allemaal werkt en zou moeten werken om mensen te kunnen zéggen wat ze moeten doen, ook wel om te begrijpen wanneer iets mogelijk of onmogelijk is, wanneer ze mij voor de zot aan het houden zijn en wanneer niet — en ik ben op een leeftijd gekomen dat het wat dat stuk ontwikkeling voor mij ruim genoeg is.

Niet dat het mij niet interesseert, maar het, prioriteiten. Er zijn zó enorm veel andere dingen die mij nog meer interesseren.

Dus als iemand iemand zou weten dat dat zou willen doen? Gratis zou fantastisch zijn, ahem ja. Ik wil er gerust veel van mijn tijd in steken om ervoor te zorgen dat alles zo duidelijk als mogelijk is, maar zoals ge zult aan de wireframes is het niet echt ingewikkeld. 🙂

Het hart van het ding is een lijst met mensen met allemaal eigenschappen. Die kunnen gekoppeld worden aan jobs, en er moet een systeem in komen om die mensen op een propere manier op te volgen (basically: sms sturen met een link ering, die komt terecht op een pagina waar ze kunnen zeggen of ze kunnen of niet).

Ge weet nooit dat er nog mensen zin hebben om concurrentievervalsing te doen en bedrijven die hier anders veel geld voor zouden vragen op de zenuwen te werken. 🙂

Mindfulness

We hadden vandaag een cursus mindfulness op het werk, voor wie daar zin in had.

I’ll try anything once, dus ik dacht, hey, waarom niet? Best case leer ik iets bij, worst case is het een bonding experience en haal ik er leutige anecdotes uit om thuis te vertellen.

Weelll… ’t was wel in orde. Het werd gegeven door Heidi Does, die weet waar ze het over heeft.

Ik ben me na een dag nog pijnlijker van bewust dat ik echt niéts heb met lichamelijke dingen doen (serieus, de oefening op het einde was een ontstressingsoefening, iets met armen naar boven en naar beneden doen, en ik heb me in zéér lang niet zo gestresseerd gevoeld). En dat ik content ben dat ik tegenwoordig ook gewoon “nee” kan zeggen, en dat ik op tijd probeer afstand te nemen van de dingen. Dat ik het door de band wel doe, de dingen aanvaarden zoals ze zijn (vanmorgen is mijn slot van de fiets gevallen, haja, trein gemist, niets aan te doen, ik ga er mij zeker niet in opwinden — dat soort dingen), maar dat er wel iets te zeggen is voor het zeer bewust te doen, genre gewoon aanvaardend constateren dat de zon schijnt of dat mijn voeten koud hebben of dat het brood eigenlijk een dag te oud is of juist zeer vers.

Niet dat ik het overal mee eens ben. Misschien heb ik het verkeerd begrepen, maar ik had de indruk dat de enige manier om te bekomen van intellectuele arbeid (ontwerpen, een workshop doen, schrijven), iets niet-hersen-gericht is. Dus dat het blijkbaar onmogelijk is om te ontspannen door een boek te lezen, maar dat het best gaat door aandacht te schenken aan iets helemaal anders — uw lichaam, of de wereld rond u, niet-cerebraal, aanvaardend en rustig constateren.

Ik ben het daar niet mee eens. Niets relaxeert mij zo goed als kennis ingelepeld krijgen, via pakweg een podcast of een boek of iets op de Youtubes.

Maar hey. Misschien moet ik nog maar eens een boek lezen over Mindfuln… ah drat. Catch-22.

Axure: wat ik geleerd heb, deel I

Zodus. Ik besloot donderdagnamiddag te leren hoe Axure werkt.

Het werkt, zo blijkt, redelijk eenvoudig. Het is, zo blijkt ook, redelijk goed in wat het belooft te doen: snel wireframes en prototypes maken. Het heeft, wat te verwachten is, ook zijn zwaktes. 

Conclusies na donderdagnamiddag, heel de vrijdag, hier en daar eens een uur tijdens het weekend, een stukje maandag, en een kleine twee uur doorloop met collega Jeroen!

Er zijn een aantal basisregels, die altijd opgaan. Een aantal daarvan haal ik rechtstreeks van ex-Namahn-mens David Morgan die er een paar jaar geleden in Smashing over schreef, de overgrote meerderheid zijn gewoon gezond verstand.

Masters zijn uw vriend. Maak van elementen die (vaak) (letterlijk) zullen terugkomen een master, maar overdrijf daar niet. Paginanavigatie of telkens letterlijk dezelfde dummy-productfiche zijn goede kandidaten. Masters die op een pagina gedropt worden, zijn eigenlijk allemaal hetzelfde element: verander de master en dezelfde verandering wordt overal doorgevoerd. 

Ontploffende masters zijn een ding: waar een gewone master een instantie van het ding maakt, maakt een breakaway master (ik vind "ontploffend" een betere term) een kopie van het ding. Een ingewikkeld element dat veel hergebruikt wordt maar dat vaak een beetje anders is, is een goede kandidaat. (Logischerwijs, omdat het geen instantie is, maar gewoon los de elementen die in de master zaten zonder band met de master, verandert er dus later niets in wat er op een pagina gedropt is als ge de master verandert.)

Stijlen zijn nog veel meer uw vriend. Ge hebt tien knoppen die allemaal hetzelfde uitzicht moeten hebben (maar wel andere labels en andere acties)? Simpel, zet één van de knoppen perfect zoals hij moet zijn, en maak daar dan een stijl van, die ge op alle andere knoppen toepast. Verander de stijl, alle knoppen veranderen van uitzicht. 

Interaction styles zijn handig (definieer een uitzicht voor normaal, voor hover, voor selected en voor disabled), maar zijn nog vele vele keren handiger met de stijlen van hierboven. Alle knoppen / links / tabelcellen / … in uw ding moeten allemaal hetzelfde doen bij hover/selected/disabled, maar hebben voor de rest wel andere tekst, afmetingen, positie, acties en watnog? Simpel, geef ze allemaal interaction styles, en in plaats van ontelbaar keer prutsen als de kleur van selected verandert, is het één keer de stijl aanpassen. Zeer bijzonder wijs.

Duidelijkheid is uw vriend. Geef alles, binnen de mate van het redelijke, een naam. Groepeer wat logisch gegroepeerd kan worden. Consistentie is uw vriend, losliggende dingen zonder naam uw vijand. Het doel moet zijn dat als een wildvreemd uw bestand komt editeren, hij of zij dat zo pijnloos mogelijk kan doen. 

Daaraan verwant: de Outline is uw vriend. Axure heeft veel dingen die graag uw vriend zijn, maar een duidelijke outline maakt het leven veel aangenamer. De outline geeft aan wat in wat zit, wat de volgorde op de pagina is, maakt navigatie binnen uw document pijnloos. Leve de outline. 

Later, als ik wat tijd maak, deel II. Waarin ik leer dat omdat iets kan, het absoluut niet altijd moet. Eigenlijk bijna nooit moet, zelfs. 

Nog wat random in Axure

Zo gaat dat met die dingen: ge doet iets dat u in eerste instantie wel in orde lijkt, en voor ge het weet, begint het u tegen te steken dat er juist dat ene detail niet echt helemaal naar uw goesting is, en voor ge het weet, is het Excel to the rescue.

Eigenlijk was het zó verlopen: ik toonde aan Louis hoe die random dingen werkten, en terwijl ik het aan het tonen was, besefte ik dat het al dan niet tonen van iets misschien wel beter zou zijn als het niet altijd 50% kans op wel of niet zou zijn.

Maar ’t is niet 100% straightforward om iets met een ander procent kans dan 50% al dan niet te tonen in Axure: voor zover ik zie, kan het niet in één stap.

Het moet in een paar stappen. Stel, ik wil in een repeater iets 60% van de tijd tonen, en het moet tussen 60 en 100 groot zijn. Dan moet ik voor elk element in de repeater het volgende doen:

  1. zet een variabele op een getal dat 60% van de tijd niét 0 is;
  2. als dat getal 0 is, maak het element onzichtbaar;
  3. en anders: maar het element 60 + een random getal tussen 0 en 40 groot.

En dus dacht ik, ik kijk eens in Excel. Om duidelijk te maken: een filmpje!

Dat lukt dus helemaal. Een voorbeeldje in Axure:

snowmen

Dat op een repeater met een sneeuwmannetje erin, geeft bijvoorbeeld als ik 60% ingeef, met random hoogtes en breedtes:

random

Axure is (understatement) niet zo snel in het berekenen van dergelijke dingen, dus ’t is ongetwijfeld met (véél) mate te gebruiken, maar toch.

Wie zelf eens wil spelen: hier staat het (zelfs een beetje interactief, ha!) online, wie de axure-file wil hebben kan die hier vinden, en rondprutsen in Excel kan ook, met deze file alhier.

VervangFiets!

Als het goed is, mag het ook gezegd worden. Zelfs als het op een misverstand berust, zoalsik vermoed. 

Het zit zo: ik heb een electrische fiets, en daar zijn al eens wat kosten aan geweest. In de afgelopen bijna acht jaar heb ik hem al denk ik drie keer binnengestoken voor onderhoud, en ik denk dat mij dat telkens in de buurt van de 250 of 300 euro heeft gekost. 

Het voorlicht was al na een paar maand naar de zak, 't is dan ook een zeer stomme constructie: twee plastieken pinnetjes, en daartussen een zware koplamp, met de gedacht, "dan kunt ge ze naar boven en naar beneden verstellen" wellicht. Die twee plastieken pinnetjes waren al bijna direkt kapot — eeen fiets parkeren aan het station, altijd een gemak — maar de clou: de pinnetjes ijn een integraal onderdeel van het voorspatbord, en dat kost meer dan 100 euro om te vervangen. 

De eerste keer hebben ze het dus maar vastgelijmd; nu is het er opnieuw af en zijn de pinnetjes ook afgebroken, en dus is lijmen niet meer aan de orde. Ik heb het met plakband vastgezet. Niet elegant, maar het werkt. 

De batterij was al eens vervangen. Ze was om onduidelijke redenen na een paar jaar kapot. Nu is het weer van dat. De meneer van de winkel was bij het vorige onderhoud zeer kwaad op mij omdat mijn fiets zo slecht onderhouden was, en ook omdat er een barst in mijn batterij zat. 

Euh ja, wel, ik haal die batterij er bijna nooit uit, ze is ook nooit op de grond gevallen, en als er een barst in zit, dan is niet mijn schuld maar de schuld van iets anders, nem.

Een maand of zes denk ik geleden was mijn sleutel afgebroken in het wielslot. De sleutel van het wielslot is de sleutel van de batterij, dus die kon er nu helemaal niet meer uit. Normaal geen probleem, behalve dat ze al was beginnen te haperen. Zo nu en dan eens uitvallen en weer aanschieten, vroeger kon ik de batterij er uit halen en dan weer in steken, en dan lukte het weer even — maar nu dus niet meer. 

En vorige week was ze finaal dood: nog eventjes teken van leven dinsdagavond, maar verder niets meer. 

Ik dus bellen naar de winkel, vrijdag. Of ik mijn fiets kon binnensteken voor onderhoud, en dat er misschien een nieuwe batterij in moest, want ze laadt nog wel op, maar ik zie niets op mijn scherm verschijnen, en ze geeft ook geen assistentie of niets. 

De meneer van de winkel zei dat dat geen probleem was, maar hij kon niet zeggen hoe lang het zou duren. Ik: of het mogelijk zou zijn om er eens mee binnen te komen, dat ze coördinaten en het chassisnummer en zo noteren, en dat ik er dan weer naar huis mee ga en pas terug kom als ze alle wisselstukken en zo in huis hebben, want dat ik hem niet echt lang kan missen. 

Waarop de meneer: ja, kom er gerust eens mee af. Waarop ik: ha, maar ik werk in Brussel, dus ik kan niet zomaar gelijk wanneer — wanneer zou het kunnen buiten de normale werkuren? 

Waarop die meneer denk ik dacht dat ik met de fiets naar Brussel reed, want hij vroeg ineens of het dan niet zeer moeilijk was, zo rijden zonder assistentie. Daarop ik, dat het wel moeilijk is wegens dat de fiets zeer zwaar is, maar hey, als het moet, moet het. 

En toen stelde hij mij gewoon voor dat ik zo lang als nodig een vervangfiets zou mogen gebruiken!

Maar serieus! Ik dacht dat dat alleen in autogarage's gedaan werd, maar blijkbaar ook bij de winkels van Fiets! 

Ik heb mijn Koga zaterdag binnengestoken, en nu rijd dus met een andere fiets. Ook electrisch, veel sportiever, en ongeveer 20% van het gewicht. 😀

Amazon password assistance

’t Is nu al maanden aan de gang: alle vijf voet krijg ik een mail van Amazon om mij te zeggen dat iemand het wachtwoord van mijn Amazon-account graag zou hebben.

assistance

Wat drijft de mensen die dat doen? Ze kunnen niet aan mijn mail, dus is dat toch compleet nutteloos?

Links van 24 januari 2018 tot 26 januari 2018

Wireflows: A UX Deliverable for Workflows and Apps
In the UX field, wireframes are a common deliverable to show page-level layout ideas, whereas flowcharts are useful for documenting complex workflows and user tasks. However, despite the fact that both of these deliverables remain in common use among UX professionals, there are situations in which they are suboptimal tools for communicating design ideas, particularly when documenting mobile, desktop, or web apps that don't have many unique pages, but instead feature a few core pages which change content (or layout) dynamically based on user interaction. In the last few years, an alternative deliverable called wireflow has emerged as a solution to these issues, used to show designs in the context of common user tasks.

Designing Screens Using Cores and Paths
“Instead of beginning with the homepage and overall navigation scheme, start with the core content and work outward from there.” “Start with the goal.” Information architect, Are Halland, makes this recommendation in his presentation “Cores and Paths: Designing for Findability”. He outlines an alternative approach for web design: instead of beginning with the homepage and overall navigation scheme, start with the core content and work outward from there. It’s that straightforward.

Hamburger Menu: alternatives to mobile UI’s disputed pattern
When it comes to controversial UI, the hamburger menu has had its fair share of criticism, dismissed as everything from ‘mystery meat’ to ‘the devil’. We take a closer look at the hamburger menu and alternative navigation patterns.

Agile Architecture – Scaled Agile Framework
Agile Architecture is a set of values and practices that support the active evolution of the design and architecture of a system while implementing new system capabilities. This approach allows the architecture of a system (even a large solution) to evolve over time, while simultaneously supporting the needs of current users. This avoids the overhead and delays associated with the start-stop-start nature and redesign inherent in phase-gate methods. With Agile architecture, the system always runs, supporting a more continuous flow of value.

Project Horseshoe 2017 report section 3
Coziness in Games: An Exploration of Safety, Softness, and Satisfied Needs. Discusses coziness as an aesthetic in games, explores ways to make cozy games and cozy game elements, and explains how this can increase appeal and user retention.

Nieuwe dingen leren, hoera!

Ik weet niet hoe het met u zit, maar ik leer graag nieuwe dingen bij. Ik denk zelfs dat dat ongeveer hetgene is dat ik het liefste doe van alles — of het zou moeten mensen dingen bijleren zijn natuurlijk, ah ha ha.

Elk werk heeft zijn eigen gereedschapskist vol tools voor allerlei verschillende jobs, en het is op mijn nieuw werk niet anders, zowel wat werkwijzes en methodes betreft als wat software betreft.

Voor het eerst in mijn leven in een echte-wereld-context werken met SharePoint, bijvoorbeeld. Of voor het eerst in mijn leven ook écht OneNote gebruiken om allerlei dingen collaboratief te doen.

En voor het eerst in zeer lang eens meer dan alleen maar kijken naar een nieuw tekenprogramma, dan denken “gho ja, dat ziet er allemaal niet al te ingewikkeld uit” en dan gewoon weer verder tekenen in Illustrator of Photoshop of gewoon prototypes rechtstreeks in html/css/javascript maken.

Want zo blijkt: op het werk zijn er adepten van Sketch (ik heb het gebruikt, toen ik nog elke dag op Mac werkte, nooit echt iets in gezien) en wordt er gekeken naar nieuwere dingen genre Figma (tja, ’t is gelijk Sketch, zeker?) en Framer (ziet er wijs uit, gebaseerd op Microsoft’s Windows 10 UWP framer prototyping toolkit, helaas is er alleen voor Mac een propere interface), maar als het uitgebreid en complex is en er moet samen gewerkt worden met veel mensen, dan heb ik begrepen dat het toch in Axure te doen is.

Vanaf volgende week staan er stapels projecten op, euh, stapel, maar vandaag was er even niets dringends op de plank. En dus dacht ik: ik begin eens aan een eenvoudig iets in Axure, om te zien wat dat doet. Eens iets typisch wireframe-achtig maken en zien hoe het werkt.

Weeellll… ’t is wel leutig. Het blijft in wezen een simpel programma: doosjes slepen en er tekst in zetten, kleurtjes geven aan tekst en rand en vulling, hier en daar wat groeperen en herbruikbare template-achtige dingen maken, maar ’t is wel een degelijk ding. Gebruiksvriendelijk zoals ik het graag heb: niet te fancy, en veel kunnen doen met het keyboard. En eindelijk nog eens een tekentool dat even goed om kan gaan met connectoren (pijltje van ergens naar ergens) als Visio in de tijd toen dieren nog spraken.

En er kunnen gewoon ook zeer grappige zaken mee gedaan worden. Zoals deze bijvoorbeeld:

axuretpl

Dis is een mini-versie van een pagina die ik elders getekend heb. De pagina zelf is wat meer high fidelity getekend, maar dit komt in een wireflow, en daar ga ik geen stapels tekst op zetten.

Dus zocht ik iets om valse tekst te maken. Die er niet al te uniform uitziet. Kijk, zo ziet het er uit in Axure zelf:

axureintface

Het geselecteerde ding is een repeater, ’t is te zeggen, een element dat andere elementen bevat die herhaald kunnen worden, horizontaal en/of verticaal.

Het herhalende element is een blokje van 15×3 pixels, dan vier pixels wituimte, dan een blokje van 55×3 pixels.

Herhaal dat met 2 pixels verticale tussenruimte, en dat geeft wat hierboven staat: allemaal gelijke lijntjes. En dat ziet er vies uit. Dus wat doen we dan? We geven dat tweede blokje een naam, nameShim in mijn geval, en dan doen we dit:

axuresettings

Ha! Bij het laden van elk herhalend item in de repeater, zet ik de breedte van de nameShim in dat nieuw geladeden element op [[45+math.random()*25]], en zo krijgen al mijn blokjes een random breedte tussen 45 en 70 pixels.

Op min of meer dezelfde manier is het simpel om het al dan niet aanwezig zijn van iets random te maken:

axaldanniet

Hierboven staat een schets van een tabel met vijf kolommen. De tweede, derde en vijfde hebben inhoud met een random lengte, maar bij de vijfde kolom kan het zijn dat er al dan niet tekst staat.

Ook dat is met wat simpele wiskunde te doen, natuurlijk. De breedte van dat vijfde blokje is gewoon [[(10+math.random()*25) * math.floor(math.random()*2)]], ’t is te zeggen: eerst zet ik een random breedte tussen 10 en 35 ([[10+math.random()*25]]), en dan vermenigvuldig ik die breedte met [[math.floor(math.random()*2)]]. Die waarde is ofwel 0 ofwel 1, want math.random() is een getal tussen 0 en 0.9999…, en dat maal 2 is iets tussen 0 en 1.9999…, en die math.floor() rondt dat naar beneden af, en dus hey presto, ofwel is de breedte helemaal niets, ofwel is ze de random breedte die we daarnet hadden.

Ja, ’t is kinderspel, ik weet het. Maar ik kan daar zó blij van worden, dat iets in kleine kleine details er ook in orde uitziet.

Mijlpalen

Ultima IV (1985, PC). Vanaf het begin van het spel was het duidelijk dat dit anders zou worden dan al wat er vooraf aan ging; wij een waarzegster krijgt ge een reeks dilemma’s voorgeschoteld, en dat bepaalt wie ge wordt (Bard, Tinker, Paladin etc.). De test is hier te doen, en Ultima IV is er ook te downloaden.

Dungeon Master (1987, Atari ST). Lang voor Wolfenstein 3D was dit een 3D-spel. Ik heb het ontelbaar veel dagen gespeeld. Kaarten getekend van alle levels. Anders dan alles wat ervoor kwam, ook: zo had had Dungeon Master lang voor Fus Ro Dah al een systeem waarbij een spell samengesteld werd uit verschillende elementen.

Ultima Underworld: The Stygian Abyss (1992, PC) en Ultima Underworld II: Labyrinth of Worlds (1993, PC). Échte 3D. Naar boven en naar beneden kijken. Licht dat écht een effect heeft, personages waarmee kon geïnterageerd worden. Een emergent verhaal. Niet-lineaire gameplay. Automapping met annotaties. Fantastisch spel.

Binnenkort, dit jaar als we het mogen geloven, komt het vervolg op Ultima Underworld II uit: Underworld Ascendant. Door de originele makers. Via Kickstarter. Ik kan niet wachten:

Ze beloven natuurlijk wel al twee jaar dat het “dit jaar” zal zijn, maar hey. Als het goed is, kan ik wachten.

Capture

Op weg naar routine

Het was vandaag functioneringsgesprek op het werk. Enfin nee, geen functioneringsgesprek, dat klinkt akelig. Gewoon, gesprek. Er zijn op het werk twee partners en er is voor iedereen op het werk elke maand een half uurtje gesprek met één van de twee. En om de zoveel tijd wisselt het met dewelke, en om de zoveel tijd is het met de twee, en er is een structuur, en er is een lijst van dingen waar ge goed of minder goed in zijt, en waar ge nu staat en waar ge wilt geraken, en allerlei.

Ik ben er natuurlijk nog maar anderhalve week, maar tegelijkertijd ben ik er eigenlijk ook al een aantal jaar: in 2006 was ik er al eens gaan werken, namelijk.

En dat doet dus heel erg raar. Vanalles is veranderd, maar vanalles is ook niét veranderd.

Het laatste grote project dat ik er deed vóór ik er in 2010 wegging was het ontwerpen van de nieuwe productpagina’s van Sony (en al met al zijn die niet zó heel veel anders dan toen). Dat was toen een groot aantal dagen per week werken in Zaventem, samen met fijne collega Johan.

Toen ik vorige maandag toekwam, was het eerste werk zoeken naar een plaats. Er was er eentje op overschot in een ruimte, en wat graadt gij? Ik deel het bureau met Johan.

En dat doet dus dubbel heel erg raar. Want het lijkt alsof het geen acht jaar maar acht weken was. En tegelijkertijd zijn onze kinderen allemaal acht jaar ouder geworden en dat is niét niets — Zelie is van het vierde leerjaar naar afgestudeerd gegaan, om maar iets te zeggen.

En die routine: haja. Deze week ben ik maandag naar huis gegaan met mijn brooddoos nog op mijn bureau (en dus dinsdag boterhammen in vershoudfolie). En dinsdag was ik naar huis met de sleutels van mijn fietsslot nog op mijn bureau (en dus te voet van en naar het station). ’t Is nog een beetje gewoon worden. Maar het gaat wel griezelig snel, dat gewoon worden.

(Zoals bijvoorbeeld dat ik om dit te posten ctrl-Enter deed — het is weer Outlook gebruiken op het werk, na acht jaar geen Outlook open gedaan te hebben, en ctrl-Enter om te versturen zit nú al weer in mijn muscle memory. Zeker nu ik heb ontdekt dat het in Gmail ook werkt.)

Links van 21 januari 2018 tot 23 januari 2018

Longreads Best of 2017: Food Writing
We asked writers and editors to choose some of their favorite stories of the year in various categories. Here is the best in food writing.

AI-Assisted Fake Porn Is Here and We’re All Fucked – Motherboard
“This is no longer rocket science.”

The 29 Stages Of A Twitterstorm In 2018
The anger factory has changed a bit since 2013.

Het integratiepact bouwt luchtkastelen
De projectoproep van het integratiepact is het product van haar context. Het is een goedbedoelde maar vage lijst met sleutelkenmerken die voor vernieuwing moeten zorgen. Want een ‘coalition of the willing’ mondt niet vanzelf uit in systeemverandering. Daarvoor is machtsopbouw nodig die niet alleen de geesten verandert, maar ook strijd voert om gesloten deuren te openen en structurele hefbomen op te eisen en te voorzien.

Voorlopig blijven veel middenveldorganisaties op hun honger zitten. Het is niet duidelijk hoe het integratiepact zal leiden tot het dichten van de herkomstkloof, de bestrijding van discriminatie of gegarandeerde grondrechten. Het integratiepact baadt in het beste geval in een authentieke hoop op spontane transitie, en slechter in vrijblijvendheid.

“What is XML good at?” | Hacker News
Degelijk en beknopt overzicht wanneer xml ipv json zin heeft.

Dschingis Khan: who did it better?

We kennen allemaal — en als dat niet het geval zou zijn: schaam op u! — het allerbeste nummer over een massamoordenaar ooit:

Ik was op zoek naar een ander nummer van Berryz Kōbō, maar zie wat ik nu tegenkom!

Ge vraagt u soms af.

Voor wie zich afvroeg waar ik dan wél naar op zoek was:

Debussy in het poeder

Bah

Slecht gequizt. Bah.

Bah.

نامان

Op mijn werk is er ook een afdeling in Iran, en dus moet er ook een website in het Perzisch zijn.

WordPress is door de band een groot gemak voor dat soort dingen. Het doet link-naar-rechts en rechts-naar-links zonder enig probleem, de interface doet wat ge ervan zoudt verwachten, alles hoera:

farsi

…behalve natuurlijk, de om zot van te worden duivel in de details. Haakjes en andere leestekens, waarvan ge denkt dat ze op het einde (’t is te zeggen, aan de linkerkant) van de zin zouden staan, blijken dat plots te weigeren. Dan wordt dit:

ia

bij het plakken in een tekst-editeerveld (een textarea, waar er ook html-tags rond gesmeierd moeten worden), plots dit:

ia2

Gaah! En begint ge erin te typen, dan wordt ge helemaal zot, want een ( wordt in right-to-left natuurlijk ), en voor ge het weet staat er “iets )haakje( help”, en loopt alles helemaal in het honderd.

Het is in principe mogelijk om dat allemaal manueel te forceren, door het juiste Unicode-karakter (RLM / LRM) in de tekst te steken, maar onafhankelijk of de taal van WordPress op Farsi staat, is het blijkbaar genoeg om in de style sheet van de website nog eens expliciet direction: rtl te zetten, en dan zijt g’er helemaal van af.

Dan ziet het er in de editor nog altijd kapot uit, maar ziet het er op de website wel in orde uit. En waar het alsnog in het Engels moet staan (als ge “C++” wilt zien bijvoorbeeld en niet “++C”), dan zet ge gewoon iets in een element met direction: ltr. Simpel.

Bij te zetten in de kolom van “ik wist dat wel ergens in mijn achterhoofd maar ik had het tot nog toe nog nooit nodig gehad”. Ha.

Oudere berichten

© 2018 Michel Vuijlsteke's weblog

Thema gemaakt door Anders NorenBoven ↑