Laisser un commentaire

Workflow multi-machines : pourquoi et comment ?

Si l’on veut être productif, il faut que nos outils le soient aussi. Pour ma part, en plus de l’environnement logiciel et matériel de la machine principale déjà expliqué dans un précédent article, j’estime que plusieurs machines sont nécessaires à ma productivité.

En tant que développeurs, nos outils sont de deux catégories :

Que l’on me donne six heures pour couper un arbre, j’en passerai quatre à préparer ma hache.

Lincoln

Il ne s’agit pas là de consumérisme débridé, j’essaye toujours au mieux de faire durer mon matériel.

La tablette

De nombreuses personnes ont aujourd’hui délaissé l’ordinateur pour ne plus utiliser que tablette ou téléphone. Pour nous, développeurs, ce n’est tout simplement pas envisageable.

Il est possible de travailler sur tablette dans certaines conditions, mais il est tout bonnement impensable d’en faire sa machine de travail principale.

Néanmoins, une bonne partie de notre travail consiste à faire de la veille et à se former. Cette partie est donc principalement constituée de lecture. Et pour la lecture une tablette est idéale.

J’ai donc un iPad qui me sert tous les jours pour faire ma veille, j’y lis Haker News, le Journal du Hacker, Smashing Magazine, CSS Tricks etc. Ces moments de lecture - qui font partie intégrante d’une journée de travail - sont tout de même plus confortables dans un canapé, ou même dehors quand le temps le permet.

On passe en effet déjà énormément d’heures assis à notre bureau, changer un peu d’endroit et de position ne peut que nous faire le plus grand bien.

La seconde machine

Certains ont un ordinateur fixe en machine principale, ce qui n’est pas mon cas, car je bouge beaucoup.

Ma machine de développement principal est un MacBook Pro 15”. J’en suis très content et, la plupart du temps, il fait office d’unité centrale, posé sur un bureau, branché sur deux écrans externes et relié à un clavier ainsi qu’à une souris.

Ma machine principale

Cette machine est confortable et puissante. Son seul problème est qu’elle est assez volumineuse et comme elle est toujours branchée, avec des fenêtres réparties sur trois écrans, je suis toujours réticent à la bouger si ce n’est pas pour partir (déplacement, voyage…).

J’apprécie donc d’avoir une deuxième machine, un ordinateur plus compact et léger. Je m’en sers lorsque je dois brièvement partir pour un rendez-vous ou pour travailler hors du bureau.

S’il fait beau et que je veux m’installer dehors, ou le soir pour écrire un article depuis le canapé ou mon lit. Cette machine n’est pas nécessairement puissante. J’utilise un Dell XPS qui a presque dix ans. Il tourne sous Solus OS et fonctionne à merveille.

Gérer la diversité

L’inconvénient de jongler entre plusieurs machines, c’est qu’on ne retrouve pas toujours tout si l’on n’est pas bien organisé.

Fort heureusement, l’époque où l’on tentait de rester synchronisé à coup de clef USB et de pièce jointe d’email est révolue.

Il y a 3 composantes que j’aime avoir à portée de main et synchronisées sur tous mes appareils :

Emails, contacts, calendriers et favoris

Je n’ai pas mentionné le smartphone jusque là, mais c’est une évidence, tout le monde en a un, et en plus de me servir pour les emails, je l’utilise pour lire lorsque j’ai des temps morts.

J’utilise principalement Firefox en navigateur et Safari sur mes appareils iOS. Je ne suis pas fan des favoris des navigateurs, ça manque un peu d’organisation pour moi.

Pour cela, j’utilise Shaarli avec un thème material design, car le thème d’origine n’est pas à mon goût. Grâce à cela, j’ai mes favoris sur absolument tous mes appareils, et même ceux qui ne sont pas à moi, car il s’agit d’un site internet.

Les contacts et le calendrier sont synchronisés par NextCloud. Les protocoles sont des standards, donc ça peut se synchroniser avec à peu près n’importe quoi, c’est la beauté des standards. Idem pour l’email, imap/smtp, ça se synchronise sur tous les clients.

Synchro des fichiers

Là où ça se complique, c’est pour les documents. J’ai mentionné Nextcloud, je l’utilise pour les documents également. Il est dispo sur Linux, Mac et PC, donc pas de problème à ce niveau là.

Il y a aussi la possibilité de monter le disque en disque distant, à nouveau, c’est du standard : WebDAV. Vous n’aurez alors rien à installer si votre système le supporte (c’est le cas de tous les OS principaux). En revanche, notez que les performances ne sont pas aussi bonne et vous ne pouvez pas écrire sur le disque en étant hors connexion.

NextCloud (ou les drives de manière générale) sont vraiment très pratiques car leur usage est transparent. En revanche, dès lors que vous avez de très nombreux petits fichiers, ça devient un peu moins efficace.

Je désactive donc la synchro de tous les dossiers qui s’appellent “Code” - j’en ai en général un par projet ainsi que des “node_modules”. Ils sont de toute façons toujours dans “Code”, mais sait-on jamais.

Dès qu’il s’agit de code, git prend la relève avec Gogs comme serveur et interface web. Mes deux ordinateurs partagent la même clef ssh, donc je suis authentifié de la même façon qu’il s’agisse du portable Mac ou Linux.

Il faut faire bien attention lorsque vous transférez cette clef d’une machine à l’autre. Soit on utilise un support chiffré, soit un efface bien la clef usb après usage. Et en aucun cas on ne s’envoie ça par email ou un cloud !

Une fois que l’on a tout cela de bien synchronisé, la dernière petite étape consiste à mapper les quelques fichiers de config que l’on veut garder synchro et qui vivent en dehors du cloud.

En ce qui me concerne, quelque coups de ln suffisent à garder synchronisé mon ssh config ainsi que mes hosts Ansible. De cette manière, d’une machine ou d’une autre, je suis en mesure de me connecter à tous mes serveurs !

Les mots de passe

Les mots de passes sont des fichiers particuliers dans la mesure où ils nécessitent une attention accrue et une gestion très fine des accès.

Il n’est ni question d’avoir le même mot de passe partout, ni question de consigner sa liste de mot de passe dans un fichier sauvegardé sans plus de précautions.

J’utilise à cet effet un gestionnaire de mot de passe. De nombreux gestionnaires existent. J’ai pour ma part choisi les standards avec le chiffrement via GPG et je les fonctionalités propres à la gestion de mot de passe via le logiciel cross-plateforme open source QtPass.

Avec QtPass, un fichier est créé pour chaque site ou logiciel, avec toutes les informations afférentes. Il est possible de préciser dans quel répertoire stocker les mots de passe et ainsi les synchroniser sur le cloud de manière totalement sécurisée : sans le mot de passe “maître”, rien n’est lisible.

Par ailleurs, si j’ai besoin de déchiffrer l’un de ces fichier, je peux le faire depuis n’importe quelle machine ayant GPG installé. Je ne suis pas bloqué avec un gestionnaire en particulier. QtPass m’offre une interface efficace, spécifiquement pensée pour la gestion des mots de passe et m’évite d’utiliser la ligne de commande dans cette tâche quotidienne.

En revanche, je ne peux pas accéder à mes mots de passe depuis ma tablette ou mon mobile. Il est peut être possible de mettre cela en place, mais n’en n’ayant pas le besoin, je n’ai pas effectué de recherches.

Conclusion

Si les appareils sont différents, il n’est pas forcement possible de répliquer l’environnement de partout. Cependant, de nombreux logiciels sont multi-plateformes (Windows, macOS, Linux).

Par exemple, pour ce qui concerne la programmation, mon shell bash et mon éditeur de code, Atom, ont exactement les mêmes configurations sur toutes mes machines.

Le reste est bien synchronisé et accessible depuis tous mes devices, sans aucun accroc depuis de nombreuses années. Testé et approuvé !

N’hésitez pas à partager vos outils et votre organisation ou à exprimer des besoins particuliers dans les commentaires.

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```