tag:blogger.com,1999:blog-16499958167639217922024-03-19T05:48:18.002-07:00Life in 2^64 colorsEric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-1649995816763921792.post-26853265691092077902012-05-16T07:23:00.001-07:002012-05-16T07:23:49.489-07:00Bisecting pathological code with Git<br />
<span style="font-family: 'Trebuchet MS', sans-serif;">Sometimes, you end up with a bug in the code base and have no clue</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">where that bug was introduced...</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">Git has a "bisect" functionality that helps you determine which commit</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">introduced the pathology.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">Once you've found where the problem lies, then Git can't replace your</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">worthy talent to fix it in the most elegant way human can think</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">of. Hey, your genius can't be cloned into a program (yet).</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">So here are the steps to follow when trying to use "git bisect" to</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">isolate the faulty commit that is responsible for breaking the feature</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">you've put so much time and effort implementing.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<h2>
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">Using Git to help you</span></h2>
<span style="font-family: 'Trebuchet MS', sans-serif;">Now you wonder how Git can help you isolate the faulty commit, the</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">all-evil one that brought your program in regression? Here you go...</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<h3>
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">First step</span></h3>
<span style="font-family: 'Trebuchet MS', sans-serif;">Make sure you have a way, ideally systematic (read programmatic) to</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">make checks on the expected results. Having a script or a</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">semi-automatic way of proceeding might be very useful since you want</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">to have reproducible results easily, painlessly, reproduce these</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">results a given number of times.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">The theory of complexity says that if you have N items among which to</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">proceed with a binary search, then you have roughly ceiling(log(N))</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">steps towards finding what you're looking for.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">In practice, this may lead to about 10 iterations. So if you're as</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">lazy as I am, you'll want to automate the checking from iteration to</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">iteration.</span><br />
<h3>
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">Second step</span></h3>
<span style="font-family: 'Trebuchet MS', sans-serif;">To start the bisection search, and it's really a binary search among a</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">set of commits, you need to identify two edge commits, i.e. one where</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">it fails (usually the "HEAD" of the branch you're working on) and one</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">where the feature was working fine. These are the boundaries within</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">which the binary search will be made.</span><br />
<h3>
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">Third step</span></h3>
<span style="font-family: 'Trebuchet MS', sans-serif;">Now you can start using Git for the search. </span><span style="font-family: 'Trebuchet MS', sans-serif;">It can be initiated using the following command:</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="color: blue; font-family: 'Trebuchet MS', sans-serif;">git bisect start</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">You have to tell bisect what are the boundaries of the search. </span><span style="font-family: 'Trebuchet MS', sans-serif;">You indicate the commit that is faulty by issuing the following command:</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="color: blue; font-family: 'Trebuchet MS', sans-serif;">git bisect bad <commit hash=""></commit></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">Leaving the commit hash empty will tell Git to use the HEAD.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">You indicate the commit where the functionality is working fine by</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">issuing the following </span><span style="font-family: 'Trebuchet MS', sans-serif;">command: </span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="color: blue; font-family: 'Trebuchet MS', sans-serif;">git bisect good <commit hash=""></commit></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">From now on, Git will proceed by identifying the median commit in the</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">search space, check it out and let you proceed with the testing to</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">identify if the functionality is good/bad.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">You can tell Git about that by issuing</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="color: blue; font-family: 'Trebuchet MS', sans-serif;">git bisect good</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">or</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="color: blue; font-family: 'Trebuchet MS', sans-serif;">git bisect bad</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">accordingly.</span><br />
<h3>
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">Final step</span></h3>
<span style="font-family: 'Trebuchet MS', sans-serif;">Once you're done, you can stop the "bisect" functionality with this</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">command:</span><br />
<span style="color: blue; font-family: 'Trebuchet MS', sans-serif;">git bisect reset</span><br />
<h2>
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">Further readings</span></h2>
<span style="font-family: 'Trebuchet MS', sans-serif;">You can see these web pages for further details:</span><br />
<br />
<ul>
<li><span style="font-family: 'Trebuchet MS', sans-serif;">http://git-scm.com/book/en/Git-Tools-Debugging-with-Git#Binary-Search </span></li>
<li><span style="font-family: 'Trebuchet MS', sans-serif;">http://webchick.net/node/99 </span></li>
</ul>
<br />
<div>
<br /></div>Eric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com0tag:blogger.com,1999:blog-1649995816763921792.post-84010332748352724302012-05-08T10:49:00.000-07:002012-05-08T10:49:05.740-07:00La grève étudiante au Québec<span id="internal-source-marker_0.9453328810632229"><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Voici mon point de vue sur la grève étudiante au Québec.</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Ma position: en </span><span style="font-family: Arial; font-size: 15px; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">faveur</span><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"> de la gratuité scolaire</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Le principe d’utilisateur-payeur ne s’applique que sur certains concept au Québec. Par exemple, le domaine de la santé. Il est clair que mes impôts ne varient pas en fonction du nombre de visites à l’hôpital que je suis en mesure de faire au courant d’une année. C’est un choix de société qui implique que nous payons, tous ensemble, afin que les services soient offerts à tous. Aussi, les voies publiques sont payées non pas en fonction de l’utilisation que nous en faisons: est-ce que je paie à chaque fois et seulement pour les quelques fois que je passe sur le pont Champlain? Non. Est-ce que je paie à chaque fois que j’emprunte l’échangeur Turcot? Non. Ces infrastructures sont là et elles sont disponibles à notre société.</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Les coûts des études supérieures, tant au niveau collégial qu’universitaire, peuvent être contrôlés en commençant tout d’abord avec le contrôle à l’accès selon le mérite. Durant mes études, j’ai pû cotoyer des étudiants dont les compétences, et on parle bien de compétences lorsqu’on fait des études supérieures, étaient en deçà de ce qui était attendu d’un étudiant universitaire. Par exemple, une étudiante en administration option comptabilité ne se souvenait pas du résultat de 3 x 8. Par exemple, les étudiants qui ne savent même pas comment conjuguer le verbe être convenablement. Il est clair que le niveau des étudiants universitaires n’est pas celui qui devrait être. On souhaite que l’éducation soit accessible à tous mais on devrait plutôt penser qu’il devrait être accessible au mérite. Par exemple, des directeurs au sein de grosses entreprises qui ne sont même pas capables de faire une phrase sujet, verbe, complément durant un exposé oral. On pourrait ainsi éviter d’avoir trop de diplômés qui sont incompétents, ce dont j’ai trop souvent eu l’occasion de croiser dans mon parcourt professionnel, et redonner aux diplômes la valeur qui leur est dûe.</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Et les universités devraient peut-être coûter plus cher aux étudiants étrangers. Si les frais de scolarité pour les étudiants québécois sont gratuits, ce serait parce que c’est un service qu’on a décidé de s’offrir. Tout comme l’assurance-maladie. Et les étudiants étrangers devraient payer plus cher que ce qu’il leur en coûte actuellement. Au même titre que les malades étrangers doivent payer davantage pour les frais médicaux, même s’ils ne payent pas pour passer sur le pont Champlain, Laviolette ou prendre l’autoroute métropolitaine.</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Est-ce que les universités dépensent trop peu judicieusement? Bien sûr. Moi-même, ne suis pas irréprochable dans ma façon de gérer mon budget domestique qui est beaucoup moins complexe et géré seulement par moi et ma conjointe. Mais on ne parle pas ici de budget de fonds publics mais bien de mes fonds personnels. Et mes quelques inepties budgétaires n’affectent en rien le bien commun.</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Maintenant, on peut se questionner sur le déroulement de la grève et de la manière dont ceci a été géré de part et d’autre. Mais ce n’est pas là le débat.</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Est-ce que les étudiants ont mal géré leur processus de grève et leurs négotiations? Bien sûr. J’ai été heureux de voir que des représentants syndicaux se sont portés volontaires pour aider au processus de négociations entre le gouvernement et les étudiants. Et j’aime à penser que leurs conseils ont été bien reçus.</span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="font-family: Arial; font-size: 15px; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;">Est-ce que le gouvernement a mal géré la situation? Bien évidemment et de façon lamentable à mon avis. Érudits aux stratégies de la négociation, ils ont manqué de respect envers la communauté étudiante, envers la société au sens large. Étant donné sa position de pouvoir et son rôle social, le gouverment est largement à blâmer dans toute cette histoire: il a la responsabilité de s’assurer que l’ordre social est maintenu. Bien sûr, il a été clair que les enjeux électoraux sont prédominents pour le gouvernement Charest. Et il est aussi clair qu’il a été une de ses priorités de se démarquer favorablement auprès du public, surtout lorsque de fortes (et très nauséabondes) allégations de corruption pèsent sur lui.</span></span>Eric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com1tag:blogger.com,1999:blog-1649995816763921792.post-88799604154628107322011-07-22T06:58:00.000-07:002011-07-22T07:07:49.015-07:00Verify the integrity of a file before / after downloadSometimes, transfering a file from one place to another can cause damage to the file. And this damage can be subtle enough that it seems fine but the data it contains is just slightly corrupted.<br /><br />One rather simple way to perform a check is by computing a checksum on this file. An old checksum algorithm is <a href="http://en.wikipedia.org/wiki/MD5">MD5</a> and a more recent one is <a href="http://en.wikipedia.org/wiki/SHA-1">SHA1</a>.<br /><br />Let's suppose you would like to compute a hash key for the file "pet_names.txt" you would like to make available for downloading. The following line shows how to compute its hash key on the host:<br /><br /><span class="Apple-style-span" >user@boing:~$ sha1sum pet_names.txt > pet_sum.txt</span><br /><br />Once downloaded, provided you have the file which encloses the sha1 hash key, you can simply check the integrity of the file like this:<br /><br /><span class="Apple-style-span" >user@boing:~$ sha1sum -c pet_sum.txt</span><br /><br />Proceeding with MD5 hash key is done in a very similar way; just change sha1sum by md5sum and you're all set!<br /><br />Hope this may be usefull.Eric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com0tag:blogger.com,1999:blog-1649995816763921792.post-163939892984484472011-07-05T19:01:00.001-07:002012-02-20T19:34:24.721-08:00D'un Ubuntu vers un autre<span class="Apple-style-span"> Cela fait maintenant environ 3 ans que j'ai installé Kubuntu 8.04 LTS (long term support) sur mon ordinateur à la maison. J'ai bien tenté de faire des mises-à-jour de distribution avec "</span><span class="Apple-style-span">sudo apt-dist upgrade</span><span class="Apple-style-span">" mais disons que le résultat n'est pas très concluant. On dirait qu'une partie a été mise à jour alors que le reste ne est resté intact. Ce n'est pas exactement ce que j'avais en tête au moment de lancer la mise-à-jour...</span><br />
Comme une version de Ubuntu 10.04 LTS est maintenant disponible (depuis un moment déjà...), je pense à ré-installer cette version par-dessus l'ancienne. Mais avant toute chose, voici quelques petites choses que j'ai faites qui pourraient vous simplifier la vie:<br />
<div>
<ol>
<li><span class="Apple-style-span">Faire une sauvegarde de son répertoire "</span><span class="Apple-style-span">/home/<usager></usager></span><span class="Apple-style-span">";</span></li>
<li><span class="Apple-style-span">faire une sauvegarde de cette sauvegarde;</span></li>
<li><span class="Apple-style-span">faire une sauvegarde des configurations importantes (sécurisation des connexions ssh faites de l'extérieur, script de mise à jour de l'adresse IP dynamique DynDNS au démarrage de l'appareil, etc.)</span></li>
</ol>
<div>
<span class="Apple-style-span"> Ensuite, on peut passer aux choses sérieuses.</span></div>
<div>
<b><span class="Apple-style-span">Sauvegarde de répertoire </span><span class="Apple-style-span">/home/<usager></usager></span></b></div>
<div>
On peut procéder avec la ligne de commande. Deux approches sont principalement utilisées pour effectuer une sauvegarde:</div>
<div>
<ol>
<li><span class="Apple-style-span"><b>tar</b></span><span class="Apple-style-span">: créer une "tar-ball" qui comporte tout le dossier </span><span class="Apple-style-span">/home/<usager></usager></span><span class="Apple-style-span">. Mais après vérifications, cette approche est un peu trop pénible. Après plusieurs heures de calculs, l'opération ne s'est pas avérée complète...</span></li>
<li><span class="Apple-style-span"><b>rsync</b></span><span class="Apple-style-span">: créer un clone d'un répertoire vers une destination. </span><span class="Apple-style-span">rsync</span><span class="Apple-style-span"> est utilisé pour faire du "remote synchronisation" de fichiers. La commande utilisées est la suivante: </span></li>
</ol>
<span class="Apple-style-span"></span><br />
<div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoNj-5X773gFPmB4BmD0MmtfnhHiJUVOc1qfbhiyZdwHKVb3PunR0KNI5MNuFilAVKg8ksz3ZlMbLxPWvWk3N2-ob0Fj6YUKYgXhFlXM6tTydRywXps9r92VxvjSTVMJJ95R3FsT9MMBlN/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><span class="Apple-style-span"><code style="color: black; word-wrap: normal;"> rsync -avxP /home/you /mnt/nfs/newhome </code></span></pre>
</div>
<code style="color: black; word-wrap: normal;"><span class="Apple-style-span" style="font-family: verdana;"></span></code></div>
<div>
<span class="Apple-style-span"> Ce qu'il y a de bien avec l'option 'P', c'est que </span><span class="Apple-style-span">rsync</span><span class="Apple-style-span"> affiche un état de la progression; copier les données peut tout de même être assez long et nous évite de penser que l'opération est figée indéfiniment...</span></div>
<div>
<span class="Apple-style-span"> On peut aussi procéder avec l'utilisation d'un <a href="https://wiki.ubuntu.com/UbuntuHomeBackup">outil graphique</a> (GUI) qui réalise exactement la même chose que </span><span class="Apple-style-span">rsync</span><span class="Apple-style-span"> mais pour ceux qui sont plus confiant avec une souris qu'un clavier. Sur mon système Ubuntu, on peut accéder à l'outil en choisissant le menu Système > Administration > File Backup Manager.</span></div>
<div>
<span class="Apple-style-span"> Mais rien de tel qu'un peu de clavier pour se sentir en contrôle!</span></div>
</div>Eric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com0tag:blogger.com,1999:blog-1649995816763921792.post-331337355127606242010-12-03T19:05:00.001-08:002011-07-12T12:05:15.639-07:00Agile... ou pasNous sommes dans une époque où être dans un environnement de développement de logiciel de type "<a href="http://fr.wikipedia.org/wiki/M%C3%A9thode_agile">Agile</a>" est un mot magique, comme les expressions "lean manufacturing" ou "just in time" le sont dans le domaine de la production, par exemple. C'est <span style="font-style:italic;">tendance</span>, comme on le dit dans les émissions télé qui transforment un salon grotesque en un salon à la mode mais qui deviendra aussi grotesque dans quelques années.<br /><br /> Être "Agile" est un concept qui met l'emphase sur le fait que le développement de logiciel doit pouvoir s'adapter aux besoins des clients. Ces besoins sont complexes et peuvent parfois mal se déclamer de manière succinte; ils sont clarifiés au fur et à mesure qu'un logiciel se développe, se précise. L'esprit d'équipe est au coeur des méthodes agiles: <a href="http://fr.wikipedia.org/wiki/Scrum_(m%C3%A9thode)">scrum</a> (inspirée du rugby) et la méthode XP (<a href="http://fr.wikipedia.org/wiki/Extreme_programming">Extreme programming</a>) entre autres. Tout cela est louable et a prouvé ses mérites. Mais ce n'est qu'un concept cependant...<br /><br /> Dans certains cas, c'est une raison à portée de la main qui vise à justifier le fait que les documents nécessaires dans le contexte de développement logiciel ne sont pas maintenus ou simplement produits.<br /><br /> Par opposition à Agile, il y a la méthode "<a href="http://en.wikipedia.org/wiki/Waterfall_model">waterfall</a>" (chute d'eau, en anglais) qui dit que toute la conception, l'analyse, la documentation, doivent être produites avant même de taper la plus solitaire ligne de code. C'est une autre extrême et il y a un juste milieu entre les deux.<br /><br /> Personnellement, j'ai travaillé dans une entreprise qui se réclamait de suivre des méthodes de développement dites Agile. Jamais je n'ai vu une entreprise où la documentation était aussi bâclée. J'ai même eu à consulter de la documentation sur des modules existants lors de mon entrée en fonction dans la compagnie. Plusieurs phrases étaient même incomplètes sur l'un de ces documents, pourtant enregistré comme version officielle dans le système de documentation ISO. Preuve que ce ne sont pas là des gages de qualité...<br /><br /> Par opposition, j'ai travaillé dans une entreprise qui se dit ne pas suivre les méthodes Agiles. Pourquoi? Tout d'abord pour des raisons historiques: cette entreprise a commencé à développer du code il y a environ quinze ans. À ce moment, les méthodes Agiles n'étaient pas <span style="font-style:italic;">tendance</span>.<br /><br /> Ensuite, il y a des contraintes de respect de budget: les clients s'attendent à payer un certain prix, pré-déterminé, pour une modification à du code existant ou des nouvelles fonctionnalités. Pour évaluer convenablement ces coûts, il faut qu'une analyse soit faite au préalable afin de déterminer les embûches potentielles, les implications, les tests à effectuer, la traduction de certaines informations, etc. Mais Être Agile rend cette évaluation plutôt difficile, du moins du point de vue de la première entreprises décrite ci-haut, car<br /><br />1) on ne peut se fier à documentation existante: on répète les erreurs déjà observées mais dont les solutions sont non-documentées.<br /><br />2) on néglige l'aspect analyse du travail et on s'engage sur un terrain inconnu.<br /><br />Notons que la mauvaise documentation peut être compensée par la formation croisée: au lieu de consigner l'information dans des documents, on la consigne dans le savoir collectif. Mais une entreprise qui se dit Agile souhaite réduire ses coûts. Et si elle mets de côté la production de documentation sur le code existant (mettons de côté les documents d'analyse pour l'instant), alors il y a fort à penser que les ressources humaines sont limitées...<br /><br />Il faut se méfier de méthodes "à la mode"; elles peuvent représenter plusieurs aspects qui sont intéressants mais qui tentent de cacher l'essentiel. Dans le cas présent, il faut produire du logiciel. Le lecteur intrigué pourra lire l'essai de Paul Graham intitulé <a href="http://www.paulgraham.com/icad.html">The Revenge of the Nerds</a> qui parle aussi du problème de langages de programmation qui sont "à la mode".Eric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com0tag:blogger.com,1999:blog-1649995816763921792.post-25834229463658706402009-05-21T06:59:00.000-07:002010-08-05T09:48:20.550-07:00Ideas are going in smoke...Remember my post about good ideas in marketing? Well, there is a different idea or "concept" which did not produce the desired effects...<br /><br />The <a HREF="http://www.thestar.com/article/636701">The Vancouver Olympic torch</a> was designed to inspire "skating", "skiing" and other cool stuff related to Olympic winter games to be held at Vancouver in 2010.<br /><br />Unfortunately, its inspiration is more alike what Micheal Phelps and Ross Rebagliati were preaching by example in smoking drugs.<br /><br />Anyways, please read this <a HREF="http://www.thestar.com/article/636701">article</A> for more information (and a picture of the torch!).<br /><br />- EricEric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com0tag:blogger.com,1999:blog-1649995816763921792.post-64352906803089102009-05-04T21:24:00.000-07:002009-05-04T21:24:00.160-07:00When "security" does not mean "security for long"...According to this <a href="http://www.h-online.com/security/news/print/87889">article</a>, it seems like WEP secured WiFi networks are not so secure at all... finally.<br /><br />Most security mechanisms are safe until they are not safe anymore. But for the time being, one should rely on WPA2 for securing a WiFi network. Even more specifically at home.<br /><br />I remember commuting by train with a laptop on my knees, trying to fix a bug in my source code. I did not notice but found my WiFi antenna was on. I was impressed to see so many WiFi networks popping-up on my radar screen as the train was rolling towards downtown. I would say about 50% of the networks were <span style="font-weight:bold;">not secured at all</span>.<br /><br />Later on, I will try to tell more about this, even if I am not a network specialist. But for now, I just wanted to point this out.<br /><br />Be told.<br /><br />- EricEric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com0tag:blogger.com,1999:blog-1649995816763921792.post-72301567146782338952009-05-01T07:32:00.000-07:002009-05-01T07:37:06.717-07:00Advertisement - when brilliant ideas ariseMany times, the advertisement world is using easy, deja-vu and old recipes when comes the time to design an ad campaing.<br /><br />In some cases, the brilliant ideas of Men can be observed and it gives very interesting events.<br /><br />Such an interesting event happened in the Montreal area (province of Quebec, Canada) on the last week of April, 2009.<br /><br />Please, have a look and stop reading me at this point.<br /><br /><span style=";font-family:Arial;font-size:100%;" ><a href="http://technaute.cyberpresse.ca/nouvelles/telecoms-et-mobilite/200905/01/01-852240-pont-jacques-cartier-rona-utilise-une-pub-dipod.php" target="_blank">http://technaute.cyberpresse.<wbr>ca/nouvelles/telecoms-et-<wbr>mobilite/200905/01/01-852240-<wbr>pont-jacques-cartier-rona-<wbr>utilise-une-pub-dipod.php</a></span>Eric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com0tag:blogger.com,1999:blog-1649995816763921792.post-48581538582215125522009-04-14T09:23:00.000-07:002009-04-14T09:24:37.764-07:00Are the cell phones comany asking for too much?<div class="post-body entry-content"> Accidentally, when looking for a contact at Verizon for a satellite dish that would enable me to download weather data, I've found a strange article.<br /><br />A former Verizon representative was somehow frustrated of his old job, probably due to too much pression, and met a journalist for telling how to get more from a cell phone company, namely Verizon Wireless.<br /><br />This company does not run any business in province of Quebec (Canada) but, still, this is more-than-interesting.<br /><br />Follow this link: <a href="http://consumerist.com/consumer/verizon/8-confessions-of-a-former-verizon-sales-rep-241665.php" target="_blank">http://consumerist.com/<wbr>consumer/<span class="il">verizon</span>/8-<wbr>confessions-of-a-former-<wbr><span class="il">verizon</span>-sales-rep-241665.php</a><br /><br />Enjoy!<br /></div>Eric Parenthttp://www.blogger.com/profile/15023848697868333997noreply@blogger.com0