<Glazblog/>

Sunday 22 May 2016

CSS Variables in BlueGriffon

I guess the title says it all :-) Click on the thumbnail to enlarge it.

CSS Variables in BlueGriffon

Thursday 12 May 2016

BlueGriffon 2.0 approaching...

BlueGriffon 2.0 is approaching, a major revamp of my cross-platform Wysiwyg Gecko-based editor. You can find previews here for OSX, Windows and Ubuntu 16.04 (64 bits).

BlueGriffon 2.0

Warnings:

  • it's HIGHLY recommended to NOT overwrite your existing 1.7 or 1.8 version ; install it for instance in /tmp instead of /Applications
  • it's VERY HIGHLY recommended to start it creating a dedicated profile
    • open BlueGriffon.app --args -profilemanager (on OSX)
    • bluegriffon.exe -profilemanager (on Windows)
  • add-ons will NOT work with it, don't even try to install them in your test profile
  • it's a work in progress, expect bugs, issues and more

Changes:

- major revamp, you won't even recognize the app :-)
- based on a very recent version of Gecko, that was a HUGE work.
- no more floating panels, too hacky and expensive to maintain
- rendering engine support added for Blink, Servo, Vivliostyle and
Weasyprint!
- tons of debugging in *all* areas of the app
- BlueGriffon now uses the native colorpicker on OSX. Yay!!!
The native colorpicker of Windows is so weak and ugly we just can't
use it (it can't even deal with opacity...) and decided to stick
to our own implementation. On Linux, the situation is more
complicated, the colorpicker is not as ugly as the Windows' one,
but it's unfortunately too weak compared to what our own offers.
- more CSS properties handled
- helper link from each CSS property in the UI to MDN
- better templates handling
- auto-reload of html documents if modified outside of BlueGriffon
- better Markdown support
- zoom in Source View
- tech changes for future improvements: support for :active and
other dynamic pseudo-classes, support for ::before and ::after
pseudo-elements in CSS Properties; rely on Gecko's CSS lexer
instead of our own. We're also working on cool new features on
the CSS side like CSS Variables and even much cooler than that :-)

Thursday 5 May 2016

Tirage au sort en Médecine à Paris

J'ai failli mettre cet article en catégorie Franchouillardises mais c'est décidément trop énorme, je bascule donc en catégorie Totalement Crétin... Il a été décidé hier qu'au vu du nombre de lycéens de terminale inscrits en 1ère année de médecine et des capacités des facs de médecine en RP, les heureux gagnants APB seront tirés au sort ! Pour ajouter la douleur à l'insulte, ils seront donc classés comme "relégués à un autre choix" et ne seront plus prioritaires l'année d'après, pour les doux cinglés qui auraient eu l'idée de se représenter.

C'est une décision de dingue. Si le but est de foutre tous les lycées - qui voteront l'année prochaine - dans la rue avant l'été dans des manifs épouvantables, c'est exactement ce qu'il fallait faire. Quel est le crâne d’œuf demeuré qui a eu une telle idée, capable d'exclure définitivement un candidat de haut niveau et ayant une vocation ? Quel est l'imbécile heureux qui a pondu une telle stupidité au lieu de lancer d'urgence une solution de streaming vidéo pour chaque amphi et chaque classe ? Qui sont les conseillers de Vallaud-Belkacem tellement jeunes qu'ils n'ont pu ni su se mettre à la place de parents dont l'enfant aurait été refusé de telle manière et ont laissé passer une telle ignominie ? Insondables crétins...

En 2012, j'avais cru qu'Hollande saurait être un meilleur président que Sarkozy. Il aura juste été différent et moins personnellement insupportable, mais la catastrophe reste comparable.

Quelle honte, quel scandale.

Mise  jour : rétropédalage majeur en 24h du Rectorat de Paris sur l'accès à la 1ère année de médecine ; ça a du hurler au MInistère...

Monday 2 May 2016

BlueGriffon officially recommended by the French Government

en-US TL;DR: BlueGriffon is now officially recommended as the html editor for the French Administration in its effort to rely on and promote Free Software!

Je suis très heureux de signaler que BlueGriffon, mon éditeur Web cross-platform et Wysiwyg, est officiellement recommandé par le Socle Interministériel de Logiciels Libres pour 2016 !!! Vous trouverez la liste officielle des logiciels recommandés ici (document pdf).

Tuesday 26 April 2016

First things first

Currently implementing many new features into Postbox, I carefully read (several times) Mark Surman's recent article on Thunderbird's future. I also read Simon Phipps's report twice. Then the contract offer for a Thunderbird Architect posted by Mozilla must be read too:

... Thunderbird is facing a number of technical challenges, including but not limited to:

  • ...
  • The possible future deprecation of XUL, its current user interface technology and XPCOM, its current component technology, by Mozilla
  • ...

In practice, the last line above means for Thunderbird:

  1. rewrite the whole UI and the whole JS layer with it
  2. most probably rewrite the whole SMTP/MIME/POP/IMAP/LDAP/... layer
  3. most probably have a new Add-on layer or, far worse, no more Add-ons

Well, sorry to say, but that's a bit of a « technical challenge »... So yes, that's indeed a « fork in the road » but let's be serious a second, it's unfortunately this kind of fork; rewriting the app is not a question of if but only a question of when. Unless Thunderbird dies entirely, of course.

Evaluating potential hosts for Thunderbird and a fortiori chosing one seems to me rather difficult without first discussing the XUL/XPCOM-less future of the app, i.e. without having in hands the second milestone delivered by the Thunderbird Architect. First things first. I would also be interested in knowing how many people MoCo will dedicate to the deXULXPCOMification of Firefox, that would allow some extrapolations and some pretty solid requirements (and probably rather insurmountable...) for TB's host.

Last but not least and from a more personal point of view, I feel devastated confronting Mark's article and the Mozilla Manifesto.

Tuesday 12 April 2016

PayPal GRRRRRRRR !!!

Comme chaque trimestre, je viens de récupérer sur PayPal mon rapport d'activité des ventes de BlueGriffon. Et là, énorme et désagréable surprise, tous les taux de TVA intra-européens sont faux... Voici ce que PayPal donne comme taux : Allemagne 16%, Belgique 17.4% et 0% (!), Autriche 16.66% et 0%, et ça continue comme ça. En France, on est à 16% selon PayPal. Donc merci PayPal pour me forcer à reprendre tout ça la main, ne pas être foutu de gérer un truc aussi essentiel correctement. La-men-ta-ble.

Monday 4 April 2016

Ahem

Panama Papers... Non, je ne vais pas vous parler des incontinences financières de untel ou unetelle. On s'en fout puisqu'on s'en doutait tous, à défaut d'en avoir les preuves. Par contre, il faut parler un peu de la presse, qui nous mouline en boucle depuis hier soir les mots « journalisme d'investigation ». Qué investigation ? Qué enquête ? Tout cela ne résulte pas d'un fil ténu suivi avec patience, minutie et danger par des enquêteurs chevronnés mais d'un leak, c'est-à-dire soit d'un lanceur d'alerte qui a piqué les fichiers pour les donner à la presse, soit d'un piratage informatique. Certes, certes, les journaux ont du effectuer des recoupements, des vérifications et pas mal d'autres choses encore. Mais la source n'est pas une info unique qui amènerait à une énorme pelote de laine, genre Spotlight ; la source, c'est carrément la pelote...

Si la presse était vraiment une presse d'investigation, elle n'aurait pas de problème de lectorat...

Wednesday 30 March 2016

Something ridiculous in ES6

ES6 introduced a change in Gecko that remained under my radar for a looong time. Testing BlueGriffon 2.0 features, I discovered a feature that was completely borked and I was unable to explain it... Everything in my code looked fine. After some debugging, I nailed it into a codepen. Gecko and Chrome show the behaviour I dislike (window.bar is undefined if bar is a constant) while Safari does not.

I find this, mandatory per ES6 spec, completely ridiculous. It's not understandable from a JS author's perspective and apparently broke "a ton of stuff". This is clearly the kind of things where gurus and purists should have thought of users (JS authors) and did not.

Please TC39, change that. It's ugly and painful.

Friday 25 March 2016

Pub et presse en ligne

Depuis une semaine environ, de nombreux éditeurs de contenus français ont conjointement lancé une campagne anti-bloqueurs-de-pub. Après observation de ses méthodes et de ses effets de bords, je crois pouvoir affirmer que c'est absolument catastrophique. Autour de moi, ceux qui n'utilisaient pas encore un bloqueur de pubs sont en train d'en chercher un ; ceux qui en utilisaient un sont souvent suffisamment avancés pour contourner facilement et rapidement les blocages. Mais revenons un peu sur les sites en question :

TF1 News (LCI)
Soyons très clairs, le site de LCI est une telle daube que je ne suis pas totalement certain que cela soit volontaire et pas un bug : quand AdBlock ou uBlock est actif, pas de feuille de style sur LCI dans Firefox, c'est tellement hideux qu'on n'essaye même pas de désactiver le bloqueur, on se casse direct. Mise à jour: c'était bien ce que je pensais, un bug :-)
Le Monde
Au Monde, on fait dans Ma-Trombine-Partout même si ce n'est pas trop intrusif. Ils ont mis en place une page de relance, que l'on peut bypasser en un click fourni par eux, et que donc tout le monde bypasse en un click... Le choquant, c'est la photo du patron. C'est assez lamentable, ça rappelle les plus belles pratiques de CloudWatt et Numergy, deux épisodes de la grandeur française qu'il vaudrait mieux oublier. Rappelons que Le Monde c'est le site qui veut vous faire payer son mode Zen alors que tout navigateur moderne qui se respecte à un Reader intégré.
Le Figaro
Au Figaro, on fait dans le sournois mais surtout dans l'inutile. Plus aucun article n'est officiellement lisible si on n'a pas payé. C'est tellement stupide que même l'article annonçant pourquoi ils font ça est bloqué !!! Sauf qu'il suffit d'une petite bookmarklet extrêmement simple pour contourner le problème. Allez, je suis généreux, je vous donne la mienne:
javascript:function%20foo(){blurElement(".fig-article-body",0);document.querySelector("a[href*='bloqueur']").style.display="none";};foo()
Le Parisien
Au Parisien, on est vachement plus vicelard car le contenu de l'article est supprimé du document par l'anti-bloqueur de pub. Certes, il suffit d'utiliser l'arme ultime, la désactivation de JavaScript dans les préférences du brouteur, pour accéder à la totalité du contenu normalement. Mais il reste que leur technique est très con : on ne voit plus rien, on n'a pas envie de revenir et finalement on va ailleurs.
Libération
S'il y a un quotidien national qui a depuis des lustres des soucis de pognon, c'est Libé. Et bien je n'ai pas trouvé d'anti-bloqueur de pub sur Libé. Rien pour l'instant. Bravo, ils méritaient d'être cités.
L'Équipe
L'Équipe a choisi un format intermédiaire entre Le Monde et Le Parisien. C'est une page qui s'affiche en permanence tant que vous n'avez pas déclaré votre abonnement ou désactivé le bloqueur. Comme pour Le Parisien, la désactivation de JavaScript casse tout ça en deux coups de cuiller à pôt.

Bon, je pourrais continuer comme ça longtemps, de nombreux autre sites participant peu ou prou à cette campagne complètement stupide et contre-productive qui n'est prévue pour  durer que quelques semaines (si, si...). Je me marre doucement à lecture de phrases comme « nous devons pouvoir compter sur les revenus de la publicité ». Rappelons quelques chiffres intéressants... Source : tout simplement la Cour des Comptes...

Titre de presse

Montant annuel de subventions (moyenne sur la période 2009-2011) - En €

Diffusion totale France + Etranger (moyenne annuelle sur la période 2009- 2011)

Montant subvention / exemplaire diffusé (moyenne sur la période 2009-2011) - En centimes

MONDE (LE)

18 465 277

97 809 817

19

FIGARO (LE)

17 217 154

101 343 030

17

OUEST FRANCE

15 784 440

258 956 732

6

CROIX (LA)

9 988 388

31 656 889

32

LIBERATION

9 908 617

36 533 590

27

TELERAMA

9 411 822

31 935 825

29

AUJOURD'HUI EN FRANCE

9 331 562

61 786 183

15

NOUVEL OBSERVATEUR (LE)

7 800 161

27 071 314

29

TELE 7 JOURS

7 279 547

76 126 212

10

HUMANITE (L')

6 761 434

14 219 917

48

SUD OUEST

6 260 812

106 720 006

6

EXPRESS (L')

6 232 242

27 395 244

23

NOUVELLE REPUBLIQUE DU CENTRE

5 645 242

61 530 368

9

VOIX DU NORD (LA)

5 445 430

95 019 897

6

PARIS MATCH

5 151 418

35 760 764

14

DEPECHE DU MIDI (LA)

5 014 820

68 764 053

7

ECHOS (LES)

4 513 559

30 785 702

15

POINT (LE)

4 501 245

22 151 130

20

DAUPHINE LIBERE (LE)

4 464 330

90 178 748

5

TELE STAR

4 451 357

60 578 404

7

TELE LOISIRS

4 390 415

56 121 753

8

DERNIERES NOUVELLES D'ALSACE (LES)

4 035 733

60 618 655

7

PROGRES (LE)

3 868 585

81 019 183

5

PETIT QUOTIDIEN (LE)

3 800 067

ND

ND

PARISIEN (LE)

3 681 247

102 203 217

4

TELE Z

3 669 232

81 667 765

4

TÉLÉGRAMME

3 555 598

73 217 679

5

ELLE

3 413 233

21 290 708

16

TELECABLE SATELLITE HEBDO

3 390 880

32 635 825

10

MONTAGNE (LA)

3 216 097

67 572 258

5

MON QUOTIDIEN

3 139 538

ND

ND

EST REPUBLICAIN (L')

2 999 986

56 860 210

5

PELERIN

2 849 399

12 037 997

24

PROVENCE (LA)

2 783 573

50 424 722

6

FEMME ACTUELLE

2 749 581

49 857 491

6

NICE-MATIN

2 727 086

38 638 289

7

CHALLENGES - LE NEWS DE L'ÉCONOMIE

2 384 145

10 810 088

22

MIDI LIBRE

2 247 553

53 377 189

4

TELE POCHE

1 881 812

28 912 604

7

COURRIER DE L'OUEST

1 853 381

35 940 335

5

La presse ne va donc pas réussir à me faire chialer avec sa pub en ligne ! On n'attire pas le chaland avec des vitrines opaques ! Et tant que la presse française se contentera d'être à 80% de la recopie de dépêches d'agence, typos et fautes de grammaire et orthographes comprises, le public ne lira pas ses contenus plus que ça. 83% des français, selon Le Figaro lui-même dans son édition du 10 Mars 2016, ne supportent pas la pub en ligne. Quelle cohérence avec la campagne en cours...

Pendant ce temps, la pub en ligne, ça salit les sites web, c'est intrusif, ça prend de la mémoire, de la bande passante, du temps, de l'espace d'écran. Elles tombent presque toujours à plat, ne me concernent pas, ne m'intéressent pas, me gênent. Et le pire c'est que je paye pour les recevoir.

Wednesday 23 March 2016

RSI delenda est

Mes ennuis avec le RSI (Régime Social des Indépendants), organisme très défavorablement connu de tous les non-salariés de France et de Navarre, vient de me donner un nouvel épisode, et je l'ai gagné par K.O. J'envisage très sérieusement désormais de porter plainte contre le RSI. Voici les faits, bruts de fonderie :

  1. je démarre ma SARL en octobre 2003. Étant gérant majoritaire, je ne peux être salarié et me retrouve direct affilié au RSI
  2. pendant 7 ans, le RSI est le seul organisme collecteur qui pose problème : documents non reçus, documents en versions multiples et différentes, amendes indues, j'en passe et des meilleures
  3. en mars 2010, je transforme mon entreprise en SAS. Tout est fait dans les règles via la Chambre de Commerce de Versailles qui transmet correctement tous les bordereaux. La transformation est finalisée pour le 1er avril 2010, je suis donc automatiquement désaffilié du RSI au 31 mars 2010 au soir pour rejoindre - enfin - le régime général.
  4. URSSAF, impôts, prévoyance, tout est notifié en temps et heure et toutes actions sont menées pour mettre mon statut à jour dans ces organismes SAUF AU RSI qui continue à m'abreuver chaque trimestre d'appel de fonds.
  5. malgré tous mes courriers, en AR, le RSI continue de me poursuivre de ses assiduités et m'envoie en plus des pénalités de retard, des commandements à payer. Évidemment, je ne paye pas puisque je n'ai plus à payer !
  6. le RSI finit par me signifier par voie d'huissier une contrainte, à laquelle je m'oppose immédiatement
  7. le 22 mai 2013, audience est tenue au Tribunal des Affaires de Sécurité Sociale des Yvelines, à Versailles. Sur 10 audiences, 9 sont clairement des requêtes infondées du RSI. Le Président du tribunal se marre doucement à chaque exposé, et se marre franchement quand le type devant moi demande réparation du préjudice causé par le RSI à hauteur de 7 jours à son taux horaire de consulting... Pour ma part, je demande la condamnation du RSI à 1€ pour le préjudice causé.
  8. le 25 septembre 2013, le RSI est débouté de l'intégralité de ses demandes me concernant, condamné à 1€ à me payer au titre des dommages et intérêts, et doit assumer seul les frais de la contrainte et des tentatives de recouvrement
  9. entre le 25 septembre 2013 et hier, aucun signe de vie du RSI ou de son huissier...
  10. hier midi, je reçois un recommandé de ma banque Boursorama me notifiant une tentative de saisie-attribution sur le compte joint que je détiens avec ma compagne. J'appelle Boursorama immédiatement qui m'annonce que cette saisie est faite par tel huissier sur demande du RSI... Urgggh !
  11. je me rends immédiatement chez l'huissier et découvre plusieurs choses effarantes :
    1. la contrainte est la même qu'en 2013
    2. le RSI tente de récupérer les pénalités de retard sur les cotisations indues de trimestres plus récents que ma désaffiliation, encore une fois !
    3. l'adresse qu'a utilisée l'huissier n'est pas la bonne, ce qui explique que je n'ai jamais reçu la moindre notification de reprise d'une procédure
    4. la tentative de saisie a été effectuée sur un compte joint que ma compagne alimente majoritairement. La contrainte aurait donc du lui être signifiée, ce qui n'a pas été le cas. L'huissier n'a effectué aucune vérification en se sens.
  12. après récupération du jugement de 2013, je retourne chez l'huissier mettre fin à tout ça. L'huissier me confirme alors en blémissant n'avoir jamais eu communication par son client de ses élements. Or la contrainte a été en 2011 signifiée par le même huissier qui était au courant de l'opposition et du passage au Tribunal. J'exige évidemment la main-levée immédiate de la contrainte sous peine de poursuites.

Le RSI, avec ses méthodes habituelles, le trou noir qui lui sert d'archives et les sommes délirantes qu'il dépense en pure perte en poursuites au lieu de se préoccuper des services fournis à ses clients. Le RSI n'a pas appliqué la décision de justice, n'a pas versé la condamnation d'1€, a relancé sans droit la procédure, l'huissier a été négligent dans ses courriers à mon endroit et dans sa tentative de saisie. Je compte saisir la Chambre Nationale des Huissiers de Justice et porter plainte contre le RSI. Je suis en train de chercher un conseil (avocat) en ce sens. L'impunité du RSI dans ses poursuites infondées doit être stoppée, nous avons tous, entrepreneurs, eu affaire aux méthodes honteuses du RSI. Souhaitez-moi bonne chance, et si vous êtes avocat et que l'affaire vous intéresse, contactez-moi au plus vite. Merci !

Saturday 12 March 2016

Gillette Fusion 5 lames

Disclaimer: ce billet n'est pas sponsorisé, n'est ni une publicité rémunérée ni une publicité non-rémunérée et je n'ai aucun lien, personnel ou professionnel, avec Gillette ou Wilkinson. Les lecteurs de ce blog savent que quand j'ai quelque chose à dire sur un produit, que cela soit bon ou mauvais, je le dis ici. Il s'agit donc uniquement d'un retour d'expérience strictement personnel, point. Si cela vous est utile, tant mieux.

Lors d'un salon que j'arpentais récemment, je me suis fait refiler à l'entrée du salon un cadeau publicitaire : un rasoir Gillette à 5 lames, je crois qu'il s'agit du ProGlide Fusion. Ma première réaction a été de repenser immédiatement à ce dessin de Maëster « Gillette 17 lames, le seul qui laisse l'os de la mâchoire propre et blanc » :-) Je ne voyais aucunement l'utilité de 5 lames quand 2 ou 3 suffisent largement si elles sont de bonne qualité.

Mais bon, à la faveur d'un changement de lames de mon rasoir Wilkinson habituel (les lames Wilkinson sont à mon avis de loin les meilleures), je me suis quand même décidé à utiliser le rasoir Gillette à whatmille lames.

Je vais passer sur les caractéristiques minimales qu'on attend d'un rasoir assez cher : mobilité extrême de la tête (je suis sérieux) et prise en main parfaite, c'est ce qu'on vous montre dans la pub télévisée et c'est pour une fois vrai.

Ce qu'on ne vous montre pas dans la pub par contre, et qui est pour moi un argument massue en faveur de ce rasoir, c'est qu'il est littéralement impossible de bloquer le rasoir avec des poils comme c'est si souvent le cas pour moi. *LE* truc qui m'énerve dans un rasoir, c'est avoir des poils fraîchement coupés impossible à enlever (sauf à le faire avec une vieille brosse à dents) et qui ensuite me labourent la peau du visage et entament très nettement la qualité du rasage.

Avec le ProGlide Fusion, c'est impossible : il n'y a rien derrière les lames et le nettoyage est du coup hyper-efficace. Après m'être une première fois rasé avec une barbe courte et assez dure de 48 heures, j'ai rasé ce matin une barbe d'une bonne semaine et demie donc nettement plus longue mais aussi plus souple. Avec le Wilkinson, c'est une horreur et je dois passer ma barbe d'abord à la tondeuse électrique pour éviter de complètement « boucher » mon rasoir à main. Le ProGlide Fusion lui, se nettoie en deux coups de cuillère à pôt et ressort totalement nickel.

Donc voilà, c'est un excellent rasoir ou en tous cas je trouve que c'est un excellent rasoir et quand je suis content, je le dis. Par contre, le prix assez délirant des recharges de lames me donne des crampes au portefeuille et je ne suis pas sûr du tout de faire le switch. On verra dans quelque temps. À bons lecteurs...

Update: donc ce n'est pas un ProGlide (avec une « flexball ») mais un Fusion... Article mis à jour.

Sunday 6 March 2016

Veau-soleil

Totalement épuisé, je viens de faire une petite sieste réparatrice. Fait rare, je me souviens de mon rêve. Fait exceptionnel, j'ai rêvé que je cuisinais... Dans mon rêve, j'appelais ça le Veau-Soleil. Je n'ai aucune idée si c'est faisable, si ce serait bon ou même mangeable. Je vous livre verbatim :

  1. découper une lanière fine d'environ cinq centimètres de long dans la peau d'une aubergine
  2. demander à votre boucher de vous découper une escalope de veau la plus rectangulaire possible, fine d'un des côtés longs et un peu plus épaisse de l'autre
  3. avec un bon couteau non denté et surtout bien aiguisé et en partant du côté fin, découper des rayons sur la largeur de l'escalope tous les demi-centimètres en s'arrêtant à un centimètre du bord opposé
  4. solidariser les deux extrémités du côté épais avec la lanière de peau de courgette après avoir percé deux petits trous dans l'escalope
  5. préparez un mélange à 50% de chapelure fine et 50% de parmesan râpé
  6. clarifiez un œuf
  7. au pinceau, badigeonnez votre escalope - d'un seul côté - au blanc d’œuf
  8. saupoudrez immédiatement toutes les zones badigeonnés de votre mélange
  9. mettez de côté à température ambiante
  10. découpez des tranches (sans peau) de carotte et aubergine de 0.3 cm chacune
  11. passez les 3 minutes à la cocotte-minute en prenant soin que le niveau d'eau ne touche pas les tranches
  12. découpez les tranches en petits dés de 0.3 cm ; préparez également des dés de citron doux, type citron de Menton ou de Ligurie, que vous conserverez à part au frais
  13. réservez au chaud
  14. faites fondre un peu de beurre dans une poêle à moyenne puissance
  15. placez votre escalope du côté pané dans votre poêle et laissez dorer
  16. lorsque le côté pané est doré à votre goût, retournez votre escalope pour dorer également le côté non pané
  17. réservez à votre guise, en laissant les jus de cuisson dans la poêle
  18. déglacez les jus de cuisson avec une cuillère à soupe d'eau et passez vos dés de légumes à la poêle pour les assouplir
  19. sortez vos dés de légumes de la poêle, mélangez-les avec vos dés de citron
  20. placez vos dés en demi-sphère au centre de votre escalope-soleil
  21. servez

Oui, je sais, j'ai besoin de vacances...

Thursday 25 February 2016

ANPE

Il y a vingt ans, un vote du Usenet francophone aboutissait à la création de nouveaux newsgroups modérés, fr.emplois.offres et fr.emplois.demandes, dont j'étais le premier modérateur. J'avais posé des règles de base très simples pour que les offres d'emploi présentent des informations obligatoires minimales pendant que les demandes restaient totalement libres. J'avais également mis en place, avec mon collègue Vincent Gillet qui devint plus tard le second modérateur, des formulaires en ligne garantissant un formalisme similaire à toutes les offres. Chaque matin, je commençais ma journée en publiant les annonces des 24h précédentes.

Certes, une à deux fois par semaine, il y avait un pauvre con qui gueulait comme un putois contre ces règles et même de temps en temps contactait ma hiérarchie à EDF pour se plaindre. La dite-hiérarchie avait l'intelligence de poubelliser... Il reste que le résultat dépassa toutes les espérances... En seulement quelques années, fr.emplois.* aida 38 000 (oui, trente huit mille...) personnes à trouver un job. Ce chiffre doit être certainement fortement augmenté car je n'ai de statistiques que pour ma propre période de modération et pas celle de Vincent.

Un jour, alors que j'étais invité au Sénat pour un raout quelconque et que je tombais par hasard sur la Directrice de l'ANPE, je lui ai proposé de lui donner (je dis bien donner) fr.emplois.* pour passer une échelle très nettement supérieure. Elle m'a écouté deux secondes, m'a répondu froidement que l'ANPE vait aussi ses propres systèmes puis m'a tourné le dos et est partie. J'ai eu un sentiment de gachis immense, causé par l'arrogance sans borne du haut fonctionnariat. Si un pauvre gugusse tout seul dans mon genre pouvait aider des dizaines de milliers d'entreprises et d'individus à se trouver, qu'aurait pu faire une petite organisation de quelques personnes hébergées par l'administration en charge de cela ? Une révolution numérique en la matière.

Vingt ans plus tard, l'ANPE est quasiment totalement absente de la recherche d'emploi électronique. Je ne connais aucune entreprise ni aucun demandeur d'emploi qui ne peste pas contre la complexité et l'inefficacité de leur site Web. Quel dommage, quelle opportunité ratée...

Friday 19 February 2016

A makefile-based build system for Swift

I'm currently playing with Swift, outside of Xcode (but of course, you need to have Xcode installed to have swiftc installed...), when I have a few spare cycles and building more than just a few files was getting so painful I started working on a minimal build structure. Since it's working pretty well and it was not always easy to figure out what to do, I've decided to share it.

First, clone the following git and copy the swiftbuild directory you'll find inside to your project's top directory: git clone https://github.com/therealglazou/swift-makefiles.git

Then tweak the swift/config.mk according to your wishes (in the repository, it's for a macosx x86_64 target).

Finally, add a Makefile file to each directory inside your project. Each file should look as following:

# TOPSRCDIR is a relative path to the top directory of your project
# for instance:
TOPSRCDIR = ../../..

# if you have subdirs to build, list them in DIRS. They will be built
# before the files directly in your directory
# for instance:
DIRS = public src

# if you're building a module from the swift files in this directory
# name your module in MODULE_NAME
# for instance:
MODULE_NAME = MyProjectCore

# if your directory contains your main.swift (mandatory for a
# standalone executable), give your app's name in APP_NAME
# for instance:
APP_NAME=MyProject

# now, always include $(TOPSRCDIR)/swiftbuild/config.mk
include $(TOPSRCDIR)/swiftbuild/config.mk

# your swift sources should go into SOURCES
# for instance:
SOURCES = foo.swift bar.swift

# if you need to import modules outside of your project
# use IMPORTS to list the paths, of course prepended by -I
# for instance:
IMPORTS =-I /Users/myname/trees/myotherproject/modules/

# if you need some dylibs to build your module or your app,
# then use LD_FLAGS (always +=) and LIBS; for instance:
LDFLAGS += -L/Users/myname/trees/myotherproject/lib
LIBS = -lfooCore

# and finally always include $(TOPSRCDIR)/swiftbuild/rules.mk
include $(TOPSRCDIR)/swiftbuild/rules.mk

And that's it, you're now good to make build, make clean and make clobber. The first one will build everything, your dylibs and app being in $(OBJDIR) at the end of the build while your modules are in $(OBJDIR)/modules. The second one will delete all dylibs, *.o and build remains from your directories but will preserve $(OBJDIR). The last one performs a clean and deletes $(OBJDIR) too.

Let me know if it's useful please. And I'm of course accepting pull requests. Next steps: static linking and build of a complete foo.app OS X application...

Wednesday 10 February 2016

歌剧

When Opera switched to WebKit and started its deep reorganization, I had a chat with a few ex-Opera fellows. We agreed that the whole move was indeed a purely financial decision made to increase the value of the company on the "market" at a time many larger companies and phone manufacturers were looking for a seat at the main players' table, the restricted list of companies owning either a rendering engine or a world-class rendering engine team. In other terms, the whole strategy of the company was strictly oriented towards a sale. The often quoted potential deal with AOL did not make any sense to me.

While I was thinking more of phone manufacturers like Samsung or Huawei, we all agreed the most plausible option was an asian host. It seems we were right. It would have made a lot of sense for Samsung to acquire Opera. I even advocated a bit in that direction during my tenure there but the company - or at least the people my message reached - either were not receptive or never forwarded the message. I still think Samsung missed a rather important opportunity here.

Golden Brick and Yonglian are more acquiring the user base than the engineering team, and I do have some concerns about the future of that team. In fact, I have some concerns about the whole thing. We'll see. Browser teams are a very small community around the world and I wish our Opera friends all the best for that coming change.

Now that Opera's not on the market any more, the next company to watch in that space is clearly, from my point of view, Igalia.

Monday 8 February 2016

Inventory and Strategy

“There’s class warfare, all right, but it’s my class, the native class, that’s making war, and we’re winning.” -- Android and iOS, blatantly stolen from Warren Buffet

Firefox OS tried to bring Web apps to the mobile world and it failed. It has been brain dead - for phones - for three days and the tubes preserving its life will be turned off in May 2016. I don't believe at all myself in the IoT space being a savior for Mozilla. There are better and older competitors in that space, companies or projects that bring smaller, faster, cleaner software architectures to IoT where footprint and performance are an even more important issue than in the mobile space. Yes, this is a very fragmented market; no, I'm not sure FirefoxOS can address it and reach the critical mass. In short, I don't believe in it at all.

Maybe it's time to discuss a little bit a curse word here: strategy. What would be a strategy for the near- and long-term future for Mozilla? Of course, what's below remains entirely my own view and I'm sure some readers will find it pure delirium. I don't really mind.

To do that, let's look a little bit at what Mozilla has in hands, and let's confront that and the conclusion drawn from the previous lines: native apps have won, at least for the time being.

  • Brains! So many hyper-talented brains at Mozilla!
  • Both desktop and mobile knowledge
  • An excellent, but officially unmaintained, runtime
  • Extremely high expertise on Web Standards and implementation of Web Standards
  • Extremely high expertise on JS
  • asm.js
  • Gaia, that implements a partial GUI stack from html but limited to mobile

We also need to take a look at Mozilla's past. This is not an easy nor pleasant inventory to make but I think it must be done here and to do it, we need to go back as far in time as the Netscape era.

Technology Year(s) Result
Anya 2003 AOL (Netscape's parent company) did not want of Anya, a remote browser moving most of the CPU constraints to the server, and it died despite of being open-sourced by its author. At the same time, Opera successfully launched Opera Mini and eventually acquired its SkyFire competitor. Opera Mini has been a very successful product on legacy phones and even smartphones in areas with poor mobile connectivity.
XUL 2003- Netscape - and later Mozilla - did not see any interest in bringing XUL to Standards committees. When competitors eventually moved to XML-based languages for UI, they adopted solutions (XAML, Flex, ...) that were not interoperable with it.
Operating System 2003- A linux+Gecko Operating System is not a new idea. It was already discussed back in 2003 - yes, 2003 - at Netscape and was too often met with laughter. It was mentioned again multiple times between 2003 and 2011, without any apparent success.
Embedding 2004- Embedding has always been a poor parent in Gecko's family. Officially dropped loooong ago, it drove embedders to WebKit and then Blink. At the time embedding should have been improved, the focus was solely on Firefox for desktop. If I completely understand the rationale behind a focus on Firefox for desktop at that time, the consequences of abandoning Embedding have been seriously underestimated.
Editing 2005- Back in 2004/2005, it was clear Gecko had the best in-browser core editor on the market. Former Netscape editor peers working on Dreamweaver compared mozilla/editor and what Macromedia/Adobe had in hands. The comparison was vastly in favor of Mozilla. It was also easy to predict the aging Dreamweaver would soon need a replacement for its editor core. But editing was considered as non-essential at that time, more a burden than an asset, and no workforce was permanently assigned to it.
Developer tools 2005 In 2005, Mozilla was so completely mistaken on Developer Tools, a powerful attractor for early adopters and Web Agencies, that it wanted to get rid of the error console. At the same moment, the community was calling for more developer tools.
Runtime 2003- XULRunner has been quite successful for such a complex technology. Some rather big companies believed enough in it to implement apps that, even if you don't know their name, are still everywhere. As an example, here's at least one very large automotive group in Europe, a world-wide known brand, that uses XULRunner in all its test environments for car engines. That means all garages dealing with that brand use a XULRunner-fueled box...
But unfortunately, XULrunner was never considered as essential, up to the point its name is still a codename. For some time, the focus was instead given to GRE, a shared runtime that was doomed to fail from the very first minute.
Update: XULRunner just died...
Asian market 2005 While the Asian market was exploding, Gecko was missing a major feature: vertical writing. It prevented Asian embedders from considering Gecko as the potential rendering engine to embed in Ebook reading systems. It also closed access to the Asian market for many other usages. But vertical writing did not become an issue to fix for Mozilla until 2015.
Thunderbird 2007 Despite of growing adoption of Thunderbird in governmental organizations and some large companies, Mozilla decided to spin off Thunderbird into a Mail Corporation because it was unable to get a revenue stream from it. MailCo was eventually merged back with Mozilla and Thunderbird is again in 2015/2016 in limbos at Mozilla.
Client Customization Kit 2003- Let's be clear, the CCK has never been seen as a useful or interesting project. Maintained only by the incredible will and talent of a single external contributor, many corporations rely on it to release Firefox to their users. Mozilla had no interest in corporate users. Don't we spend only 60% of our daily time at work?
E4X 2005-2012 Everyone had high expectations about E4X and and many were ready to switch to E4X to replace painful DOM manipulations. Unfortunately, it never allowed to manipulate DOM elements (BMO bug 270553), making it totally useless. E4X support was deprecated in 2012 and removed after Firefox 17.
Prism (WebRunner) 2007-2009 Prism was a webrunner, i.e. a desktop platform to run standalone self-contained web-based apps. Call them widgets if you wish. Prism was abandoned in 2009 and replaced by Mozilla Chromeless that is itself inactive too.
Marketplace 2009 Several people called for an improved marketplace where authors could sell add-ons and standalone apps. That required a licensing mechanism and the possibility to blackbox scripting. It was never implemented that way.
Browser Ballot 2010 The BrowserChoice.eu thing was a useless battle. If it brought some users to Firefox on the Desktop, the real issue was clearly the lack of browser choice on iOS, world-wide. That issue still stands as of today.
Panorama (aka Tab Groups) 2010 When Panorama reached light, some in the mozillian community (including yours truly) said it was bloated, not extensible, not localizable, based on painful code, hard to maintain on the long run and heterogeneous with the rest of Firefox, and it was trying to change the center of gravity of the browser. Mozilla's answer came rather sharply and Panorama was retained. In late 2015, it was announced that Panorama will be retired because it's painful to maintain, is heterogeneous with the rest of Firefox and nobody uses it...
Jetpack 2010 Jetpack was a good step on the path towards HTML-based UI but a jQuery-like framework was not seen by the community as what authors needed and it missed a lot of critical things. It never really gained traction despite of being the "official" add-on way. In 2015, Mozilla announced it will implement the WebExtensions global object promoted by Google Chrome and WebExtensions is just a more modern and better integrated JetPack on steroids. It also means being Google's assistant to reach the two implementations' standardization constraint again...
Firefox OS 2011 The idea of a linux+Gecko Operating System finally touched ground. 4 years later, the project is dead for mobile.
Versioning System 2011 When Mozilla moved to faster releases for Firefox, large corporations having slower deployment processes reacted quite vocally. Mozilla replied it did not care about dinosaurs of the past. More complaints led to ESR releases.
Add-ons 2015 XUL-based add-ons have been one of the largest attractors to Firefox. AdBlock+ alone deserves kudos, but more globally, the power of XUL-based add-ons that could interact with the whole Gecko platform and all of Firefox's UI has been a huge market opener. In 2015/2016, Mozilla plans to ditch XUL-based add-ons without having a real replacement for them, feature-per-feature.
Evangelism 2015 While Google and Microsoft have built first-class tech-evangelism teams, Mozilla made all its team flee in less than 18 months. I don't know (I really don't) the reason behind that intense bleeding but I read it as a very strong warning signal.
Servo 2016 Servo is the new cool kid on the block. With parallel layout and a brand new architecture, it should allow new frontiers in the mobile world, finally unleashing the power of multicores. But instead of officially increasing the focus on Servo and decreasing the focus on Gecko, Gecko is going to benefit from Servo's rust-based components to extend its life. This is the old sustaining/disruptive paradigm from Clayton Christensen.

(I hope I did not make too many mistakes in the table above. At least, that's my personal recollection of the events. If you think I made a mistake, please let me know and I'll update the article.)

Let's be clear then: Mozilla really succeeded only three times. First, with Firefox on the desktop. Second, enabling the Add-ons ecosystem for Firefox. Third, with its deals with large search engine providers. Most of the other projects and products were eventually ditched for lack of interest, misunderstanding, time-to-market and many other reasons. Mozilla is desperately looking for a fourth major opportunity, and that opportunity can only extend the success of the first one or be entirely different.

The market constraints I see are the following:

  • Native apps have won
  • Mozilla's reputation as an embedded solution's provider among manufacturers will probably suffer a bit from Firefox OS for phones' death. BTW, it probably suffers a bit among some employees too...

Given the assets and the skills, I see then only two strategic axes for Moz:

  1. Apple must accept third-party rendering engines even if it's necessary to sue Apple.
  2. If native apps have won, Web technologies remain the most widely adopted technologies by developers of all kinds and guess what, that's exactly Mozilla's core knowledge! Let's make native apps from Web technos then.

I won't discuss item 1. I'm not a US lawyer and I'm not even a lawyer. But for item 2, here's my idea:

  1. If asm.js "provides a model closer to C/C++" (quote from asmjs.org's FAQ), it's still not possible to compile asm.js-based JavaScript into native. I suggest to define a subset of ES2015/2016 that can be compiled to native, for instance through c++, C#, obj-C and Java. I suggest to build the corresponding multi-target compiler. Before telling me it's impossible, please look at Haxe.
  2. I suggest to extend the html "dialect" Gaia implements to cross-platform native UI and submit it immediately to Standard bodies. Think Qt's ubiquity. The idea is not to show native-like (or even native) UI inside a browser window... The idea is to directly generate browser-less native UI from a html-based UI language, CSS and JS that can deal with all platform's UI elements. System menus, dock, icons, windows, popups, notifications, drawers, trees, buttons, whatever. Even if compiled, the UI should be DOM-modifyable just like XUL is today.
  3. WebComponents are ugly, and Google-centric. So many people think that and so few dare saying it... Implementing them in Gecko acknowledges the power of Gmail and other Google tools but WebComponents remain ugly and make Mozilla a follower. I understand why Firefox needs it. But for my purpose, a simpler and certainly cleaner way to componentize and compile (see item 1) the behaviours of these components to native would be better.
  4. Build a cross-platform cross-device html+CSS+JS-based compiler to native apps from the above. Should be dead simple to install and use. A newbie should be able to get a native "Hello World!" native app in minutes from a trivial html document. When a browser's included in the UI, make Gecko (or Servo) the default choice.
  5. Have a build farm where such html+CSS+JS are built for all platforms. Sell that service. Mozilla already knows pretty well how to do build farms.

That plan addresses:

  • Runtime requests
  • Embedding would become almost trivial, and far easier than Chromium Embedded Framework anyway... That will be a huge market opener.
  • XUL-less future for Firefox on Desktop and possibly even Thunderbird
  • XUL-less future for add-ons
  • unique source for web-based app and native app, whatever the platform and the device
  • far greater performance on mobile
  • A more powerful basis for Gaia's future
  • JavaScript is currently always readable through a few tools, from the Console to the JS debugger and app authors don't want that.
  • a very powerful basis for Gaming, from html and script
  • More market share for Gecko and/or Servo
  • New revenue stream.

There are no real competitors here. All other players in that field use a runtime that does not completely compile script to native, or are not based on Web Standards, or they're not really ubiquitous.

I wish the next-generation native source editor, the next-gen native Skype app, the next-gen native text processor, the next-gen native online and offline twitter client, the next native Faecbook app, the next native video or 3D scene editor, etc. could be written in html+CSS+ECMAScript and compiled to native and if they embed a browser, let be it a Mozilla browser if that's allowed by the platform.

As I wrote at the top of this post, you may find the above unfeasible, dead stupid, crazy, arrogant, expensive, whatever. Fine by me. Yes, as a strategy document, that's rather light w/o figures, market studies, cost studies, and so on. Absolutely, totally agreed. Only allow me to think out loud, and please do the same. I do because I care.

Updates:

  • E4X added
  • update on Jetpack, based on feedback from Laurent Jouanneau
  • update on Versioning and ESR, based on feedback from Fabrice Desré (see comments below)
  • XULrunner has died...

Clarification: I'm not proposing to do semi-"compilation" of html à la Apache Cordova. I suggest to turn a well chosen subset of ES2015 into really native app and that's entirely different.

Sunday 31 January 2016

Il reste quelque chose d'étonnant au royaume de la #frenchtech

Je suis un observateur plutôt attentif de la #frenchtech. Si à l'origine, cela n'a été qu'un buzzword, cela commence enfin à s'en éloigner un peu, ne serait-ce que par les contacts de plus en plus nombreux entre ses "membres" et la sphère politique. Mais il y a un point qui continue à m'étonner : on confond Tech et Web...

Soyons très clairs : un site de vente en ligne, c'est de la vente et de la logistique mais ce n'est pas de la Tech à moins que la technologie sous-jacente ne devienne Open Source, maintenue par une communauté, et permette à d'autres de développer un business. Un site de mise en relation entre personnes, c'est rarement de la technologie lourde.

La #frenchtech reste également un microcosme des dotcoms les plus communicantes, un cercle dans lequel l'invitation ressemble fort à un adoubement, alors qu'elle a deux buts principaux : premièrement, favoriser les marchés extérieurs pour les boîtes françaises existantes, deuxièmement favoriser l'émergence de nouvelles boîtes et de nouveaux projets. Ce dernier point ne peut venir que du monde estudiantin, que l'on continue à négliger. Le vrai potentiel, il est chez le gamin qui entre deux TP à son IUT code un truc d'enfer qui va malheureusement rester sous les radars ou chez la gamine qui vient de faire une percée énorme, pendant un stage, dans les peintures anéchoïdes au radar, il n'est pas dans whatmille sites Web de vente ou mise en relation.

Dans frenchtech, il ne faut pas oublier tech...

Friday 29 January 2016

Google, BlueGriffon.org and blacklists

Several painful things happened to bluegriffon.org yesterday... In chronological order:

  1. during my morning, two users reported that their browser did not let them reach the downloads section of bluegriffon.org without a security warning. I could not see it myself from here, whatever the browser or the platform.
  2. during the evening, I could see the warning using Chrome on OS X
  3. apparently, and if I believe the "Search Console", Google thought two files in my web repository of releases are infected. I launched a complete verification of the whole web site and ran all the software releases through three anti-virus systems (Sophos, Avast and AVG) and an anti-adware system. Nothing at all to report. No infection, no malware, no adware, nothing.
  4. since this was my only option, I deleted the two reported files from my server. Just for the record, the timestamps were unchanged, and I even verified the files were precisely the ones I uploaded in january and april 2012. Yes, 2012... Yesterday, without being touched/modified in any manner during the last four years, they were erroneously reported infected.
  5. this morning, Firefox also reports a security warning on most large sections of BlueGriffon.org and its Downloads section. I guess Firefox is also using the Google blacklist. Just for the record, both Spamhaus and CBL have nothing to say about bluegriffon.org...
  6. the Google Search Console now reports my site is ok but Firefox still reports it unsecure, ahem.

I need to draw a few conclusions here:

  • Google does not tell you how the reported files are unsecure, which is really lame. The online tool they provide to "analyze" a web site did not help at all.
  • Since all my antivir/antiadware declared all files in my repo clean, I had absolutely no option but to delete the files that are now missing from my repo
  • two reported files in bluegriffon.org/freshmeat/1.4/ and bluegriffon.org/freshmeat/1.5.1/ led to blacklisting of all of bluegriffon.org/freshmeat and that's hundreds of files... Hey guys, we are and you are programmers, right? Sure you can do better than that?
  • during more than one day, customers fled from bluegriffon.org because of these security warnings, security warnings I consider as fake reports. Since no public antimalware app could find anything to say about my files, I am suspecting a fake report of human origin. How such a report can reach the blacklist when files are reported safe by four up-to-date antimalware apps and w/o infection information reported to the webmaster is far beyond my understanding.
  • blacklists are a tool that can be harmful to businesses if they're not well managed.

Update: oh I and forgot one thing: during the evening, Earthlink.net blacklisted one of the Mail Transport Agents of Dreamhost. Not, my email address, that whole SMTP gateway at Dreamhost... So all my emails to one of my customers bounced and I can't even let her know some crucial information. I suppose thousands at Dreamhost are impacted. I reported the issue to both Earthlink and DH, of course.

Monday 25 January 2016

Georges

Il s'appelait Georges, c'était mon parrain, même si cela n'a pas vraiment de signification chez les juifs askhénazes. Je garderai plein de souvenirs de Georges, le plus vieux copain de mon père encore proche, mais il me faut en sélectionner quatre plus forts que les autres :

  • tout le mobilier de ma chambre d'enfant, tellement superbe et moderne qu'il était encore parfaitement adapté à mes années estudiantines, c'était lui
  • les longues discussions cultivées et souvent drôles du dimanche à Fontainebleau, c'était encore lui
  • le sourire intense de bonheur et inoubliable quand mes parents et moi l'avons invité à son restaurant fétiche, L'Ami Louis, pour mes 13 ans, c'était lui aussi
  • et nos regards de connivence, qui n'avaient pas besoin de mots, quand nous nous sommes retrouvés ensemble en face d'une personne racontant des énormes conneries...

Georges est décédé ce week-end et j'en chiale, la boule au ventre. Lundi de merde. Pas glop.

Un OS Souverain

Non, rassurez-vous, je n'ai pas l'intention d'en discuter. Perdre du temps à causer d'une telle stupidité, d'une telle preuve non seulement d'incompétence crasse mais également d'arrogance lamentable (par défaut d'interrogation des spécialistes) de nos politiques ne serait même pas drôle. Quelle honte.

Ce qui est hilarant par contre, c'est cette issue sur github. Une vraie perle :-) Faites-vous du bien en ce lundi matin, et faites mieux qu'une pause café, faites une pause lecture. Rire garanti :-)

- page 1 of 285