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.

IDEOnline

Bon, pour passer le temps, voici un petit site bien sympa.
Ideone.com est une espèce de pastie d'un genre assez sympa, puisqu'en plus de faire une coloration syntaxique de mes bouts de code, il essaye de les compiler et de les exécuter.
Ca sert à quoi, vous me dites ?
Beeeen …
Que je vous explique, supposons que j'aie envie de faire un petit exercice de Project Euler dans un langage inhabituel (tiens, au hasard, du Brainf*ck). Pour faire cet exercice, il faudra d'abord que j'installe un compilateur Brainf*ck, puis que je trouve comment exécuter mon bout de code. Pas forcément évident. Et puis pas forcément didactique, parce que si je veux vous montrer un bout de code, vous ne verrez jamais son exécution. Vous aurez en quelque sorte la carte, mais pas le territoire. Avec Ideone.com, en revanche, je peux écrire un bout de code, y mettre quelques logs, et vous laisser l'exécuter.
Tenez, regardez ce bout de code Groovy (tiré directement de la doc de GroovyWS). Je l'ai copié/collé pour voir si ils avaient configuré leur système pour supporter les Groovy grapes (qui sont vraiment très pratiques, d'ailleurs, j'ai bien l'impression qu'il n'existe rien d'équivalent en Ruby, sauf peut-être urirequire). Il montre clairement que non, parce qu'en fait tout est placé dans /dev/null. C'est dommage, mais c'est comme ça.
Donc Ideone.com, c'est bien. Parce que ça exécute mon code, évidement. Parce que ça permet de tester facilement plein de langages (justement parce qu'il dispose d'un nombre d'interpréteurs impressionnants). Et enfin parce que c'est exactement le truc qui faisait que je préférais encore github aux divers clones de pastie existants.
Cela dit, je ne crois vraiment pas que je m'en servirais beaucoup. C'est juste que je trouve le concept sympa, raisonnablement bien fait (avec son interface "à l'ancienne"), et geek à l'envie !

Ruby, c’est un truc de rock-stars

Ah la la, Julien, décidément, tu me rappelles des souvenirs …
il y a quelques années, je m’étais mis en tête de faire mon site en Ruby (essentiellement pour comprendre ce langage assez marrant, ce qui a marché, alors que le site, non, mais c’est pas grave).
Je m’étais donc plongé dans ce monde assez joyeux, et ma foi un peu underground à l’époque (Rails n’était alors qu’un projet d’avenir). parmi toutes mes découvertes, la plus grande ne fut pas le code, mais plutôt une personne et ses créations. Cette personne, c’était évidement _why.
Comme l’une des multiples pages à son hommage le dit, cet homme était à la fois un codeur, un poète, un chanteur, un dessinateur. A la renaissance, il aurait un été un homme universel. De nos jours, on dirait un génie. L’un dans l’autre, je dirai qu’il fait partie de mes rock-stars. Il m’a ouvert les yeux sur bien des choses par ses bibliothèques géniales (Hpricot n’étant pas la moindre). je me disais aussi qu’il était cinglé quand il écrivait du code à la main.
Maintenant, je me dis simplement que son génie nous manque. je me dis aussi qu’il est parti comme il a vécu (même si la personne derrière le pseudo est toujours vivante, l’avatar, lui, s’est consumé).

 

PS : je sais bien que cet article est une vulgaire repompe d’un précédent. Mais je crois bien que _why mérite carrément sa journée d’hommage.

Groovy, baby !

Depuis quelques temps, mes yeux sont attirés comme par un aimant par le calendrier Aubade 2010 heu, non, qu’est-ce que je raconte, moi.
Non, mes yeux se tournent du coté de Groovy pour une raison assez curieusement marrante.
Voyez-vous, dans ma boite, on développe une énorme application professionnelle avec un langage propriétaire (au sens de c’est nous qu’on l’a fait, je dis ça pour ma mère qui passe de temps en temps par ici). Jusqu’à présent, pour ce langage, on n’avait aucun outil de qualité logicielle, à commencer par des tests unitaires. Donc, avec un collègue, la semaine dernière, on s’est pris par la main, et on a écrit notre petit framework, qui en fait à peu prés autant que JUnit 3 avec une syntaxe plutôt proche de JUnit 4. On a fini assez récemment, et ça marche plutôt bien. Seulement voilé, comment faire pour avoir un suivi des tests, une exécution systématique, bref de l’intégration continue ?
Les plus geeks d’entre vous me parleront d’Hudson, et ils auront raison. il faut, à partir des résultats de test, produire un fichier compatible avec le XML de Junit, dont la syntaxe ne se trouve pas facilement sur le web. Il faut aussi injecter cette syntaxe dans Hudson pour bénéficier des jolis graphiques d’évolution des résultats de test. Et c’est là que je vais vous parler de Groovy.
Groovyéest un langage dynamique pour la plateforme java. Ca veut dire que le seul interpréteur Groovy existant est un logiciel en java. on bénéficie donc des avantages de la plateforme Java (une portabilité rarement égalée) et de ses inconvénients (l’intégration fine à l’OS est parfois complexe). Cependant, Groovy n’est pas Java, et il permet d’utiliser des constructions de code franchement élaborées (closures, builders divers et variés, DSL, …). Bref, il marie les avantages de Ruby avec la plateforme Java. même en terme de déploiement, il offre quelques subtilités intéressantes avec grape. Enfin, et c’est ce qui m’a poussé dans cette direction, il est à la fois trivial d’écrire un mojo maven avec groovy, et d’écrire un client web-service se branchant sur un WSDL avec groovyws.
Et je dois dire que j’ai pas été déçu du voyage. En fait, ce qui m’a paru le plus difficile, ça a été de travailler sur un projet maven+groovy dans Eclipse, qui perdait les pédales dés que j’essayais de faire marcher les différents builders en même temps. Mais à part ça, groovy est presque immédiatement devenu pour moi le nouveau langage à mettre dans mon escarcelle : il est puissant, son environnement d’exécution est robuste (la JVM, je ne connais pas grand chose de plus solide), on peut écrire d’une façon aussi expressive qu’en Ruby, et la plupart de mes vieilles feintes de javaiste continueront à fonctionner.
Bref, si vous avez un peu de temps devant vous, allez lire quelques pages de la doc Groovy, faites-vous un toy project avec Gaelyk ou Griffon, et vous verrez comme c’est bien. Ou même, tiens, passez votre projet à gradle, ce sera amusant.

Le retour de l’aggrégateur auto-hébergé ?

Il y a peu, j’ai installé dropbox.
Et je dois dire que c’est un logiciel absolument épatant si on veut garder quelques fichiers à portée de main sans même s’embêter à trimballer une clé USB. D’ailleurs, j’ai quelques fichiers critiques qui sont hébergés dans mon dossier dropbox pour être disponibles partout où je vais.
Donc, j’en ai était content.
J’en étais encore plus content quand j’ai commencé à bosser sur une idée que j’avais en tête. Parce que dropbox, avec ses fonctionnalités de partage de fichier, permet le développement quelquesoit la machine sur laquelle on se trouve.
Et puis, ce matin, mon Google Reader m’a sorti, depuis Ruby Inside, un lien vers un framework de génération de site statique : Jekyll. Ce qui m’a aussitôt fait penser à webgen et à mes précédentes tentatives d’aggrégation locale de mes messages sur la toile. Du coup, quand j’aurais le temps, je crois que je jouerais à nouveau un peu avec Ruby (ou peut-être Groovy, tiens) pour récupérer toutes les pages web que j’ai écrites en dehors de mon site. Ca sera marrant (ou pas), et ça me permettra peut-être de mettre à jour ma opage chez free d’une façon enfin propre.

iPhoto corrector

Bon, ben voilà, en une matinée de travail, j'ai enfin ce que je voulais : un script qui, en partant des données exportées par iPhoto, écrit les métadonnées XMP/IPTC qui m'intéressent. Bon, pour l'instant, il n'y a que les mots-clés, mais maintenant que je maîtrise le truc, je vais sans doute en rajouter d'autres … Enfin, si j'arrive à résoudre les dramatiques problèmes de lenteur du truc (qui sont peut-être dûs à ruby, peut-être à mon NAS – ben oui, les photos sont stockées dessus).
Bref, ça marche, et c'est l'essentiel.
Ce qui est rigolo, en revanche, c'est que je n'utilise rien de ce que j'avais prévu :

  • je voulais utiliser hpricot, mais finalement, j'utilise plist (parce que bon, la vision Apple du XML est franchement folklorique)
  • je voulais utiliser ruby-xmp, mais finalement j'utilise MiniExiftool (qui a le bon goût d'être gratuite)
  • Et en bonus, j'utilise optiflag qui est vraiment pratique pour la ligne de commande

Et maintenant, la question cruciale : qu'est-ce que je fais de ce micro-script ?
A priori, ça n'intéresse que moi. Mais si toi, dans le fond, tu es intéressé par ce fix pour iPhoto, je veux bien le rendre public et peut-être même l'améliorer …

Why’?s Try Ruby (Web Version of irb) Back Online

Screen shot 2009-09-02 at 19.19.38.png

Try Ruby was a Web site by Why The Lucky Stiff that provided a Web-based version of irb (the interactive ruby prompt) and a 15 minute tutorial for people to learn and play with Ruby. With Why’s disappearance, however, the site went down and an invaluable Ruby community resource was lost.

Luckily, Andrew McElroy has made a great effort in getting Try Ruby back online. It’s not precisely the same, but it’s as close as you’re going to get for now (one key difference is that the irb process is not persistent – instead the history is re-run on each new line). There’s even the 15 minute introductory Ruby tutorial! An extra bonus is that Andrew has released all of the code he has for Try Ruby in a Github repository. Why’s code was never open sourced but Andrew has done a good job in starting to rebuild the backend.

Note that this is not a Why-approved project (yet). To the best of my knowledge there is still no further information on Why’s disappearance.

This entry was posted

on Wednesday, September 2nd, 2009 at 6:28 pm

and is filed under News, Tools.

You can leave a response, or trackback from your own site.

C’est marrant, mais je parlais des incroyables inventions de _Why il n’y a pas longtemps, et voici que l’une d’entre elles, et sans doute la plus … comment dire … pédagogique, renaît de ses cendres.. Alors, juste pour honorer la mémoire de l’une des personnas les plus éminentes du monde Ruby, allez donc essayer ce super outil d’apprentissage Ruby.

_why, oh why did you disappeared ?

J'en ai parlé beaucoup trop brièvement dans mon message précédent, donc je vais en parler un peu plus.

Il y a quatre ou cinq ans, j'ai découvert le Ruby et Ruby on Rails. C'était pas mal, mais certaines choses me semblaient un peu bizarres, surtout dans Ruby on Rails.
Et comme à l'époque, j'en étais à la troisième ou quatrième itération de mon site, je voulais récupérer des infos bibliographiques sur mes bouquins depuis le site noosfere.
Après un peu de recherche, je suis tombé sur hpricot. Et de fil en aiguille, j'ai découvert l'oeuvre de Why the lucky stiff : son incroyable blog, tous ses projets délirants (shoes, son guide du ruby, tryruby, pour essayer ruby dans son navigateur). Et je trouvais tout ça fascinant.
Parce que bon, nous autres, dans le monde du Java, on est globalement des gens sérieux, voire même sérieusement chiants (genre quand on me parle de certains trucs méta-méta-programming). Et là, je tombais sur un mec qui écrivait du code Ruby à la main (évidement, je n'ai pas de lien sous la main). Je n'hésiterais pas à dire que _Why fut mon premier héros informatique.
Malheureusement, depuis le mois d'août, _Why a disparu d'internet. Et ça, c'est Ruby Inside qui le dit, avec un paquet de lien nous montrant une partie de ce que _Why a rçalisé.
Mais son meilleur hommage posthume nous vient de John Resig (qui n'est pas n'importe qui, quand même, puisque c'est lui qui nous a donné jQuery).
La seule chose que je pourrais dire, personnellement, c'est que _Why a changé ma vision du développement, pour la rendre plus élégante, plus simple et plus spontanée. Merci pour tout, _Why.

IPTC, XMP ? Ruby à la rescousse !

http://github.com/whymirror/hpricot/tree/masterBon, comme je le disais, de retour de vacances, iPhoto m’énerve toujours autant avec sa non-gestion des tags IPTC/XMP.

Alors cette fois-ci, ça suffit !
Je sais, depuis bien longtemps, que dans une bibliothèque iPhoto, il y a toujours un fichier AlbumData.xml qui contient toute la base de données de photos. Je vais donc l’utiliser comme source pour lire les infos que je vais ajouter dans les tags IPTC/XMP des photos. Comme ça, je serais tranquille.
Et franchement, l’algorithme est hyper-pipeau :

Lire le fichier XML

  • Pour chaque tag, mémoriser son id
  • Pour chaque photo, récupérer les tags par leur id
  • Ecrire chaque tag en IPTC ET en XMP dans la photo

Et ce sera tout.

Pour ça, j’aurais besoin d’Hpricot (RPI _Why, RIP) et d’une API pour écrire l’IPTC et l’XMP (et vu nos usages, je me demande si l’XMP n’est pas plus important que l’IPTC …)
Et avec ça, « normalement », si tout se passe bien, j’aurais mes tags en IPTC et en XML, ce qui sera bien pratique pour exploiter correctement ces photos.

Renouvellement

Comme je le disais dans mon précédent message, j'ai perdu un des ordinateurs que j'utilisais à la maison.
Il s'agissait d'un portable Sony, pour être précis, un VGN-FE31Z qui m'avait été gracieusement fourni par mon employeur, lequel a choisi de m'en interdire l'usage.
Du coup, je suis retourné sur mon iBook. Cet iBook, j'ai essayé de le moderniser avec un passage à Leopard. Las, les 512 Mo de RAM de ce vieil engin ne suffisent plus à faire tourner l'OS. Donc, je crois que je vais le revendre, et l'échanger contre un portable encore plus petit (mais nettement moins cher) : Un Acer Aspire One 751.
Alors vous vous demandez sans doute pourquoi je vais prendre une telle brouette.
La réponse tient en un mot : Wii.
En effet, comme tout utilisateur de loisirs numériques, ma quête de puissance informatique était liée uniquement à des besoins vidéo-ludiques.
Maintenant que j'ai une console parfaite pour cet usage, le portable ne me servira plus qu'à lancer Opera et faire du développement avec Eclipse. Et pour ça, je sais d'expérience qu'il faut beaucoup moins de puissance que ce qu'on croit … Puisque j'ai longtemps utilisé Eclipse sur un PIII 933 !