Vendredi, c’était TakeOffConf

Vous ne connaissez pas la TakeOff ? la conférence la plus barbue au nord de la Seine ? Tant pis pour vous. Par une chance extraordinaire, j’ai pu obtenir une place pour assister aux conférences du Vendredi … Mais du fait d’obligations, je n’ai pu voir que celles du matin. En voici un rapide compte-rendu.

How to rescue tech migrants from Brexit

Un talk « tongue in cheek » expliquant que les anglais allaient fuir leur pays pour venir se réfugier … à Lille. Il recense quelques bonnes habitudes à prendre pour intégrer les nouveaux, comme par exemple trouver un tuteur pour les nouveaux arrivants, faire en sorte de vaincre les problèmes d’I18n/l10n comme par exemple

  • Vaincre la barrière de la langue
  • Les foutus claviers différents

C’était pas mal, et très flatteur pour Lille

Create modern web APIs in minutes

Ca parle d’API Platform, en PHP

Il y a plein de standards de description d’API

  • Swagger
  • JSON-LD (standard W3C), déjà utilisé et compatible web sémantique
  • Schema.org vocabulaire ouvert pour le web, hébergé par le W3C, compatible JSON-LD
  • Hydra
  • RAML

API Platform, donc, permet de développer une API en PHP et supporte tout ça, ainsi que tout un tas de features habituelles comme la pagination, le filtrage, l’auth (JWT, Oauth), le cache, CORS. Bon, je suis un peu passé à côté en bon développeur Java(EE).

Sharing code between web and native mobile apps

Dans le développement mobile, maintenant,

  • Web => Audience
  • Native app => rich experience.

Du coup, les deux sont nécessaires. Et donc NativeScript fournit un truc qui ressemble à ionic pour Angular 2

Le plus gros avantage, c’est qu’avec electron, on peut aller jusqu’aux applications Desktop

Il y a néanmoins un système de distribution curieux avec WebPack et des extensions de fichier selon le canal d’utilisation. mais là, c’est sans doute ma méconnaissance du sujet qui parle.

Let your devices talk to each other

Dans l’IoT, les données sont centralisées (et pas stockées sur les machines). Et c’est galère quand les serveurs tombent en rade. Au contraire, en M2M, les données sont décentralisées. Du coup, pourquoi ne pas utiliser les concepts du second dans le premier ? Par exemple, en laissant les devices se découvrir en P2P. Mais comment se connecter en P2P sur un réseau local ? En utilisant de la discovery (Bonjour, JmDNS, UPnP)

Et que vient faire CouchBase là-dedans ?

Présenter Couchbase Lite ! En ayant une base de données locale synchronisable avec le serveur, on permet plus facilement la déconnexion du serveur. Et la base peut se synchroniser en P2P. Clairement, ça aurait pu me servir il y a des années.

Building a Web API with Hanami

Pas de monkey patching, pas de method_missing … Construit en opposition avec Ruby on Rails, autrement dit. C’est un framework web pour Ruby qui semble assez élégant et conçu autour de concepts très simples. Mais bon, comme pour le PHP, ça ne me touche qu’à moitié.

Elixir a language for the Future

Dans ma mémoire, c’est un framework web basé sur Haskell … mais en fait, c’est un langage pour le futur.

Pour le speaker, le futur est

  • Dynamique
  • Concurrent. Et pour ça, Ericsson a inventé … Erlang !

Du coup, Elixir, c’est

Ruby+Erlang+steroids=Elixir !

Quelques éléments sont bluffants, comme le pattern matching sur les paramètres de méthode. D’autres sont … moins impressionnants, comme l’utilisation de tous les coeurs qui surprend en Ruby, mais vraiment pas en Java.

Et c’est tout ?

Ben oui, c’est tout. le reste du temps, j’étais pris. Cela dit, c’était un chouette moment.

eclipse-php, ça réconcilie presque

Presque, hein.

Depuis quelques temps, j’avais quelques bridges rss cassés : TheOatmeal, LesJoiesDuCode, Freenews, …

J’ai essayé la semaine dernière d’utiliser la méthode classique d’ajout de print, mais sans trop de succès. Mais comme dit sur Twitter

Clairement, je fais partie de ceux qui préfèrent un débuggeur symbolique. Donc comme je n’arrivais à rien avec mes print, j’ai pris le taureau par les cornes, et j’ai téléchargé eclipse for php. Et, évidement, comme eclipse n’est qu’un IDE, j’ai aussi dû télécharger XAMPP et l’installer (avec en bonus XDebug pour pouvoir faire du remote debugging).

Et du coup, après, trouver mes bugs a été … beaucoup plus rapide ! Ce qui renforce nettement la leçon déjà apprise avec Python et officialise ma méthode de dév : quelquesoit le langage, si je veux travailler vite, le plus efficace n,’est pas de prendre le meilleur outil, mais d’installer le build Eclipse le plus récent adapté à ce langage.

Une conséquence de ça, c’est que je vois de moins en moins d’intérêt à tenter de passer à IntelliJ Idea : si à chaque fois que je change de langage, je dois chercher un IDE spécifique dans un coin perdu d’internet, ça ne risque pas d’être efficace. Autrement dit, je suis vraiment un Eclipseboy.

Twitter via RSS

Vous savez que Twitter n’a plus de flux RSS accessible pour la « home » d’un utilisateur.

Ben oui, la home, la page qui se charge quand on se connecte à Twitter.

Personnellement, je trouvais ça pénible, mais sans plus.

Et puis Guillaume Laforge a demandé aux castcodeurs comment on s’informait de nos jours sur le web …

Du coup, évidement, j’ai répondu ça

Et hélas, Twitter.
Hélas, parce que Twitter ne me fournit que de minuscules bouts d’information là où j’aimerai avoir plus de matière.
Hélas, parce que Twitter ne me permet pas de classer les sources d’information dans des dossiers, ou selon des tags, ou quelque autre sorte d’organisation.
Hélas, enfin, parce qu’il n’y a pas moyen de savoir quels messages j’ai déja lu.
Hélas, toujours, parce qu’il n’y a pas de flux RSS disponible pour ma timeline complète (c’est-à-dire avec tous les gens que je suis).

Et pourtant, on trouve sur twitter des tas de liens intéressants. Du coup, j’ai cherché un peu des outils permettant de récupérer dans des flux RSS le contenu de ma page twitter … Et j’ai trouvé des trucs, mais difficilement. Cela dit, Pixsy m’a fourni, outre un outil apparement très chouette (mais qui ne marche pas pour twitter), un lien vers tweetledee que j’ai immédiatement installé sur mon serveur PHP local.

Et du coup, j’ai à côté de mon rss-bridge qui me sert très bien un tweetledee au but assez spécifique.

Je n’ai pas réfléchi bien longtemps avant de l’installer. Parce que comme rss-bridge, c’est de l’open-source sans base de données, facile à utiliser, et qui correspond bien au besoin. Evidement, c’aurait été un peu mieux que rss-bridge me fournisse ce service, mais comme il faut passer par OAuth pour se connecter à Twitter, j’imagine que Seb n’y est pas spécialement favorable (et je dois également reconnaître que je n’ai pas eu le courage de coder le truc).

Une liste de course pratique pour rss-bridge

J’aime bien rss-bridge. C’est pratique.

Et comme je veux pouvoir y contribuer un peu plus, j’avais vaguement noté dans les issues github une liste de sites qui pourraient nécessiter un peu de boulot (ah, tiens, non).

Mais c’était pas super pratique.

J’ai donc pris une décision radicale : j’ai créé dans mon kriss-feed un dossier @todo:rss-bridge dans lequel je mets tous les flux pour lesquels je dois écrire un bridge.

Et comme ça, dès qu’un nouvel élément y apparaît, je me rappelle que je dois vraiment bosser dessus.

Et ça se voit bien :

Kriss feed (1)_2014-03-20_17-03-14

Bon, je ne sais pas si ça suffira à me sortir de la procrastination, mais je ne crois pas que ça pourra faire le moindre mal … si ?

Pour l’anecdote, cette histoire de @todo me vient d’un vieil article de lifehacker (qui apparaîtra lui aussi dans cette catégorie). Je m’en sers pour mes différents projets personnels, et c’est bien pratique.

rss-bridge, c’est bien (et le php aussi)

Je vous parlais il y a peu de ma lassitude ce ces flux mal fichus.

J’avais donc installé rss-bridge, et je ne vous avais pas parlé de mes développements à ce sujet.

Et bien maintenant, je peux. Parce que j’ai écrit deux bridges, un facile et un autre un peu moins.

Le facile, c’est évidement Sexactu, pour lequel les articles complets sont toujours disponibles sur la page gqmagazine.com/sexactu, qui réduit donc la transformation à un peu de scrapping HTML, chose pour laquelle mon lifestream m’a poussé à développer quelques compétences. Et donc, c’est assez facile.

Le moins facile, c’est – curieusement – Les 400 Culs pour lequel j’ai dû développer une solution de cache de pages HTML. Tout ça parce que

  1. Il y a des articles tronqués pour lesquels il faut aller sur une autre page pour avoir la version complète
  2. Le FileCache existant dans rss-bridge ne permet pas la mise en cache d’objets quelconques, du moins d’après ce que j’ai compris …

Au-dela de ça, il y a deux ou trois trucs curieux que j’ai constaté, qui me changent du développement Java.

La première est une surprise : comment peut-on livrer une application où on enlève sciement les rapports d’erreur ? Ca n’est pas une critique personnelle, juste une surprise. L’une des toutes premières lignes de rss-bridge est

Du coup, quand on développe un bridge, au début, on ne comprend pas (moi au moins) pourquoi aucun message d’erreur ne s’affiche, et puis on décommente la bonne ligne et là, on peut enfin travailler 🙂

A cette surprise près, travailler avec PHP est en un sens assez agréable parce que la doc est d’une qualité formidable, et qu’en plus il n’y a pas ces phases de compilation/packaging typique du code Java. ca laisse songeur, quand même, de voir que, malgré tous les défauts inhérents au langage (et ils sont nombreux), il est à ce point facile d’écrire un truc qui, en Java (et malgré toutes ses qualités), me prendrait du temps et nécessiterait quelques dépendances (d’un autre côté, c’est ausssi le cas ici puisque rss-bridge dépende  de Simple HTML DOM Parser – qui est du reste un joli bout de code).

Allez pouf un krissfeed

Je dois bien reconnaître que Selfoss présentait bien.

Je dois bien reconnaître que son côté Responsive flattait l’oeil.

Mais franchement, 45 minutes pour mettre à jour mes flux RSS, c’est un peu abusé.

Donc, je l’ai remplacé par un krissfeed, qui présente l’avantage d’avoir un bouton « partager sur mon shaarli ».

Et, pour peu que je mémorise les raccourcis clavier, j’ai bien l’impression que j’arriverai à m’en servir de façon efficace.

Bon, je sais pas encore si je dois remercier SebSauvage pour son commentaire, mais on verra.

Il y a toutefois un problème « classique » : comme mon NAS a son propre serveur web, mon lighttpd tourne sur le port 8080 et est redirigé à la sortie de mon réseau local vers le vrai port HTTP. Et, de temps en temps, certains s’oublient et ajoutent un numéro de port … ce qui fait que, évidement, je n’arrive jamais à accéder à la bonne page. Et ne croyez pas que je vais ouvrir un autre port dans ma freebox !

C’est pas toujours facile d’être un mauvais admin

Au début de la semaine, j’ai ajouté à MiniGalNano une fonctionnalité de création des miniatures en tâche de fond.

L’un des éléments nécessaires à cette tâche de fond était un cronjob qui lance régulièrement un wget sur mon site, histoire de lancer le script d’une façon « pratique ».

Je lme suis donc renseigné pour l’ajouter d’une façon qui survive aux reboots. Parce que je n’étais pas vraiment sûr que ce que j’avais fait jusqu’à présent fonctionne correctement.

Ce que j’avais initialement fait, c’était de suivre le wiki du DNS-323 et d’ajouter deux scripts d’initialisation. Là, ne retrouvant plus immédiatement cette solution, j’en ai suivi une autre qui m’a conduit à modifier le fichier fun_plug.local (que j’ai ajouté par la même occasion au repository git de configuration).

Et à partir de ce moment, j’ai constaté que le CPU de mon DNS-323 restait toujours à 100 avec deux scripts php qui bouffent chacun 50 % du CPU.

Louche.

LOUCHE.

En farfouillant un peu, je me suis rendu compte que j’avais DEUX process crond qui tournaient !

Du coup, le crontab était lu en parallèle et chaque tâche s’exécutait en double.

Franchement idiot !

J’ai donc viré l’un des jobs cron, et depuis, j’ai retrouvé un peu de sérénité (même si entre temps je me suis rappelé que j’étais définitivement le pire admin au monde). Bon, je ne vous cache pas que j’avais également envisagé sérieusement l’éventualité d’acheter un freeplug classic pour redémarrer un PC qui traîne dans ma cave et dont le CPU est bien plus puissant. Je me disais qu’avec un coup de wake-on-lan, je pourrais conserver le NAS comme verrou d’entrée, et ne démarrer le gros serveur qu’en cas de besoin.

Et ce sera sans PluXML

Puisque je parle de mon serveur, autant le dire, j’ai testé ce soir PluXML, histoire de voir si je pouvais facilement y ajouter des articles.

Je vais quand même vous expliquer pourquoi.

Je suis toujours à la recherche d’une solution robuste (c’est-à-dire facile à faire fonctionner, facile à analyser, facile à étendre) pour récupérer mes traces sur le web. Et, comme PluXML stocke ses données dans des fichiers XML, je m’étais dit qu’il me serait facile de créer des fichiers contenant mes données et les copier dans le bon dossier. Mais hélas il n’en est rien. En créant un fichier pouet.xml et en le copiant dans le dossier data/articles/, je pensais qu’il apparaîtrai. Mais non !

Bien sûr, j’aurais pu demander au support de PluXML un petit coup de main, et je suis sûr qu’ils auraient été fort heureux de m’aider. Mais j’ai eu la flemme (ce qui est également un droit).

Donc, maintenant, j’ai plusieurs alternatives

  • Repartir du code d’export Goodreads/Posterous que j’avais écrit il y a bien longtemps et tenter de le refaire marcher
  • Trouver des gens dont je partage les idées, et faire marcher leurs idées avec mes données. Parce que si j’y ai pensé, quelqu’un l’a fait.

Cette dernière phrase est quand même un motto sacrément important pour ne pas se prendre les pieds dans l’informatique moderne. Et du coup, en cherchant un peu, j’ai quand même trouvé quelques pages donnant des informations sur les générateurs de sites statiques en Java (ou approchants)

Un serveur qui tourne !

Enfin, qui tourne, le mot est quand même un peu fort.

Toujours est-il que, suite à la mise à jour en fonz_fun_plug 0.7, et suite également à cet excellent article de SebSauvage sur Google Reader, j’ai pris le taureau par les cornes :

Index of _ - Opera_2013-03-29_14-39-24

Et, comme vous le voyez, j’en ai profité pour installer deux ou trois trucs bien pratiques (et trouvés tous sur cette excellente page ZeroBin lancée par le même SebSauvage). Au passage, je trouve cette page très inspirante pour un minuscule projet de « Speed Dial hébergé ».

D’ailleurs, suite à cette installation, il semble que je puisse prochainement proposer un Pull Request à SebSauvage (et même deux en fait) pour augmenter les capacités de MiniGal, surtout en ce qui concerne la gestion de photos enrichies d’IPTC (une vieille marotte).

Mon disque dur a un éléphant dans le ventre !

Depuis ce midi, et grâce à ce tutorial très bien fait (et bien sûr aux packages de fonz fun plug), mon super disque dur externe dispose maintenant d’un Lighttpd avec PHP, ImageMagick et support des images PNG et JPEG.
Avec ça, je vais pouvoir rapidement faire une jolie petite gallerie photo(ce qui était clairement le but initial). D’ailleurs, faudra que je vous reparle de mes photos, mais une autre fois …
Bon, comme j’ai vieilli, je n’ouvrirai pas le port 80.
Non, au lieu de ça, je passerai par des tunnels SSH pour consulter nos photos de vacances. je trouve ça nettement plus sécurisé. Il me faut juste une clé USB avec un putty portable.