M'enfin ?!?

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 28 février 2010

Discipline contre motivation

Comme beaucoup de personnes, il vous est arrivé d'essayer de prendre de nouvelles habitudes. Ces résolutions vous semblaient être les bonnes choses, et avec un peu de discipline, ça n'aurait pas dû être difficile de les tenir. Pourtant, au bout d'une semaine ou deux, vous constatez que c'est un échec.

Que s'est-il passé et comment faire en sorte de réussir la prochaine fois sont sûrement deux questions qui vous trottent dans la tête. Je ne prétends pas avoir toutes les réponses, mais je souhaite vous proposer une piste qui, je l'espère, pourra vous aider dans vos réflexions.

La discipline

Comme moi par le passé, vous vous êtes sûrement dit que prendre une nouvelle habitude ne devait pas être difficile. C'est juste une question de volonté et de discipline après tout. Et c'est justement là que le bât blesse.

Nous n'avons qu'une quantité très limitée de volonté que nous pouvons utiliser chaque jour. La majeure partie du temps, nous nous reposons sur des habitudes ou nous faisons des choses plaisantes qui ne demande aucune volonté. Demandez-vous combien de fois avez-vous réellement fait preuve de volonté aujourd'hui ou hier ? Pour ma part, la réponse est invariablement bien peu (trop peu).

Alors, est-on condamné à ne pouvoir faire que très peu de nouvelles choses, et à faire ça dans la douleur ? Non, non et NON ! Il existe d'autres leviers qui vous permettront d'avancer. La motivation est l'un d'eux.

La motivation

La motivation, c'est un ensemble de moyens pour vous encourager à faire une action, quand se dire que « c'est la bonne chose à faire » ne suffit plus. Ce sont les carottes pour vous faire avancer. Il existe de nombreux moyens pour se motiver, mais généralement ceux-ci rentrent dans l'un des deux thèmes suivants : apprécier l'activité en question et s'engager publiquement.

Apprécier l'activité

Il est évident que l'on aura beaucoup plus de facilités à faire une action à laquelle on prend du plaisir que si c'est une corvée. On peut ainsi chercher des éléments qui vont plaisir. Par exemple, se mettre au footing peut ne être très plaisant au début, mais si vous accompagnez votre séance de footing par votre album musical préféré sur un lecteur mp3, cela la rendra plus appréciable.

Si malgré ça, vous avez du mal à rendre l'activité elle-même agréable, vous pouvez compenser en vous offrant une récompense. Pour ma part, je suis un grand gourmand, et manger une barre céréales avant de faire du sport fait partie des choses que j'apprécie. Mettre une croix sur un Seinfeld Calendar a également un coté très gratifiant.

S'engager publiquement

L'engagement public est également un moyen très efficace pour nous aider à tenir une résolution. L'idée est que nous détestons profondément ne pas tenir nos engagements, et nous pouvons nous servir de ça pour nous mettre un peu de pression (pas trop quand même), ce qui nous forcera à agir.

Par exemple, parler à tous vos collègues de votre nouvelle résolution vous obligera à vous y tenir, car ils reviendront vers vous pour en parler. Et la crainte de la honte de ne pas avoir tenu ses engagements est une source de motivation très puissante.

Parler de sa résolution sur son blog ou sur un forum spécialisé peut également une approche très efficace. Vous vous sentirez engagé à donner régulièrement des nouvelles, et vous aurez peut-être la chance d'avoir des conseils dans les périodes difficiles.

Pour conclure, je vous encourage à essayer de trouver des éléments de motivation avant d'entreprendre une nouvelle habitude. Une méthode pour cela est le le guide pour tenir nos résolutions de nouvel an. Et si vous souhaitez creuser la question de la motivation, il existe un ebook, The essential motivation handbook, très complet sur le sujet, au prix de 15$ (soit environ 11€).

lundi 15 février 2010

Se motiver avec un Seinfeld Calendar

Comme promis, pour vous éclairer sur les ''lifehacks'', je vais donner un premier exemple : le Seinfeld Calendar.

La légende veut que ce soit Jerry Seinfeld l'inventeur de ce hack. Quand on a lui a demandé quel était son secret, il a commencé à répondre de manière plutôt banale : « Pour devenir un bon comique, il faut faire de bonnes blagues, et pour faire de bonnes blagues, il faut travailler chaque jour ». Le secret est donc de s'entrainer tous les jours.

Mais là où ça devient intéressant, c'est qu'il ne s'est pas arrêté là. Il a monté un système ingénieux pour se forcer à travailler chaque jour. Pour ça, le matériel nécessaire est réduit à un calendrier (si possible, assez grand et surtout bien visible) et à un feutre (rouge de préférence). Il explique alors que chaque jour où le travail est fait, il coche le jour sur le calendrier avec le feutre rouge. Au bout de quelques jours, les croix au feutre commencent à former une chaîne, et le but est alors de ne pas casser la chaîne : « Don't break the chain ».

Cette technique est très efficace pour se motiver, car elle nous oblige à dépasser nos excuses. Même si la journée a été difficile, on a envie de cocher sa case pour ne pas avoir à recommencer à zéro une chaîne de 10, 20 ou 30 cases. Par contre, le revers de la médaille est que si l'on rate un jour, même pour une raison valable, le risque est grand de ne pas recommencer tout de suite, voir de ne pas recommencer du tout.

Pour mettre en place cette technique, vous pouvez bien entendu utiliser le calendrier et le feutre, mais si vous pouvez également vous tourner vers une version électronique. Les sites suivants permettent de faire son Seinfeld Calendar en ligne :

Bon, ce n'est pas tout ça, mais je dois vous laisser : j'ai du travail à faire sur LinuxFr.org pour cocher ma case d'aujourd'hui.

Changement de direction pour ce blog

Comme vous avez pu le constater, ce blog est encore moins actif ces derniers temps qu'il n'a pu l'être auparavant. La raison est simple : j'écris principalement des billets techniques autour du web et du développement, or ces sujets sont également ceux que j'utilise pour publier sur le devblog d'af83, la société qui m'emploie.

Pour autant, je ne vais pas fermer ce blog. J'ai toujours des choses à dire dont je ne souhaite pas qu'elle soit associées à mon employeur. Je vais également en profiter pour diversifier ce blog. Cela s'applique dès aujourd'hui avec la création d'une nouvelle catégorie : « Lifehacks ».

Ce terme, lifehacks, est un anglicisme décrivant les astuces, techniques, outils, méthodes et habitudes qui permettent d'optimiser sa vie quotidienne (personnelle et professionnelle). Certains se sont risqués à traduire cela par « astuces de vie », mais je préfère nettement la version originale.

Les lifehacks peuvent concerner la gestion du temps, de la productivité, de la motivation, des connaissances, etc. Bref, beaucoup de choses que l'on aurait tendance à classer dans la catégorie « Développement personnel ». Je vois pourtant une différence importante entre les méthodes de développement personnel et les lifehacks. Les premières cherchent à partir de grands principes généraux, et de ces principes découlent des règles qui peuvent nous aider dans notre vie de tous les jours. C'est un tout que l'on accepte ou refuse en bloc. A l'inverse, les lifehacks sont un ensemble hétéroclites de trucs et astuces faciles à mettre en place dans lequel on peut piocher pour choisir ce qui nous conviennent le mieux.

J'espère que cette courte introduction vous donnera envie d'en savoir plus. Et comme j'ai conscience que ça doit être encore assez abstrait pour vous, je vais rapidement écrire un billet montrant un de ces lifehacks : le Seinfeld Calendar.

jeudi 11 février 2010

FrenchRails compatible Rails 3 (enfin, je crois)

Mon petit plugin french_rails est maintenant compatible avec Rails 3. La version 0.2 vient d'être publiée sur Gemcutter, et j'ai pu l'utiliser sur une application de test en Rails 3 beta. Vous devriez donc pouvoir faire de même.

mercredi 23 décembre 2009

Mise à jour de FrenchRails

J'ai un petit plugin pour Rails qui permet de localiser facilement une application Rails : FrenchRails. Pour ceux qui auraient raté l'épisode précédent, en gros, ça permet de prendre en compte le fait que 0 est un singulier en français (alors que c'est pluriel en anglais).

Je viens de mettre à jour ce plugin pour qu'il traduise également les 'new' et 'edit' qui se balladent dans les URL générées par Rails. Maintenant, ce sera 'nouveau' et 'modifier', ai-je décidé.

Enfin, tant qu'à resortir ce plugin du grenier, j'en ai également profité pour faire quelque chose que j'aurais dû faire depuis un certain temps : le passer en gem. Il est disponible sur http://gemcutter.org/gems/french_rails et peut donc s'installer d'un simple gem install french_rails.

dimanche 13 décembre 2009

Je m'interroge sur twitter

Je connais Twitter depuis longtemps, mais je n'ai jamais senti le besoin de m'y inscrire. Et pourtant, récemment, j'ai créé un compte twitter.

Pourquoi ?

Je n'ai pas eu une soudaine révélation sur twitter. Je ne vois pas d'intérêt particulier à twitter, comparé aux autres moyens de communications à ma disposition. Autant pour Facebook, je peux voir un intérêt (mais je ne suis pas prêt à accepter les atteintes à ma vie privée qui en découlerait), autant pour twitter, je reste perplexe.

Alors pourquoi me suis-je inscrit ? Principalement par curiosité. Je travaille sur ce que pourrait-être le web de demain (Nodzle), et twitter est sensé être le meilleur représentant du web temps-réel. On m'a fait remarquer que le meilleur moyen de découvrir twitter est encore de l'essayer, principe qui peut être illustré par cette citation :

Twitter is like sex. You can read all the stuff (or look at it) about sex all you want, but if you’ve never had it, you simply have no idea what it’s like.

Et alors ?

OK, j'ai donc créé un compte twitter et j'ai commencé à twitter. Mais ai-je été touché par la grâce divine et suis-je devenu un fervent défenseur du twit ?

Non, loin de là. Pour le moment, l'usage que j'en fais est très proche de l'IRC, mais avec de gros défauts :

  • je n'ai pas trouvé comment faire l'auto-complétion des nicks ou des hashtags ;
  • je ne sais pas non plus comment voir les réponses à une question intéressante posée par une personne que je suis ;
  • déjà confronté aux spams :/
  • c'est dur de relire les anciens messages...

Bref, je ne me suis pas converti à la religion twitter, mais je vais continuer à l'utiliser pour voir si mon opinion évolue.

jeudi 21 mai 2009

Annotez vos modèles

Quand je travaille sur des modèles dans Rails, j'ai souvent besoin de regarder la liste des champs de ce modèle. Vous savez, ces petites questions toutes bêtes que l'on se pose tous : c'est firstname ou first_name ? phone ou mobile ? name ou title ? description ou body ?

Pour répondre à ces questions, il faut aller chercher dans db/schema.rb, fichier que l'on a rarement sous les yeux. Mais j'ai mieux à vous proposer : Annotate. C'est un gem qui ajoute un commentaire en haut de chacun de vos modèles (et tests unitaires) avec la déclaration du modèle en question.

Voici un exemple tiré de ma réécriture de LinuxFr.org en Rails :

# == Schema Information
# Schema version: 20090120005239
#
# Table name: news
#
#  id          :integer(4)      not null, primary key
#  state       :string(255)     default("draft"), not null
#  title       :string(255)
#  body        :text
#  second_part :text
#  section_id  :integer(4)
#  created_at  :datetime
#  updated_at  :datetime
#

Pour l'utiliser, c'est on ne peut plus simple. On fait un gem install annotate pour l'installer, puis on lance annotate quand on veut mettre à jour les commentaires. Pour ma part, je fais ça après chaque rake db:migrate, mais libre à chacun de le lancer quand il le souhaite.

dimanche 17 mai 2009

Request-log-analyzer

Dans la série des outils pour Rails que j'apprécie, je vais vous parler de request-log-analyzer. Pourquoi lui ? Parce qu'il m'a rendu bien service cette semaine.

Request-log-analyser est un outil très simple qui permet d'analyser les logs de Rails pour découvrir les requêtes HTTP qui consomment du temps CPU. En pratique, ça s'installe simplement avec gem, puis on le lance pour générer un rapport (j'aime bien la version HTML) :

gem install request-log-analyzer
request-log-analyzer --output HTML --file report.html log/production.log
firefox report.html

Le rapport nous fournit un certain nombres d'informations que les hits sur chaque page, les codes HTTP renvoyés, les requêtes les plus lourdes. Pour ma part, je me sers surtout du tableau des 20 requêtes HTTP les plus longues en temps cumulé (Request duration - top 20 by cumulative time). Cela me donne une liste d'actions à bencher pour lesquelles une optimisation est toujours bonne à prendre. Je passe également un peu de temps à regarder si ces requêtes apparaissent dans les 20 requêtes les plus lourdes pour la base et les 20 requêtes avec le temps de rendering le plus long (toujours en temps cumulé). Je peux ainsi avoir une idée de ce qui prend du temps, et de valider ainsi que les résultats du bench collent avec ça. Si je vois qu'une requête HTTP passe beaucoup de temps sur la base de données, mais que les résultats du bench ne montrent pas ça, je vais probablement importer la base de données du serveur de production et l'utiliser pour refaire les benchs.

Un autre tableau intéressant est la liste des requêtes bloquantes (Process blockers (> 1 sec duration)). Si je vois des requêtes faire pas mal de hits dans cette liste, je sais qu'il va falloir les surveiller de près.

Voilà, request-log-analyzer n'est pas un outil magique. Il ne fait qu'une chose, mais il le fait bien. Et c'est très utile pour savoir par où commencer à optimiser un site.

lundi 4 mai 2009

Railroad

Je commence une série d'articles sur des outils qu'il m'arrive d'utiliser quand je fais du développement Rails et qui mériterait, à mon avis, d'être plus connu. Le premier article de la série est Railroad.

Railroad est un script Ruby qui permet de générer des graphes à partir d'une application d'une Rails, ce qui peut être très pratique pour accompagner une documentation quand on a la flemme de faire ces diagrammes soi-même. Railroad permet de générer 3 types de graphes : un pour les modèles, un pour les controlleurs et un pour les machines à états d'acts_as_state_machine. Les diagrammes sont générés au format .dot, ce qui permet d'en faire facilement des .png ou des .svg avec la suite graphviz.

L'auteur du script original ne maintient plus ce script mais on peut en trouver des forks sur Github. Je conseille la branche de David Dollar : elle fonctionne avec les dernières versions de Rails et comporte mes patchs (1 2 et 3).

En pratique, on installe le gem ddollar-railroad, on ajoute une ligne à son fichier Rakefile et roulez jeunesse :

gem install ddollar-railroad
echo "require 'railroad/tasks/diagrams' if RAILS_ENV == 'development'" >> Rakefile
rake doc:diagrams

On obtient 3 diagrammes dans doc/diagrams (à condition que graphviz soit installé). Voici, par exemple, ceux que j'obtiens pour la version Rails de LinuxFr.org :

Railroad - controllers Railroad - models Railroad - states

mercredi 18 mars 2009

Un plugin RoR nommé FrenchRails

Comme vous le savez déjà sûrement, je suis en train de re-écrire LinuxFr.org en Rails. Et quand j'ai montré où j'en étais, on m'a remonté un bug étrange : j'affiche "0 commentaires" avec un s à la fin, ce qui est grammaticalement incorrect.

<interruption culturelle> Pour ceux qui ne sont pas très calés en internationalisation, sachez que les règles qui définissent singulier et pluriel ne sont pas les mêmes selon les langues (en fait, certaines langues ont mêmes plusieurs sortes de pluriels). En particulier, il y a une différence importante entre le français et l'anglais : en français, 0 est singulier, alors qu'il est pluriel en anglais. Ruby on Rails utilisant par défaut l'anglais, on comprend mieux d'où vient le 's' à la fin de "0 commentaires". </interruption culturelle>

J'utilise l'helper pluralize, et comme Rails a intégré une gestion de l'internationalisation à la version 2.2, je pensais qu'il suffirait de déclarer la locale pour que cela marche. Hé bien, non. Première surprise : l'helper pluralize ne passe pas par la partie I18n, mais utilise une règle en dure pour savoir si un nombre est singulier ou pluriel. Bon, ce n'est pas grave, ce n'est pas ça qui va m'arrêter : un petit monkey-patching et c'est réglé.

Sauf que, deuxième surprise, cela ne marche toujours pas ! Le backend d'I18n fourni avec Rails (I18n::Backend::Simple) ne connaît que la règle pour l'anglais, et ne tient donc pas compte de la locale. Après quelques errements et expérimentations, j'ai réussi à trouver un moyen relativement simple de corriger cela (créer un backend qui hérite de I18n::Backend::Simple, avec juste la méthode pluralize redéfinie). Et là, joie, ça marche :-)

Comme tout cela m'a pris quelques heures, j'en ai fait un plugin : FrenchRails. J'espère que cela pourra servir à d'autres personnes. En tout cas, moi, je compte l'utiliser sur plusieurs projets.

Dernière chose : si vous avez des besoins plus compliqués que les miens (au hasard, gérer plusieurs langues), ne cherchez pas à utiliser ce plugin, parter plutôt sur une solution plus costaud comme Globalize2.

Mise à jour : FrenchRails est maintenant disponible en gem.

- page 1 de 5