Prise de notes synchronisée et interface web
Le Besoin
Tenir des notes organisées est une tâche délicate et incontournable dans bien des domaines.
- Programmation: Cette activité demande de s’informer (veille techno) et s’auto-former constamment, les nouveaux outils évoluant vite, il faut organiser ce flux d’information, partant dans plusieurs directions au grès des langages et framework. La multiplicité s’accélérant pour le développement web, bien loin le temps où l’html régnait en maître.
- Projets/Programmes: Pour ne prendre qu’une anecdote sur mon dernier programme Tyrs, je garde à jour une petite liste de choses à faire lors d’une release, pour m’assurer de ne rien oublier.
- Blog: Alors que certain billets peuvent s’écrire d’une traite, la plupart du temps ils sont suite à quelques recherches, ou des idées accumulées sur une longue période. Les billets sont souvent issues de quelques liens, associés à des idées qui convient d’organiser.
- Linux: Qui n’a jamais noté quelques commandes Linux qui sauvent la vie, mais quasiment jamais utilisé et difficilement mémorisable. Et bien entendu perdre un temps fou à l’a retrouver au moment le moins opportun.
Ces quelques exemples, parlant pour ceux partageant ces activités, sont loin d’être exhaustive, intégrant la partie publique de ce blog.
Le Challenge
Le challenge n’est pas tant de prendre des notes, et capturer les informations, mais qu’ils soient facilement retrouvable, éditable, extensible, et surtout en faire une recherche efficace et rapide.
Les services d’informations et de réseaux sociaux offre généralement la possibilité de mettre de côté des informations, souvent appelé les favoris, on les retrouve dans les agrégateurs RSS ou twitter, éventuellement avec les marquages +1 et j’aime. Sans compter les services bookmarks, ou sauvegardé directement avec le navigateur internet. Il est évidant que l’utilisation désordonné de tout ces système rend la recherche d’éléments mis de côté pénible.
Je pense que pour qu’un système de prise de note soit efficace, il doit suivre quelques règles, c’est en tout cas sur ces points que je voulais trouver une solution.
- Locale
Une prise de note se faisant localement à l’avantage d’être bien plus rapide que toute solutions distantes basé sur le web, d’autant plus s’il est hébergé soit même avec un mutualisé peu réactif. Même dans le cas d’une réactivité proche des serveurs de Google, il reste un temps de latence pouvant freiner aux prises de note. La solution locale permet d’avoir accès aux notes à tout moment, même en cas de coupure d’Internet (déplacement) ou d’une connexion affaiblis (téléchargement, mise à jours, le fils/frère/père qui fait du streaming…)
- Synchronisation
Ce n’est pas parce qu’une solution est locale, qu’elle doit être isolé. La synchronisation de données entre ordinateurs est tout aussi importante et devient incontournable de nos jours.
- Multi-Plateforme
Il est important de pouvoir accéder au information indépendamment de la plateforme utilisé (Linux, Mac, Windos, *BSD, Android…).
- Agréable
La prise de note doit être agréable, sinon on fini par choisir la solution « bah, j’y penserai, j’arriverai à retrouver si besoin ». Dans ce sens, la réactivité de l’application est primordiale, ainsi que l’interface dans son ensemble.
Le wiki qui n’en était pas un
La solution que j’utilise depuis peu, et qui me convient enfin, se base sur un couple tiddlywiki et Dropbox (ou tout système de synchronisation équivalent). Tiddlywiki fait partie des personal wiki mais dont son fonctionnement s’éloigne un peu des wikis collaboratifs traditionnels.
- Un seul fichier
Première surprise, un seul fichier. Tout y est géré, prise de note,configuration, plugin, CSS et j’en passe. De ce fait, on édite pas le fichier directement, tout passe par l’interface d’un navigateur web. Le fait que tout tienne en un seul fichier simplifie la synchronisation, la manipulation, et même le partage de ce wiki. Rien de plus simple que de dupliquer un fichier.
- Principalement JavaScript
L’utilisation de Tiddlywiki ne nécessite pas d’installation d’Apache ou de serveur SQL, mais uniquement un navigateur Internet. La logique se fait côté client.
- Installation instantanée
Cette propriété découle des deux précédentes, l’installation et le lancement se résume à ces deux commandes :
$ firefox empty.html
Et voilà, déjà près à rentrer dans l’action.
- Page Dynamique Non-Linéaire
Comme l’indique en titre sur le site officiel:
a reusable non-linear personal web notebook
C’est le côté déroutant de ce concept mais qui en donne tout son intérêt.
Dans un wiki classique, on créée quelques pages, on les lie entre elles, on y rajoute des tags ou des catégories. Mais le principe est que les limites de chaque page est bien défini, si par exemple je veux consulter un bout d’une page et d’une autre, il me faut deux onglets.
L’analogie suivante aide à prendre en main le concept. Imaginons que d’un côté, j’ai des post-it, de taille extensible et en nombre infini, que je peux les tagger et en faire des recherches. De l’autre un grand tableau blanc sur lequel je peux y positionner les post-it que je veux, les uns aux dessus des autres, en retirer un pour le remettre sur mon tas de post-it, les liés entre eux, et sauvegarder des mises en page de post-it.
C’est ce que propose ce wiki, une seule page, mais rendre son contenu dynamique, et non-linéaire. Les post-its sont des tiddler. Je pense qu’il faut vraiment l’essayer pour apprécier ou non sont fonctionnement et sa subtilité.
- Configurabilité
Le wiki est utilisé par une communauté suffisement vaste pour apporter de nombreux plugins (~400 il me semble avoir lu). La configuration se fait en héritant des tiddler prédéfini, par la suite, je propose l’installation pas à pas d’un plugin, et la configuration simple de couleurs.
- Multi-Plateforme
La contrainte de la mixité de plateforme est résolu avec l’utilisation d’un navigateur internet, puisqu’on arrive toujours à trouver un Firefox quelque soit le système d’exploitation. Et indépendant de toutes installations et dépendances (Qt, GTK…). Une application est spécialement conçu pour Android.
- Getting things done
De nombreuses variantes, incluant par défaut des plugins, donne une tendance getting things done au wiki, c’est à dire orienté vers l’organisation et la réalisation de tâche et de projects.
Développement
- L’équipe de développement vient de migrer de svn vers github.
- La licence BSD est utilisé pour ce projet libre.
- Chose important, le projet est toujours actif.
Synchronisation
La synchronisation est importante pour rendre accessible les informations sur plusieurs ordinateurs simultanément. Comme il ne contient qu’un seul fichier, le procédé en est facilité, et chacun trouvera une solution à sa convenance, par exemple DropBox pour ne citer que cette possibilité. Sa mise en place n’étant pas vraiment le sujet du billet.
Installation d’un plugin
On peut consulter une grande liste de plugins ou encore ici. Ils sont écrit en JavaScript. Par défaut, TiddlyWiki ne contient pas de checkbox, on peut rajouter cette fonctionnalité facilement grâce à un plugin.
- On récupère le code du plugin sur cette page.
- Dans votre TiddlyWiki, cliquez sur
New Tiddler
. - Donner comme titre
checkboxPlugin
et comme tagsystemConfig
. - Coller le code du plugin dans le corp du Tiddler.
- Sauvegardez le résultat.
- Rechargez la page.
Les checkboxes seront disponible avec [ ]
ou [x]
.
ColorPalette
- Cliquez sur
New Tiddler
. - Donnez comme titre ColorPalette, et comme tag
shadow
. - Collez le code si dessous.
- Sauvegardez
Background: #e4eeff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
Ces deux exemples, plugin et color, montre bien la façon dont la configuration se passe, en créant des tiddler spécifique pour qu’ils soit pris en compte. Même si cette façon de procéder peut sembler étrange, elle est extensible et permet de n’avoir toujours qu’un seul fichier, pas de fichier de configuration, ou des répertoires de plugins.
Astuces
- Première utilisation
Comme son fonctionnement consiste à changer le contenu du fichier, Firefox ouvre à popup à la première sauvegarde, informant sur « des risques de sécurités potentiel », le message peut inquiéter au premier abord, mais il en est rien, il suffit d’accepter et le wiki est près à être édité.
- Alias
On peut accélérer l’ouverture de l’onglet par un alias, pouvant être utile étant avec awesome et autres tilings.
- Iframe
La possibilité d’utiliser du code html permet l’usage des Iframes, c’est à dire d’embarquer dans un tiddler une page web quelconque, par exemple le bout de code suivant embarque la page de google.
frameborder="0" width="100%" height="300"></iframe></div></html>
- Plusieurs wiki
On peut facilement créer plusieurs wiki, pour bien différiencier les parties, par exemple personnel/professionnel, tout en les liants l’un à l’autre par un lien hypertexte relatif. Cette pratique est très facile à mettre en place, puisqu’il suffit de mettre autant de fichier que de wiki voulu.
Conclusion
J’ai découvert ce wiki en lisant why every programmer should have a TiddlyWiki, par le biais d’Hacker News. Bien qu’un peu sceptique au début, j’ai rapidement trouvé ce wiki comme la solution que je cherchais depuis longtemps.
Pour avoir déjà posé des questions similaires à certaines personnes, je serai curieux de connaître vos solutions.
- Comment gérez vous vos notes.
- Avez vous recours à un wiki personnel.
- Votre solution vous satisfait-il, ou songez-vous à en changer.