<Glazblog/>

Monday 5 December 2016

MacBookPro 2016 with Touchbar

I spent a short while playing with a new MacBookPro 15" with Touchbar at the Apple Store. Conclusions:

  • I hate the keyboard that is too thin and has too little space between the keys. I made so many typing mistakes with it... This is a keyboard for people who don't use a lot their keyboard, not a keyboard for code developers
  • the Touchbar is a PITA and a strong disruption because it adds another layer of input/output between the keyboard and the screen. "Typing" on the Touchbar too often requires moving your eyes from the screen to the Touchbar and losing focus when you go back to the screen. For each app, you have to learn a new Touchbar design, and some apps have more than one. A mess. And it does not counter-balance the loss of the Escape and function keys.
  • the screen seems better and brighter than on my mid-2014 retina MacBook Pro.
  • Apple Store people themselves are extremely cautious with the USB-C-based power supply when they move a MBP. MagSafe, we all miss you.
  • Touch ID is cool but I noticed the Touch ID key does not seem to be oleophobic so the fingerprint of the person who unlocked the MBP can be very visible. Probably not too difficult to copy it.
  • I have doubts on the readability/usability of the TouchBar in high-light conditions
  • the price, the price, the price !!! The 15" model with Touchbar starts at $2,889.00 here in France (price converted from € to $ at today's exchange rate), urgh !!!

For the time being, I am more than happy with my mid-2014 model and I don't plan to change. This would probably feel like a downgrade to me.

Friday 2 December 2016

Bal tragique à Paris, plein de morts

Le PPF (paysage politique français) est bien secoué, dites donc :

  • un Président out (Hollande)
  • un ex-Président out (Sarkozy)
  • un ex-Premier Ministre out (Juppé)
  • un autre ex-Premier Ministre out (Raffarin, qui n'est plus dans l'organigramme de LR)
  • plein d'ex-Ministres juppéistes sur le carreau
  • plein de Ministres hollandistes sur le carreau en mai prochain

Je m'amuse, mais je m'amuse !

Thursday 1 December 2016

Eighteen years later

In December 1998, our comrade Bert Bos released a W3C Note: List of suggested extensions to CSS. I thought it could be interesting to see where we stand 18 years later...

Id Suggestion
active WD CR, PR or REC Comment
1 Columns
2 Swash letters and other glyph substitutions
3 Running headers and footers
4 Cross-references
5 Vertical text
6 Ruby
7 Diagonal text through Transforms
7 Text along a path
8 Style properties for embedded 2D graphics ➡️ ➡️ through filters
9 Hyphenation control
10 Image filters
11 Rendering objects for forms
12 :target
13 Floating boxes to top & bottom of page
14 Footnotes
15 Tooltips possible with existing properties
16 Maths there was no proposal, only an open question
17 Folding lists possible with existing properties
18 Page-transition effects
19 Timed styles Transitions & Animations
20 Leaders
21 Smart tabs not sure it belongs to CSS
22 Spreadsheet functions does not belong to CSS
23 Non-rectangular wrap-around Exclusions, Shapes
24 Gradients Backgrounds & Borders
25 Textures/images instead of fg colors
26 Transparency opacity
27 Expressions partly calc()
28 Symbolic constants Variables
29 Mixed mode rendering
30 Grids for TTY
31 Co-dependencies between rules Conditional Rules
32 High-level constraints
33 Float: gutter-side/fore-edge-side
34 Icons & minimization
35 Namespaces
36 Braille
37 Numbered floats GCPM
38 Visual top/bottom margins
39 TOCs, tables of figures, etc.
40 Indexes
41 Pseudo-element for first n lines
42 :first-word
43 Corners border-radius and border-image
44 Local and external anchors Selectors level 4
45 Access to attribute values ➡️ access to arbitrary attributes hosted by arbitrary elements theough a selector inside attr() was considered and dropped
46 Linked flows Regions
47 User states
48 List numberings Counter Styles
49 Substractive text-decoration
50 Styles for map/area ➡️ ➡️ never discussed AFAIK
51 Transliteration ➡️ ➡️ discussed and dropped
52 Regexps in selectors
53 Last-of... selectors
54 Control over progressive rendering
55 Inline-blocks
56 Non-breaking inlines white-space applies to all elements since CSS 2.0...
57 Word-spacing: none
58 HSV or HSL colors
59 Standardize X colors
60 Copy-fitting/auto-sizing/auto-spacing Flexbox
61 @page inside @media
62 Color profiles dropped from Colors level 3 but in level 4
63 Underline styles
64 BECSS ➡️ ➡️ BECSS, dropped
65 // comments
66 Replaced elements w/o intrinsic size object-fit
67 Fitting replaced elements object-fit

Wednesday 30 November 2016

Rest in peace, Opera...

I think we can now safely say Opera, the browser maker, is no more. My opinions about the acquisition of the browser by a chinese trust were recently confirmed and people are let go or fleeing en masse. Rest in Peace Opera, you brought good, very good things to the Web and we'll miss you.

In fact, I'd love to see two things appear:

  • Vivaldi is of course the new Opera, it was clear from day 1. Even the name was chosen for that. The transformation will be completed the day Vivaldi joins W3C and sends representatives to the Standardization tables.
  • Vivaldi and Brave should join forces, in my humble opinion.

Thursday 24 November 2016

Fillon au top depuis 72 heures, il merde déjà

Consternation... Fillon est au firmament depuis dimanche 22h et il a déjà lamentablement merdé. Hier matin, sur Europe 1, il a prononcé les propos suivants :

il faut combattre cet intégrisme, et il faut le combattre comme d’ailleurs dans le passé je le rappelle on a combattu une forme d’intégrisme catholique ou comme on a combattu la volonté des Juifs de vivre dans une communauté qui ne respectait pas toutes les règles de la république française.

Vu le déluge qui lui est logiquement tombé dessus, il a hier soir, via Facebook (qui est bien plus pratique de ce point de vue qu'un Bourdin ou un Aphatie qui l'auraient étrillé...), posté le communiqué suivant :

Depuis ce matin, certains essayent d’exploiter une phrase que j’ai prononcée sur Europe 1. Il n’a jamais été dans mon intention de remettre en cause l’attachement de la communauté juive de France à nos valeurs communes et au respect des règles de la République. Cet attachement est ancien et sincère, je le sais. Je déplore donc qu’en cette fin de campagne certains aient osé instrumentaliser mes propos.

Lamentable... Qu'il nous précise donc où, quand, comment depuis l'époque de la révolution les juifs de France n'ont pas respecté les règles de la république française. Il me semble que c'est plutôt la République qui n'a souvent pas respecté ses propres règles vis-à-vis de ses citoyens juifs. Fillon a merdé, et bien bas. Déjà. Commentaires coupés sur cet article.

Tuesday 18 October 2016

La Cyberdéfense française

Cash Investigation vient d'interviewer le Vice-Amiral Coustillière. Je passe sur le fait qu'il parle de « blackdoor » pour revenir sur ses propos expliquant son choix. Ce type est totalement à côté de la plaque et a démontré en vingt secondes son incompétence totale en la matière. Il a raconté n'importe quoi et ne mesure absolument pas la portée de ses propos, de ses choix, de ses faiblesses mais surtout des faiblesses qu'il vient d'introduire dans la Défense Nationale française. Monsieur Le Drian, vous êtes là ?

Monday 17 October 2016

Un dimanche soir presqu'ordinaire

Dimanche soir 18h45, je suis en voiture pour une course simple. A deux pas de chez moi, une voiture blanche s'apprête, de l'autre côté de la rue, à sortir du parking d'un immeuble. La suite m'a donné des sueurs froides...

  • Alors qu'un véhicule arrive dans le sens de circulation le plus proche de la sortie du dit-parking et que j'arrive dans le sens inverse, la voiture sort du parking à vitesse assez lente et passe devant moi. Le gars arrivant en face est obligé de piler net en klaxonnant, je suis obligé de piler net en klaxonnant.
  • La voiture fautive est un taxi local. Il n'est pas en service mais le bloc lumineux Taxi est bien posé sur le toit de cette Toyota hybride blanche.
  • Le conducteur commence immédiatement à conduire n'importe comment, incapable de garder une ligne droite. À 50 mètres de là, il fait une incursion brève sur la file inverse foutant la trouille à un vélo.
  • Le véhicule s'arrête au feu rouge et je vois la tête du conducteur dodeliner. Le feu passé au vert, le gars démarre tant bien que mal, incapable à nouveau de garder la ligne droite.
  • Cent mètres plus loin dans une forte descente devant l'entrée d'un gymnase, le véhicule fait une première embardée sur le trottoir...
  • Virage à droite lors d'un stop. La voiture s'est arrêtée au milieu de la chaussée, à moitié sur la file de gauche. Une autre voiture qui tournait dans cette rue a la frayeur de sa vie. Le taxi finit par tourner à droite, mord le trottoir sur sa droite, se repositionne en milieu de chaussée, évite une fourgonette puis finit par se stabiliser à peu près dans sa file.
  • Trois cent mètres plus loin, nouvelle embardée sur le trottoir dans un virage vers la droite en côte. Heureusement, aucun piéton.
  • Puis virage à gauche hallucinant, pris presque intégralement sur la file inverse avant de grimper carrément sur le trottoir de droite dans un superbe mouvement de zigzag. Heureusement, toujours pas de piéton, mais quelques sueurs froides dans les voitures arrivant en face...
  • Je vous passe la suite, du même acabit.

Bon clairement, le type était bourré comme une outre, incapable de conduire, terriblement dangereux. Et un taxi qui plus est... Comme il se dirigeait en plein centre-ville, j'ai prévenu la police municipale immédiatement qui m'a chaleureusement remercié. Et je ne suis pas prêt d'oublier l'immatriculation du taxi en question...

Tuesday 20 September 2016

W3C

J'ai toujours dit que la standardisation au W3C, c'est de l'hémoglobine sur les murs dans une ambiance feutrée. Je ne changerai pas un iota à cette affirmation. Mais le W3C c'est aussi l'histoire d'une industrie dès ses premières heures et des amitiés franches construites dans l'explosion d'une nouvelle ère. J'ai passé ce soir, en marge du Technical Plenary Meeting du W3C à Lisbonne, un dîne inoubliable avec mes vieux potes Yves et Olivier que je connais et apprécie depuis ohlala tellement longtemps. Un moment délicieux, sympa et drôle autour d'un repas fabuleux dans une gargote lisboète de rêve. Des éclats de rire, des confidences, une super-soirée bref un vrai moment de bonheur. Merci à eux pour cette géniale soirée et à Olivier pour l'adresse, en tous points extra. Je re-signe quand vous voulez, les gars, et c'est un honneur de vous avoir comme potes :-)

Thursday 15 September 2016

email in iOS 10

Disclaimer: I know a thing or two about an email client and another one and viewports and line wrapping and html-based email...

I updated iOS on my iPhone yesterday night and suddenly, one of the apps I am using every 2 minutes is severely broken. Since I don't understand how so severe UI bugs were let by QA into this release, I feel the need to give here my fedback.

First email I checked was a CSS WG message in a conversation of two messages. I did not tweak at all the Settings before looking at my email. Here's a screenshot of what appeared:

conversation iOS10

So many things are completely borked here I cannot count them all:

  • unreadable font size
  • Plus button overflowing the message's prose
  • "Se désabonner" ("Unsubscribe") taking far too much space and repeated
  • no idea how to enlarge one given email
  • at least two clicks required now to view a message in a conversation while only one was needed before the update
  • no idea if and how Settings can be changed about this view

Globally, the user experience is horrible. Then I tried to view another message, not in a conversation...

standalone email iOS10

Again, plenty of issues here:

  • totally unreadable font size...
  • 1/3 of vertical space eaten by navigation button and headers with enormous vertical margins around all headers
  • no reflow if I zoom in the message, forcing me to move the viewport a dozen of times to read the message

Worse, as far as I can tell, there is strictly nothing in the Mail Settings allowing me to change the current behaviour, increase the font size, avoid showing conversations. Some trivial richtext emails are correctly rendered, some other ones are not and I fail seeing what is the issue comparing the two markups.

All in all, it's a rather severe regression. Everything that used to require one click now requires several, the UI is a pile of crap and it really feels it was not reviewed nor tested correctly. Wow.

Update: Apple knows and is working on it.

Monday 12 September 2016

Code en primaire

On vient de me demander sur twitter ce que je pensais de l'initiative ministérielle d'introduire la programmation dès l'école primaire. Je vais vous expliquer ci-dessous pourquoi je suis assez mal placé pour répondre, malgré toutes les bonnes raisons que vous imaginez que je pourrais avoir :

  • quand j'ai moi-même commencé à coder, pas un seul autre élève de mon collège parisien n'avait jamais même vu un ordinateur. Je dis bien vu. Aujourd'hui, les enfants sont familiarisés avec les tablettes, les consoles et souvent les ordinateurs depuis leur plus jeune âge, et cela change tout.
  • j'étais très en avance et donc l'âge auquel j'ai moi-même commencé la programmation ne peut être significatif
  • je suis tombé dedans comme Obelix dans la marmite de potion magique, cela a été une vocation dès la première minute. Je ne peux donc être représentatif et mon opinion est forcément fortement biaisée.

Ceci dit, on sait désormais que :

  • même les très jeunes bébés sont capables de tout apprendre, y compris la langue des signes à six mois
  • que le cerveau enfantin, de TOUS les enfants, est une éponge d'une magnitude que l'on commence seulement à soupçonner
  • qu'un des frein majeurs à l'apprentissage des mathématiques est l'absence de construction logique

En théorie, je serais donc plutôt favorable à la mesure. MAIS il ne faut pas oublier le reste :

  • une proportion tout simplement hallucinante d'élèves sortent du primaire avec un niveau de français et de calcul TRÈS insuffisant pour le collège. Apprendre à programmer, c'est la cerise sur le gâteau. Or le gâteau est d'une qualité de plus en plus mauvaise et je crois qu'il faudrait focaliser sur la qualité du gâteau avant de penser à fignoler le glaçage.
  • un élève totalement infoutu de calculer de tête des choses simples aura du mal à visualiser une réflexion algorithmique même triviale
  • en plus pure théorie, je me demande bien qui va assurer ces cours de programmation. Les CAPES ne font pas le plein, les profs ne sont plus formés et on leur balance des nouveautés à assurer pratiquement sans qu'ils soient mis à niveau. On compte sur qui, là ? Des informaticiens débutants payés au SMIC mais sans expérience pédagogique ? Des profs de maths qu'on n'aura pas le temps de former ?

Donc toujours en théorie, je reste favorable à la mesure. En pratique, je crois que l'École a d'autres chantiers bien plus urgents que mettre en place une nouvelle usine à gaz. L'initiation à la programmation me semblerait bien plus pertinente en classe de 4ème.

Friday 9 September 2016

Les clopes françaises ont-elles empêché un attentat ?

Depuis des années, les cigarettes françaises s'éteignent si on ne tire pas dessus. Tout fumeur a déjà fait l'expérience d'une cigarette posée dans un cendrier qui s'éteint désormais alors qu'il y a quelques années, elle se consumait complètement. Or le Procureur de la République de Paris vient de déclarer que la voiture chargée de bouteilles de gaz à côté de Notre-Dame contenait une couverture légèrement imbibée d'essence sur laquelle se trouvait une cigarette à peine consumée. Il est donc probable que la cigarette se soit rapidement éteinte au lieu de continuer à brûler... Première fois qu'une clope sauve des gens, non ?

Monday 29 August 2016

« L'überisation du dernier kilomètre » ou « TNT, livraison en soirée »

Ayant eu besoin d'un disque dur 2,5" en urgence, je l'ai commandé sur Amazon jeudi soir avec une livraison garantie vendredi en soirée. Je ne connaissais pas ce type de livraison, que j'ai trouvé relativement pratique vu que j'étais certain d'être chez moi entre 19h00 et 22h00. Ce que j'ignorais par contre, c'est que le transporteur qui gère ce type de livraison, TNT, se repose sur des livreurs privés utilisant leurs propres véhicules et rémunérés à la pièce... L'überisation des derniers kilomètres de la livraison en horaire garanti, quoi...

Et bien ce n'est pas garanti que cela marche, justement :

  • pas de livraison vendredi soir
  • pas de contact
  • pas de SMS malgré la fourniture de mes coordonnées
  • découverte à 23h30 que le livreur a déclaré vers 21h30 un souci de véhicule
  • alors que j'espérais une re-livraison le samedi matin, que pouïc. Le livreur privé travaille en soirée donc cela sera un retard de 24h, avec livraison samedi entre 19h et 22h à nouveau...
  • toujours aucun contact avec TNT
  • toujours pas de livraison samedi entre 19h et 22, même Amazon qui réagit à merveille n'arrive pas à les joindre !!!
  • découverte à minuit que le livreur, le même, a déclaré vers 21h00 un "souci extérieur" (comme c'est un beau libellé n'est-ce pas ?) et que la livraison est reprogrammée pour le prochain jour ouvré, soit lundi, et évidemment de nouveau entre 19 et 22h. Au lieu de 24h de livraison garantie, on sera donc à 96... Amazon (dont le service client - qui était déjà très bien - a fait un énorme bond qualitatif et s'approche du parfait) me rembourse alors mes frais de livraison et m'offre un mois gratuit de je-ne-sais-plus-quoi.
  • alors que je ne m'y attends pas du tout, et qu'il est heureux que je sois dans mon salon, on sonne chez moi dimanche soir. TNT !!! Le chauffeur est dans une 508 noir, clairement son véhicule privé. Il a trois ou quatre colis à livrer et me dit immédiatement qu'il livre à la place d'un autre livreur, celui qui était initialement programmé et a préféré aller courir la pampa à la place... Il est vraiment très embêté quand je lui dis que je ne crois pas une seconde aux soucis de véhicule deux soirs de suite du livreur d'origine. Il est encore plus embêté quand je lui dis que j'ai déposé réclamation chez Amazon et que je vais faire de même chez TNT.
  • In fine, aucune excuse, aucune explication, aucun contact, aucune satisfaction.

Soyons clair, l'überisation du dernier kilomètre, ça va poser des problèmes sérieux aux gros cybervendeurs si à chaque livraison il faut faire la chasse aux branleurs qui rentrent se coucher ou partent draguer la pitchounette au lieu d'assurer leur mission de livraison en temps et heure. Le service fourni par TNT en la matière est nul, son contact client est totalement inexistant, la supervision des livreurs est inexistante, l'image de TNT est écornée, elle écorne l'image de son client Amazon par la même occasion, et il est clair que je n'ai aucune envie d'utiliser TNT pour les éventuelles livraisons de l'entreprise que je dirige.

La livraison en soirée garantie entre 19h et 22h, c'est pourtant une excellente idée. En tous cas en région parisienne, c'est une excellente idée vus les horaires de dingue qu'on effectue dans le coin. Mais comme ça, avec des livreurs autonomes à peine managés et gérant comme ils l'entendent ou presque leurs livraisons, cela ne peut aller qu'au fiasco. Il va clairement falloir que TNT révise sa copie, et à mon avis en urgence.

Tuesday 5 July 2016

Qui pissera le plus loin

J'ai toujours eu beaucoup d'estime pour Roger Karoutchi, qui a un cerveau fonctionnel et sait parfaitement s'en servir. S'il ne tombait pas de temps en temps dans des bassesses imposées par la ligne du parti, il serait un grand sage à droite. Mais aujourd'hui, il vient de merder superbement et subit donc une assez phénoménale baisse d'image chez moi :

  1. ce matin, il publie un tweet assez médiocre, genre "je pisse le plus loin sur twitter". Evidemment, plusieurs personnes dont moi regardent alors ses followers et constatent que ses 28000 followers contiennent un nombre hallucinant de fakes, probablement achetés (je ne dis pas que c'est lui qui a fait ça, probablement plutôt son attaché parlementaire qui a cru bien faire)
  2. évidemment, on dit à Karoutchi sur twitter qu'il ferait mieux de la mettre en veilleuse, que 3000 followers asiatiques ou moyen-orientaux n'ayant jamais posté le moindre tweet, ça fait un peu tache sur la soie
  3. Karoutchi (ou son attaché parlementaire) réagit promptement... et bloque les râleurs :-)

Mediocritas, mediocritas. Roger, vous permettez que je vous appelle Roger hein, maintenant qu'on s'est fritté sur twitter, je vous croyait franchement au-dessus de ça. La-men-ta-ble. Au fait, si vous utilisez un téléphone mobile payé par vos indemnités parlementaires et/ou géré par votre assistant parlementaire, c'est assez honteux de tenter d'empêcher un citoyen de communiquer avec vous. Vous avez décidément tout compris, bravo. Je vous laisse à votre compétition mais faites attention à ne pas mouiller vos mocassins.

Faites une pause...

Oui, faites une pause et écoutez ce que j'ai dit à Nantes sur l'état du Logiciel en France. Adhérez ou n'adhérez pas, ce n'est pas ce qui est important ; ce qui compte, c'est d'en discuter.

Wednesday 29 June 2016

Media Queries fun #1

So one of the painful bits when you have UI-based management of Media Queries is the computation of what to display in that UI. No, it's not as simple as browsing all your stylesheets and style rules to retrieve only the media attribute of the CSS OM objects... Let's take a very concrete example:

<style type="text/css" media="screen and (min-width: 200px)">
@import url("foo.css") screen and (max-width: 750px);
</style>

where file foo.css contains the following rules:

@media screen and (max-width: 500px) {
h1 { color: red; }
}

What are the exact media constraints triggering a red foreground color for h1 elements in such a document? Right, it's screen and (min-width: 200px) and (max-width: 500px)... And to compute that from the inner style rule (theh1 { color: red; } bit), you have to climb up the CSS OM up to the most enclosing stylesheet and intersect the various media queries between that stylesheet and the final style rule:

CSS OM objectapplicable mediumapplicable min-widthapplicable max-width
embedded stylesheetscreen200px-
imported stylesheetscreen200px750px
@media rulescreen200px750px
style rulescreen200px500px

It becomes seriously complicated when the various constraints you have to intersect are expressed in different units because, unless you're working with computed values, you really can't intersect. In BlueGriffon, I am working on specified values and it's then a huge burden. In short, dealing with a width Media Query that is not expressed in pixels is just a no-go.

I'd really love to have a CSS OM API doing the work described above for a given arbitrary rule and replying a MediaList. Maybe something for Houdini?

Monday 27 June 2016

Brexit, BHL, Balivernes et Billevesées

Soyons clairs, BHL n'a rien compris, comme d'habitude. Il ne s'agit nullement d'une victoire du populisme, des extrêmes ou je ne sais quoi d'autre. Il s'agit de la défaite de deux fieffés connards de premier ordre et rien de plus :

  1. c'est Cameron qui a initié ce référendum, dans un pari politique plus que risqué. De nombreux politiques et industriels européens l'avaient averti du trop grand danger pris mais il n'en a eu cure. Il n'a jamais réussi à envisager sérieusement, engoncé qu'il est dans son microcosme londonien, que le reste du pays puisse lui envoyer une claque. Ben tiens...
  2. Jusqu'à la dernière minute possible, il est établi que Boris Johnson a hésité entre le camp du Remain et celui du Leave. Il a choisi ce dernier par pur calcul politique. Lui non plus n'avait aucun plan relatif à la victoire du Leave, c'était tout simplement une impossibilité statistique pour lui. Quel bouffon.

Je n'y ajoute pas Farage. Lui a été parfaitement dans son rôle, prévisible et attendu. Une ordure, oui, mais exactement l'ordure que l'on savait et attendait.

Certes, certes, ces deux andouilles à 1% de matière grise entraînent juste la totalité d'un pays dans leur abîme. Mais cela ne fait que commencer... Le Royaume-Uni va exploser, la Reine ne va constitutionnellement rien pouvoir y faire, la société anglaise va se mettre sur la gueule, les grands partis politiques anglais vont pourrir sur pied, les Anglais cracheront sur Cameron et Johnson jusqu'à la fin de leur existence (très mérité, à mon humble avis). Et puis il faut ajouter plusieurs éléments cruciaux à la simple existence de ces deux insondables crétins :

  1. la presse tabloïd a été - et est encore aujourd'hui, allez voir le Daily Mail du jour par exemple - une horreur. Mensonges éhontés, attaques dégueulasses. D'ailleurs les lecteurs de ces mêmes tabloïds commencent à se réveiller... Un peu tard.
  2. le Labour a fait le job a minima, ce n'est rien de le dire. Corbyn est d'ailleurs en très fâcheuse posture.

Donc nos intellectuels et politiciens hexagonaux, quand ils appellent à une profonde refondation européenne (Valls, Le Maire, Wauquiez, etc.), sont d'une effarante hypocrisie. Contrairement à leurs affirmations, la plupart des européens sont très contents de l'être et modulo de petits ajustements mineurs, le problème n'est pas l'Europe. Le vrai problème, c'est d'une part la classe politique européenne, profondément incompétente et incapable, qui se défausse sur l'Europe en permanence, qui dévie les emmerdes vers ce bouc émissaire bien trouvé ; en d'autres temps, on aurait accusé la cinquième colonne, le parti de l'étranger. C'est minable et indigne. L'Europe n'est que la somme de ses Membres ; s'ils ne sont pas contents de ce que décide l'Europe, c'est que leur propre boulot dans les instances européennes est mal fait.

Et c'est d'autre part la non-indépendance des média, qui manipule à outrance des opinions publiques dépassées par la crise et tentant de survivre au quotidien alors que les dirigeants sont d'une affligeante nullité.

Pour revenir à BHL, je suis tout à fait prêt à le laisser partir sur le front britannique si et seulement si nos amis Anglais promettent de le perdre dans une champignonnière... En attendant, il ne faut pas oublier que la première victime du Brexit, ce n'est pas le Royaume-Uni, ce n'est pas l'Europe, ce n'est pas la Livre sterling ou l'économie ce n'est pas eux ou moi ou vous. La première victime du Brexit, c'est la parlementaire Jo Cox, assassinée et on a déjà l'impression que c'était il y a une éternité.

Thursday 23 June 2016

Implementing Media Queries in an editor

You're happy as a programmer ? You think you know the Web ? You're a browser implementor ? You think dealing with Media Queries is easy ? Do the following first:

Given a totally arbitrary html document with arbitrary stylesheets and arbitrary media constraints, write an algo that gives all h1 a red foreground color when the viewport size is between min and max, where min is a value in pixels (0 indicating no min-width in the media query...) , and max is a value in pixels or infinite (indicating no max-width in the media query).  You can't use inline styles, of course. !important can be used ONLY if it's the only way of adding that style to the document and it's impossible otherwise. Oh, and you have to handle the case where some stylesheets are remote so you're not allowed to modify them because you could not reserialize them :-)

What's hard? Eh:

  • media attributes on stylesheet owner node
  • badly ordered MQs
  • intersecting (but not contained) media queries
  • default styles between MQs
  • remote stylesheets
  • so funny to deal with the CSS OM where you can't insert a rule before or after another rule but have to deal with rule indices...
  • etc.

My implementation in BlueGriffon is almost ready. Have fun...

Saturday 18 June 2016

Pourquoi il n'aurait pas du arrêter d'utiliser CSS

Cet article est un commentaire sur celui-ci. Je l'ai trouvé via un tweet de Korben, évidemment. Il m'a un peu hérissé le poil, évidemment, et donc j'ai besoin de fournir une réponse à son auteur via ce blog.

Les sélecteurs

L'auteur de l'article fait les trois reproches suivants aux sélecteurs CSS :

  1. La définition d'un style associé à un sélecteur peut être redéfinie ailleurs
  2. Si on associe plusieurs styles à un sélecteur, les derniers définis dans le CSS auront toujours la priorité
  3. Quelqu'un peut péter les styles d'un composant pour peu qu'il ne sache pas qu'un sélecteur est utilisé ailleurs

Le moins que l'on puisse dire est j'ai halluciné en lisant cela. Quelques lignes au-dessus, l'auteur faisait une comparaison avec JavaScript. Reprenons donc ses trois griefs....

Pour le numéro 1, il râle parce que  if (foo) { a = 1; } ... if (foo) { a = 2;} est tout simplement possible. Bwarf.

Dans le cas numéro 2, il râle parce que dans if (foo) { a = 1; a = 2; ... } les ... verront la variable a avoir la valeur 2.

Dans le cas numéro 3, oui, certes, je ne connais pas de langage dans lequel quelqu'un qui modifie sans connaître le contexte ne fera aucune connerie...

La spécificité

Le « plein délire » de !important, et je suis le premier à reconnaître que cela ne m'a pas aidé dans l'implémentation de BlueGriffon, c'est quand même ce qui a permis à des tétraflopées de bookmarklets et de codes injectés dans des pages totalement arbitraires d'avoir un résultat visuel garanti. L'auteur ne râle pas seulement contre la spécificité et son calcul mais aussi sur la possibilité d'avoir une base contextuelle pour l'application d'une règle. Il a en partie raison, et j'avais moi-même il y a longtemps proposé un CSS Editing Profile limitant les sélecteurs utilisés dans un tel profil pour une plus grande facilité de manipulation. Mais là où il a tort, c'est que des zillions de sites professionnels utilisant des composants ont absolument besoin des sélecteurs complexes et de ce calcul de spécificité...

Les régressions

En lisant cette section, j'ai laché un sonore « il exagère tout de même »... Oui, dans tout langage interprété ou compilé, modifier un truc quelque part sans tenir compte du reste peut avoir des effets de bords négatifs. Son exemple est exactement conforme à celui d'une classe qu'on dériverait ; un ajout à la classe de base se retrouverait dans la classe dérivée. Oh bah c'est pas bien ça... Soyons sérieux une seconde svp.

Le choix de priorisation des styles

Là, clairement, l'auteur n'a pas compris un truc fondamental dans les navigateurs Web et le DOM et l'application des CSS. Il n'y a que deux choix possibles : soit on utilise l'ordre du document tree, soit on utilise des règles de cascade des feuilles de styles. Du point de vue du DOM, class="red blue" et class="blue red" sont strictement équivalents et il n'y a aucune, je répète aucune, garantie que les navigateurs préservent cet ordre dans leur DOMTokenList.

Le futur de CSS

Revenons à la comparaison JS de l'auteur. En gros, si on a en ligne 1 var a=1 en ligne 2 alert(a), l'auteur râle parce que si on insère var a = 2 entre les deux lignes on affichera la valeur 2 et pas 1... C'est clairement inadmissible (au sens de pas acceptable) comme argument.

La méthodologie BEM

Un pansement sur une jambe de bois... On ne change rien mais on fout des indentations qui augmentent la taille du fichier, gênent son édition et sa manipulation, et ne sont aucunement compréhensibles par une machine puisque tout cela n'est pas préservé par le CSS Object Model.

Sa proposition alternative

J'ai toussé à m'en éjecter les poumons du corps à la lecture de cette section. C'est une horreur non-maintenable, verbeuse et error-prone.

En conclusion...

Oui, CSS a des défauts de naissance. Je le reconnais bien volontiers. Et même des défauts d'adulte quand je vois certaines cochoncetés que le ShadowDOM veut nous faire mettre dans les Sélecteurs CSS. Mais ça, c'est un rouleau-compresseur pour écraser une mouche, une usine à gaz d'une magnitude rarement égalée.

Je ne suis globalement pas d'accord du tout avec bloodyowl, qui oublie trop facilement les immenses bénéfices que nous avons pu tirer de tout ce qu'il décrie dans son article. Des centaines de choses seraient impossibles sans tout ça. Alors oui, d'accord, la Cascade c'est un peu capillotracté. Mais on n'attrape pas des mouches avec du vinaigre et si le monde entier a adopté CSS (y compris le monde de l'édition qui vient pourtant de solutions assez radicalement différentes du Web), c'est bien parce que c'est bien et que ça marche.

En résumé, non CSS n'est pas « un langage horriblement dangereux ». Mais oui, si on laisse n'importe qui faire des ajouts n'importe comment dans un corpus existant, ça peut donner des catas. C'est pareil dans un langage de programmation, dans un livre, dans une thèse, dans de la mécanique, partout. Voilà voilà.

Tuesday 14 June 2016

Synology meets Sony Vaio in my Hall of Worst

All in all, I am quite satisfied of all the hardware I bought across all these years. Computers, disks, memory, etc. All that geekery is reasonably good and the epic failures are rare. And even when an epic failure happens, the manufacturer is usually smart enough to issue a recall and free replacement even if the 2 years period after purchase is over. (e.g. Apple with the graphics card failure that hit so many older MBPs a while ago). In two occasions only, the manufacturer did show a pretty bad behaviour:

  1. the first case was years ago, when my Sony Vaio laptop was hit by the infamous "inverted trackpad" bug. In short, Sony avoided a 3 cents' expense isolating the trackpad electrical system from the metal case of its Vaio line and the trackpad was inverting the x axis, sometimes the y axis, sometimes both... Totally unusable of course. Millions of Sony laptops were hit by the issue. I had to shout on the phone to obtain, a few months after purchase of the most expensive Vaio at that time, a replacement of my computer. Cured me from Sony computers forever.

  2. and the most recent case, happening right now, is my Synology DS412+ NAS server. In short, it's been plagued by a zillion of issues, all severe since let's say day 50. But every time I was ready to send back the NAS to Synology, the support was asking me to try something (or giving that hint on their fora) that led to a normal reboot of the unit despite of motherboard warnings. On reboot, the warnings were going away... A few days ago, my DS412+ stopped working, with a forever-blinking blue led light. Motherboard failure, again and again and again.
    The Web is full of people explaining how bad the DS*12 series is, and the reports of motherboard failures are absolutely everywhere. They even issued a press release but never contacted customers, eh.
    Unlike Apple, Synology refused today to change my motherboard. And it took a week, and tweets added to my email, to eventually obtain that response from them. To someone else, they proposed to buy a new motherboard for $395, so 80% of the unit's price (yes, expensive!). They can rot in hell, of course.
    So Synology, it's a crappy support for buggy motherboards sold for an extremely high price. If you're lucky with your motherboard, you will never see a problem. If like me you bought a buggy unit shipped buggy, Synology will refuse responsibility after the end of the guarantee period. And during it, you'll need to ship the unit at your own expense.
    Synology's DSM is cool, their units are cool. But they're not reliable enough and the way Synology considers customers who paid a premium price is just a total shame and not in line with 2016 industry's standards, and most probably the French law here.
    Conclusion: avoid Synology as much as you can. You've been warned.

Wednesday 1 June 2016

BlueGriffon 2.0 released

I am happy to announce that BlueGriffon 2.0 is now available from http://www.bluegriffon.org

Screenshot of BlueGriffon 2.0

- page 1 of 286