Échec de supermarché

Geoffroy est frigoriste (ce n’est pas son vrai nom, juste un jeu de mots, que j’assume). Son métier, c’est de poser des installations réfrigérantes : climatisations à l’échelle de bâtiments, chambres froides, bref, du lourd. Chaque rencontre avec ce personnage est l’occasion d’apprendre des anecdotes fabuleuses vécues au cours de ses derniers chantiers. En voici une de toute beauté.

Aujourd’hui Geoffroy travaille sur un chantier de supermarché en construction. Autant dire que pour ce genre de construction, il y a de quoi faire : climatisation du bâtiment, rayonnages réfrigérés, chambres froides. Et quand il y a de quoi faire, il y a de quoi échouer.

Le fait que les décideurs décident soudain de modifier l’agencement des rayons une quinzaine de jours avant l’ouverture en est un premier. « Quel est le problème ? auront-ils sans doute pensé… Ce ne sont que des meubles ! » Le problème c’est qu’un rayon réfrigéré est un peu plus qu’un meuble, et que s’il est possible de mettre une gouttière pour les canalisations d’évacuation en dessous, pour ce qui est des canalisations de fluide calorique au dessus, il compter au moins deux jours par cinq personnes. Le frigoriste répond donc que non, ce n’est pas possible, car ce n’est pas juste une sorte de grosse armoire bretonne avec de la lumière. Mais ça c’est juste un petit échec, pour se mettre de bonne humeur.

Le vrai échec, celui qui fait mal, c’est lorsque le décideur vient s’enquérir du bon avancement des travaux, et apprend alors que contrairement à ce qu’il imaginait, les chambres froides ne seront pas prêtes pour le lendemain, car le triphasé n’étant pas encore installé, les frigoristes ne peuvent procéder aux tests de leurs installations. Le vrai échec, c’est quand le décideur comprend alors qu’il va falloir qu’il trouve une solution le temps que le triphasé soit installé, une semaine au bas mot, pour son stock de surgelés qui arrive… le surlendemain. Et à ce stade, ce n’est même plus la peine de penser aux tests.

Or de telles chambres utilisent des compresseurs gros comme des buffets, qui nécessitent au total quelque chose comme 400kW. C’est monstrueux, pratiquement la consommation d’un lotissement d’une centaine d’habitations. Pour fournir une telle puissance, il faut un groupe électrogène d’au moins quatre tonnes, ainsi qu’une citerne pour nourrir ce goinfre qui va engloutir plusieurs dizaines de litres de diesel à l’heure. Il faut compter pour s’offrir un tel jouet 50k€ au bas mot, ou plus raisonnablement au moins 1000€ par jour à la location, et probablement autant en diesel.

Voilà un échec grandiose. Personnellement je suis admiratif.

Investissez dans l'eau potable

Schéma de principeLe projet Watercone consiste en un produit du même nom se présentant comme un grand entonnoir de plastique transparent, doté d’une gouttière intérieure. D’un très faible coût, cet outil permet tout simplement de récupérer de l’eau potable par évaporation au Soleil. Il me paraît louable qu’une entreprise propose (je serais tenté d’ajouter « enfin ») un produit permettant de tirer parti de ce principe enfantin, d’autant que son utilité dans certains pays en voie de développement, et notamment ceux où le manque d’eau potable est un problème, est évident.

Sur la page d’accueil on peut lire que ces gens cherchent des investisseurs pour pouvoir faire de la production et distribution à grande échelle…

Une critique du Lua

Laurent proposait dans l’un de ses articles une critique d’une vingtaine de langages de programmation. Parmi ceux-ci, le Lua était présenté très brièvement. Je propose ici de développer un peu sur ce langage.

Il s’agit donc d’un langage particulièrement léger, qui s’intègre très facilement dans un projet, et qui bénéficie d’une documentation claire et d’une communauté relativement active.

Comme l’indique Laurent, le Lua est multi-paradigme. S’il se présente au premier abord comme un langage impératif, on peut également faire de l’objet (au prix de l’utilisation d’une bibliothèque) et il dispose de plus de tous les outils pour faire du fonctionnel (il me semble juste que l’on ne peut pas faire simplement de curryfication). Du point de vue de la syntaxe, c’est un langage très agréable qui permet d’exprimer les choses de façon très succincte. Ainsi on peut itérer sur un tableau avec un « foreach », on dispose de fonctions locales, il n’y a pas de point-virgule de fin de ligne, pas de parenthèses superflues…

Par contre c’est un langage qui souffre d’un très gros laxisme du point de vue du typage. Il est en effet typé (dynamiquement) dans le sens où l’on peut demander le type d’une variable, mais dans de nombreux cas si l’on utilise une variable d’un type au lieu d’un autre, elle est transtypée sans que cela pose de problème au langage. De plus on ne peut pas imposer le type attendu par une fonction, mais juste le vérifier à l’exécution. Enfin si l’on tente d’accéder à une variable qui n’existe pas, par exemple suite à une faute de frappe, cela ne gène pas le moins du monde le langage, qui renverra « nil » (valeur valide pour une variable). Naturellement c’est source de beaucoup d’erreurs, décelées seulement à l’exécution de la branche erronée.

Autres choix qui ne me plaisent pas : le fait que les variables soient globales sauf contre-indication explicite, et que les opérateurs logiques « or » et « and » qui, contrairement à ce que l’on pourrait attendre d’un langage moderne, ne renvoient pas un booléen mais l’opérande déterminante.

Du côté des outils fournis, le langage se veut doté d’un système de table très puissant, et s’il est vrai qu’il est pratique dans les cas simples, on en trouve très vite les limites. Par exemple on ne dispose pas de reverse-iterator, et en écrire un s’avère laborieux. De même, la fonction permettant de compter les éléments d’une table est en fait une sorte de hack qui ne fonctionne que pour les tables indexées, en renvoyant le plus grand indice consécutif. Si l’on veut une fonction sérieuse pour connaître cette information, on doit donc l’écrire. Le langage se veut également doté d’une gestion de chaînes puissantes. Pourtant la documentation explique que les expressions rationnelles ne sont pas POSIX pour des raisons de quantité de code nécessaire. Au final filtrer des motifs devient vite pénible dès que l’on sort des cas d’école, et l’ajout d’une nouvelle syntaxe maison vient perturber le principe de moindre surprise.

Enfin du point de vue des performances, le langage se place apparemment plutôt bien pour un langage interprété. Il est notamment possible de faire de la compilation just-in-time et d’atteindre ainsi des performances très correctes. Cela dit elles restent plombées apparemment par le typage dynamique. Un simple appel de fonction se révèle être déjà coûteux. Du point de vue de la gestion de la mémoire, il est assez difficile de savoir ce que l’interpréteur fait, mais il semblerait qu’il ne sache pas tirer parti du fait qu’une fonction est souvent appelée pour optimiser l’allocation de ses variables locales. À vérifier cela dit.

En conclusion c’est un langage très pratique, vivant, facilement intégrable, avec une syntaxe relativement agréable, mais qui souffre d’un trop grand manque de rigueur.

Quand le geek bricole son intérieur

L’été est pour certains l’occasion de se rendre compte qu’il fallait s’y prendre avant pour pouvoir exhiber un corps de rêve sur les plages, pour d’autres de voyager, pour d’autres encore de pester contre les précédents car l’industrie tourne soudain au ralentit, et pour d’autres enfin de se lancer dans les travaux de bricolage.

Si je n’ai ni le temps ni la possibilité d’entâmer cette dernière activité, une chose est sûre, dès que l’occasion se présentera, je m’y lancerai en m’inspirant avec bonheur des quelques idées que voici.

Douche Tetris

Tout d’abord le blog de vik montre le résultat d’un peu de carrelage dans la douche avec des carreaux de sept couleurs pour en faire des blocs de Tetris empilés.

Ensuite et dans le même style, ce billet présente en deux photos une salle d’eau carrelée d’une mosaïque Pac-Man.

Étagère Tetris

Enfin une entreprise de design propose parmi ses créations des étagères modulaires en forme de blocs de Tetris. Le résultat, en plus d’être oldschool à souhaits, est très esthétique. La finition semble être d’ailleurs d’excellente qualité, et plusieurs choix de bois sont disponibles. Malheureusement le prix est également très élevé, avec l’étagère de dix blocs à partir de $1500. Un chiffre de moins je sortais mon chéquier d’office.

Fort heureusement, un tel meuble n’est pas très compliqué à fabriquer soi-même, d’autant que l’on peut même trouver des instructions si besoin est. C’est décidé, j’ajoute ça à ma liste de tâches !

Privilégiés

Cette semaine, parcourant le rayon langues étrangères d’une librairie, j’ai feuilleté très brièvement un livre de roumain. Ne connaissant absolument pas cette langue, j’étais surpris de constater avec quelle facilité il était possible d’identifier la structure de la phrase que le hasard proposait. S’il me serait certainement impossible de lire un texte écrit dans cette langue, plus de la moitié des mots de la phrase étaient néanmoins compréhensibles.

Dans l’apprentissage d’une langue, je vois essentiellement cinq difficultés distinctes qui peuvent apparaître : la grammaire, le vocabulaire, la prononciation, l’écriture, et enfin les aspects culturels (tournures contemporaines, métaphores, etc.).

En Europe, les langues sont d’une même origine indo-européenne, et ont donc une grammaire souvent très proche (sujet, verbe, complément) quand elle n’est pas absolument identique, et un vocabulaire partageant des racines communes. De plus, bien que cela soit presque considéré comme ne méritant pas d’être remarqué, l’écriture utilise les mêmes caractères avec juste quelques variations des accents. Finalement les seules difficultés restantes sont la prononciation, et les aspects culturels.

La prononciation est d’ailleurs un point qui présente un réel problème, car produire des sons est une chose qui s’apprend très tôt, et une fois que cela est cablé dans le cerveau il est très difficile d’ajouter, et même de reconnaître, de nouveaux sons. Il n’est pas question ici de consonnes, qui une fois décrites sont facilement reproductibles, mais de voyelles. Il me semble qu’il en existe en tout une vingtaine.

Fort heureusement en français, avec quinze voyelles distinctes (à savoir « a », « â », « an », « e », « eu », « é », « è », « i », « in », « o » ouvert, « ô », « on », « u », « un », « ou », et voire même une seizième en comptant le « e » final marseillais), nous n’en avons que peu de nouvelles à apprendre.

Autant dire que nous avons de la chance.