dimanche 21 août 2011

lundi 15 août 2011

Langages informatique, IDEs, et liberté

Que penser des langages informatique qui nécessitent un IDE?

Je dis parfois que de tels langages sont tristement conçus, quelque part.  Je choque alors quelques informaticiens amis, qui apprécient ces langages. L'un d'entre eux me disait récemment à propos de Visual Studio que c'est un outil essentiel au développement, et qu'il est même inconcevable que quelqu'un s'en passe.

Qu'un IDE puisse donner un coup de main, ou un gros coup de main, c'est très bien. Je peux éditer Python et C dans Emacs ou Vim et réussir raisonnablement bien, ce qui n'empêche pas Wing, PyDev ou Eclipse d'améliorer, au total, les conditions et la vitesse de développement (pour être honnête, il faut quand même soustraire la lourdeur de l'ensemble des avantages).

Mais qu'un IDE soit absolument nécessaire dans la pratique d'un langage, qu'il soit inévitable en pratique, ça veut dire que c'est très mal parti, quelque part. Un langage devrait être simple, tel quel.  Bien sûr, une aide supplémentaire est toujours bienvenue, tant qu'elle demeure optionnelle.

Java sans Eclipse ou NetBeans, C# sans Visual Studio, si l'on veut rester efficace, et propre, c'est pratiquement impensable.  Ce qui m'agace, c'est qu'un IDE soit requis pour que la quantité de travail ne devienne pas vraiment déraisonnable.

Justement, c'est exactement le signe qu'il y a un problème de devis quelque part.  Je ne suis pas en train de dire que Visual Studio n'est pas utile, ou extrêmement utile, ou même merveilleux, nous sommes facilement d'accord là-dessus. Mais qu'il soit nécessaire, ça n'est pas un signe de santé pour les langages qui s'appuient dessus.  Un langage qui a besoin d'un outil pour le réparer et le rendre utilisable, est brisé quelque part, fondamentalement.

De plus, et c'est peut-être le fond du problème en ce qui me concerne, j'ai l'impression d'être captif de l'IDE.  Je tiens beaucoup à ma liberté, ou au moins, sentir que j'ai plusieurs choix.  Je n'aime pas me sentir attaché et dépendant.  Je suis prêt à accepter une certaine misère si je la choisis moi-même, bien plus que je suis prêt à me faire imposer une solution, même sous le prétexte qu'elle est confortable.

J'utilise Wing IDE pour certains de mes travaux en Python, par choix, pour faciliter certains aspects du travail collaboratif avec des confrères.  Et je l'avoue facilement, Wing est bien commode.  Mais ses bugs m'irritent un peu, et ils ne sont pas toujours facilement contournables.  Qui plus est, je dépends des gens de Wing pour les corriger, s'ils choisissent de ne pas s'en occuper, je dois alors manger ma misère.  Et pour la pleine extensibilité de Wing, il faut obtenir des licences spéciales, et une sorte d'interdiction de collaborer avec les gens qui n'ont pas acquis cette même licence spéciale.  Si j'avais plein accès au sources, je pourrais soit corriger les problèmes, soit choisir de vivre avec, mais alors, ça serait mon choix, pas celui de quelqu'un d'autre.

Évidemment, lorsque je m'éloigne d'un IDE, il faut alors que j'assemble moi-même diverses méthodes et habitudes, ce qui donne l'impression à certains que je cherche à tout refaire, et que je refuse la simplicité de l'intégration offerte.  Pourtant, j'apprécie la facilité.  Mais pour moi, la liberté passe avant la facilité.  La capacité de refaire est juste un moyen vers cette liberté, et ce moyen doit être cultivé par l'exercice, pas tout le temps bien sûr, mais au moins de temps en temps, de peur de perdre la capacité d'être libre.  Je suis paresseux comme tout le monde. Mais j'essaie quand même d'être plus courageux que paresseux…

François

mardi 21 juin 2011

Listes Twitter et élimination

De Twitter, je fais un usage modéré, irrégulier.  J'aime bien le lecteur Seesmic.  Mais parfois, je vais directement sur le site de Twitter.  C'est dans ce dernier que, tout récemment, j'ai voulu éliminer un usager de l'une de mes listes personnelles.  Avec étonnement, j'ai trouvé l'opération difficile.

La documentation de Twitter dit que la gestion des listes se fait via ce bouton:


Peut-être s'agit-il du bouton dans l'ancienne interface de Twitter?  En tous cas, je ne l'ai pas trouvé.  Il semble que le bouton à utiliser ressemble plutôt à ceci:



De plus, pour éliminer un usager d'une liste, il faut demander de l'ajouter:


Ce choix ouvre alors un sous-menu, dans lequel on doit décocher l'appartenance à l'une des listes affichées.


Je n'ai vraiment pas l'habitude de cette sorte de logique négative, rébarbative.  Comment diable les usagers ordinaires s'y retrouvent-ils?  J'imagine que la longue fréquentation des systèmes de Microsoft les habitue à ces tournures de pensées alambiquées.  N'est-ce pas dans ces systèmes que l'on doit cliquer sur Démarrer quand l'intention est d'arrêter l'ordinateur ? ☺

jeudi 16 juin 2011

Dropping ansi2knr

Stefano Lattarini just informed me that Automake is dropping ansi2knr support.  Surely no problem with me! ☺  It's even fun to see these tide waves in software…


I might be the one who introduced ansi2knr in the Makefiles of my various GNU packages, from where Automake later got many of its tricks.  Peter Deutsch was quite collaborative at modifying his ansi2knr so it suits GNU better.  Many releases were necessary to get the Makefile machinery right for everybody, it was more complex to properly support, overall, that I originally expected.

It had some use in its time.  This was before Linux, and users were fairly dependent on various vendors for operating systems, and really had little choice.  GNU was genuinely trying to help them out of their misery.  Nowadays that Linux is free and dependable, users at least have this escape route towards comfort, so in my opinion, GNU does not have to try as much as it once did.  And besides, for this particular case, the need much faded indeed !

mardi 14 juin 2011

Édition de notes Tomboy via un fureteur

J'entretiens un bon nombre de notes personnelles avec Tomboy. Il fut un temps où la grande majorité d'entre elles étaient publiquement disponibles, mais au cours du temps, j'ai fait marche arrière, et progressivement transformé l'essentiel de ces notes publiques en notes privées. De plus, certaines notes Tomboy publiques sont disparues, suite à leur intégration dans l'un ou l'autre de mes blogues.  Quant aux notes privées, plusieurs ont été refondues, partiellement ou complètement, dans WorkFlowy.  Grosso modo, j'utilise WorkFlowy pour le suivi des idées en chantier ou des actions à prendre, et garde Tomboy pour retenir l'information factuelle ou de référence.  Après toutes ses transformations, en considérant les quelques centaines de notes Tomboy qui survivent, un petit nombre (23%) sont encore visibles via mes sites Web publiés.

Toutefois, dans mes sites Web personnels en développement, l'entièreté (100%) de ces notes sont présentes.  Dans ces sites, chaque note Tomboy est assortie d'un bouton Edit durant sa conversion en HTML, bouton qui a pour fonction d'ouvrir localement la note Tomboy originale dans une autre fenêtre, indépendamment du fureteur, pour fin d'édition.  De plus, un démon, démarré en même temps que mon serveur Web privé, détecte toute modification à une note Tomboy originale, et ré-installe alors immédiatement une nouvelle version HTML de cette note modifiée.

Ces boutons Edit étaient servis sous antinode par un script .sjs (server-side JavaScript ?), mais ils étaient devenus inopérants lors de mon passage récent de antinode à Express.  Aujourd'hui, j'ai réadapté ce script écrit pour antinode en l'intégrant directement à la configuration de Express.  À ma surprise, le script a fonctionné sans modification, ou à peu près.  Je ne m'attendais pas à une telle facilité.  Quelques particularités de Express m'ont ensuite permis de le simplifier et de l'accélérer considérablement.  Intéressant et amusant, tout ça!

dimanche 5 juin 2011

De antinode à Express

Le serveur Web derrière http://pinard.progiciels-bpi.ca répond aussi pour quatorze autres sites qui m'appartiennent.  Si l'on ajoute  les versions de développement pour chacun d'entre eux chez moi, ainsi que quelques sites expérimentaux, cela m'en fait un peu plus d'une trentaine au total.  J'essaie, pour des raisons pratiques et de simplicité, d'utiliser à peu près la même technologie pour tous.  J'ignore ici quelques sites dont je m'occupe à l'occasion pour certains clients, étant donné que j'ai moins de liberté avec eux pour suivre mon inclination du moment…

Malgré que je consacre très peu de temps à l'entretien de tous ces sites Web, j'ai quand même tenté plusieurs expériences au cours des années.  Tout récemment, j'utilisais la combinaison de Node et de antinode.  Quelques essais m'avaient démontré que antinode n'a pas été ajusté pour suivre l'évolution de Node, et puisque je ne me sens ni l'énergie ni la compulsion d'entretenir ma propre version d'antinode, j'étais en quelque sorte condamné à garder une veille installation de Node autour, juste pour que mes sites continuent à être fonctionnels.

Ce matin, j'ai pris le temps de remplacer antinode par Express, et de simultanément ré-installer une version plus récente de Node.  La réunion initiale de NodeMTL, il y a une dizaine de jours, m'a fait découvrir Express; les bons commentaires que j'y ai entendus m'ont convaincu d'en faire l'essai.  De fait, j'ai trouvé Express agréable à configurer, et il m'a rapidement livré de bons résultats.  Comme je n'en utilise encore qu'une très mince partie, c'est une porte ouverte vers des développements ultérieurs que je prévois enthousiasmants.  De plus, ça me fournit un moyen (un autre !) et de futures bonnes occasions pour approfondir JavaScript, et baigner davantage dans tout le dynamisme qui l'entoure présentement.  Donc, en bref, je suis content ! ☺

dimanche 1 mai 2011

Passage à Natty Narwhal

Comme, en bout du compte, ça n'est jamais le bon moment, j'ai quand même plongé et fait le passage à Linux 11.04, Natty Narwhal, avec l'espoir que quelques irritants de la version précédente disparaissent, et profiter aussi de versions plus récentes de plusieurs logiciels. Les installations précédentes de Ubuntu se sont faites sans trop de difficultés, la confiance s'est installée, alors le risque m'a semblé acceptable.

Ça fait quand même un petit coup lorsque, en bout d'installation, l'amorce ne se fait carrément plus, ni pour Linux, ni pour Vista. Le démarrage donnant alors:

error: symbol not found: `grub_env_export'
grub rescue>


C'est dans des moments comme celui-là que je me félicite d'avoir correctement configuré le réseau de ce vieux portable qui ne me sert pratiquement jamais — puisqu'il aurait été autrement pénible de tenter de me souvenir et de m'y retrouver. J'ai ainsi pu explorer le réseau à la recherche d'une solution, sans avoir à réapprendre comment GRUB fonctionne. Ce CD de récupération, que j'ai eu la prudence de fabriquer, m'a bien servi aussi: il m'a permis d'exécuter la recette suivante:

mount /dev/sda5 /mnt
for d in dev sys proc; do
  mount -o bind /$d /mnt/$d
done
chroot /mnt
grub-install /dev/sda
update-grub


La présentation de Unity m'a hérissé et je l'ai trouvée encombrante, moi qui ai depuis longtemps l'habitude de tenir un bureau plutôt dépouillé, ou du moins, dégagé. Il suffit alors de choisir Ubuntu classique juste avant le login pour retrouver ses aises!

Il a fallu quelques autres interventions aussi:
  • Tomboy est un peu différent, et n'est plus disponible comme Applet que l'on peut directement ajouter au tableau de bord. Il a fallu que je l'ajoute explicitement aux préférences du démarrage. Son icône apparaît alors dans l'applet de notification (à ce qu'il me semble). Deux autres détails notables. D'abord, il ne semble plus possible d'épingler certaines notes dans le menu associé à l'icône. Ensuite, les barres d'ascenseur sont devenues minuscules, et déclenchent un autre petit ascenseur que l'on peut alors glisser; je vais probablement m'y habituer, mais il reste ce problème que si durant le glissement, le curseur accroche certaines régions cliquables, leur effet peut avoir lieu, inopinément.
  • Mes quelques modifications aux fichiers de configuration de Python (pour installer UTF-8 comme jeu implicite, et inclure /usr/local comme préfixe d'installation pour les nouveaux paquetages) ont été perdues durant l'installation. Heureusement, j'ai un petit script qui les refait.
  • Il m'a fallu aussi réinstaller BlueZ à partir des sources, répétant ainsi une opération récente.
  • Mon imprimante habituelle ne semble plus répondre, je m'en suis tiré en exécutant hp-setup en tant que super-usager, qui a corrigé la situation en installant un pilote pris du réseau. La seconde imprimante, qui sert aussi de digitaliseur, n'était même pas découverte par hp-setup. Mais xsane l'a trouvée, et subséquemment, je ne sais par quel miracle, elle est devenue disponible pour impression aussi.
  • Firefox 4 n'accepte plus l'extension Selenium. Il semble qu'une version de Selenium compatible avec Firefox 4 est près de voir le jour.
  • Il m'est arrivé au moins une fois que AutoKey ne fonctionne pas correctement. Un redémarrage a corrigé la situation, mais il n'en reste pas moins qu'il y a un fragilité de côté-là.
  • D'autres petites reconfigurations ont été requises du côté de Compiz, en tenant compte d'une légère ré-organisation des menus, rien de très dérangeant!
Somme toute, je suis content d'avoir fait ce passage dès maintenant. ☺