AngeZanetti.com

Internet et ses usages, développement Web et humeurs diverses

Page 2 of 41

Ce que change vraiment Internet

Sur ce blog je parle beaucoup de révolution des méthodes de travail, et même plus généralement de la “révolution Internet”

Les impacts sur notre société de l’arrivée d’internet sont nombreux. A tel que c’est complexe à expliquer à un novice. Surtout en 15min.

Mais ce n’est pas le cas de ce TED talk de Joi Ito, en moins de 20 minutes il explique brillamment quel bouleversement énorme est entrain de se produire et pouruoi nous devons laisser tomber nos veilles méthodes “B.I.” !

Non, ne faites pas de nos enfants des développeurs

Depuis quelques mois on parle d’apprendre à coder aux enfants comme une solution aux bouleversements d’internet. Dernièrement il y a encore eu un article dans les Echos en ce sens.

Je ne suis pas un expert de l’éducation mais j’ai vraiment l’impression que ce discours, souvent servi avec un arrière fond économique, se trompe de combat, je m’explique:

La thèse soutenue par les défenseurs du “code à l’école” est relativement simple:

Notre futur sera rempli de machines, or les machines se programment donc il faut savoir programmer.

L’idée est séduisante, mais comme beaucoup de sophismes la simplicité cache une réalité différente.

Enlever la “peur” du code

Faire de nos enfants des développeurs est un erreur.

Évidemment, le fait que rien ne soit enseigné à l’école en terme de programmation informatique est une erreur. Il faut que nos enfants trifouillent les machines, jouent avec, ne serait-ce que pour enlever la peur de la ligne de code qui est souvent un frein à la compréhension de l’informatique.

Les codinggouter font ça très bien, l’école devrait généraliser ce genre d’initiative, personne n’en doute. Il est important que les citoyens de demain comprennent globalement comment marchent les machines et ne crois plus, comme beaucoup de la génération X, que c’est “magique”

Ceci dit, développeur est un métier un peu plus complexe que seulement “pisser du code“. Se mettre en tête qu’enseigner la programmation en dans le cursus des élèves fera exploser le nombre de développeurs est une erreur. Simplement prenons l’exemple des maths, nous en avons tous fait pendant années, vous connaissez des mathématiciens? Personnellement, pas un seul. Par contre des gens qui utilisent les maths dans leur boulot ou dans leur vie de tous les jours j’en connais un paquet !

L’informatique amène une problématique du même ordre, nous en avons besoin tous les jours, et de plus en plus. Il faut donc être capable de comprendre, et maîtriser les concepts de base.

(D’ailleurs il est hallucinant que personne ne nous apprenne jamais à taper sur un clavier par exemple)

L’enjeu n’est pas sur le code mais sur le réseau

Sans vouloir vexer personne, ce débat de l’enseignement de la programmation à l’école est un combat du XXème sciècle, pas du XXIè.

La vrai révolution de ces dernières années ce n’est pas l’explosion du nombre des PCs, c’est l’arrivée massive dans nos vies du réseau mondial.

Internet est entrain de bouleverser le monde, nos quotidiens, et de remettre tout ce qui fait nos sociétés à plat.

Le travail change, la politique change, nos vies “privées” sont bouleversées et pour la première fois depuis que l’homme existe n’importe quel individu peut parler avec le monde entier.

Alors, oui, c’est vrai, Internet c’est peuplé de machines. C’est un protocole qui permet de faire discuter des machines. Savoir comment les machines discutent aide à comprendre notre monde mais l’enjeu est ailleurs.

Apprendre à apprivoiser les Internets

Savoir coder est indispensable, de même que savoir nager.

Il est devenu indispensable de savoir taper une ou deux lignes de code, et bien pratique de savoir aligner deux trois lignes d’HTML ou de PHP. L’école devrait nous apprendre ça, c’est vrai

Mais elle devrait surtout nous apprendre a parler en public, à écrire pour être lu par nos concitoyens. L’école devrait apprendre à nos enfants comment gérer notre liberté d’expression qui est réellement effective que depuis qu’internet existe.

Elle devrait nous apprendre à gérer nos traces numériques. L’arrivée du big data et les enjeux sur notre vie privée devrait être enseigné à l’école, le bouleversement de nos politiques devrait être enseigné à l’école, etc …

Et, contrairement à ce qui est dit un peu partout, pas par des profs de maths ou de physique, c’est de profs d’histoire, de philo et de français dont on a besoin.

 

 

 

Silex un framework minimaliste PHP que vous devriez tester

Silex est un micro framework édité par SensioLabs, la société qui édite le fameux framework Symfony.

Un micro Framework

Silex est micro, vraiment micro. Même l’installation tiens en deux lignes:

$ curl -sS https://getcomposer.org/installer | php
$ composer.phar install

Une fois ces deux lignes exécutées vous vous trouvez avec:

  • un répertoire vendor qui embarque Pimple, une librairie pour l’injection de dépendances et les modules de gestion HTTP de Symfony ( pour gérer les routes, les requêtes etc..)
  • un répertoire web dans lequel se trouve un fichier index contenant toute voter application (rien pour le moment)
  • et un Composer pour installer en deux coups de cuillère à pot n’importe quelle librairie super utile.
  • et… c’est tout.

Ça ne fait pas lourd, surtout quand on vient de Symfony. Mais quand on y réfléchi deux minutes avec juste ces trois éléments on peut faire beaucoup de choses.

With great power, comes great responsibility

L’architecture de base, celle que je viens de décrire est suffisante pour des petits prototypes, pour tester SIlex ou pour monter votre blog. Mais rapidement, mettre toute vote application dans index.php, voire dans le répertoire web ça devient gênant. C’est pourtant ce que vous trouverez en majorité dans les tutos sur le web.

Si votre projet est fait pour prendre de l’ampleur, pour être maintenu dans le temps par plusieurs personnes il va falloir rendre les choses un peu plus structurées.

Comme Silex n’impose rien, le développeur à le choix. Pour partir sur de bonnes bases je vous propose de partir sur le Skeleton proposé sur Github par SensioLabs: https://github.com/silexphp/Silex-Skeleton

Ça permet de découpler le cœur de l’application du modèle MVC, de séparer les parties publiques et privées. Vous noterez au passage que le composer.json de cet exemple c’est pas mal étoffé et que l’on retrouve des outils Symfony comme Twig ou la console.

L’idée n’est peut être pas pour vous de prendre tout le skeleton, mais en tout cas de s’en inspirer et monter une vraie structure compréhensible et maintenable dans le temps.

Pourquoi pas Symfony ?

J’utilise actuellement Silex parce que le projet que j’ai repris était en Silex, je n’ai pas eu le choix. Cependant je me rends à l’utilisation que Silex peut être une bonne option dans plusieurs cas :

  • Vous voulez monter en compétences sur du PHP objet, savoir vraiment fonctionne des gros framework comme Symfony. Silex est beaucoup plus bas niveau que son cousin, il vous permet de vraiment mettre les mains dans le cambouis, de comprendre comment les choses fonctionnent.
  • Vous avez du code legacy dégueu et vous voulez migrer petit à petit vers quelque chose de plus propre. C’est le cas pour mon projet. 30% du code est horrible en legacy, 30% est sur du Silex mais en mode “Tout dans le index.php” et les derniers 30% ont été codés dans les derniers mois avec plus ou moins le skeleton ci dessus. Silex fonctionne très bien dans cette configuration et nous permet de migrer controlleur par controlleur notre code.
  • Vous êtes un ayatollah de la philosophie KISS, vous ne voulez installer que ce dont vous avez besoin et ne pas avoir un prjet qui finit par embarquer des milliers de lignes de codes qui ne vous serviront jamais.

Pour être honnête, pour des gros projets, des projets à longue durée de vie je vous conseille plutôt de partir sur du Symfony, la doc est mille fois plus abondante,  la structure est fixe et donc l’effort de maintenance et d’évolution sera beaucoup moins important.

Pour le cas d’une migration lente par contre je trouve que Silex est adapté si on part sur de bonnes bases.

Dans tous les cas, Silex vaut le coup d’oeil, au moins pour un side-project. On apprends beaucoup de choses et le chan IRC dédié est d’une grande qualité !

 

Migrer SPIP vers WordPress

Il y a quelques jour on m’a confié une super mission: migrer un blog SPIP vers un WordPress!
J’ai cherché un peu partout une solution simple et clé en main. Visiblement cela n’existe pas vraiment… Il y a bien Korben qui à fait un article la dessus, mais son code n’est plus dispo.

J’ai été cherché du côté de la communauté SPIP – ils sont super sympas d’ailleurs n’hésitez pas à aller leur faire un coucou sur IRC !
J’ai trouvé un tuto pas trop mal fait qui permet d’importer le contenu brut d’un SPIP vers un blog WordPress, tout ne fonctionne pas mais ça dégrossi vraiment le travail.

 

EDIT: Apparement il y a un plugin qui fait ça maintenant  (merci kerfred)

Ensuite il faut traiter toute la syntaxe bizarre du CMS pour en faire du beau HTML. Et là j’ai pas trouvé mieux que du sql, pénible mais efficace…

Le code des requetes est dans un gist ci dessous, n’hésitez pas à le forker !

 

Faire fonctionner le copier/coller avec Vim dans le terminal

Pour faire suite au billet de présentation de Vim que j’ai publié il y a quelques jours un petit tutorial pour activé le support du copier/coller avec Vim en mode console.

Vim n’embarque pas de base la gestion du presse papier de base, et cela pour éviter de surcharger le logiciel qui n’est pas forcement utilisé par des distributions avec une interface graphique – sur les serveurs par exemple.

La première chose à faire est donc de vérifier si Vim est compilé avec le support du serveur X. Pour cela lancez un terminal avec la commande :

vim --version | grep xterm

si dans la liste qu’il vous retourne vous voyez

 -xterm_clipboard

Alors vous avez un Vim sans support de X… Mais pas de panique, il suffit d’installer vim-gui-common ou Gvim/MacVim pour avoir une version de Vim compatible.

Une fois installé vous pouvez utilisé la syntaxe Vim pour mettre vos parties copiées dans le registre du presse papier avec “+y.

Si comme moi, vous êtes pas fan des combinaisons de plus de 2 touches je vous propose les mappings suivant:

" Copy to the clipboard -- need +xterm-clipboard
 nmap <Leader>y "+y<CR>

Ou

set clipboard=unnamedplus

En bonus, une petite astuce pour ne pas mettre dans les registres les morceaux de code que vous couper.

" Permet de couper du code avec d sans écraser le contenu du registre 
 nmap <Leader>d "_d<CR>

 

Vim, un éditeur de texte du 21ème siècle

Je me rends compte que je ne vous ai jamais parlé de Vim sur ce blog. J’ai un vieux brouillon qui date de 2 ans sur le sujet mais je n’ai jamais publié d’articles alors qu’il y a matière !

Vim, pour ceux qui ne le connaissent pas est un “vieil” éditeur de texte en mode texte. J’ai commencé à m’y intéresser il y a 2-3 ans quand je faisais des recherches sur l’ergonomie du poste de travail. En effet Vim à la particularité de ne pas utiliser la souris, vos doigts restent sur le clavier et vos poignets apprécient !

Vim keycap

Vim, un éditeur modal

En deux mots, Vim comporte plusieurs mode de fonctionnement: normal, insertion et visuel. Pour chaque mode la fonction des touches de clavier changent. Alors c’est un peu dur à apprendre mais ça décuple les fonctionnalités d’un éditeur classique! Tout part de là, par défaut, en mode normal, une grosse partie des 105 touches de mon clavier servent à me déplacer dans le texte, sans souris mais de manière très précise, au début du mot suivant, à la fin du mot suivant, au début du paragraphe, de la phrase, à la fin de la ligne etc, etc…

C’est long à apprendre mais c’est redoutable une fois maitrisé, bien plus que les raccourcis Ctrl+Alt+flèches  d’un éditeur type Sublime Text.

Pour creuser un peu allez voir ce lien qui regroupe quelques tutos.

Vim, un éditeur universel

Autre point positif, vi(m) est super léger et présent sur à peu près tous les système d’exploitations sérieux. Je peux donc changer d’OS, me connecter à un serveur en SSH, coder directement sur une VM sans avoir à changer mon workflow, à modifier mes habitudes. Il suffit de copier mes préférences – mon .vimrc – dans ma home et, hop, je suis comme à la maison !

Vim est moderne et extensible !

Dernier point pour les sceptiques, les fonctionnalités des Vim sont largement aussi étendues que celles de votre IDE préféré. Par défaut il embarque la coloration syntaxique, l’auto-complétion, l’indentation automatique et pleins d’autre chose.

Mais Vim c’est surtout un “vieux” logiciel libre avec une communauté énorme de développeurs. Du coup, un peu comme pour WordPress, il y a une multitude de plugins pour faire ce que Vim ne fait pas encore.

Personnellement j’utilise NERDtree qui permet de manipuler et visualiser facilement des fichiers dans un projet et tComment qui permet de commenter les lignes sélectionnées en fonction du langage utilisé, bien pratique pour les **** de commentaires du HTML :)

En ce moment je teste également CtrlP, un équivalent du Pomme T de Textemate pour ouvrir rapidement des fichiers, AcK une alternative à grep pour parcourir le code de tous les fichiers d’un projet et Syntastic qui m’affiche les erreurs de syntaxe directement dans mes fichiers sources.

 Je ne changerais pas  d’IDE

Did you mean: vim?

En plus de deux ans d’utilisation je suis carrément convaincu: Vim c’est bien. La courbe d’apprentissage est longue (je suis toujours entrain d’apprendre) mais ça vaut le coup, plus on code, plus on apprends de nouveaux raccourcis, plus on est productif. Et ce quel que soit la machine, et quand on passe d’un Mac à un PC on est heureux d’avoir fait ce choix !

PS: Il y aura dans les semaines qui suivent un TupperVim d’organiser au Mutualab venez y faire un tour pour découvrir la bête !

Je n’ai qu’un seul client et il s’appelle Coworking

L’année 2013 touche à sa fin et je fais le bilan de mon activité. Durant ce bilan, je me suis rendu compte d’un fait marquant: 100 % de mon chiffre d’affaire de freelance provient du CoworkingLille.

100%!

Tous les clients avec lesquels j’ai travaillés en 2013 sont des coworkers Lillois ou ce sont des clients qui ont été orientés vers moi par ce réseau.

J’ai d’ailleurs presque arrêté de faire des articles sur mon blog – qui me ramenait pas mal de clients jadis. Je ne fais pas de démarchage, sauf peut être un peu de “community-management” sur Twitter.

A la place je me contente d’être là, ou plutôt la bas, tous les jours ou presque. Et pas pour ramener des clients, non. J’aime juste être la bas, on y apprends beaucoup, on monte des projets sympas, on boit des bières et je travaille bien mieux que si j’étais chez moi.

C’est magique. Tout simplement. Alors que l’on a toujours du mal à trouver un business model pour les Coworkings. Du malà faire de ses lieux d’échanges des lieux économiquement viables sans être sous perfusion des acteurs publics, les retombées pour les membres sont assez hallucinant : 100% du CA !

Alimenter l’éco-système

Plus je réfléchi, plus je débat avec mes copains du Mutualab sur les différentes possibilités de financer notre lieu et plus je suis convaincu que les seules vraies solutions sont dans tout ce qui alimente la machine: monter des projets qui créer de l’activité pour les membres, qui à leur tour monteront des projets qui créeront de l’activité etc, etc…  Cela marche, j’en suis un exemple vivant -et je ne suis pas seul – et c’est probablement la seule solution viable dans le temps.

Après, c’est comme partout il faut trouver l’énergie et l’argent pour lancer la machine !

Cela fait longtemps que je me dit qu’il faut que je modifie un peu tout ça, que je fasse le ménage mais j’ai plus vraiment le temps, plus vraiment l’envie de refaire ce que j’avais fait pour le thème précédent: monter un thème “from scratch”.

Et puis j’ai mis à jour WordPress, c’est une bonne idée il paraît, et j’ai trouvé que le thème par défaut, Twenty 14, avait de la gueule avec son design flat et son gros bandeau noir.

Du coup, hop hop, deux trois coups de CSS vite fait et hop nouveau look !

Rien de vraiment personnalisé, mais ça correspond aussi à mon usage du moment, je blog moins, VRAIMENT moins, presque plus en fait.

J’ai moins de temps, plus de boulot, et c’est une bonne nouvelle :) Et j’ai surtout moins besoin de partager ici depuis que je passe mes journées à refaire le monde, à trouver des idées pour conquérir la planète avec mes copains du Coworking !

Mais bloguer me manque, je le regrette dans le fond de moins partager ici ce qui me fait marrer/m’énerve ou m’interpelle.

Il faut vraiment que je reprenne le ryhtme, surtout que j’ai pas mal d’idées de billets sous le coude avec des projets Symfony, des outils sympas et deux trois coups de gueules.

Bref, Stay Tuned !

 

Pour sortir du lot mettez vous dans une niche !

Depuis que les mondes virtuels sont en baisse, que je ne peux plus vivre avec cette activité il m’a fallu changer de cap, me recycler.

Et je me suis perdu.

DSC_6698

Devant la palette de technologies, d’outils qui sont disponibles j’ai testé pas mal de trucs: NodeJS, WebGL, Ruby on Rails, WordPress, Jekyll, Symfony, Zend et à chaque fois il faut apprendre de nouveau les bases du framework, recommencer à comprendre les grands concepts etc… Si j’ai testé autant de technos c’est que j’aime ça, découvrir de nouveaux outils m’a toujours plu et, au delà du défi “geek“, ça permet aussi d’améliorer sa compréhension de l’univers du web. Mais, et c’est là que le bat blesse, ça n’a jamais fait gonfler mon portefeuille client, au contraire.

Vu de l’extérieur être un “touche à tout” est souvent pris pour du papillonnage, cela brouille les pistes pour vos futurs prospects et même si c’est excitant professionnellement c’est souvent synonyme de perte de temps – il faut réapprendre tout le temps – et de mauvaise estimation de temps passé.

Du coup, personne ne comprends vraiment ce que vous faites, et les contrats que vous remportez sont souvent mal vendus. Au final on fini par se fondre dans la masse des freelances qui “font du web”, sans réelle plus value la concurrence est rude surtout si on met dans la balance les développeurs indiens !

Bref c’est un mauvais calcul !

J’ai l’impression que la solution est de faire carrément l’inverse, choisir une techno qui nous plait, qui paraît robuste et s’y tenir. Au passage avant de foncer tête baissé, allez faire une  tour sur la timeline Twitter de l’outil, regardez les annonces de jobs, bref vérifiez qu’il y a de la demande. Dans le cas de Symfony par exemple c’est très clair : la moitié des tweets français sont des recherche de compétences !

Une fois la techno choisie, communiquez de façon hyper ciblée, spécialisée, faites vous identifiez comme un “expert” de la solution. Mettez en avant vos compétences techniques, votre expérience sur le sujet, faites du réseau en local et sur Twitter. Je vous parie qu’en quelques mois pour une techno demandée vous avez des clients.

Au passage, en l’écrivant je me dis que rien n’empêche d’avoir deux trois activités distinctes sur plusieurs technos différentes, le tout étant de garder une ligne et un discours hyper centré sur chaque projet. Le tout est d’avoir assez d’énergie pour animer 3 blogs, 3 twitters et faire de la veille sur toutes ces technos !

Voilà, cela fait longtemps que cette problématique me trotte dans la tête, j’ai d’ailleurs expérimenté l’inverse avec une “agence” montée au sein de CoworkingLille qui finalement n’a jamais marché justement parce notre discours était beaucoup trop large et que l’on avait pas de ressources commerciales suffisante pour assurer ce grand écart.

Et vous comment faites vous ? Quelle est voter solution pour sortir du lot ?

Installer un environnement de développement avec VirtualBox

Travailller avec un LAMP, ou un MAMP, installé en local c’est bien pour des petits projets, type création de thème/plugins WordPress, mais pour les projets plus conséquents avec des technos plus exotique que PHP il peut être nécessaire de virtualiser un système d’exploitation pour travailler. Je vous conseillle d’ailleurs de mettre en local le même système que votre machine de production, ça limite grandement les surprises de mise en prod !

Etape 1 : Installation de VirtualBox et de l’OS

Vous trouverez des milliers de tutos sur le web pour installer votre distribution préférée et sur la procédure d’installation de virtualbox, rien de bien compliqué. Petites remarques toutefois, préférez bien sur des OS stables genre debian, ubuntu LTS , CentOS etc… Les distributions à la mode ne sont pas forcement un choix judicieux pour une machine de production.

Limitez les ressources que vous allouez à votre machine, un OS serveur n’a pas besoin de beaucoup de ressources (256Mo de RAM et un petit de processeur devrait suffire) sinon vous allez vraiment avoir du mal à bosser dans de bonnes conditions.

Etape 2 : Configuration de l’OS

Une fois que tous vos paquets sont installés et que votre serveur virtuel tourne bien il va falloir le mettre en relation avec votre machine afin de travailler dans de bonnes conditions.

Pour l’accès je recommande un bon vieil SSH, c’est simple et efficace :

sudo apt-get install open-ssh

Pour le serveur web et le langage je vous laisse choix, nginx, apache2 ou autres, idem PHP, Ruby, Python, faites votre marché !
NB: Faites attention à bien installer la version identique à celle du serveur de production, toujours dans un soucis de compatibilité.

Etape 3 : Configuration du réseau

Ensuite, il faut pouvoir accéder à son serveur depuis son navigateur pour afficher les pages web, pour ça c’est un peu plus complexe, mais pas sorcier non plus.

D’abord rendez vous dans configuration/Réseau de votre machine virtuelle et configurer la carte 1 en NAT, et ajouter une deuxième carte en Réseau privé comme ci dessous  :

Reseau Virtualbox

Ensuite, on va configurer les interfaces réseau dans l’OS directement  – ici une debian. On édite donc  /etc/network/interfaces dans lequel on trouvera lo et eth0 nous allons ajouter eth1 à la fin du fichier :

# The host-only network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255

Ensuite, pour des raisons pratiques nous allons donner des noms à ces serveurs virtuels pour éviter de retenir des adresses IP obscures, en éditant le /etc/hosts/ de votre machine hôte et en ajoutant :

192.168.56.101    myserver1
192.168.56.102    myserver2

Et voilà vous avez une machine de développement fonctionnelle, reste plus qu’a mettre votre framework préféfé et à installer git pour travailler en équipe !

« Older posts Newer posts »

© 2017 AngeZanetti.com

Theme by Anders NorenUp ↑