De tout, de rien, des bookmarks, du bla bla #29

Par Yves , le 17/07/2013 dans
Yves

Et oui, après une (beaucoup trop) longue absence, re-voici un numéro de « De tout, de rien, des bookmarks, du bla bla ». Il était temps. Vous trouverez donc, comme précédemment, un peu de tout, beaucoup de choses qui concerne le développement mais pas que, le tout fonction de ce qui m'a intéressé ces derniers temps. N'y cherchez pas spécialement de l'objectivité, le but est de vous faire partager ce qui m'a fait vibrer, de vous donner envie ou juste de vous divertir (ben quoi, on peut se divertir avec de l'info non ?).

Comme toujours, vous trouverez une liste des liens présentés en fin d’article, pour que les plus rapides puissent cliquer directement sans lire le bla‐bla qui traîne autour.

Avant-propos

Ce numéro est aussi en dépêche sur linuxfr.org (et j'en ai repris certaines corrections).

D'ailleurs, le contenu de cet article est sous Licence CC by-sa.

Désolé si ce numéro est un peu moins passionnant que les autres, d'autant plus que certains liens commencent à dater. Néanmoins j'ai essayé de ne garder que le meilleur ;-)

Il faut dire que j'ai été un peu moins passionné par le monde du web ces derniers temps. Ok, on trouve beaucoup de choses sur AngularJS par exemple, sur du CSS, sur des bibliothèques JS, etc. Mais je dois dire que j'ai un peu l'impression que ça tourne en rond. Certes c'est toujours plus mieux, certes il y a des nouveautés. Mais il y a aussi beaucoup de réinventage de roue, de NIH. Depuis que j'ai commencé à vraiment coder sur le web, il y a une petite dizaine d'année, j'ai l'impression que ça n'a pas beaucoup évolué par certains côtés. On se retrouve à, encore aujourd'hui, refaire une énième bibliothèque de composants html/js pour, par exemple, styliser des listes déroulantes. Le style à changé, c'est vrai. On est d'ailleurs passé par pas mal de choses, des biens lourdes pendant un temps, et on s'oriente vers du minimalisme, avec des couleurs bien utilisées et un accent sur la typographie. Les outils ont changé aussi, on voit maintenant fleurir le code utilisant des pré-processeurs malgré l'aversion de certains (less et sass, mais aussi stylus pour le css, coffeescript pour le javascript par exemple). On voit aussi les systèmes de build, de gestion de dépendance (bower et requirejs).

Tout ça c'est bien, ça va dans le sens d'une industrialisation dont le web (et plus généralement malheureusement le développement) manque cruellement. Mais se retourner et voir qu'on fait par certains côtés toujours la même chose depuis 10 ans, c'est tout de même un peu triste, non ?

Ok, je suis peut-être un peu amère, mais n'oubliez pas, ceci n'a pas pour vocation à être objectif ;-)

Allez, ne vous en faites pas, il y a tout de même plein de choses sympa à voir dans la suite. Et même concernant le web, comme quoi !

Un peu de contenu

Développement

Et justement, pourquoi ne pas commencer par du web ? Voici donc une présentation concernant les « Web components, l'avenir des développeurs web ». Pfiou, il était temps qu'on essaie un peu d'avancer sur ce point, histoire de standardiser tout cela.

Si vous faites du web, je pense que vous avez forcément utilisé jQuery. Non ? Bien ! (ben quoi, moi je n'utilise pas jQuery pour faire du web, j'aime pas vraiment jQuery) Quoi qu'il en soit, vous serez par contre probablement intéressés par cette version documentée de jQuery 1.6.2. Un sacré travail pour annoter tout ce javascript, mais de quoi comprendre plus en détail le fonctionnement de cette bibliothèque si utilisée. La version annotée a été créée en utilisant docco dont je vous avais déjà parlé.

Voici aussi une présentation assez sympa sur le javascript et le mode strict : « Web directions ». À regarder, elle est plutôt cool et le message est vraiment intéressant.

Et une autre présentation qui cette fois nous apprend comment devenir un expert en javascript alors qu'on est un développeur intermédiaire : « Javascrip Masterclass »

Histoire de jouer un peu avec le javascript, voici comment créer un compilateur Lisp vers Javascript.

Puisque j'en parlais en introduction, voici une comparaison entre less et sass.

Et pour rester sur du design web, voici une très bonne explication sur comment faire des balles en CSS. Didactique, bien illustré, c'est plutôt un bon article. D'ailleurs vous pouvez suivre les liens pour voir les autres, c'est pas mal non plus.

Sortons un peu du javascript… pour aller vers du Java ! Je n'ai jamais essayé (et si certains l'ont fait ça m'intéresse) mais voici takipi. Il s'agit d'un système de débugage à distance pour des applications Java. Ça a l'air plutôt cool et pratique, l'interface semble plutôt pas mal aussi.

Comme à chaque fois qu'il sort un article, c'est une véritable mine d'or. Honnêtement je ne l'ai pas lu en entier, il faut dire que c'est d'un sacré niveau. Allez, je vais vous faire deviner le lien, c'est facile. Il s'agit d'un Français qui a sa boite au Canada. Il a juste un niveau plutôt impressionnant, surtout en ce qui concerne le bas niveau, le c, le c++, et les jeux. Et John Carmack a retweeté sa dernière revue de code. Alors, trouvé ? Et oui, il s'agit de Fabien Sanglard qui a réalisé une revue de code de Doom 3 BFG.

Et vu que je sais que vous en redemandez encore, voici une autre revue de code concernant cette fois Prince of Persia. Que ce jeu à pu bercer mon enfance ! Je me souviens encore, vu les dates ça devait être en 1990, je descendais dans le bureau de mon père pour qu'il allume son ordinateur (un 286) et pouvoir jouer quelques minutes à Prince of Persia. Le bruit des lames, sortant du buzzer de la machine, résonne encore dans ma tête ! Franchement c'est un des meilleurs souvenirs de jeux vidéo que je peux avoir. Peut-être parce que c'était probablement l'un des (le ?) premiers auxquels j'ai joué. J'en verserais presque une petite larme ;-)

Franchement, certains s'ennuient vraiment. Mais heureusement pour nous car cela donne des choses genre « The Shortest Crashing C Program ».

(J'espère que ce lien n'est pas déjà passé sur linuxfr) Si vous vous intéressez aux maths dans l'informatique ou aux jeux vidéos, voici un (long) article passionnant sur les grilles hexagonales. Et il faut en plus dire que cet article est très bien illustré, avec même des animations pour bien comprendre comment cela fonctionne. Vraiment à lire !

Je suis tombé (ouille) sur cet article vraiment intéressant, sur une façon de (bien) faire de la programmation par objet : Object Calisthenics. En gros il s'agit de neuf règles assez simples, mais qui une fois mises en œuvre rendent le code plutôt sympa. A rapprocher de SOLID aussi. Voici les règles, pour les détails allez lire le lien :

  1. Un seul niveau d'indentation par méthode
  2. N'utilisez pas le mot clé else
  3. Emballez (wrap) toutes les primitives et chaînes de caractères
  4. Les collections dans leurs propres classes
  5. Un . par ligne
  6. N'abrégez pas
  7. Gardez toutes les entités petites
  8. Pas de classe avec plus de deux variables d'instance
  9. Pas de méthodes de Getter/Setter

Qu'en pensez-vous de ces règles ? Si certaines me semble vraiment bien, la 8 me semblent plutôt stricte et complexe à mettre en œuvre, surtout si on la rapproche de la 5.

Histoire de terminer cette partie, avez-vous déjà lu ce livre : « Real-time Systems and Programming Languages: Ada, Real-Time Java and C/Real-Time POSIX » ? C'est probablement le prochain que je lirai après « Programming in Ada 2005 ».

Misc

« ABC: Always Be Coding » : Article très intéressant sur les développeurs, savoir si on est un bon candidat, et quelques astuces pour devenir encore meilleur. C'est très rapide à lire, et même si ça enfonce quelques portes ouvertes c'est plutôt sympa.

D'ailleurs, tiré de ce même lien, voici un pense-bête sur la complexité des algorithmes. À garder dans un coin ça peut toujours servir.

Un problème très souvent rencontré dans l'ingénierie logicielle concerne l'estimation du temps de développement. Il y a plein de raisons à cela, de toutes natures. Et il y a aussi beaucoup de courants différents, par exemple ceux qui veulent estimer (prédire ?) très précisément les développements, en étant très précis (inférieur à la demi-journée). Il y a aussi un courant des méthodes agiles, plutôt orienté estimation (genre 2 points ça veut dire entre 1 et 3 jours idéaux). Et il y a encore au delà de tout cela, un courant plutôt orienté pas d'estimations. Il m'est arrivé de vouloir faire du pas d'estimations mais cela nécessite pas mal de boulot mine de rien, entre autre bien découper les tâches par exemple. M'enfin ça c'est si on veut tout de même essayer de suivre un peu l'avancement, sinon on arrive de nouveau à la rache. Bon allez, tout ça pour introduire ce lien plutôt intéressant au sujet des estimations, entre autre en réponse au pas d'estimation : « Estimates in Software Development. New Frontiers. ».

Et pour continuer sur le thème des estimations, un message assez intéressant : « Don't get demoralized by bad estimates! ».

Les commentaires sont-ils nécessaires ? Comment ça un air de déjà vu ? Non, cette fois-ci il s'agit des commentaires sur les blogs. Est-ce vraiment nécessaire ? Est-ce indispensable ? Que penser d'un blog qui n'en aurait pas ? Et je ne parle pas de quelqu'un qui les désactive, mais vraiment aucun commentaire. Pour ma part je comprends tout à fait qu'il n'y ait pas de commentaires. D'ailleurs je n'en ai pas sur mon blog. Pourquoi ? Initialement une raison technique (blog statique et auto hébergement), finalement est-ce si important que cela ? Des réactions j'en ai tout de même, que ce soit sur tweeter, google+, par mail, par pull request aussi. Certes c'est plus dispersé, et alors ? Bon c'est sur que venir taper sur les commentaires tout en publiant sur linuxfr c'est tout de même assez drôle, surtout à quel point, souvent, le contenu intéressant et particulier de linuxfr est justement dans les commentaires. Mais là c'est différent, il y a réellement une communauté. Il ne s'agit plus de commenter sur un blog perso. Un jour il y aura probablement des commentaires sur mon blog, en attendant je vous renvoie donc vers cet article traitant de la nécessité des commentaires.

Un mythe s'effondre ! Vous connaissez tous Valve je pense. Peut-être certains connaissent le système de management de Valve (dont j'ai déjà parlé dans de précédents numéros) et qui me semblait intéressant voire motivant. Mais voici que quelqu'un s'élève contre ce système qui est plutôt qualifié de management masqué. Je vous laisse le lire ici : Valve's 'perfect hiring' hierarchy has 'hidden management' clique like high school. Mais finalement, existe-t-il des managements qui soient vraiment bien et sans intérêts masqués ?

Graphisme, design & co

Ok c'est pas vraiment du graphisme, ni du design, mais on va mettre ça dans le co. J'ai toujours une fascination étrange à propos des lieux abandonnés. Surtout ceux désertés en laissant tout sur place, rapidement. Oui je sais, c'est particulier. Mais si ça vous intéresse ou que vous voulez juste voir quelques belles photos, voici « 50 lieux abandonnés et villes fantômes incroyables ».

Voici deux liens vers des polices de caractères à utiliser, par exemple sur le web. L'un concernant des polices de type Stencil, l'autre des polices de type Cursive.

Comment réaliser une bonne interface utilisateur (sur le web) ? Cet article imagé tente de proposer quelques pistes, essentiellement autour de la cohérence : goodui.org

Liste des liens présentés

Avant-propos

Développement

Misc

Graphisme, design & co