Blog personnel d'Arthur Milchior - anki2024-01-01T14:35:35+01:00Arthur Milchiorurn:md5:2a81812e696e67be5228f8c1b4799b0cDotclearQuestionnement sur ma responsabilité en tant que développeururn:md5:c701e0aaa9d5cf6da4c4f23fb3c93b932019-01-25T15:50:00+01:002019-03-23T11:45:02+01:00Arthur Milchioranki<p>Depuis peu, je suis un développeur. Je code depuis un moment, mais il est assez nouveau que j'ai des gens utilisant mon code. J'ai contribué au logiciel anki (à hauteur de 18 lignes de code, selon github). Mais surtout, j'ai créé 34 add-on pour Anki.</p>
<p>Ces add-ons ont des retours positifs quasi-unanime. L'unique retour négatif est accompagné d'une critique disant que mon add-on ne fait pas quelque chose que mon add-on disait explicitement ne pas faire. Et que d'ailleurs, depuis, il fait.</p>
<p>Ces add-ons ont, au total, été téléchargé 6000 fois. Dont un unique add-on qui a été téléchargé 3000 fois à lui tout seul. J'ignore combien de gens utilisent réellement ces add-ons. Est-ce que comme moi, des gens ont anki installé sur plusieurs ordis, et donc ont téléchargé plein de fois le même add-on. J'ignore si les mises à jours des add-ons sont compté comme des téléchargements. Bref, le vrai nombre de gens utilisant actuellement mon code est bien plus faible. Mais ça reste considérablement plus grand que tout ce que j'ai pu coder pour mon travail de recherche.</p>
<p>Ce qui fait que pour la 1ère fois, je me pose des questions sur mes responsabilités en tant que développeur. Ça ne sera jamais des questions aussi importantes qu'un dévelopeur de système embarqué dans un véhicule, où qu'un logiciel qui indique qui mettre en prison ou non. Dans le pire des cas, j'empêche l'utilisateurice d'apprendre correctement des choses. Mais bon, ça serait dommage quand même.</p> <h4>Add-ons innoffensif</h4>
<p>La plus part de mes add-ons ne font absolument rien de mal. Je vais à titre d'exemple expliquer mes 3 add-ons les plus téléchargés.</p>
<p>Mon add-on téléchargé 2987 fois affiche des informations à côté de
chaque deck dans la fenêtre principale. Certaines méta-donné ne
présentent aucun intérêt selon moi, mais m'ont été demandées. Par
exemple, le nombre de cates jeunes/matures (i.e. dont le délai est
inférieur ou supérieur à 3 semaines). D'autres me paraissent très
importantes et devrait selon moi directement être donné par anki. Par
exemple le nombre de cartes qui n'ont jamais été vues une seule fois.</p>
<p>Le deuxième add-on, téléchargé 793 fois, permet de copier une
note. D'ailleurs, l'add-on n'est pas de moi à la base. Moi je l'ai
juste modifié pour que l'add-on puisse copier les méta-donné en plus
des données. Et pour qu'il soit compatible avec la nouvelle version
d'anki. J'ai un add-on qui, dans le log de suppression, rajoute un
nouveau champ expliquant pourquoi la suppression à eu
lieu. Normalement, tu essayes d'éviter de dupliquer de l'information,
donc copier une note est en général une mauvaise idée. Mais de temps
en temps, c'est pratique, par exemple pour séparer une note en deux
notes. Tu copies d'abord. Puis une fois la copie finit, tu nettoyes
les deux notes séparément.</p>
<p>Le 3ème add-on, téléchargé 367 fois, change la compilation du LaTeX.
Plus précisément, ça change le moment où Anki compile le LaTeX. Par
défaut, anki compile le LaTeX uniquement quand il a besoin de
l'afficher. Le souci étant que si tu révises sur ton téléphone
portable, comme celui-ci n'a pas de compilateur LaTeX, tu ne peux pas
voir ta cartes. Avec mon add-on, la compilation est faite dès que la
carte est crée sur l'ordinateur. Comme ça la carte est directement
visible sur le portable quand tu en as envie. Par ailleurs, compiler
tôt permet de prévenir rapidement si le LaTeX a une erreur, et donc de
corriger l'erreur rapidement.</p>
<h4>Un add-on maléfique.</h4>
<p>Pour rappel, l'idée fondatrice d'anki est la suivante: tu veux
apprendre quelque chose par cœur. Pour ça tu dois le réviser
régulièrement. Anki planifie les révision pour qu'elles arrivent peu
avant le moment où tu aurais oublié l'information. Donc tu dois
surtout faire les révision quand Anki pense que c'est le moment de les
faire.</p>
<p>Une demande régulière des utilisateurice est de pouvoir partir en
vacance une semaine sans avoir une semaine entière de révision à faire
en revenant. Donc repousser toutes les cartes d'une semaine. C'est une
super mauvaise idée, parce que si tu fais ça, tu casses tout le
principe de base d'anki. Et d'ailleurs, c'est pas grave, si tu as du
retard, anki en tient compte, et s'adapte. Peut-être qu'il te faudra 3
ou 4 jours pour rattraper tout ton retard lié à la semaine que tu n'as
pas faites, mais après ces 4 jours, tout sera redevenu normal.</p>
<p>Eh bien, j'ai créé un add-on qui reporte les cartes d'une semaine (ou
d'autant de jours que tu veux, même un nombre négatif de jours). J'ai
aidé les gens à saborder le principe fondateur d'anki. Ils ont
l'impression d'avoir une tâche plus simple. Mais en réalité, ils se
bousillent le processus d'apprentissage. Par conséquent, j'ai pas mal
hésiter à créer cet add-on.</p>
<p>Ma rationalisation, c'est que des témoignages concordant indiquent
que, quand, en revenant de vacances, des utilisateurices voient qu'ils
ont plusieurs centaines ou milliers cartes à revoir, ça leur fait
peur. Ils repoussent anki, prennent plus de retard et finalement abandonnent. J'ai donc estimé - et c'est ce que j'explique dans la description de l'add-on, que cet add-on était un moindre mal. Qu'il corrigeait un comportement irrational humain et évitait l'abandon total.</p>
<h4>Un add-on dangereux</h4>
<p>La base de donnée d'anki est horrible. Toute la configuration d'anki est stocké dans une table, comprenant une unique ligne. Chaque colomne correspondant à la configuration d'un paramètre, stocké en json.</p>
<p>Comme j'utilise beaucoup anki, j'ai des configurations assez complexe. Le json est stocké de façon «condensé» sur une seule ligne. Si j'essaye de copier ce json et de le mettre dans emacs, emacs plante. Visiblement, il n'aime pas les lignes qui font plus d'un million de caractère.</p>
<p>J'ai donc créé un add-on qui explose le json et créé une base de donnée digne de ce nom. Comme ça on peut enfin lire la base de données avec des outils standard. Et je suis en train de créer l'outil inverse. Qui recrée une base de donnée exploitable par anki à partir de ma base de donnée lisible. L'idée de base étant que la base de données lisible serve à ce que tu puisse faire des modifications simplement à la main ou à l'aide de requête sql. Et que ces modifications soient ensuite prise en compte par anki.</p>
<p>Il y a deux types de soucis. Le premier, c'est une erreur immédiate. Si la personne utilisant l'add-on n'a pas crée de copie de sauvegarde d'anki, puis qu'il synchronise sa base de données vers le serveur, il peut rapidement perdre pas mal de chose. C'est un risque assez faible, puisqu'anki créé, à chaque fois qu'il est éteint, une copie de sauvegarde. Donc l'utilisaterice devrait, au pire, perdre les modifications faites depuis la dernière fois qu'anki a été allumé ou synchronisé. J'ai moi même été victime de cette erreur. J'ai testé la synchronization avec une base de donnée dans un état étrange. Et bien, laissez moi vous dire que mon téléphone n'a pas aimé. Heureusement, j'avais des back-up et j'ai pu tout réparer.</p>
<p>Le second souci arrive si en plus l'erreur porte sur une unique note, ou sur un type de note peu utilisé, l'erreur peut ne pas être détecté avant très longtemps. Voir ne pas être détecté du tout, si quelque chose disparaît sans laisser de trace, ça peut prendre du temps de réaliser qu'il y a un manque. Je suis donc en train d'aider des gens, potentiellement moi, à ce tirer une balle dans le pieds.</p>
<p>Tout ça arrivera certainement un jour, et ça m'inquiète d'en être partiellement responsable. Bien sûr, l'étape où la base anki est recréée vérifie les erreurs les plus évidentes. Ainsi, la base de donnée vérifie l'unicité des champs qui doivent être unique. Et je vérifie aussi que les listes qui contiennent un élément numéro 4 contiennent aussi un élément numéro 3. Mais je ne peux pas tout vérifier, puisque je ne sais pas à l'avance ce que les utilisateurice voudront faire, et donc quels changements seront normaux ou non.</p>http://www.milchior.fr/blog/index.php?post/2019/01/25/Questionnement-sur-ma-responsabilit%C3%A9-en-tant-que-d%C3%A9veloppeur#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/728Note on an introduction on Anki given a 35C3urn:md5:6a865cc4e367a58b2547d248713f34602019-01-02T07:05:00+01:002019-05-04T16:23:41+02:00Arthur Milchioranki <p>This post has been moved to the <a href="http://www.milchior.fr/blog_en/index.php/post/2019/05/04/Note-on-an-introduction-on-Anki-given-a-35C3">English blog</a>.</p>http://www.milchior.fr/blog/index.php?post/2019/01/02/Note-on-an-introduction-on-Anki-given-a-35C3#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/726Programmation et ligne de commande avec ankiurn:md5:b0d735d7eed837bf8efd509912cd26582018-09-29T22:05:00+02:002018-11-18T22:54:29+01:00Arthur Milchioranki<p>Voici comment j'utilise anki pour me souvenir de notions de programmations et de ligne de commande.</p> <p>Concernant la programmation, j'ai entendu le conseil suivant. Quand tu as besoin de regarder quelque chose sur internet, tu rajoutes immédiatement ce que tu as trouvé dans anki, comme ça tu n'auras jamais besoin de chercher quelque chose deux fois. Ça serait une super bonne idée si ajouter quelque chose à anki était effectivement super rapide. Personnellement, ça me demande probablement une minute, ré ouvrir anki, trouver le bon deck, rentrer toutes les informations. Ça me couperait trop dans ce que je développe, et surtout, trop souvent. Donc, comme pour tout le reste, je rentre beaucoup d'information à la fois.</p>
<p>Quand des pages contiennent toutes les informations de manière à peu près ordonné, comme <a href="https://www.w3schools.com/cssref/default.asp">la référence du CSS</a>, c'est très pratique. Je peux rapidement obtenir un fichier CSV à partir de ça, puis importer toutes ces informations dans anki. Malheureusement, pour les pages man, même si la mise en forme et souvent la même, il semble qu'il n'existe aucune base de donnée où je peux trouver, pour chaque ligne de commande, la liste de ses options/abréviation. Et pour l'instant, je ne connais pas assez le format de rédaction des pages man pour tenter de créer un extracteur moi-même.</p>
<p>Voici les informations que contiennent mes cartes propre aux langages de programmations. Les autres champs étant donné <a href="http://www.milchior.fr/blog/index.php?post/2018/09/29/Une-carte-anki-standard">ici</a>.</p>
<h3>Les champs</h3>
<p>Tout d'abord, j'ai «instruction», qui est le texte qui doit être écrit dans le code. Puis j'ai «abbreviation», pour les cas où il existe deux manières distinctes d'écrire le même code, dont l'une est un raccourci de l'autre. C'est souvent le cas en ligne de commande, où il existe une version longue et une version courte des arguments.</p>
<p>Ensuite, j'ai les champs «effet» et «valeur». La plupart du temps, je ne remplis qu'un des deux champs. Ainsi, «print(n)», à pour effet «affiche la valeur de n.», et n'a pas de valeur. Réciproquement, «i+1» n'a pas d'effet<sup>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/29/Programmation-et-ligne-de-commande-avec-anki#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup>. Par contre, i++ a un effet et une valeur, donc j'indique les deux. De même, en C, c'est utile de se souvenir que «i=n» a une valeur, égale à la valeur de «n».</p>
<p>J'ai aussi un champ «type», dont le sens est assez évident, et souvent redondant avec «value». Mais, par exemple, pour les jeux de pointeurs en C, mettre le type explicite peut être assez utile.</p>
<p>J'ai un champ «défaut», qui me sert à indiquer la valeur par défaut des variables. Ainsi j'ai l'information que le baud rate par défaut d'arduino est 9600.</p>
<p>J'ai un champ «nom», particulièrement utile en base de donnée, ou chaque operation à un nom, et une notation, qui n'est pas nécessairement exactement identique à l'instruction utilisé.</p>
<p>J'ai deux champs «temps» et «espace». C'est surtout utile pour les instructions correspondant à des structures de données, quand le langage de programmation indique si un tri est en place ou pas, si un accès est garanti en temps constant/logarithmique, c'est utile de l'indiquer.</p>
<p>J'avais prévu un champ invariant, aussi pour les structures de données. Mais en pratique je constate que je ne l'ai jamais utilisé. J'imaginais, pour une fonction de tri, par exemple, indiquer si le tri était stable. J'ai aussi «potentiel ou crédit». Mais ça semble être des questions pertinentes pour les notes «structures de données» et pas pour les langages de programmations.</p>
<div class="footnotes"><h4>Note</h4>
<p>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/29/Programmation-et-ligne-de-commande-avec-anki#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] à part potentiellement celui d'évaluer i</p></div>
http://www.milchior.fr/blog/index.php?post/2018/09/29/Programmation-et-ligne-de-commande-avec-anki#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/715Clôture d'un ensemble dans ankiurn:md5:b51721c96c7111ab951116c1528efc672018-09-29T22:03:00+02:002018-11-18T22:55:04+01:00Arthur Milchioranki<p>Il y a un type de note dans Anki qui me pose particulièrement problème, que je ne sais vraiment pas comment régler: indiquer les opérations admises par une structure précise.</p> <p>En mathématique, si tu as un ensemble E de trucs, et que quand tu applique une opération f à certains de ces trucs, tu obtiens encore un élément de E, alors tu dis que E est clos par f. Par exemple, l'ensemble des rectangles est clos par symétries, par étirement, par rotation. Alors que l'ensemble des carrées ne sera pas clos par étirement. L'ensemble des langages reconnaissable est clos par miroir, union finie, intersection finie, quotient par un langage, shuffle, infiltration, prendre l'ensemble des suffixe, préfixe, facteurs, sous-mots, étoile de Kleene, complémentation. Et contient tous les langages finis. Par contre, ce n'est pas clos par union infinie. Ça fait beaucoup de chose dont je veux me souvenir.</p>
<p>Pour l'instant, c'est le seul cas où j'utilise des texte à trou. Ainsi, je demande «les langages reconnaissable sont clos par union <abbr></abbr>», et la réponse est «finie», mais pour être aussi dénombrable, arbitraire, ou aucune. Pour les carrés, j'indique que c'est «<abbr></abbr> par étirement», où la réponse est «pas clos». Et je demande aussi «pas clos par ???», et donc je dois trouver une transformation qui ne respecte pas les carrés, et qui n'est pas déjà dans la liste affichée.</p>http://www.milchior.fr/blog/index.php?post/2018/09/29/Cl%C3%B4ture-d-un-ensemble-dans-anki#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/714Les questions dans Ankiurn:md5:14fc82c3a6c0c77b5466b231cbd1bbac2018-09-29T22:02:00+02:002019-05-04T16:26:40+02:00Arthur Milchioranki <p>Les «questions» sont mon deuxième type de note après les <a href="http://www.milchior.fr/blog/index.php?post/2018/09/25/Apprendre-des-d%C3%A9finitions-avec-Anki">définition</a>. Ce qui est assez paradoxale, car je tente d'éviter au maximum les questions. En effet, une question, c'est ce qu'il y a de plus simple, je peux souvent répondre par auto-complétion, sans vraiment réfléchir à ce que je lis. La majorité des champs sont <a href="http://www.milchior.fr/blog/index.php?post/2018/09/29/Une-carte-anki-standard">standards</a>.</p>
<p>Comme toujours, j'ai un champ avec la question. Et 7 champs de réponses, pour les cas où la réponse se découpe, ou bien où plusieurs réponses sont admissible. J'ai une carte pour chaque réponse, et une carte demandant de se souvenir d'au moins une des réponses.</p>
<p>Enfin, j'ai un champ «construction», qui indique comment la preuve est faites, comment l'objet qui répond à la question est créé.</p>http://www.milchior.fr/blog/index.php?post/2018/09/29/Les-questions-dans-Anki#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/713Une carte anki standardurn:md5:f699e16bf1532e534283838928d678ec2018-09-29T22:00:00+02:002018-11-18T22:55:51+01:00Arthur Milchioranki<p>Ce billet contient la liste des champs présent dans presque toutes mes notes. Je commence par les champs qui ne sont qu'une information pour aider, mais ne correspondant à aucune question. Une règle extrêmement importante, tout ces champs doivent systématiquement avoir la même place dans la liste des champs. Chez moi, page est toujours le premier champ, partout. Comme ça, quand je change le type de note, si l'information page est déjà rentré, elle sera toujours présente au bon endroit.</p> <h4>Champs sans question</h4>
<h3>Méta information</h3>
<p>Tous les champs de cette section ne sont affichés que dans la réponse. En effet, ils aident à vérifier une information, par contre ils donneraient des indices peu pertinent le reste du temps.</p>
<p>Page, section et chapitre, sont trois champs qui m'aident à retrouver la source d'une information. La page peut être une URL, ou un numéro de page. Normalement, ces informations sont un peu redondante, mais puisqu'il m'arrive d'oublier dans changer une; ou bien que la numérotation de page soit différente selon l'impression, alors cette redondance est utile. Un 4ème champ pourrait être utile: livre. Mais en général, chaque deck correspond à un seul livre, donc le champs serait inutilement redondant.</p>
<p>J'ai aussi des champs «genre» et «index», pour indiquer que quelques chose vient du Lemme 3, par exemple.</p>
<h3>Information générale</h3>
<p>J'ai un champ contexte, affiché tout le temps, dans la question et la réponse. Ça me permet de savoir dans quel cadre la question est posé. Des mots pouvant avoir des sens fort différent dans plusieurs domaines.</p>
<p>J'ai un champ «variable», parfois appelé «paramètre», qui indique toutes le type de toutes les variables utilisé dans d'autres champs. Ainsi, ça peut indiquer que n est un entier, et f une fonction. Ou bien que o est un objet avec une masse.</p>
<p>Extra est un champs qui contient n'importe quel autre information, qui sera affiché sur la réponse. Je peux m'en servir pour prendre des notes pour expliquer pourquoi je crois qu'il y a une erreur, et vérifier plus tard. Pour mettre un dessin qui aide à comprendre la réponse, sans faire partie d'une question.</p>
<h4>Champs à question</h4>
<p>«Supposition» permet de mettre les hypothèse dont il faut se souvenir afin que le reste de la note ait du sens. Typiquement, si une division doit avoir lieu, je dois supposer que le dénominateur est non-nul.</p>
<p>Beaucoup de notes contiennent des champs «nom», «notation» et «example». Parfois «nom français» et «abréviation». Parce que presque tout peut avoir un nom, que ça soit un théorème, un objet, une relation mathématique. Et parfois, il y a une manière standard de le noter qui n'est pas son nom. Et parfois, ce nom est abrégé de façon standardisé.</p>http://www.milchior.fr/blog/index.php?post/2018/09/29/Une-carte-anki-standard#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/711Apprendre des définitions avec Ankiurn:md5:4af116d1728034920671af30956bf9c82018-09-25T00:51:00+02:002018-11-18T22:56:13+01:00Arthur Milchioranki<p>Apprendre une définition avec Anki est un processus qui peut être tellement complexes qu'il mérite un billet à elles toutes seuls. D'autant que c'est un sujet des plus importants. Plus d'un tiers de mes notes, et près de la moitié de mes cartes sont des définitions. Je tenterai d'utiliser des exemples vraiment basiques, mais certains problèmes n'arrivent que dans des cas complexes. Je vous prie de m'excuser si certains exemples ne sont pas compréhensibles.</p> <h4>Définitions</h4>
<p>Intuitivement, une définition peut être simplement une note avec deux champs, le nom du truc défini, et la définition. C'est parfait si tu veux apprendre, par exemple, qu'un carré, c'est un rectangle qui est aussi un losange.</p>
<h3>Plusieurs définitions équivalentes</h3>
<p>Le problème commence déjà à apparaître. Après tout, un carré c'est aussi un rectangle avec deux côtés adjacents de même longueur. Cette définition est tout aussi valide mathématiquement, et elle est parfois plus utile. Après tout, au lieu de vérifier que ta figure géométrique est vraiment un losange, c'est à dire qu'elle a 4 côtés de même longueur, tu vérifie seulement l'égalité de deux côtés. Et puis, un carré, c'est aussi un losange avec un angle droit.</p>
<p>Bien sûr, tu peux faire 3 notes, une note par définition. Mais alors, quand on te demande «qu'est-ce qu'un carré», tu ne sauras pas forcément quel définition anki attend de toi. Tu pourrais mettre toutes les définitions ensemble, mais ça ferait un champ avec beaucoup de contenu, ce qui est très déconseillé. Et puis, tu peux vouloir qu'anki t'aide à voir quels définitions sont dures pour toi, et lesquels sont faciles. Qu'il te fasse réviser les définitions dures plus souvent. Pour répondre à ce problème, mon type «Définition» contient 7 champs «définition», «définition2», etc... Anki me donne le nom et toutes les définitions sauf une, et me demande de me souvenir de celle qui manque. Et une fois que j'ai vu toutes les définitions, il me demande de me souvenir d'au moins une définition.</p>
<h3>Définition longue</h3>
<p>Prenons un autre exemple, disons que je veuille apprendre le système SI. C'est à dire: mètre, seconde, ampère, kelvin, mole, candela. Ou similairement, que je veuille apprendre ou, et, donc, or, ni, car. Alors je peux réutiliser exactement mon type définition, mais au lieu d'indiquer que c'est plusieurs définition «équivalente», je dis que c'est «la liste:». Donc j'ai un champ en plus dans mon type définition, qui indique comment considérer les éléments listés.</p>
<p>Ce genre de définition est aussi utile, mathématiquement, pour des définitions qui sont longues sans être des listes. Par exemple, des définitions qui quantifient plusieurs variables et qui alternent les quantifications. Je peux mettre chaque quantification dans un champ différent. L'exemple canonique que j'ai est la définition de R(r,k,m), du théorème de Ramsay. «C'est un nombre minimal tel que pour tout ensemble fini E avec au moins R(r,k,m) éléments, pour chaque coloriage avec m couleurs des sous-ensembles à r éléments de E, il exists un sous-ensemble S de E à k éléments tel que tous les r-sous-ensembles de S ont la même couleurs.» Ici, la définition n'est pas une liste, mais apprendre comme une liste est pertinent.</p>
<h3>Des équivalences et une liste</h3>
<p>Utiliser le même système pour les listes et pour les définitions équivalentes n'est pas exactement parfait. Il arrive qu'un objet ait plusieurs définitions, dont l'un est une liste. Par exemple, un groupe est défini, de façon équivalente, comme un monoïde avec des inverses à gauche et à droite. Ou bien comme une structure avec une multiplication, en une constante 1, tel que 1*x=x, tout élément admette un inverse, et * est associatif. Je suis forcé de mettre toute la liste de propriété dans un seul champ.</p>
<h3>Définition, sous certaines hypothèses.</h3>
<p>Certaines définitions ne sont vraies que sous certainse hypothèses. Ainsi, dans les définitions d'un triangle, je pourrai mettre «polygone dont la somme des angles vaut 180°C». Sauf que cette définition n'est vrai qu'en géométrie Euclidienne. Donc si je veux faire des maths assez avancée pour considérer plusieurs géométrie, je me rajoute à côté de cette définition (géométrie euclidienne seulement).</p>
<p>J'ai l'impression que cette technique est bien plus simple que de créer une carte «triangle» dont le contexte est «géométrie euclidienne», et une carte «triangle» dont le contexte serait «géométrie absolue» (i.e. euclidienne ou autre). Cependant, ça reste vrai principalement parce que la majorité de la géométrie que j'apprend est Euclidienne. Si par hasard je devais voir une définition équivalente des triangles, mais qui ne serait valide qu'en géométrie hyperbolique, alors je ne sais pas si crééerai une nouvelle carte ou si je rajouterai cette définition à la carte «triangle».</p>
<h2>Exemple des langages formels.</h2>
<p>Le problème s'est sérieusement posé à moi quand j'ai fait de la théorie des langages formels. Un langage est un ensemble de mot. Un mot est une suite de lettres. On ne fait aucune hypothèse sur le fait que les mots aient un sens, c'est vraiment un jeu formel. Certains langages ont des propriétés particulières. Par exemples, ils peuvent être «rationnels», c'est à dire décrit par une expression régulières. Ils peuvent être reconnaissable, c'est à dire qu'ils sont reconnu par un automate fini. Un théorème fondamentale du domaine dit qu'un langage est reconnaissable si et seulement si il est rationnel. D'où la question suivante: est-ce qu'il faut mettre «rationnel» et «reconnaissable» comme deux noms différents définissant la même chose, et lister ces deux définitions ? D'un côté, mélanger les deux définitions est raisonnable puisqu'elles sont équivalentes. D'un autre côté, l'équivalence est loin d'être trivial, et chaque point de vue permet de développer une théorie très distinctes. Donc utiliser un seul type de carte serait génant quand on voudra étendre les notions de régulier/reconnaissable au dela des ensembles de mots.</p>
<h4>Noms, notations, représentation...</h4>
<p>Comme je l'ai laissé entendre dans l'exemple précédent, une même notion peut avoir plusieurs noms différents. Par exemple, j'ai une carte comprenant les noms Tylenol, doliprane, efferalgan, dafalgan, paracétamol. Et comme définition: antalgique qui n'est PAS antiagrégant (Ce qui était important pour moi, en faisant cette carte, était de me souvenir du quel était antiagrégant; et donc finir par me souvenir de ce que je pouvais prendre avant/après un piercing.) Pour prendre un exemple mathématique, j'ai une carte ayant 3 noms: pullback, fiber(ed) product, cartesian square. Parce qu'ils semble que les mathématiciens ne se soient pas mis d'accord quand il s'agissait de nomme un objet, et plusieurs gens ont eu des idées de noms différentes, qui sont toutes restées dans l'usage courant.</p>
<p>Tout ça pour dire, il peut être pertinent d'avoir plusieurs noms, et donc un champ par nom. Personellement, j'utilise 4 champs noms.</p>
<p>Tout comme pour les définitions, anki me donne tous les noms sauf un, puis me demande le nom manquant. Puis, il me donne les définitions et me demande le/les noms.</p>
<h3>Notations</h3>
<p>En mathématique, un objet n'ai pas seulement un nom, il peut aussi avoir une notation. Un exemple tout bête, «la somme de x et y» sera noté «x+y». Ça peut être bon de le savoir. J'ai donc aussi 4 champs notations.</p>
<p>J'ai aussi un champ «denoté par». Histoire de me souvenir qu'un nombre entier est souvent dénoté par n,m, un complexe par z, et un réel par x. Encore une fois, c'est exemple peuvent semble basique, mais c'est vraiment utile quand on arrive dans des domaines nouveaux, pour se faire une intuition. Quand je lis un papier dans mon domaine de recherche, et que je vois un v, j'aime bien pouvoir me rappeler rapidement que c'est probablement une valuation.</p>
<p>J'ai aussi un champ «représenté par», pour indiquer comment on représente un objet. Ainsi, dans un automate, l'état initial est représenté par une flèche entrante. Un graphe est représenté par des ronds et des flèches/lignes reliant ces ronds.</p>
<p>J'ai un champ «abréviation». Indiquer que l’abréviation de «plus grand commun dénominateur» est «pgcd» n'a pas l'air d'avoir beaucoup d'intérêt. Mais ça permet à anki de me demander «de quoi PGCD est l’abréviation» ?</p>
<p>Les question pour tout ces sujets sont similaires aux questions pour les noms.</p>
<p>La majorité de mes cartes sont en anglais. J'ai aussi un champ pour le nom français des choses; car c'est souvent pratique de connaître les deux noms quand la traduction n'est pas trivial. Par exemple, je sais qu'une Power series, c'est une Série entière. Fundamental theorem of Algebra, est le théorème d'Alembert-Gauss en Français. Etc... Dans ce cas, basiquement, étant donné le nom anglais/français, anki me demande l'autre nom.</p>
<h4>Examples et contre-example.</h4>
<p>C'est une trivialité, mais il est bien plus simple d'apprendre des concepts si l'on a des exemples. Ainsi, quand je peux, je marque jusqu'à 4 examples. Et 4 contre-exemples.</p>
<p>Un exemple d'exemple: concernant le «halo effect», les politiques beaux ont plus de chances d'êtres élus, quand bien même les élécteurs ont pas l'impression de prendre ce critère en compte.</p>
<p>Le souci, c'est pour les définitions de fonctions. Ainsi, disons que je définisse une fonction qui, à un polygone, associe son nombre de côté. J'ai envie que Anki me dise «voici un carré, quel est son nombre de côté». Et non pas simplement «donne un exemple de nombre de côté d'un polygone.». Donc pour l'instant, ce genre d'exemple se trouve à part, dans des cartes questions. Peut-être que je devrai faire deux champs exemple, un pour la question, un pour la réponse. Mais comme chaque champ ralentit anki, pour l'instant, je n'ai pas osé le faire.</p>
<h4>Variables</h4>
<p>Reprenons l'exemple des fonctions ci-dessus. Disons que je veux définir la fonction PGCD. Alors j'ai un champ variable, où j'indique «n,m\in\mathbb N» (c'est à dire «n et m sont des nombres entiers»). Ma notation sera PGCD(n,m) et ma définition simplement «le plus grand entier divisant n et m».</p>
<h4>Fonctions, ensembles, et autres structures</h4>
<p>Plus haut, j'ai un peu simplifié le cas des fonctions. L'exemple que je donne convient totalement si la seule chose qui m'intéresse c'est le PGCD de deux nombres. Ça marche si la fonction peut être défini directement à partir de son argument. Disons que je veux définir la fonction exponentielle. Une des définitions est: l'inverse de ln. Une autre définition est: la fonction égale à sa dérivée, et qui vaut 1 en 0. Pourvu que l'on comprenne ses définitions, il semble clair qu'il ne soit pas possible de définir «exponentielle de x» sans définir «exponentielle»<sup>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/25/Apprendre-des-d%C3%A9finitions-avec-Anki#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup>. Savoir si je définis la fonction en un point ou bien la fonction globalement est donc un choix que je dois faire régulièrement, et je suis rarement sûr de mon choix.</p>
<p>Un problème similaire se pose quand certains objets sont définis comme étant les éléments d'un ensemble. Je prendrai un exemple, les mots bien parenthésés. «()<img src="http://www.milchior.fr/blog/index.php?post/2018/09/25/)(" alt="" />» est bien parenthésé. Par contre «<img src="http://www.milchior.fr/blog/index.php?post/2018/09/25/)» ne l'est pas car une parenthèse n'a pas été fermée, ni «(" alt="" />(« car une parenthèse fermante ne correspond à aucune parenthèse ouvrante. Je peux définir un mot parenthésé comme étant soit une concaténation de mot bien parenthésé, soit un mot bien parenthésé dans une paire de parenthèse. Le souci avec cette définition, c'est qu'elle est récursive, elle fait appel à la notion de «mot bien parenthésé». Et si la définition contient le mot défini, la question «quel est le nom de ce qui est défini ci-dessous» n'a plus d'intérêt. Ça me pousse à définir l'ensemble des mots bien parenthésé, appellé <a href="https://fr.wikipedia.org/wiki/Langage_de_Dyck">langage de dyck</a>. Et ensuite, je défini un mot bien parenthésé comme étant un élément du langage de dyck <sup>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/25/Apprendre-des-d%C3%A9finitions-avec-Anki#wiki-footnote-2" id="rev-wiki-footnote-2">2</a>]</sup>. Je me retrouve donc avec deux cartes, alors que c'est essentiellement une seule notion, je trouve donc ça assez étrange et peu satisfaisant.</p>
<h4>Contexte.</h4>
<p>Certains mots ont une définition entièrement différente selon le contexte. Par exemple l'induction d'une plaque à induction n'a rien à voir avec l'induction mathématique. Dans ce cas, j'ai un champ contexte, qui est affiché en permanence, et qui contient le contexte de la carte. Grâce à ce contexte, je suis sensé pouvoir savoir quel définition donner quand anki me demande la définition du mot induction.</p>
<h4>Autres champs.</h4>
<p>Chacun des champs suivant correspend à une question d'anki. Anki me donne le nom, la définition, la notation, etc... et me demande de répondre à cette question.</p>
<h3>Suppositions</h3>
<p>Disons que je définisse la notion de définition, que, pour deux nombres a et b, je veuille définir a/b. À ce moment là, je mettrai dans un champ «supposition» la phrase suivante "b est différent de 0". Bref, j'y met les hypothèses qui permettent à la définition d'avoir du sens.</p>
<p>En algèbre linéaire, certaines définitions n'ont du sens où de l'intérêt que si on s'intéresse à des espaces vectoriels de dimension finis (par exemple, le déterminant). Ou encore que si l'on s'intéresse à un espace vectoriel complexe. C'est aussi le champ où je précise ce genre de restrictions.</p>
<p>Dans certaines définitions liées à la logique, je marque des axiomes dans ce champs. Ainsi, en théorie des ensembles, pour la définition du produit cartésien, ce champ contient les axiomes de ZF permettant de s'assurer que le produit cartésien existe vraiment.</p>
<h3>Type</h3>
<p>Le type de l'objet défini. Ainsi, ça peut être utile de noter quelque part que la multiplication est une fonction binaire. C'est utile de savoir que l'élasticité d'un marché s'exprime en pourcentage. Ou encore en typographie que l'Italique est un «typestyle».</p>
<p>Ce champ et le suivant justifie la différence entre la définition d'une fonction f, et de la définition de «f(x)». Ainsi, la fonction sinus est impaire. La propriété «être impaire» ne peut pas s'appliquer à sinus(x), pour x un complexe.</p>
<h3>Propriété</h3>
<p>Parfois, il est bon de connaître une propriété qui découle de la définition. Ainsi, il existe un unique carré, à rotation et aggrandissement prês. Alors qu'il existe plusieurs losanges, et plusieurs rectangles. Donc c'est intéressant de mettre cette propriété dans carré.</p>
<h3>Valeur standard/par défaut</h3>
<p>Le seuil de la douleur, en son, est le volume maximale à partir duquel l'écoute devient douloureuse. C'est une définition, mais connaître une approximation de la valeur habituel est bien aussi. J'ai donc un champ pour indiquer 120dB.</p>
<p>J'utilise principalement la «valeur par défaut» en informatique. Quand je cherche à apprendre les différentes options d'un programme, c'est intéressant non seulement de savoir la signification d'une option, mais aussi de savoir quel sera la valeur de cette option, quand on lance le programme, qu'on ne configure rien.</p>
<h3>Intuition</h3>
<p>Un champ contient l'intuition lié à la définition. Souvent, en mathématique, une définition est données de façon très formelle. C'est pourtant souvent utile de savoir d'où vient la définition. Ainsi, l'espérence en probabilité, c'est grosso modo une moyenne, mais pondéré par la probabilité qu'on accorde à chaque événement. Dans le plan complexe, l'intuition de la fonction inverse c'est: une symmétrie par rapport à l'axe horizontale, et une symétrie par rapport au cercle unité.</p>
<h3>Construction</h3>
<p>Quand plusieurs définitions sont équivalentes, ça me permet d'indiquer comment on passe d'une définition à l'autre.</p>
<p>Quand il n'est pas claire que la définition a du sens (parce que celle ci est complexe, par exemple), ce champ me permet d'indiquer pourquoi il existe vraiment un objet tel que celui que j'ai défini.</p>
<h3>Étymologie</h3>
<p>Ce champ n'a probablement pas besoin d'explication.</p>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/25/Apprendre-des-d%C3%A9finitions-avec-Anki#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] En fait si, puisque exp(x) égal la somme pour n entier non-négatif des x^n/n!</p>
<p>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/25/Apprendre-des-d%C3%A9finitions-avec-Anki#rev-wiki-footnote-2" id="wiki-footnote-2">2</a>] ou bien un mot dont tous les préfix ont au moins autant de parenthèses ouvrantes que de parenthèses fermantes.</p></div>
http://www.milchior.fr/blog/index.php?post/2018/09/25/Apprendre-des-d%C3%A9finitions-avec-Anki#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/710Se souvenir des gens à l'aide d'Ankiurn:md5:d04ce40487c1ad819a1aabbf3a1f40222018-09-12T18:10:00+02:002018-11-18T22:58:40+01:00Arthur Milchioranki<p>Anki a changé beaucoup de chose à ma vie. La principale étant que maintenant, je suis capable de retenir le nom et le visage des gens !</p> <p>Par exemple, en septembre 2017, j'ai commencé un nouveau travail. En aout, j'ai été sur le site de mon nouveau laboratoire et j'ai commencé à regarder les pages personnelles de mes futurs collègues. Ceux qui avaient une photo, j'ai ajouté dans Anki leur nom, prénom et photo. En septembre, en commençant mon travail, je connaissais déjà leur nom<sup>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/12/Se-souvenir-des-gens-%C3%A0-l-aide-d-Anki#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup>. La différence est d'autant plus visible pour moi que je peux comparer entre les gens ayant une photo et ceux n'en ayant pas. Ainsi, les secrétaires n'ont pas de pages pro, ni de photo d'elle. J'ai donc eu bien plus de mal à me souvenir du nom des secrétaires. D'autant que je ne me sentais pas de leur demander si je pouvais prendre une photo d'elles. Quand j'ai une photo, la question ressemble à <a href="http://www.milchior.fr/blog/public/2018-09-12-180255_580x653_scrot.png" title="2018-09-12-180255_580x653_scrot.png"><img src="http://www.milchior.fr/blog/public/.2018-09-12-180255_580x653_scrot_s.png" alt="2018-09-12-180255_580x653_scrot.png" title="2018-09-12-180255_580x653_scrot.png, sept. 2018" /></a> et la réponse à <a href="http://www.milchior.fr/blog/public/2018-09-12-180045_587x644_scrot.png" title="2018-09-12-180045_587x644_scrot.png"><img src="http://www.milchior.fr/blog/public/.2018-09-12-180045_587x644_scrot_s.png" alt="2018-09-12-180045_587x644_scrot.png" title="2018-09-12-180045_587x644_scrot.png, sept. 2018" /></a></p>
<p>Il y a tout de même un effet de bord étrange. J'apprends la photo des gens, et pas leur visage. Donc en voyant quelqu'un je dois me demander à quel photo ils ressemblent avant de pouvoir retrouver le nom.</p>
<p>Plus tard, je me suis mis à ajouter des indications supplémentaire, les sujets de recherche d'une personne, où je l'ai rencontré, ses ouvrages, la raison de sa notoriété. Ce qui sera utile pour ajouter des notes dans anki relatifs à des stars, des auteurs, des pontes du domaine, etc...</p>
<p>Le souci, c'est que je rencontre des gens souvent. Et ce n'est pas toujours évident de penser à noter les noms, pour chercher des photos plus tard. Certaines conférences ont des listes de participants, donc c'est pratique. Mais, disons que j'aille à un événement lié au shibari (bondage japonais); il est assez crédible que les gens n'apprécient pas qu'une base de donnée contiennent l’information qu'ils s'y sont rendu. Quand bien même cette base de donnée est privée, elle passe par internet pour être synchronisé entre mon téléphone est mon ordi.</p>
<h4>Célébrités</h4>
<p>J'ai aussi beaucoup de mal avec les noms des célébrités. En général, je peux vaguement dire pourquoi quelqu'un est connu, mais sans pouvoir le dire précisément. Ainsi, je sais que Dider Leribon et Didier Lestrande ont écrit sur l'homosexualité. Mais je ne sais plus qui a écris quel livre. Je sais aussi que Eric S Raymond et Paul Graham ont écrit des textes célèbres sur la culture hacker, et que le nom de leur ouvrage contient deux mots. Mais je ne sais plus qui a écrit Hacker et Paintre, et qui a écrite la Cathédrale et le Bazar. Donc je tente d'utiliser Anki pour apprendre ce genre de chose. Et s'il devait arriver - ce qui ne me semble pas impossible - que je les croise, au moins, je saurai les reconnaître. J'imagine que j'updaterai ce billet, plus tard, avec le résultat de cette expérience.</p>
<p>Wikipédia a des <a href="https://en.wikipedia.org/wiki/List_of_pioneers_in_computer_science">listes</a> de <a href="https://en.wikipedia.org/wiki/List_of_computer_scientists">gens</a> <a href="https://en.wikipedia.org/wiki/List_of_computing_people">important</a> en informatique. Cependant, ces listes contiennent Euclide, Turing, Torvalds, Knuth, Jobs... j'ai tenté de les ajouter en ordre chronologique; les premières cartes étaient simples. Euclide, Al-Khwarizmi, etc... Ils sont réellement célèbres. Mais maintenant, je réalise que même si je sais que <a href="https://en.wikipedia.org/wiki/Frances_E._Allen">Frances E. Allen</a> est une pionnière de l'informatique, ma note à son sujet ne me dit pas vraiment pourquoi. Si je devais la rencontrer, je connaîtrait peut-être son nom. Je saurai qu'elle a été la 1ère femme à avoir le prix Turing. Mais ça ne me dirait pas réellement ce qu'elle a fait pour le mériter. Certes, je sais qu'elle a travailler sur les compilateurs, mais sans savoir ce qu'elle a apporté à ce domaine. Pire, puisque son travail a fondé la discipline, ses résultats sont probablement tellement standards que je n'imagine pas que quelqu'un a du les inventer. Que j'aurai du mal à imaginer à quel point, à son époque, ça a été révolutionnaire.</p>
<p>J'utilise anki pour les personnes réelles, mais aussi pour les gens imaginaire. Ainsi, ça me paraît pratique d'ajouter le noms des personnages du disque-monde, ils sont nombreux, et c'est plus pratique quand je (re)lis les livre de Pratchett, de me souvenir de quel membre du guet à quel particularité. Je suis en train de faire de même pour Tau Zéro, mais je crains que je ne finisse d'écouter le roman avant d'avoir fini d'apprendre la liste des personnages. J'ai songé à faire de même pour La terre du milieu, de Tolkien, avant de réaliser que ça serait une super mauvaise idée.</p>
<h4>Oubli</h4>
<p>Les visages me posent un souci que je n'ai habituellement pas avec Anki. J'oublie bien plus rapidement les visages que les autres cartes. En effet, l'écart entre deux révisions augmente à chaque révision successive(sauf en cas d'oubli). C'est le principe de base des systèmes de mémorisation par répétition. Si j'ai réussi à me souvenir du nom de quelqu'un après 4 jours, 16 jours, 2 mois, théoriquement, je devrai pouvoir attendre 8 mois avant de revoir cette information. En pratique, cette théorie fonctionne bien quand les différents savoir sont reliés entre eux. Même si je passe 1 an sans voir la définition de groupe, en pratique, j'aurai tellement réutilisé les groupes durant cette année que je n'aurai jamais vraiment pu oublier cette définition. Alors qu'il est totalement possible que je passe 1 an sans voir la personne, donc sans utiliser son nom. Et je finis par l'oublier.</p>
<div class="footnotes"><h4>Note</h4>
<p>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/12/Se-souvenir-des-gens-%C3%A0-l-aide-d-Anki#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] En fait, c'était même bizarre. En effet, comme théoriquement, on ne se connaissait pas, quand ils se présentait à moi, je devai éviter de les appeller par leurs noms.</p></div>
http://www.milchior.fr/blog/index.php?post/2018/09/12/Se-souvenir-des-gens-%C3%A0-l-aide-d-Anki#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/708Using anki to learn names and peopleurn:md5:aa36f7f8d15d81fedd9d43691084f7782018-09-05T10:59:00+02:002019-05-04T16:27:49+02:00Arthur Milchioranki <p>This was moved to my <a href="http://www.milchior.fr/blog_en/index.php/post/2019/05/04/Using-anki-to-learn-names-and-people">english blog</a></p>http://www.milchior.fr/blog/index.php?post/2018/09/05/Using-anki-to-learn-names-and-people#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/706Anki and learning which require practice (origami, knot, instrument...)urn:md5:e7aa4fd3e52bd28842657c353b054f802018-09-05T10:42:00+02:002019-05-04T17:29:30+02:00Arthur Milchioranki <p>This post has been moved to my <a href="http://www.milchior.fr/blog_en/index.php/post/2019/05/04/Anki-and-learning-which-require-practice-%28origami%2C-knot%2C-instrument...%29">english blog</a></p>http://www.milchior.fr/blog/index.php?post/2018/09/05/Anki-and-learning-which-require-practice-%28origami%2C-knot%2C-instrument...%29#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/705How I failed learning lyrics with ankiurn:md5:43ab4937be3ffbd3aafc502957e3975d2018-09-05T10:28:00+02:002018-11-18T23:00:43+01:00Arthur Milchioranki<p>I tried to learn lyrics of song I love<sup>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/05/How-I-failed-learning-lyrics-with-anki#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup> using anki. This is one of my biggest failure.</p>
<p>I begin by explaining the technical reason of the failure, then the human one. And finally, the problem that is specific to learning songs.</p>
<div class="footnotes"><h4>Note</h4>
<p>[<a href="http://www.milchior.fr/blog/index.php?post/2018/09/05/How-I-failed-learning-lyrics-with-anki#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] Sometime song I hate too. At least song with which I have a love-hate relation.</p></div>
<h4>Technical failure</h4>
<h3>Problems related to the set of cards to see one day</h3>
<p>Let me consider a song wich 60 verses, for my example. A length which is not unusual (e.g. Every body knows, of L. Cohen). Then a note in anki (a set of information, i.e., a song), will generate at least 60 cards. One by verse. May be more, if you also decide to see every pair of verses. And/or every distique.</p>
<p>By default, in anki, if you see one card (i.e. when anki ask you to recall one verse), every other cards (verses) are buried. It means that you will not see any other verse the same day. If for some reason, the planning software believe there are 4 verses you should be seeing today, then you'll see a single verse. The other one will be seen, in the best case, the three following days. This delay is a really bad things and defeat the purpose of spaced repetition software.</p>
<p>This get even worse. May be anki will believe that there is also some other card you should see tomorrow. It will also be delayed for at least 4 days. And so on. Cards to see get more and more delayed, which ruin anki's purpose. I.e. you'll recall those card badly.</p>
<p>Of course, you can choose not to bury cards. In this case, what happens is that anki will ask you to recall a verse. A few minutes after, it will asks for the preceding verse. You will recall this preceding verse, but only because you just saw it, not because you really know it.</p>
<h3>Note type</h3>
<p>Another problem, which I have not yet solved, is: what kind of cards you should create. I first created cloze deletion cards. That means that card number n asks for verse number n and shows every other verses. Showing the verses after the current is a nonsens, but that's the easiest thing to do with anki. The manual of Space repetition software's state that the best way to learn a list is overlap. You ask verses n and n+1, and on another card, you ask verses n+1 and n+2. This is hard to do in anki, because cloze can not overlap. It means that you have two remaining choices: either you have note type with at least 60 fields (let's say a hundred, to be safe.) or you have one note by verse.</p>
<p>One note by verse is a very bad idea, for at least two reasons. I can tell you, I tried it, using an add-on doing exactly this. First, imagine that one made a typo, let's say on verse 40. Then you'd need to correct the typo on the 20 last cards. If it's a small typo, a search/replace may work. If it concerns a newline, you are screwed. Secondly, because it means that you do not have anymore the notion of «related cards». When you see question about one song, you may see another question about the same song the same day. As I explained above, it is a bad idea.</p>
<p>Doing a note type with a hundred fields is not such a good idea. Anki is not made for this, and it may makes anki really slow when adding a new note (I know, I already have a note with a hundred fields). This problem is due to the implementation of anki. I think I could solve it and create a more efficient implementation. I also know that the lead developer would not accept this, so I don't want to waste time doing it.</p>
<p>One thing is sure, it becomes impossible to enter a song by hand. At least not if you want to have one verse by field. Thus, the import process should be done using an add-on. I may want to give a try one-day, but right now, I don't know how to create a graphical interface. At least, I don't know how to do more than just adding a field in a menu, or a ok/cancel popup. Which is not enough to deal with songs. So, right now, I'm not trying to do it.</p>
<h4>Human failure</h4>
<p>The main problem is that, as soon as I want to add some lyrics in anki, I want to add hundreds of songs from dozens of artists I love. This takes time, deciding what to add, finding the lyrics on the web, or sometime typing them if the song's lyric is not already online(Which happens quite often when you love singers which are not famous). But mostly, it take a lot of time reviewing them.</p>
<p>Another problem comes from the fact that (I think) I already know most of the lyrics of the songs I add in anki. I'll want to see the hundred of songs immediately. I can do it if I have a free hour. The trouble is that, a few day later, it will create a hundred of new card to review. Which led to the technical problem of having a lot of verses to review simultaneously.</p>
<p>On the other hand, if, in a day, I see only 10 new verses, it will be frustrating that I don't consider the hundred of other song I want to learn. Furthermore, I'll always see the same songs, which means that the last songs, either by alphabetical order, or by order in which I add them, will not be seen before months. Which is frustrating, because if I just added a song, it means I would love to see it right now.</p>
<h4>Failure related to songs</h4>
<p>One last problem is that song may be very repetitive. When a few verses repeat themselves multiple times in the song, e.g. in a chorus, you need a lot of context to know which is the next verses which is missing. You can't just read the 3 last lines. You need to know whether its the first, second, third chorus...</p>
<p>Furthermore, the cards created to learn the second chorus are a waste of time, since you already knew the first chorus.</p>
<p>In fact, when the repetition is only a chorus, it's kind of ok. You may write {chorus} instead of rewriting the chorus. It will save you time, since {chorus} is shorter.</p>
<p>The problem mostly is when the chorus change a little bit each occurrence. I don't have english example, but in French, it's quite usual to have chorus were one or two words are sometime changed. Either you write {Chorus (the current change)} to state that this time, the chorus has (the current change) (which is really strange to read when you learn your card), or you write the chorus entirely, and then you have the same problem as above.</p>
<p>This means that, essentially, what you really want to know is to learn which part of the song comes after which part, to see the big picture. This would let you know what goes after each chorus, since you'd essentially ignore the chorus. But doing the «big picture» seems to be complicated, how can you tell Anki how to process it ?</p>http://www.milchior.fr/blog/index.php?post/2018/09/05/How-I-failed-learning-lyrics-with-anki#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/704Hundred's of deck in Anki: why it can be usefulurn:md5:b5949243803a00cbc9e72a26145ef6b92018-01-30T13:02:00+01:002019-05-04T17:31:04+02:00Arthur Milchioranki <p>Post moved to <a href="http://www.milchior.fr/blog_en/index.php/post/2019/05/04/Hundred-s-of-deck-in-Anki%3A-why-it-can-be-useful">my english blog</a></p>http://www.milchior.fr/blog/index.php?post/2018/01/30/Hundred-s-of-deck-in-Anki%3A-why-it-can-be-useful#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/689Lists in anki: desiderata and partial solutionurn:md5:8032ab07d6e96f7c972861444e1c58592018-01-05T09:17:00+01:002019-05-04T17:21:25+02:00Arthur Milchioranki <p>This post has been moved to my <a href="http://www.milchior.fr/blog_en/index.php/post/2019/05/04/Lists-in-anki%3A-desiderata-and-partial-solution">english blog</a></p>http://www.milchior.fr/blog/index.php?post/2018/01/05/Lists-in-anki%3A-desiderata-and-partial-solution#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/686Logiciel de mémorisation pour les mathématiquesurn:md5:67705e3bd0a0cd1134ce4e0f368a7d212016-11-29T00:05:00+01:002018-11-22T03:04:17+01:00Arthur Milchioranki<p>En traînant sur <a href="http://lesswrong.com">less wrong</a>, j'ai découvert un truc que, visiblement, beaucoup de gens autour de moi connaissait - mais pas moi. <a href="http://ankisrs.net/">Anki</a>, un logiciel pour aider à la mémorisation, partant du principe que pour se souvenir des choses, il faut les revoir juste avant de les oublier, et que plus on les a revu, plus on met longtemps avant de les oublier. Il semblerait qu'en général, il soit principalement employé pour l'apprentissage de vocabulaire étranger. Je m'en vais vous expliquer comment je l'utilise pour les mathématiques. Sachez déjà que vous pouvez trouver un(des) example(s) de mes decks <a href="http://milchior.fr/Anki/">ici</a></p> <p>Personnellement, mon plus grand problème avec les mathématiques, c'est la quantité de choses à apprendre. Je commence par donner un exemple, qui ne sera pas forcément clair pour les gens ne connaissant pas déjà un peu le domaine dont je parle, mais ça ne devrait pas trop gêner à saisir l'idée générale. J'ai voulu découvrir ce qu'était la théorie des catégories. Un autre jour j'ai voulu lire un manuel d'introduction à la théorie des nombres. Deux sujets qui, ont l'air franchement passionnants. Dans lequel les premières pages me semblent clairs. Mais après quelques dizaines de pages, j'avais oublié les définitions exactes donnés dans les pages d'avants. Pas des définitions très complexes. Juste trop nombreuses.</p>
<p><strong>J'insiste énormément sur le fait que je parle d'apprendre des définitions que j'ai comprises. Il ne sert à rien, en mathématique, et de manière général, d'apprendre sans comprendre</strong> (à part une liste de courses ou les décimales de Pi, auquel cas il ne sert à rien de l'apprendre.)</p>
<p>Dans le cas des catégories, les définitions étaient expliquée en montrant comment des propriétés bien connus d'algèbre ou de topologie étaient des cas particuliers des propriétés catégoriques qu'on nous introduisait. C'est génial pour comprendre, vu que ça ramène à des notions connus. Par exemple, je me souviens que Épi et Mono sont les généralisations de surjectif et d'injectif. Ou d'injectif et surjectif. J'avais toujours un doute. Dans tous deux cas, ça me permettait donc de savoir que même un Épi peut être Mono. Mais d'une part, ça garde la question «Un Épi, c'est surjectif ou injectif ?» Et d'autre part, savoir que c'est une généralisation ne m'aide pas à savoir comment ça généralise. Quelles propriétés des surjections sont gardées et lesquels ne le sont pas. Par exemple, suivre de trop près la métaphore indiquerait que Épi et Mono implique Iso.</p>
<p>Et pour ce genre de problème, un logiciel de mémorisation est génial. Le souci, c'est que les decks créé par la communauté d'utilisateur de anki sont assez médiocres. D'abord parce qu'on dirait qu'aucun procédé systématique n'a été suivi en créant les cartes (certains ont juste scanné des pages de cours manuscrites). Et puis parce que c'est rarement des maths qui m'intéressent. Je ne cherche pas à apprendre mes tables de multiplication, ni les bases de calculus. En fait, les seuls deck de la communauté que j'utilise sont: pour apprendre les notes naturelles sur les cordes de guitare, les techniques pour utiliser efficacement un logiciel de mémorisation, et le deck créé à partir de <a href="https://intelligence.org/rationality-ai-zombies/">Rationality, from A.I. to Zombie</a>. Je me retrouve donc à créer mes propres decks à partir de livre de cours ou d'articles de recherche dont j'aimerai maîtriser le contenu.</p>
<h5>Les règles que j'utilise.</h5>
<h4>Les decks.</h4>
<p>J'utilise un deck par livre. Parce que comme ça je pourrai donner ses decks à la communauté en indiquant précisément ce que contient le deck. Ça veut dire que j'ai choisi de prendre le temps de remettre dans le deck des trucs que je crois déjà connaître; et en particulier des choses sont en double d'un deck à l'autre (Par exemple, la définition d'un ensemble ouvert se trouve bien sûr dans un deck de topologie. Mais il se trouve aussi dans un deck d'analyse complexe, où la définition est restreinte aux cas des espaces métriques.). J'ai l'impression que ça ne me fait pas perdre beaucoup de temps, que ça me permet d'être sur que je n'omet pas de chose que je pense maîtriser à-peu-près - mais en fait non. Et ça permettra à la communauté puisse commencer par n'importe quel deck.</p>
<p>Je précise tout de suite que ces decks ont vocation à servir à aider la lecture du livre. Mais PAS à la remplacer. Parce que avoir vu au moins une fois la démonstration est souvent important. Et que mes deck ne reprennent pas en général les démonstrations<sup>[<a href="http://www.milchior.fr/blog/index.php?post/Logiciel-de-m%C3%A9morisation-pour-les-math%C3%A9matiques#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup>.</p>
<p>Je ne créé pas la totalité d'un decks d'un coups. Par exemple, je lis un bouquin de théorie des ensemble. Pour l'instant je n'ai créé que le chapitre un. Parce qu'il y a déjà tellement de définitions différentes que je ne maîtrise pas encore par cœur et qui me demande de réfléchir (le type, la cofinalité) que je ne serai pas encore capable de comprendre la suite du livre. (À ce sujet, il faudrait que je conseille aux utilisateurs de mes decks de «suspendre» l'étude du chapitre n tant qu'ils ne maîtrisent pas le chapitre n-1.)</p>
<p>À contrario, je construis plusieurs decks d'un coup. Ce qui est d'ailleurs assez cohérent avec la manière dont les maths sont étudiées en cours. C'est à dire que si je suis bloqué pour l'instant par ma maîtrise de l'analyse complexe, ça ne m'empêche aucunement d'avancer dans un livre de théorie des graphes. Et le temps d'avancer petit à petit dans l'apprentissage sur Anki des résultats d'analyse, je peux y mettre des résultats de théorie des graphes.</p>
<h4>Type de carte</h4>
<p>Une carte standard de Anki montre un recto et demande un verso. Et parfois les cartes sont à double sens: on montre le verso et on demande le recto. C'est génial pour du vocabulaire, et je l'utilise quand je cherche à me souvenir de la traduction anglaise d'un mot que je connais en français, ou vice-versa.</p>
<p>À part pour le vocabulaire, j'utilise presque uniquement les textes a trous. C'est à dire, comme son nom l'indique, il y a un texte de base, et on cache une partie du texte que l'utilisateur doit retrouver. L'intérêt du texte à trou, c'est que ça permet de simuler les cartes normales. Donc une fois qu'on a sélectionner texte à trou, on n'a jamais besoin de rechanger le type de texte.</p>
<p>Je rajoute dans un champ à part le numéro de chapitre, section, sous-section. Et si c'est un théorème, lemme, corollaire, définition<sup>[<a href="http://www.milchior.fr/blog/index.php?post/Logiciel-de-m%C3%A9morisation-pour-les-math%C3%A9matiques#wiki-footnote-2" id="rev-wiki-footnote-2">2</a>]</sup>, je rajoute son numéro. Je ne rajoute pas (encore) le numéro de la page, parce que c'est souvent redondant avec les informations précédentes. Mais je suppose que je devrai le faire quand il n'y a pas de numéro d'environnement, car dans certains livre où rien n'est numéroté et dont les sections font 10 pages, retrouver une définition précise peut prendre plusieurs minutes. Cet intérêt est d'autant plus grand que, pour se souvenir d'un résultat, une méthode efficace est de se souvenir de sa preuve. Et que réciproquement, il est pratique d'avoir la position du résultat pour relire la preuve si on s'aperçoit qu'on l'a oublié.</p>
<p>Un dernier point important: je coche systématiquement la case disant à Anki de ne pas vider les champs quand j'ai rempli une carte. Concernant les numéros de chapitre et de section, c'est évident que ça change rarement d'une fois sur l'autre et qu'on gagne du temps en n'ayant pas à les retaper. Concernant les maths elles-mêmes, j'ai remarqué que les objets arrivant les uns après les autres sont souvent similaires. Ainsi, dans un livre d'algèbre linéaire, beaucoup de résultats vont commencer par «Soit U,V deux espace vectoriels et T un morphism de U dans V». C'est quand même pratique d'éviter de retaper ça a chaque fois.</p>
<h3>Définition</h3>
<p>Pour une définition, il y a en général trois trous. Le premier, c'est le nom de l'objet défini. Le second c'est la notation utilisée pour représenter l'objet. et le troisième c'est la définition. Si un objet admet plusieurs définitions équivalentes, je rajoute un trou par définition. Parce que si on te demande ce qu'est un carré, et que tu réponds : un losange avec un angle droit, tu n'as pas envie d'avoir faux car ça a été défini comme un rectangle avec deux côtés adjacents de mêmes longueurs.</p>
<p>Attention cependant, il vaut parfois mieux que la notation et la définition apparaissent dans le même trou. Ainsi pour X un ensemble, il est simple d'intuiter que «Aff(X)» est «le plus petit espace affine contenant X». Or ce genre de question est totalement inintéressante. Ce qu'il faut c'est retrouvé cette définition à partir de «l'ensemble des éléments de la forme Somme des x_ir_i, ou x_i appartient à X, r_i appartient au corps, et la somme des r_i vaut 1.»</p>
<h3>Théorème</h3>
<p>Un théorème comprend en général deux trous: les hypothèse, et la conclusion. Un troisième trou si le théorème est important et admet un nom classique. Cependant, il faut faire attention, quand une hypothèse introduit un objet, il vaut mieux introduire l'objet en dehors du trou. C'est à dire «Si <a href="http://www.milchior.fr/blog/index.php?post/..." title="...">...</a>, alors le centre de P est non trivial» est peu clair. Alors que «Soit P un groupe. Si <a href="http://www.milchior.fr/blog/index.php?post/..." title="...">...</a>, alors le centre de P est non trivial» est plus clair.</p>
<p><em>Hypothèses</em><br />
Une première chose très importante est de toujours remettre toutes les hypothèses. Parfois, certaines hypothèses sont marquées en début de section/chapitre et sont supposées vrai pour tout le chapitre. Sauf que lors de la révision, on ne voit plus ces hypothèses (il serait même absurde de demander à connaître les hypothèses par cœur, chapitre par chapitre).</p>
<p>Il est aussi important de mettre des trous vides. En théorie des automates, certains théorèmes concernent des monoides, et d'autres uniquement des monoides finis. Si je dis «Soit M un monoide <a href="http://www.milchior.fr/blog/index.php?post/fini" title="fini">fini</a>» ou «soit M un monoide», la simple présence du trou m'indique que l'hypothèse est que M est fini. Donc dans le deuxième cas, il est indispensable de mettre «Soit M un monoide <a href="http://www.milchior.fr/blog/index.php?post/"></a>». C'est d'autant plus simple à faire que, si on dit à Anki que quand on créé une nouvelle carte, ses champs soient les champs de l'ancienne carte,</p>
<p><em>Implication multiples</em><br />
Ce qui m'amène à un autre problème. Une hypothèse peut avoir plusieurs implications. Une propriété peut être impliqué par plusieurs hypothèse différentes. Donc il vaut mieux mettre
«Si <a href="http://www.milchior.fr/blog/index.php?post/P1" title="P1">P1</a> ou <a href="http://www.milchior.fr/blog/index.php?post/P2" title="P2">P2</a> .. ou <a href="http://www.milchior.fr/blog/index.php?post/Pi" title="Pi">Pi</a> alors <a href="http://www.milchior.fr/blog/index.php?post/Q" title="Q">Q</a>», ou bien «Si <a href="http://www.milchior.fr/blog/index.php?post/P" title="P">P</a> alors <a href="http://www.milchior.fr/blog/index.php?post/Q1" title="Q1">Q1</a> et <a href="http://www.milchior.fr/blog/index.php?post/Q2" title="Q2">Q2</a> ... et <a href="http://www.milchior.fr/blog/index.php?post/Qi" title="Qi">Qi</a>». En effet, on ne voudrait pas avoir tort juste parce que, de toutes les conséquences, on a choisi celle qui est sur une autre carte. Ici, chaque terme entre crochet indique un trou différent.</p>
<p>On tomberait bien sur sur un problème si P implique Q et R et que Q est impliqué par O et P. Mais jusqu'à présent, je ne suis pas tombé dessus, et j'ai l'impression que dans les maths, en pratique, ça arrive rarement.</p>
<p><em>Ordre des mots</em><br />
Quand un théorème est de la forme «<a href="http://www.milchior.fr/blog/index.php?post/Le centraliseur de A dans G" title="Le centraliseur de A dans G">Le centraliseur de A dans G</a> <a href="http://www.milchior.fr/blog/index.php?post/divise" title="divise">divise</a> <a href="http://www.milchior.fr/blog/index.php?post/le normalisateur de A dans G" title="le normalisateur de A dans G">le normalisateur de A dans G</a>». Il faut absolument avoir «Le normalisateur de A dans G <a href="http://www.milchior.fr/blog/index.php?post/est divisé par" title="est divisé par">est divisé par</a> le centraliseur de A dans G». Sinon on peut compléter le résultat par simple reconnaissance de motif. En se doutant que le trou du milieu est soit une égalité, soit une affirmation sur la divisibilité. Pour l'instant je n'ai pas encore trouvé comment faire ça efficacement, mais il faudrait que je repasse sur mes anciennes carte et fasse cet ajout.</p>
<h3>Exemples</h3>
<p>La dernière chose que je veux rajouter dans Anki, ce sont les exemples. En général, ils sont de la forme
«<a href="http://www.milchior.fr/blog/index.php?post/A" title="A">A</a>, <a href="http://www.milchior.fr/blog/index.php?post/B" title="B">B</a>.., <a href="http://www.milchior.fr/blog/index.php?post/Z" title="Z">Z</a> sont des exemples de <a href="http://www.milchior.fr/blog/index.php?post/P" title="P">P</a>».</p>
<p>J'ai longtemps cru que les exemples ne faisaient pas parti des mathématiques. Parce que, d'un point de vue purement Bourbakiste, logique, un exemple n'apparaît pas dans les preuves, et ce qui compte c'est: définition, axiomes, théorème, preuves. Et je pense que c'est une idée assez répandue, puisque je me souviens qu'un prof de l'ENS avait insisté sur le fait qu'il ne fallait pas qu'on ignore les exemples.</p>
<p>Depuis, j'ai compris que les exemples avaient aux moins trois utilités. Officiellement, ça donne de l'intuition, en montrant dans quel cas les hypothèses peuvent s'appliquer. Formellement, un exemple permet de montrer qu'un ensemble d'hypothèse est non contradictoire, et donc qu'il est pertinent de considérer ces hypothèses. Et en pratique, un exemple pourra être réutilisé quand on veut étudier des affirmations qui ne sont pas dans le cours.</p>
<h5>Révision</h5>
<p>Une fois les cartes faites, je demande à Anki de créer toutes les images à partir de LaTeX (étape non automatique, ce qui est bête) et j'utilise la synchronisation (possible uniquement via leur serveur), pour envoyer le tout vers mon téléphone portable. (Application gratuite et sans pubs, ils sont fantastiques !) et les réviser dans le métro/quand j'ai un moment seul sans mon ordinateur.</p>
<p>Bien sûr, en créant les cartes, je fais des fautes. Soit parce que je n'écris pas du LaTeX sans faute et que Anki affiche les message d'erreurs dans les cartes au lieu de le montrer à leur créations. Soit parce que j'ai oublié un mot, remplacé un mot par un autre (typiquement, je confond systématiquement les mot set et state - ce qui est ennuyeux quand on fait de la logique et des automates). C'est pour ça aussi que, quand je créé une carte, d'indiquer précisément d'où vient l'information. Si c'est le cas, s'il y a une faute, je «suspend» la carte. Et une fois synchronisé, je regarde les cartes suspendues sur mon ordinateur pour les corriger.</p>
<p>Parfois, c'est une carte à trou, et le trou fait que la phrase n'a aucun sens. Dans ce cas je suspend aussi avec un message explicatif. Ça arrive surtout si je n'ai pas respecté les règles énoncées plus haut, par exemples pour les premières cartes que j'ai créé. Même règles si je vois une faute tellement grosse que je ne comprend plus la question.</p>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="http://www.milchior.fr/blog/index.php?post/Logiciel-de-m%C3%A9morisation-pour-les-math%C3%A9matiques#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] La principale exception étant pour <a href="http://www.labri.fr/perso/leroux/papiers/PresburgerFormulaExtraction.pdf">Least Significant Digit First Presburger Automata</a>, où mon but est justement de comprendre un jour la démonstration de ce papier de 130 pages.</p>
<p>[<a href="http://www.milchior.fr/blog/index.php?post/Logiciel-de-m%C3%A9morisation-pour-les-math%C3%A9matiques#rev-wiki-footnote-2" id="wiki-footnote-2">2</a>] Bref, un environnement en LaTeX</p></div>
http://www.milchior.fr/blog/index.php?post/Logiciel-de-m%C3%A9morisation-pour-les-math%C3%A9matiques#comment-formhttp://www.milchior.fr/blog/index.php?feed/atom/comments/648