Fun Friday: what got you into programming? | Lobsters

Bien avant d’avoir mon propre site (qui a déjà 15 ans maintenant), j’étais un helpeur sur divers forums informatiques : CCM, Ubuntu, SiteDuZéro…

La section programmation de CCM était alors la seule à laquelle je n’avais encore jamais touché. C’était le seul endroit où je n’allais jamais car je n’y comprenais rien.
Je dépannais les gens sous Linux, sous Windows, avec leur problèmes d’installation de logiciels, connexions réseau, imprimantes, navigateurs, sortie son… bref tout sauf ça.

À force de tout répéter sur les forums, j’avais constitué des fiches (dans Word ou OOo) avec des réponses pratiquement toutes prêtes mais qui fonctionnaient car les gens posaient des questions identiques sans lire les postes en dessous.
Je m’étais également fait des fiches pour moi-même, pour me souvenir de quels logiciels j’installais, quelques manips je faisais quand j’installais Ubuntu, à l’époque. C’était le début de ma « Checklist » (qui me sert d’ailleurs toujours à moi plus qu’à quiconque, je pense).

Bref, un jour je voulais mettre tout ça en ligne, et faire un site personnel, comme tout le monde. J’ai donc appris les bases du HTML, puis du CSS et j’ai pu me constituer un petit site avec quelques pages.
Après j’ai commencé à partager des pages plus souvent, avec des astuces plus légères, des remarques et critiques sur des sujets plus variés, l’actualité. Bref, un blog, là aussi comme bien d’autres personnes à l’époque.

Comme éditer le HTML c’était un peu chiant tous les jours, j’ai utilisé un vieux script PHP pour tenir un blog (Blogotext), donc le projet était à l’abandon, mais qui fonctionnait, et qui avait l’avantage d’être très léger, très facile à adapter à mon site et ses pages existantes. À l’époque j’avais installé ça et je l’utilisais.

Puis je voulais ouvrir les commentaires sur le site. Sauf que Blogotext avait ce bug qui faisait que si on postait un commentaire, et qu’on rafraîchissait la page, le commentaire était reposté. Et ceci, autant de fois qu’on rechargeait la page. Il n’était pas possible d’ouvrir ça : tôt où tard, un gros malin se serait amusé à recharger la page en boucle et à poster 36 000 commentaires juste pour le plaisir d’emmerder le monde.

En regardant le code source en PHP, je retrouvais ce que j’avais appris à l’école en matière de prog : les variables, les fonctions… bref, la base. Par contre, la syntaxe PHP, le noms des fonctions internes au langage, et surtout l’usage de la langue à une application réelle (autrement plus évoluée sur du C ou du Maple en cours de Math en 2008), tout ça m’était inconnu.

Une autre difficulté est que pour le HTML, si on voit un truc sur une page web et que l’on souhaite l’étudier, on peut juste faire Ctrl+U et regarder le code source. Pour le PHP, c’est impossible : le code source n’est pas dans la page. C’est comme si on demandait à un cuisto sa recette et que d’un seul coup, il te disait « non, tu ne l’auras pas, débrouilles-toi », alors qu’avant tout le monde partageait sa recette avec le gâteau. Ici on avait juste la liste des ingrédients et le gâteau final.

Mais j’ai intégré tout ça, je me suis tout approprié et je visualisais de mieux en mieux l’enchaînement des fonctions, leur rôle. J’ai aussi très vite compris le fonctionnement de l’interaction entre le navigateur et le serveur. Non seulement le sens descendant (le serveur forge et donne une page au navigateur qui l’affiche) que dans le sens montant (le navigateur envoie un formulaire au serveur qui traite alors les données)

J’ai aussi compris pourquoi Blogotext avait ce bug des commentaires identiques : il fallait rediriger la page vers une autre page après l’envoi du commentaire. Comme ça, si on recharge cette page, c’est cette page là qui est rechargée, pas celle qui a envoyé le formulaire. J’ai donc mis ça en place en transposant le code du postage des articles (qui ne soufrait pas de ce problème) et en l’appliquant au code de postage des commentaires.
C’était mon tout premier bug-fix en conditions réelles d’un projet de programmation.

Blogotext avait plein d’autres bugs, mais ça c’était le plus évident, et comme le projet était abandonné, personne n’allait le corriger pour moi. J’étais seul : si je voulais les commentaires sur mon site, *JE* devais corriger ça.

Petit à petit, j’ai fini par modifier Blogotext et l’adapter à mes besoins. Ajouter des fonctionnalités : une page listant tous les commentaires (côté admin), une page pour uploader des images à intégrer aux articles, puis j’ai troqué le stockage XML contre du stockage SQLite, puis des #categories aux articles, puis j’ai ajouté le partage des liens (avec LinX, d’abord, un micro outil qui m’a permis de découvrir SQLite), puis un lecteur RSS…

Entre temps, le PHP et le HTML c’était fun, mais j’ai aussi peu à peu appris à jouer au Javascript, qui permet l’interaction dans le navigateur (le PHP c’était seulement côté serveur). Le JS ce sont les boutons dans un page web qui restent dans la page, dans le navigateur.

Et puis j’ai appris que le JS pouvait parler au serveur PHP pour envoyer et demander des données sans avoir à recharger ou reposter toute la page (principe de l’AJAX).

Depuis, je fais beaucoup de JS, un peu de PHP. Le tout sur des petits outils plus ou moins utiles. Mais j’ai la satisfaction d’utiliser quotidiennement les outils que j’ai moi-même soit amélioré et maintenu, soit créé de toutes pièces.
Certains de ces outils et où projets ont servis ou servent de base pour d’autres personnes ou entreprises, qui préfèrent adapter un script minimal plutôt qu’un énorme programme payant impossible à tailler sur mesure.

Je ne me dirais pas un grand programmeur, mais j’ai ce qu’il faut pour créer ce dont j’ai besoin moi-même, plus particulièrement si ça peut tenir dans une page web. Et j’ai tout appris tout seul, en bidouillant, sur plusieurs années :-)