samedi 5 septembre 2009

Bad Astronomy

Je viens de terminer la lecture du livre Bad Astronomy de Phil Plait.

Ce livre est un recueil de mythes et légendes urbaines à propos de l'astronomie, de l'exploration spatiale et de la cosmologie.

La première moitié du livre aborde des questions comme pourquoi le ciel est bleu, pourquoi les étoiles scintillent ou comment fonctionne les marées. Mais le livre n'est pas un manuel d'astronomie. C'est plutôt un livre de vulgarisation et d'éducation. Il éclaircit des conceptions fausses que plusieurs ont comme, par exemple, l'idée que l'eau des toilettes tourne dans un autre sens dans l'hémisphère sud! Il prend bien la peine d'expliquer la signification de plusieurs termes. Par exemple, il explique en détail qu'elle est la différence entre un météore, une météorite et un météoroïde, termes que l'on emploie souvent indifféremment.

La deuxième moitié attaque plusieurs croyances qui n'ont pas de fondement scientifique. Car en plus d'être un astronome, Phil Plait est aussi un sceptique. Ceux qui lisent son blog le savent très bien. Phil Plait fait la guerre à toutes les pseudo-sciences et croyances populaires comme l'astrologie, le créationnisme et les visites d'ovnis! Son livre contient donc quelques chapitres consacrés à réfuter les arguments des tenants de ces idées. Il consacre un chapitre à attaquer les arguments de ceux qui croient que l'homme n'a jamais marché sur la lune. Un autre chapitre que j'ai bien aimé est celui où il énumère le top 10 des erreurs d'astronomie que font les films de science-fiction.

En gros, j'ai aimé! Plait a un sens de l'humour qui rend certains chapitres arides plus faciles à lire. Étant moi-même convaincu de l'importance de l'éducation et de la science pour une meilleure compréhension de notre monde, ce livre s'inscrit dans ce schéma. Je le recommande à ceux qui s'intéressent à l'astronomie mais aussi à la science en générale.

samedi 25 juillet 2009

How to get ideas

J'ai toujours cru que les personnes très créatives, celles qui ont toujours de bonnes idées, sont spéciales et possèdent un talent qui n'est pas accesible au commun des mortels. Mais le livre How to get ideas m'a convaincu que ce n'est pas une question de talent particulier. N'importe qui peu devenir créatif et avoir de bonnes idées. Il s'agit d'avoir la bonne recette.

Le livre démystifie le processus de création. Il est séparé en deux parties. La première traite de l'état d'esprit qu'il faut développer pour devenir créatif. La deuxième énumère les étapes pour trouver une idée pour solutionner un problème.

Voici quelques points que j'ai retenu:
  • Une idée est un assemblage d'éléments qui à première vue n'ont rien en commun. L'idée (!) est d'arriver à combiner ces éléments pour produire quelque chose de nouveau.
  • La curiosité est une qualité essentielle pour être créatif. La personne curieuse accumule un baggage de connaissance qui servira d'éléments de base à la création d'idées nouvelles.
  • Il est rare de trouver LA bonne idée d'un coup. Il faut au contraire s'efforcer de produire une grande quantité d'idées, même farfelues. L'analyse de ces idées aidera à en trouver une qui se démarque.
  • S'exposer le plus possible aux nouveautés stimule le processus créatif. Il faut éviter de toujours faire les choses de la même façon.
  • Quand on doit solutionner un problème, il faut poser des questions. Beaucoup de questions! Il est essentiel d'en savoir le maximum sur le problème.
  • Il y a toujours une foule de solutions à un problème. Il faut juste les voir!
À la lecture du livre, on constate que l'auteur, Jack Foster, en sait beaucoup sur le sujet. Il a enseigné ces techniques pendant longtemps et possède une longue expérience dans le domaine de la publicité.

Je crois que tous devraient en bénéficier.

mardi 19 mai 2009

Clean code

Je lis présentement le livre Clean Code de Robert Martin (souvent surnommé Oncle Bob!)

Ce livre insiste sur les bonnes pratiques nécessaires pour produire du code de première qualité. Il insiste sur plusieurs principes importants et bien connus (inversion de contrôle, tests unitaires), mais un a particulièrement attiré mon attention: Single Responsability Principle, ou, traduction libre, le principe de responsabilité unique.

En gros, ce principe stipule que chaque fonction d'une classe et, à un niveau plus élévé, chaque classe d'une application doivent avoir une seule responsabilité. En suivant ce principe, on arrive à diminuer de beaucoup la taille des fonctions et des classes, ce qui les rend plus lisibles et maintenables. Ce principe permet aussi de plus facilement éliminer la duplication de code, puisque les différentes classes sont beaucoup plus faciles à réutiliser à travers l'application.

Le principe a aussi une autre conséquence intéressante: si les fonctions et les classes sont petites et focus, les modifications au code existant seront beaucoup plus rares. L'ajout de nouvelles fonctionnalités se fera la plupart du temps en ajoutant de nouvelles fonctions et de nouvelles classes. On limite ainsi de beaucoup les risques de briser quelque chose! C'est un autre principe intéressant: le Open-Closed Principle. Les applications devraient être ouvertes pour permettre facilement les ajouts mais fermées pour les modifications. En pratique, ce n'est pas toujours possible, mais c'est un principe intéressant pour produire du code de qualité.

samedi 25 avril 2009

Pour l'amélioration de mes tests unitaires

J'ai une confession à faire. Malgré que j'ai toujours su la valeur et la pertinence des tests unitaires, je dois avouer que j'ai souvent écrit des tests qui laissaient à désirer. J'ai souvent négligé le principe qui stipule qu'on doit écrire les tests avant d'écrire le code. Résultat: des tests fragiles qui ne tenaient pas la route dès qu'un changement était apporté aux classes.

Début 2009, je me suis fixé l'objectif de changer tout cela! Je suis tombé dernièrement sur le livre Test Driven de Manning et la lecture des premiers chapitres m'a particulièrement aidé! Dans ceux-ci, on nous amène à écrire un petit programme en utilisant les méthodes TDD. Le principe de base? Ces trois étapes: test, code et refactor. La technique requiert passablement de discipline. Aucune nouvelle fonctionnalité ne doit être ajoutée sans qu'un test ne soit écrit avant.

D'après l'auteur Lasse Koskela, la bonne approche consiste à écrire les tests en fonction des fonctionnalités de la classe. Ça implique que l'on teste en grande majorité du temps seulement les méthodes publiques d'une classe. Le reste de la classe sera testé indirectement. Et si on se rend compte qu'on n'arrive pas à bien tester certaines méthodes privées de la classe en ne passant que par les tests aux méthodes publiques, c'est probablement le signe que ces méthodes devraient être envoyées dans une classe à part.

Une fois le test écrit, on ajoute le code pour faire réussir le test. Il faut écrire le minimum de code pour faire fonctionner le test! Il fait combattre la tentation d'écrire du code en prévision de futures fonctionnalités. Une fois que le test passe avec le minimum de code, on passe à l'étape de refactoring. On examine le code écrit jusqu'à maintenant et on corrige les code smells, ces indicateurs que quelque chose ne va pas dans le code. Duplication, méthodes trop longues, classes trop dépendantes, tout doit y passer. Et comme on a nos tests comme filet de sécurité, on n'a pas à craindre de perdre certaines fonctionnalités. Une autre chose que j'ai trouvé aussi très
révélatrice, c'est qu'on doit se rappeler que le code de test doit lui aussi passer par la moulinette du refactoring! Ce code doit lui aussi être exempt de code smell! C'est un point important pour que les tests restent pertinents et facile à faire suivre à mesure qu'on ajoute de nouvelles fonctionnalités aux classes.

Donc pour ceux qui, comme moi, pensent qu'ils peuvent s'améliorer dans la pratique du TDD, jetez un coup d'oeil au chapitre 2 de Test Driven. Il aborde les bases du TDD et donne une bonne idée des étapes en pratique.

samedi 28 mars 2009

Le Dernier discours

Comme plusieurs, j'avais entendu parler de Randy Paush et de son Dernier discours l'année dernière. Pour ceux qui ne le connaissent pas, il était professeur à l'université américaine Carnegie Mellon. Il enseignait l'informatique, plus précisément dans le domaine de la réalité virtuelle. Randy est décédé l'été dernier des suites d'un cancer.

J'ai finalement pris le temps de visionner le Dernier discours. Dans celui-ci, Randy Paush nous explique comment il a réalisé ses rêves d'enfants et comment il a travaillé à aider d'autres à réaliser les leurs également. Loin d'être déprimé par la fatalité de son état (qu'il connaissait au moment de prononcer ce discours), il nous décrit avec enthousiasme et humour les événements importants de sa vie. Au travers son histoire, il nous partage ses valeurs, axées sur l'ardeur au travail, l'intégrité et l'optimisme. « On ne peut changer les cartes qui nous sont données, juste la façon dont on va les jouer », telle est sa maxime. Il nous partage aussi sa passion pour l'enseignement et sa carrière universitaire.

Le livre, que je l'ai lu la semaine passée, est une extension du discours. Randy élabore davantage sur les anecdotes racontées lors de ce dernier. Il prend aussi le temps de nous parler de sa famille (il était père de 3 jeunes enfants). Il nous enjoint une leçon importante: apprécier la vie et chaque instant de celle-ci. Elle peut être courte ou longue, on ne sait jamais. Il nous exhorte aussi à apprécier les gens qui nous entourent et à trouver ce qu'il y a de bien dans chacun, même si c'est parfois plus difficile avec certaines personnes!

Donc un livre émouvant, mais bien écrit, qui fait beaucoup réfléchir.

vendredi 20 mars 2009

Mes 3 outils de l'heure

Je considère que de bons outils informatiques adaptés à vos besoins sont essentiels pour être productif si vous passez vos journées à travailler avec un ordinateur. J'ai décidé de partager 3 des outils qui me sont le plus utiles dernièrement.

Evernote

En début d'année, Google a annoncé qu'il stoppait le développement du produit Google Notebook. J'utilisais ce produit depuis environ 2 ans, mais pas de façon exclusive: je sauvegardais encore des notes directement sur mon poste ou sur Google Docs. J'ai donc commencé à chercher un remplaçant. J'ai découvert Evernote grâce à Lifehacker et j'ai été immédiatement accroché! L'application web est excellente, mais c'est l'application PC que j'utilise la majorité du temps. On peut y ajouter des notes directement à partir du presse-papier ou d'une page web. Toutes les notes sont indexées ce qui rend les recherches très rapides. On peut ajouter des tags à chaque note pour une meilleure classification. Mais surtout, ce sont les raccourcis clavier que je considère très pratiques. Grâce à eux, de n'importe quelle application, on peut rapidement envoyer du contenu vers Evernote. D'autres fonctionnalités sont à signaler comme un module de capture d'écran permettant de sélectionner facilement des portions de l'écran à envoyer vers le presse-papier, un fichier ou, évidemment, Evernote. Il y a aussi un OCR qui est automatiquement exécuté quand on insère une note avec une image, permettant ainsi de retrouver du texte dans les images. Finalement, l'aspect que je trouve le plus important est que mes notes sont accessibles partout. Quand on utilise l'application PC, les notes sont automatiquement synchronisées, ce qui les rend disponibles sur tous les PC que j'utilise. Il y a une version payante qui offre davantage d'options, mais la version gratuite me convient très bien jusqu'à maintenant.

CLCL

CLCL est un outil qui me permet de sauvegarder plus d'un élément à la fois dans le presse-papier. Ça peut paraître banal, mais je ne peux plus m'en passer! Par exemple, si je dois faire du copier-coller de plusieurs éléments, au lieu de me promener continuellement entre la source et la destination, je vais une fois à la source copier tous les éléments que j'ai besoin, et quand je retourne à l'application où je veux coller, tout est dans le presse-papier. Aussi, ça me permet de rendre des valeurs que je colle fréquemment toujours disponibles. Je considère que c'est une des applications qui me fait gagner le plus de temps durant une journée de travail.

Launchy

Un autre outil dont je ne peux absolument plus me passer! Launchy est un petit programme permettant de démarrer d'autres applications. On appuie sur Alt+Espace (configurable) et une petite boîte apparaît qui permet d'écrire le nom de l'application que l'on veut démarrer. Mais en fait, pas besoin de taper le nom au complet, car dès que Launchy comprend quelle application vous voulez (souvent après seulement une lettre), l'icône de l'application apparaît à la droite de la boîte. À ce moment, vous pouvez appuyer sur Enter et le programme sera lancé. C'est fou le temps qu'on sauve ainsi! Je me suis débarrassé de ma liste d'icônes en bas de l'écran, ce qui sauve aussi de l'espace. On peut également passer des paramètres au programme à exécuter. Launchy permet aussi de faire des recherches sur Google (ou un autre moteur de recherche). En effet, si vous tapez du texte que Launchy ne peut associer à un nom de programme, au moment où vous appuyez sur Enter, Launchy va lancer votre navigateur avec le texte de la boîte en recherche sur Google. On peut aussi s'en servir comme calculatrice et pour chercher des mots dans un dictionnaire. Plus besoin maintenant de quitter les mains du clavier pour prendre la souris quand on veut démarrer une application!

N'hésitez-pas à me faire part de vos outils favoris si vous le voulez!

mercredi 11 mars 2009

Un peu de fiction cette année...

Je dois avouer que je ne suis pas un grand lecteur de fiction (pas dans le sens de science-fiction mais dans le sens de fictif). Adolescent, j'en lisais beaucoup, mais depuis quelques années, j'ai préféré lire des livres de type documentaire (en anglais non-fiction). Mais après avoir lu, à quelques reprises, des remarques à propos de l'intérêt de lire davantage de fiction, je me suis fixé l'objectif d'en lire un peu plus cette année.

Donc comme premier roman de l'année, j'ai lu L'homme qui rétrécit de Richard Matheson. Je suis tombé sur ce livre un peu par hasard à la bibliothèque, ayant été intrigué par la quatrième de couverture. Après quelques recherches, je me suis aperçu que ce livre est un classique de science-fiction et son auteur est un des très prolifiques du genre. Un film basé sur le livre a même été fait dans les années 50.

En gros, j'ai bien aimé le livre. L'intrigue est bien faite et le style est tout à fait intéressant. L'idée d'un homme qui rétrécit jusqu'à devenir de la taille d'une araignée est assez originale! De plus, le livre aborde les thèmes de la survie quotidienne et de l'attente de la mort avec des idées qui porte à réfléchir. Une de ces idées est que la vie nous réserve toujours des surprises, malgré les changements inévitables qu'elle apporte.

Pas mal pour mon premier roman de l'année!