tracker.org

This commit is contained in:
Yann Esposito (Yogsototh) 2020-10-05 10:14:49 +02:00
parent 29b456b170
commit 7c99985b9b
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
24 changed files with 939 additions and 196 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

View file

@ -1,2 +1,2 @@
(("../dev/her.esy.fun/src/drafts/XXXX-org-mode-intro/index.org" "21c48431-c0db-4a34-95fe-7228fea6233f") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/inbox.org" "a4ebd43b-b589-499e-85e1-7ebea0abf3af") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020/2020-09-20.org" "8a931436-5db6-4ff1-8fa8-3415c1f67c61"))
(("../dev/her.esy.fun/src/drafts/XXXX-org-mode-intro/index.org" "21c48431-c0db-4a34-95fe-7228fea6233f") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/inbox.org" "a4ebd43b-b589-499e-85e1-7ebea0abf3af") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020/2020-09-20.org" "8a931436-5db6-4ff1-8fa8-3415c1f67c61") ("../Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/journal/2020/2020-09-26.org" "d6bfe273-22e1-40b4-92db-14b22e092498"))

View file

@ -0,0 +1,21 @@
# -*- mode: org -*-
#+ARCHIVE: archive.org::* Archived from %s
Archived entries from file /Users/esposito/.deft/refile.org
* DONE Change archive sub tree file name replace _archive suffix by _archive.gpg
CLOSED: [2019-04-15 Mon 15:07]
:PROPERTIES:
:ARCHIVE_TIME: 2019-04-15 Mon 15:07
:ARCHIVE_FILE: ~/.deft/refile.org
:ARCHIVE_OLPATH: Agenda
:ARCHIVE_CATEGORY: refile
:ARCHIVE_TODO: DONE
:ARCHIVE_ITAGS: REFILE
:END:
- State "DONE" from "HOLD" [2019-04-15 Mon 15:07]
:LOGBOOK:
CLOCK: [2019-04-15 Mon 12:22]--[2019-04-15 Mon 12:23] => 0:01
:END:
[2019-04-15 Mon 12:22]

472
famille.html Normal file
View file

@ -0,0 +1,472 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2019-09-05 Thu 16:06 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Vers l'autonomie</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Yann Esposito" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { width: 90%; }
/*]]>*/-->
</style>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2019 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script>
</head>
<body>
<div id="content">
<h1 class="title">Vers l'autonomie</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org13f23d3">1. <span class="todo TODO">TODO</span> Quotidien <code>[0/3]</code></a>
<ul>
<li><a href="#org37d43f4">1.1. <span class="todo TODO">TODO</span> Rangement, propreté <code>[0/3]</code></a>
<ul>
<li><a href="#orgae65bbb">1.1.1. <span class="todo TODO">TODO</span> Faire sa chambre le matin <code>[0/6]</code></a></li>
<li><a href="#orga408d95">1.1.2. <span class="todo TODO">TODO</span> Repas <code>[0/8]</code></a></li>
<li><a href="#org7f235ad">1.1.3. <span class="todo TODO">TODO</span> Zones communes <code>[0/5]</code></a></li>
</ul>
</li>
<li><a href="#org9ea9bdc">1.2. <span class="todo TODO">TODO</span> Hygiène <code>[0/4]</code></a>
<ul>
<li><a href="#orgc4daf23">1.2.1. <span class="todo TODO">TODO</span> Se brosser les dents</a></li>
<li><a href="#orge52dc87">1.2.2. <span class="todo TODO">TODO</span> Se doucher</a></li>
<li><a href="#org7c00c4b">1.2.3. <span class="todo TODO">TODO</span> Dîner si possible en famille</a></li>
<li><a href="#org6dbc3cb">1.2.4. <span class="todo TODO">TODO</span> Se laver les mains avant de manger et de mettre la table</a></li>
</ul>
</li>
<li><a href="#org187ba7f">1.3. <span class="todo TODO">TODO</span> Travail scolaire / permis / obligations diverses <code>[0/2]</code></a>
<ul>
<li><a href="#orgc9b81ca">1.3.1. <span class="todo TODO">TODO</span> Se lever à l'heure pour <code>[0/7]</code></a></li>
<li><a href="#org4e937ea">1.3.2. <span class="todo TODO">TODO</span> Après les cours <code>[0/4]</code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org13f23d3" class="outline-2">
<h2 id="org13f23d3"><span class="section-number-2">1</span> <span class="todo TODO">TODO</span> Quotidien <code>[0/3]</code></h2>
<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-org37d43f4" class="outline-3">
<h3 id="org37d43f4"><span class="section-number-3">1.1</span> <span class="todo TODO">TODO</span> Rangement, propreté <code>[0/3]</code></h3>
<div class="outline-text-3" id="text-1-1">
</div>
<div id="outline-container-orgae65bbb" class="outline-4">
<h4 id="orgae65bbb"><span class="section-number-4">1.1.1</span> <span class="todo TODO">TODO</span> Faire sa chambre le matin <code>[0/6]</code></h4>
<div class="outline-text-4" id="text-1-1-1">
</div>
<ol class="org-ol">
<li><a id="orgb55b7fd"></a><span class="todo TODO">TODO</span> Faire le lit<br /></li>
<li><a id="org9d72b26"></a><span class="todo TODO">TODO</span> mettre ses habits sales au sale<br /></li>
<li><a id="orge59a0d2"></a><span class="todo TODO">TODO</span> ramasser les décher et les mettre à la poubelle<br /></li>
<li><a id="org6ed78f6"></a><span class="todo TODO">TODO</span> ne pas laisser de vaisselle dans la chambre<br /></li>
<li><a id="org9897efe"></a><span class="todo TODO">TODO</span> ne pas laisser de bouteille d'eau dans la chambre<br /></li>
<li><a id="org882c18d"></a><span class="todo TODO">TODO</span> ne pas laisser de nourriture dans la chambre<br /></li>
</ol>
</div>
<div id="outline-container-orga408d95" class="outline-4">
<h4 id="orga408d95"><span class="section-number-4">1.1.2</span> <span class="todo TODO">TODO</span> Repas <code>[0/8]</code></h4>
<div class="outline-text-4" id="text-1-1-2">
</div>
<ol class="org-ol">
<li><a id="orgae915b2"></a><span class="todo TODO">TODO</span> Participer à mettre la table <code>[0/6]</code><br />
<ol class="org-ol">
<li><a id="orgcab862f"></a><span class="todo TODO">TODO</span> Assiettes<br /></li>
<li><a id="orgb2e7822"></a><span class="todo TODO">TODO</span> Couverts<br /></li>
<li><a id="org5874eae"></a><span class="todo TODO">TODO</span> Verres<br /></li>
<li><a id="orgdc41765"></a><span class="todo TODO">TODO</span> Plat principal<br /></li>
<li><a id="org6bc2bfb"></a><span class="todo TODO">TODO</span> Eau<br /></li>
<li><a id="org62f73dd"></a><span class="todo TODO">TODO</span> Condiments (sel, poivre, vinaigrette, etc&#x2026;)<br /></li>
</ol>
</li>
<li><a id="org5413814"></a><span class="todo TODO">TODO</span> Nettoyer après avoir manger <code>[0/2]</code><br />
<ol class="org-ol">
<li><a id="org6798ae9"></a><span class="todo TODO">TODO</span> ranger sa table <code>[0/3]</code><br />
<ol class="org-ol">
<li><a id="orgd6871ad"></a><span class="todo TODO">TODO</span> son assiette / bols / etc&#x2026;<br /></li>
<li><a id="orgb70852c"></a><span class="todo TODO">TODO</span> ses couverts<br /></li>
<li><a id="orgad6a301"></a><span class="todo TODO">TODO</span> son verre<br /></li>
</ol>
</li>
<li><a id="orgce1c471"></a><span class="todo TODO">TODO</span> débarrasser la table <code>[0/6]</code><br />
<ol class="org-ol">
<li><a id="org59260f8"></a><span class="todo TODO">TODO</span> l'eau à re-remplir, remettre au frais pour le lendemain<br /></li>
<li><a id="org20b2480"></a><span class="todo TODO">TODO</span> débarrasser le plat principal<br />
<div class="outline-text-7" id="text-1-1-2-2-2-2">
<ul class="org-ul">
<li>si il reste beaucoup remettre le plat au frigo (le laisser refroidir)</li>
<li>si il en reste peu, ou qu'on n'en remangera pas, vider le reste du plat
principal dans un autre récipient plus petit et le mettre soi au frigo,
soit au congélateur pour le manger plus tard. Et nettoyer, à la main, le
grand récipient (plat à gratin, saladier, marmite, etc&#x2026;)</li>
</ul>
</div>
</li>
<li><a id="org25f773b"></a><span class="todo TODO">TODO</span> débarrasser le pain et le remettre à sa place<br /></li>
<li><a id="org2149c96"></a><span class="todo TODO">TODO</span> débarrasser les condiments (sel, moutarde, etc&#x2026;)<br /></li>
<li><a id="orgc7f2d06"></a><span class="todo TODO">TODO</span> essuyer la table<br />
<div class="outline-text-7" id="text-1-1-2-2-2-5">
<ul class="org-ul">
<li>vérifier qu'il ne reste plus rien</li>
<li>essuyer sur les rebords de la table</li>
<li>nettoyer les miettes par terre ou essuyer si c'est vraiment sale</li>
<li>après avoir passer l'éponge, essuyer avec une serviette pour ne pas
laisser des traces d'humidité</li>
</ul>
</div>
</li>
<li><a id="org9552813"></a><span class="todo TODO">TODO</span> Mettre au recyclage vs poubelle<br /></li>
</ol>
</li>
</ol>
</li>
<li><a id="org9ced883"></a><span class="todo TODO">TODO</span> Savoir mettre correctement la vaisselle dans le lave vaisselle<br />
<div class="outline-text-5" id="text-1-1-2-3">
<ul class="org-ul">
<li>les verres jamais dans le mauvais sens</li>
<li>les bols et les assiettes creusent ne doivent pas être obstruées</li>
<li>il vaut mieux nettoyer une gros élément à la main que lancer le lave
vaisselle inutilement 2x</li>
</ul>
</div>
</li>
<li><a id="org9a61e72"></a><span class="todo TODO">TODO</span> Savoir si on doit lancer le lave vaisselle<br /></li>
<li><a id="org4ef5935"></a><span class="todo TODO">TODO</span> Savoir lancer le lave vaisselle si nécessaire<br /></li>
<li><a id="org072d04a"></a><span class="todo TODO">TODO</span> Savoir si on doit débarrasser le lave vaisselle<br /></li>
<li><a id="org74ab453"></a><span class="todo TODO">TODO</span> Débarrasser le lave vaisselle<br /></li>
</ol>
</div>
<div id="outline-container-org7f235ad" class="outline-4">
<h4 id="org7f235ad"><span class="section-number-4">1.1.3</span> <span class="todo TODO">TODO</span> Zones communes <code>[0/5]</code></h4>
<div class="outline-text-4" id="text-1-1-3">
</div>
<ol class="org-ol">
<li><a id="org7f38b2a"></a><span class="todo TODO">TODO</span> Salon/cuisine <code>[0/6]</code><br />
<ol class="org-ol">
<li><a id="orga63f110"></a><span class="todo TODO">TODO</span> Si le sol est sale lancer le robot<br /></li>
<li><a id="orge897183"></a><span class="todo TODO">TODO</span> Savoir vider et nettoyer le robot<br /></li>
<li><a id="org04a9a3f"></a><span class="todo TODO">TODO</span> Si la poubelle est pleine, jeter la poubelle, savoir la remplacer<br /></li>
<li><a id="orgdd46e2a"></a><span class="todo TODO">TODO</span> Si la poubelle coule et salit le sol, savoir nettoyer le sol<br /></li>
<li><a id="orga09ff08"></a><span class="todo TODO">TODO</span> Savoir nettoyer la poubelle si elle est sale<br /></li>
<li><a id="orgfb4c5e4"></a><span class="todo TODO">TODO</span> Savoir passer l'aspirateur et la pièce<br /></li>
</ol>
</li>
<li><a id="orgfb9dd2a"></a><span class="todo TODO">TODO</span> Savoir s'il faut arroser les plantes et les arroser si nécessaire<br /></li>
<li><a id="org183a86d"></a><span class="todo TODO">TODO</span> Salle de bain <code>[0/7]</code><br />
<ol class="org-ol">
<li><a id="orgbe826e2"></a><span class="todo TODO">TODO</span> Savoir ranger sa sale de bain<br /></li>
<li><a id="org8523378"></a><span class="todo TODO">TODO</span> Savoir plier et ranger sa serviette<br /></li>
<li><a id="org98b43f8"></a><span class="todo TODO">TODO</span> Nettoyer le sol après la douche<br /></li>
<li><a id="orge41e156"></a><span class="todo TODO">TODO</span> Nettoyer le siphon de la douche si nécessaire<br /></li>
<li><a id="orgfcf6f09"></a><span class="todo TODO">TODO</span> Nettoyer le lavabo<br /></li>
<li><a id="org515a214"></a><span class="todo TODO">TODO</span> Savoir ranger les produit d'hygiène, jeter et prévoir<br /></li>
<li><a id="orgc1e8ef6"></a><span class="todo TODO">TODO</span> Savoir utiliser les produits d'entretiens<br /></li>
</ol>
</li>
<li><a id="org7f0b5f9"></a><span class="todo TODO">TODO</span> Toilettes <code>[0/4]</code><br />
<ol class="org-ol">
<li><a id="orge6b5f0f"></a><span class="todo TODO">TODO</span> Jeter les rouleau usagés<br /></li>
<li><a id="orgcc50c43"></a><span class="todo TODO">TODO</span> Nettoyer le sol sale des toilettes si besoin<br /></li>
<li><a id="org688a0f3"></a><span class="todo TODO">TODO</span> Vérifier et nettoyer les traces sous l'abattant<br /></li>
<li><a id="org4b51873"></a><span class="todo TODO">TODO</span> Savoir acheter du papier toilette (ne pas attendre qu'il soit trop tard)<br /></li>
</ol>
</li>
<li><a id="org935868a"></a><span class="todo TODO">TODO</span> Entrée <code>[0/4]</code><br />
<ol class="org-ol">
<li><a id="orgeee79e8"></a><span class="todo TODO">TODO</span> ranger ses chaussures dès l'entrée dans l'appartement<br /></li>
<li><a id="org3e1f95c"></a><span class="todo TODO">TODO</span> pendre ses manteaux/gilets dans la penderie<br /></li>
<li><a id="org690222f"></a><span class="todo TODO">TODO</span> ranger ses bonnets / gants / accessoires dans la penderie<br /></li>
<li><a id="org4f27d29"></a><span class="todo TODO">TODO</span> ramasser et ranger ce qui traîne<br /></li>
</ol>
</li>
</ol>
</div>
</div>
<div id="outline-container-org9ea9bdc" class="outline-3">
<h3 id="org9ea9bdc"><span class="section-number-3">1.2</span> <span class="todo TODO">TODO</span> Hygiène <code>[0/4]</code></h3>
<div class="outline-text-3" id="text-1-2">
</div>
<div id="outline-container-orgc4daf23" class="outline-4">
<h4 id="orgc4daf23"><span class="section-number-4">1.2.1</span> <span class="todo TODO">TODO</span> Se brosser les dents</h4>
</div>
<div id="outline-container-orge52dc87" class="outline-4">
<h4 id="orge52dc87"><span class="section-number-4">1.2.2</span> <span class="todo TODO">TODO</span> Se doucher</h4>
</div>
<div id="outline-container-org7c00c4b" class="outline-4">
<h4 id="org7c00c4b"><span class="section-number-4">1.2.3</span> <span class="todo TODO">TODO</span> Dîner si possible en famille</h4>
</div>
<div id="outline-container-org6dbc3cb" class="outline-4">
<h4 id="org6dbc3cb"><span class="section-number-4">1.2.4</span> <span class="todo TODO">TODO</span> Se laver les mains avant de manger et de mettre la table</h4>
</div>
</div>
<div id="outline-container-org187ba7f" class="outline-3">
<h3 id="org187ba7f"><span class="section-number-3">1.3</span> <span class="todo TODO">TODO</span> Travail scolaire / permis / obligations diverses <code>[0/2]</code></h3>
<div class="outline-text-3" id="text-1-3">
</div>
<div id="outline-container-orgc9b81ca" class="outline-4">
<h4 id="orgc9b81ca"><span class="section-number-4">1.3.1</span> <span class="todo TODO">TODO</span> Se lever à l'heure pour <code>[0/7]</code></h4>
<div class="outline-text-4" id="text-1-3-1">
</div>
<ol class="org-ol">
<li><a id="orgb5c14c2"></a><span class="todo TODO">TODO</span> prendre le petit déjeuner<br /></li>
<li><a id="org07de6a5"></a><span class="todo TODO">TODO</span> nettoyer le petit déjeuner<br /></li>
<li><a id="orgee1f2b2"></a><span class="todo TODO">TODO</span> faire son lit<br /></li>
<li><a id="orgac7419c"></a><span class="todo TODO">TODO</span> ranger sa chambre<br /></li>
<li><a id="org18fdc28"></a><span class="todo TODO">TODO</span> mettre ses affaires sales au sale<br /></li>
<li><a id="orgd44897c"></a><span class="todo TODO">TODO</span> avoir ses affaires scolaires prêtes<br /></li>
<li><a id="org0da2c3d"></a><span class="todo TODO">TODO</span> préparer sa gamelle/ses en cas<br /></li>
</ol>
</div>
<div id="outline-container-org4e937ea" class="outline-4">
<h4 id="org4e937ea"><span class="section-number-4">1.3.2</span> <span class="todo TODO">TODO</span> Après les cours <code>[0/4]</code></h4>
<div class="outline-text-4" id="text-1-3-2">
</div>
<ol class="org-ol">
<li><a id="org4e79e12"></a><span class="todo TODO">TODO</span> réviser le code<br /></li>
<li><a id="org3cd800d"></a><span class="todo TODO">TODO</span> réviser le travail scolaire<br /></li>
<li><a id="orgce25a98"></a><span class="todo TODO">TODO</span> ranger ses livres et cahier<br /></li>
<li><a id="org4d6b7dd"></a><span class="todo TODO">TODO</span> ranger ses affaires de sport<br /></li>
</ol>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Yann Esposito</p>
<p class="date">Created: 2019-09-05 Thu 16:06</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>

BIN
journal.org.gpg Normal file

Binary file not shown.

View file

@ -0,0 +1,215 @@
#+TITLE: Luc follow.sh review
#+Author: Yann Esposito
#+Date: [2020-10-04]
tags :: [[file:2020-06-03--19-49-30Z--programming.org][programming]] [[file:2020-10-04--10-30-25Z--product.org][product]] [[file:2020-10-04--10-30-41Z--app.org][app]] [[file:2020-10-04--10-30-54Z--review.org][review]]
source :: https://www.follow.sh/en/
* Review
J'ai testé pas mal de choses.
C'est cool, ça marche j'ai fait pas mal de remarque.
Good luck! :)
** Site web
Très bonne première impression très propre.
Bemol, les couleurs ne sont pas alignées entre le logo et le thème du site.
C'est un détail mais c'est important puis que ça montre quasi immédiatement
que le branding n'est pas parfaitement aligné.
Le violet est assez sympa, donc je pense ça serait pas d'utiliser le violet
plutot que le bleu du logo partout.
Ça me semble plus facile dans ce sens.
*** Conseils
Sur la page d'accueil FR: je pense j'ajouterai "local" quelque part dans la
phrase d'accroche.
Peut-être même que j'utiliserai une formulation pour rassurrer
psychologiquement.
Du genre « Restez en contact avec vos commerçants de proximité », à
améliorer, mais tu vois.
Aussi, contrairement à ce que j'ai dit juste avant, s'il faut appuyer sur
le coté rassurant, local, etc...
Malheureusement le thème du site n'est pas super adapté.
Il faudrait un truc qui fasse plus chaud les couleurs choisies ici sont
froides et technologiques.
Typiquement y aller à fond genre un theme comme =gruvbox= par exemple.
Un truc qui rapelle les affiches genre biscuit lu des années 20.
Donc plutôt du jaune, du marron, du bleu doux, etc...
En gros, j'irai vair des couleurs vintage plutôt chaudes
Ma préfée serait: https://www.schemecolor.com/yellow-vintage-color-palette.php
Mais qui irait aussi:
- https://www.schemecolor.com/vintage-by-choice.php
- https://www.schemecolor.com/vintage-brown-look.php
- https://www.schemecolor.com/vintage-tirp.php le plus doux, rassurant mais féminin
Et assez important pour donner cette impression de chaleur, ne pas utiliser
de background blanc. Probablement utiliser une fonte qui fasse un peu vintage.
Exemples:
- https://ourstoriesin.com
- https://themeforest.net/item/retro-portfolio-one-page-vintage-wordpress-theme/1708109?s_rank=8&_ga=2.52183969.96619734.1601802127-201122956.1575809459
*** Problèmes
1. En allant sur =follow.sh= je suis tombé sur le site anglais, pas moyen de
trouver comment aller sur le site en FR.
C'est en allant sur =confidentialité= et en cliquant sur la petite maison
que je suis arrivé sur le site en FR (mon env est en Anglais).
2. [EN] Typo: Feature au lieu de Features dans le titre.
3. Le texte anglais ne semble pas adapté à ce que fait l'app. Cette partie
est assez difficile, il faudrait d'abord savoir qui arrive sur ce site
et adapter le discours et le vocabulaire pour le public visé.
4. En allant sur https://www.follow.sh/confidentialite j'ai cru qu'il n'y
avait pas de bouton retour. En fait j'ai pris le triangle en background
pour un bouton retour et je n'ai pas vue la petite maison.
Je pense qu'il faudrait mettre un top menu ou avoir la maison dans un
cercle coloré ou noir pour que l'icône se voit.
5. Le mail dans Contactez nous n'est pas cliquable. Vous pouvez à minima
obfusquer le `mailto:contact@follow.sh` en utilisant un mix de `&#xxx;`
genre http://www.wbwip.com/wbw/emailencoder.html.
** App
J'ai désinstallé et réinstallé l'app pour reproduire les conditions d'un
nouvel utilisateur.
*** Première expérience utilisateur non commerçant
1. permiere expérience, l'app lance une page de load avec le logo au
centre.
Directement après on se prend une notification, "follow would like to
send you notifications".
En général c'est plus simpa d'arriver directement dans un "wizard" qui
fait le tour du propriétaire avec un petit message explicatif.
« Pour ne rien râter des news locales merci d'autoriser follow à vous
envoyer des notifications; le niveau des notifications est configurable
dans l'applications ». Par exemple, on appuis sur "suivant" et hop on se
prend la demande. Sans ce premier message la plupart des gens refusent
systématiquement.
Avec le message je pense ça augmente sensiblement l'engagement.
2. Après avoir accepté, on arrive sur "Actualités et bon plans"
avec un bouton "Mes abonnements".
On clique dessus on arrive sur l'onglet "Abonnements", c'est sympa, je
pense qu'en premier usage il serait plus cool d'arriver sur une plage
explicative (toujours type wizard) et quand on fait "suivant" hop on
arrive sur l'onglet "Abonnements".
3. Je clique sur scanner QR code, la page affiche une page avec le top bleu
"Scan" et el contenu est du texte non designé (top left petit)
"Requesting for camera permission".
Là encore pour premier usage, je pense ça serait bien un texte
explicatif avant de demander la permission d'accès à la caméra.
Plein de gens ne savent pas scanner un QR code.
Juste une page du genre « Les QR codes sont ces images que l'on voit un
peu partout "exemple de QR code" il suffit de les filmer avec la caméra
de votre iPhone pour les scanner, c'est pour celà que nous vous
demandons l'accès à votre caméra. ». Et hop suivant, demande d'accès.
4. Si on choisit "Rechercher" l'interface est naturelle, par contre les
commerces ne semblent pas ordonnés. J'imagine qu'ils sont ordonnés par
date d'ajout. Si une personne veut chercher en scrollant (parce que des
gens peuvent être masochistes) il devient très difficile de trouver son commerce.
Je pense qu'il serait plus naturel de les ordonner par ordre
alphabetique et si possible d'avoir comme dans "Contact" la liste des
premières lettres sur la droite et d'ailleurs pour les tests, il serait
pas mal d'engendrer quelques dizaines de faux commerces. Et pourquoi pas
plusieurs milliers pour voir comment cela se comporterait.
A mon avis si l'app commence à être utilisé beaucoup cette interface
avec liste n'est absolument pas gérable, il faudra un prefiltre par
geoloc pour minimiser la liste à moins de 50 ou moins de 100 commerces.
5. Dans la liste "Rechercher" il y a un commerce avec un tick bleu.
Aucune idée de quelle est la signification.
6. Lorsqu'on clique pour s'abonner on revient sur l'onglet "Mes abonnements".
Mais du coups il ne reste que le bouton + et QR-code en haut.
Et il n'est pas tout de suite évident qu'il faudra cliquer là pour
ajouter un nouvel abonnement.
Souvent on s'attend à avoir un bouton + en bas de la liste en plus.
Sans ajouter le bouton, je pense il serait pas mal pour le tout premier
retour après le premier abonnement d'avoir un wizard qui fasse le focus
sur les deux boutons pour expliquer comment ajouter de nouveaux abonnements.
À la limite je laisserais deux gros bouton en haut plutôt que ces deux
petits icônes qui font plus jolis mais sont plus difficile à détecter.
Et de même j'agrandirais ces boutons pour rendre plus évident leur présence.
7. En retournant sur l'onglet "Actu" il y a un bug (iPhone 11), le bas de
la page est grisé, la taille de la liste n'est pas égale à la taille de
l'espace disponible.
8. L'onglet "A propos" le texte manque de contraste et est trop petit. La
moitié de la page est vide. Autant en profiter.
Le "Contactez-nous à info@follow.sh" n'est pas actionnable (cliquable).
*** Onglet commerçant
Je clique sur le bouton "Connexion".
Je vois le nombre de followers et le nombre de publications restantes.
C'est très bien.
Si je clique sur "nouvelle publication" immédiatement demande d'accès à mes
photos.
Je refuse de donner l'accès message [missing
"fr.send_notification.image.permissions_required" translation] Je pense
qu'il vaut mieux se passer de cette erreur visible par l'utilisateur final.
J'essaye d'écrire malgré tout, à chaque nouvelle lettre, je me prend le
meme message d'erreur.
Donc oui, il faut vraiment supprimer cette notificaiton d'erreur.
Surtout que même en image, ça marche.
**** Onglet packs de publications
Connaissant les commerçants, ils en ont marre de payer pour tout et rien.
Je pense qu'il ne serait pas trop mal plutôt que limiter leurs
"publication".
De faire une distinction entre "publication donnant lieu à des
notifications" et "publication silencieuses" qui seraient donc moins chère
ou avec des packs du genre 1 ou 2 pub silencieuses par semaine offerte
etc...
Mais ça risque de changer un peu le backend, mais d'un point de vue
marketing je pense que l'idée sera mieux reçue des commerçants.
Un autre aspect à considérer et peut-être de ne pas montrer directement le
nombre d'abonnés surtout pendant la période de lancement.
Histoire de laisser une sorte de croyance se mettre en place.
Avec certain qui feront des erreurs de corrélations entre l'utilisation de
l'app et une meilleure affluence.
Et aussi en terme de vente, peut-être plutot que compter le "nombre de notification"
considerer de limiter la fréquence des publications.
Du genre, pas plus que 1/semaine, 1/jour, 3/jour, etc...
Sinon vous risquez de vous retrouver avec des anti-joueurs assez vite
surtout que ce n'est pas très cher de faire l'anti-joueur.
De la même manière, je pense que coté utilisateur il faut un option qui
permette de limiter le nombre de notifications par jour et peut-être meme
aider les utilisateurs à configurer les notifications via l'app pour éviter
que les gens la désinstalle parce qu'au lieu d'être utile l'app devienne
une source de nuisance.
Après tout c'est une demande de recevoir de la pub.
Dans notre monde moderne, les gens essayent plutôt de limiter leur
exposition aux pubs.
Une autre piste potentielle serait d'augmenter une forme d'engagement des
utilisateurs en les rémunérant avec quelque chose, pas juste en recevant la
promo. Typiquement des promos exclusives via l'app, etc...
Détail technique, il y a une poubelle en haut à droite de "Nouvelle
publication" Aucune idée de comment utiliser ça.
De même un problème bien plus grave, je ne vois pas comment
supprimer/editer une publication.
Je pense ça risque d'amener des pb du genre, typo dans la promo, genre,
mauvais prix, à cause d'une typo pouvant causer des pertes financières à un
commerçant avec potentiellement des conséquences juridiques.
Si j'essaye d'éditer mon compte, je reprend le message d'erreur à cause de
mon refus de donner l'accès à mes photos.
La même erreur trigger à chaque fois que j'appuis sur une lettre pour
éditer. Il me semble que c'est aussi un pb de code, la demande d'accès ne
devrait se faire que lorsqu'on change une image pas à chaque fois que l'on
edite du texte.
*** Problèmes/bug/remarques
1. Comportement inattendu, si on fait scanner QR code et qu'on ne scanne rien, qu'on
change d'onglet et qu'on revient sur l'onglet "Abonnement" l'appli reste
toujours en mode scan de QR code et on voit toujours la vue caméra.
Je pense que lorsqu'on change d'onglet, il faudrait revenir à la page
d'acceuil de l'onglet "Abonnements".

View file

@ -0,0 +1,6 @@
#+TITLE: product
#+Author: Yann Esposito
#+Date: [2020-10-04]
tags ::
source ::

View file

@ -0,0 +1,6 @@
#+TITLE: app
#+Author: Yann Esposito
#+Date: [2020-10-04]
tags ::
source ::

View file

@ -0,0 +1,6 @@
#+TITLE: review
#+Author: Yann Esposito
#+Date: [2020-10-04]
tags ::
source ::

Binary file not shown.

View file

@ -0,0 +1,71 @@
#+Title: Journal (2020-09-26 - ∆y=43.56 (15911))
#+Author: Yann Esposito
#+Date: [2020-09-26]
#+STARTUP: showeverything
#+STARTUP: inlineimages
* Résume Journée
:PROPERTIES:
:CREATED: 20200926
:END:
| sommeil | 2/5 | horrible -> comme un bébé |
| activité φ | ?/5 | au lit -> sport |
| nourriture | ?/5 | malbouffe -> saine |
| humeur | ?/5 | exécrable -> excellente |
| intérêt | ?/5 | ennuie -> exceptionnel |
- Faits positifs
- Faits marquants
- Résumé des discussions intéressantes
- Réflexions/Essais
* 2020-09-26 Saturday
** 12:17
Krystelle a encore fait une insomnie qui m'a réveillé à 5h30 environ.
J'ai du me rendormir vers 7h jusqu'a 9h25.
J'ai joué une petit peu à Factorio.
Et comme dans la programmation, si on prend de mauvaises décisions au
départ celà coûte plus cher de les réparer que de travailler autour :).
*** Réflexion
:PROPERTIES:
:ID: d6bfe273-22e1-40b4-92db-14b22e092498
:END:
- tags :: [[file:../2020-06-18--15-24-25Z--philo.org][philo]]
Dans mon "ideosphere" (twitter, flux RSS, news) je vois apparaître aux
contours une formation de nouvelles idées qui commencent à former un
conglomérat.
Une sorte de nouvelle idéologie prend forme.
Les points communs commencent à se dessiner.
Et je pense que ma longue lettre sur l'Ordre des informaticien en fait parti.
Il s'agit souvent du même genre d'idées.
Ce qui est nouveau c'est que ces idées commencent à prendre forme en se
référant de moins en moins à l'idéologie actuelle.
Comme si pour une fois il ne s'agissait pas d'une réaction, mais réellement
d'un nouveau mouvement de pensée.
En réalité je doute que ce soit tant nouveau.
Il faut prendre en compte que nous baignons dans la même idéologie depuis
des décénies, et que donc il est difficile de s'en défaire.
Je vais essayer d'evoquer ce dont il s'agit.
1. Pensée en réseau (ce n'est pas très nouveau, mais ça commence par là souvent)
2. Décisions humaine de longue portée temporelle (dépassant le durée de vie
des Hommes).
3. Notion de "bulle", (Foam), dépendance entre notre perception quotidienne
et les autres, mais toujours cette notion de réseau.
Et aussi cette sensation que l'isolation interne se fait bousculée parce
que les frontières entre chaque bulle est très mince.
En ce sens ma longue lettre voulait mettre des murs épais pour avoir le
temps d'une réflexion plus isolée et protégée et donc peut-être plus
indépendante.
Une notion intéressante c'est que le climat, l'air, etc... commence à
entrer dans cette bulle idéologique.
C'est-à-dire, que nous commençons à internaliser des notions extérieure
à juste notre société et nos expériences locales.

View file

@ -35,3 +35,14 @@ Elle a pas mal de problèmes de santé tous assez casse pieds.
Ce matin le travail recommence.
Nous allons probablement acheter un ordinateur à Anna.
** 20:10
J'ai fait à manger.
En effet Krystelle est très fatiguée je trouve.
Elle a du mal a dormir.
Et elle va a beaucoup de RDV de santé.
Je vais jouer un peu à Factorio.
Je sortirai le chien tout à l'heure.
Il recommence à faire froid.
Le soir mon sweat me suffit à peine.

View file

@ -0,0 +1,36 @@
#+Title: Journal (2020-10-02 - ∆y=43.58 (15917))
#+Author: Yann Esposito
#+Date: [2020-10-02]
#+STARTUP: showeverything
#+STARTUP: inlineimages
* Résume Journée
:PROPERTIES:
:CREATED: 20201002
:END:
| sommeil | 2/5 | horrible -> comme un bébé |
| activité φ | ?/5 | au lit -> sport |
| nourriture | ?/5 | malbouffe -> saine |
| humeur | ?/5 | exécrable -> excellente |
| intérêt | ?/5 | ennuie -> exceptionnel |
- Faits positifs
- Faits marquants
- Résumé des discussions intéressantes
- Réflexions/Essais
* 2020-10-02 Friday
** 17:25
Ce matin Krystelle m'a reveillée à 4h du matin.
Je me suis couché vers 1h du matin.
Et je suis resté réveillé environ 1h de 4h à 5h.
Je me suis rendormi jusqu'a 8h27.
Et aussi j'ai eu un sommeil léger je me souviens m'être réveillé de
nombreuses fois.
Aujourd'hui il prévu une plui très forte. Orages et inondations. Alerte orange.
Encore une journée "chat" peu productive.
Sela fait 3j maintenant.
Je pense qu'on a fait le tour.

View file

@ -0,0 +1,42 @@
#+Title: Journal (2020-10-03 - ∆y=43.58 (15917))
#+Author: Yann Esposito
#+Date: [2020-10-03]
#+STARTUP: showeverything
#+STARTUP: inlineimages
* Résume Journée
:PROPERTIES:
:CREATED: 20201003
:END:
| sommeil | 4/5 | horrible -> comme un bébé |
| activité φ | ?/5 | au lit -> sport |
| nourriture | ?/5 | malbouffe -> saine |
| humeur | ?/5 | exécrable -> excellente |
| intérêt | ?/5 | ennuie -> exceptionnel |
- Faits positifs
- Faits marquants
- Résumé des discussions intéressantes
- Réflexions/Essais
* 2020-10-03 Saturday
** 12:20
*** homepage improvement :geek:
J'ai ajouté un filtre pour ne pas afficher les informations de travail dans
ma homepage.
La couleur de fond change aussi le week-end et le soir.
Si je dépasse les horraires, hop...
Il faudrait que j'ajoute un truc qui check l'heure toutes les minutes.
*** Migration de mon instance scaleway
J'ai l'impression que je me suis bien fait avoir avec ma nouvelle instance.
Mais bon au moins, je n'ai rien perdu tout semble s'être bien déroulé.
*** Sortie
Ce soir nous allons manger chez Filip et Leila.
Et cet après midi je vais marcher avec Krystelle, Eta et les chiens :).
D'ailleurs elle m'appelle.

View file

@ -0,0 +1,32 @@
#+Title: Journal (2020-10-04 - ∆y=43.58 (15919))
#+Author: Yann Esposito
#+Date: [2020-10-04]
#+STARTUP: showeverything
#+STARTUP: inlineimages
* Résume Journée
:PROPERTIES:
:CREATED: 20201004
:END:
| sommeil | 1/5 | horrible -> comme un bébé |
| activité φ | ?/5 | au lit -> sport |
| nourriture | ?/5 | malbouffe -> saine |
| humeur | ?/5 | exécrable -> excellente |
| intérêt | ?/5 | ennuie -> exceptionnel |
- Faits positifs
- Faits marquants
- Résumé des discussions intéressantes
- Réflexions/Essais
* 2020-10-04 Sunday
** 19:36
J'ai essayé Rust encore aujourd'hui.
Et j'arrive toujours à la même conclusion.
Rust est un retour arrière en terme de language de programmation.
C'est une sorte de C++ amélioré avec des méthodes de typages pour éviter
des erreurs basiques de C.
Mais on est très loin d'avoir un language qui puisse utiliser des types
avancés, des preuves, et surtout un feeling de language fonctionnel.
C'est un language très bas niveau, mais "hype".

Binary file not shown.

Binary file not shown.

BIN
notes.org.gpg Normal file

Binary file not shown.

View file

@ -64,3 +64,9 @@
2020-10-01T16:33:58Z /Users/esposito/.org/inbox.org a4ebd43b-b589-499e-85e1-7ebea0abf3af front 2.65 4 16.32 easy 11.52 sm2-v1

1 2020-05-21T13:20:25Z /Users/yaesposi/.org/TODO.org 96343FD2-E7A9-4AAA-A40A-8D048DA340E9 0 2.50 1 0.01 good 7.83 sm2-v1
64
65
66
67
68
69
70
71
72

View file

@ -7,6 +7,20 @@
#+STARTUP: overview
* 2020
** 2020-W41
*** 2020-10-05 Monday
**** CHAT morning chat :work:chat:
:LOGBOOK:
CLOCK: [2020-10-05 Mon 09:15]--[2020-10-05 Mon 10:11] => 0:59
:END:
[2020-10-05 Mon 10:13]
- ref :: [[file:~/Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org/inbox.org::*capture check chat 09:10][capture check chat 09:10]]
**** IN-PROGRESS OpenVPN morning :work:
:LOGBOOK:
CLOCK: [2020-10-05 Mon 10:11]
:END:
[2020-10-05 Mon 10:10]
- ref ::
** 2020-W40
#+BEGIN: clocktable :scope subtree :maxlevel 4 :timestamp t :link t :tags t :narrow 36! :match "work"
#+CAPTION: Clock summary at [2020-10-02 Fri 15:05]
@ -3926,11 +3940,3 @@ CLOCK: [2020-05-04 Mon 19:37]--[2020-05-04 Mon 19:39] => 0:02
[2020-05-04 Mon 19:37]
Archived entries from file /Users/esposito/.org/tracker.org
** 2020-W41
*** 2020-10-05 Monday
**** IN-PROGRESS OpenVPN morning :work:
:LOGBOOK:
CLOCK: [2020-10-05 Mon 10:11]
:END:
[2020-10-05 Mon 10:10]
- ref ::

View file

@ -1,91 +0,0 @@
# Created 2020-09-29 Tue 14:55
#+TITLE: Work Time Tracker
#+AUTHOR: Yann Esposito
* add idp-mapping to existing orgs
- ref :: https://github.com/threatgrid/iroh/issues/4049
** Context
The =Org= schema contains an optional field named =idp-mapping=:
#+begin_src clojure
(s/defschema OrgIdPMapping
(st/open-schema
{:idp (describe s/Str "Internal idp-id")
:organization-id (describe s/Str "the organization id provided by the IdP")
:enabled? (describe s/Bool "Do we allow the connection through this IdP?")}))
(s/defschema NewOrg
"Org before being saved to DB"
(st/merge
{:id s/Str}
(st/optional-keys
{,,,
:idp-mapping OrgIdPMapping
,,
})))
#+end_src
To support CSA Migration it should be replaced by:
#+begin_src clojure
(s/defschema OrgIdPMapping
{:idp (describe s/Str "Internal idp-id")
:organization-id (describe s/Str "the organization id provided by the IdP")
:enabled? (describe s/Bool "Do we allow the connection through this IdP?")})
(s/defschema NewOrg
"Org before being saved to DB"
(st/merge
{:id s/Str
:idp-mapping OrgIdPMapping}
(st/optional-keys
{:old-idp-mapping OrgIdPMapping
,,,
})))
#+end_src
This issue is about a second step toward this goal (cf.
https://github.com/threatgrid/iroh/issues/4204).
So at the end of this issue the schemas should be:
#+begin_src clojure
(s/defschema OrgIdPMapping
{:idp (describe s/Str "Internal idp-id")
(s/optional-key :organization-id) (describe s/Str "the organization id provided by the IdP")
:enabled? (describe s/Bool "Do we allow the connection through this IdP?")})
(s/defschema NewOrg
"Org before being saved to DB"
(st/merge
{:id s/Str
:idp-mapping OrgIdPMapping}
(st/optional-keys
{,,,})))
#+end_src
** Migration task
The migration service should be used to create a new migration task.
The main algorithm should be something like:
For every existing org =O= that do not have any =idp-mapping=;
Retrieve all the =idp-mappings= of every users of this org.
Keep the fields =idp-id= and =organization-id= of those mapping.
Use the most present couple =idp-id=, =organization-id= as new IdPMapping
from the =org=.
In the current state, you should always consider =enabled?= of the
IdPMapping is true and ignore this field.
Also note migration tasks often fail during TEST environment due to QA
testing that could create entities with the wrong schema.
Most of the time, we should only logs such errors and not make the
migration fail.
Most of the time we use a heuristic, if we detect too much errors we make
the migration fail.
Recently we also introduced migration that could write to another table to
minimize the risk of data loss.
I'm not sure this will be much needed here.

View file

@ -1,96 +0,0 @@
# Created 2020-09-29 Tue 14:43
#+TITLE: Work Time Tracker
#+AUTHOR: Yann Esposito
* add idp-mapping during org creation
- ref :: https://github.com/threatgrid/iroh/issues/4204
The =Org= schema contains an optional field named =idp-mapping=:
#+begin_src clojure
(s/defschema OrgIdPMapping
(st/open-schema
{:idp (describe s/Str "Internal idp-id")
:organization-id (describe s/Str "the organization id provided by the IdP")
:enabled? (describe s/Bool "Do we allow the connection through this IdP?")}))
(s/defschema NewOrg
"Org before being saved to DB"
(st/merge
{:id s/Str}
(st/optional-keys
{,,,
:idp-mapping OrgIdPMapping
,,
})))
#+end_src
To support CSA Migration it should be replaced by:
#+begin_src clojure
(s/defschema OrgIdPMapping
{:idp (describe s/Str "Internal idp-id")
:organization-id (describe s/Str "the organization id provided by the IdP")
:enabled? (describe s/Bool "Do we allow the connection through this IdP?")})
(s/defschema NewOrg
"Org before being saved to DB"
(st/merge
{:id s/Str
:idp-mapping OrgIdPMapping}
(st/optional-keys
{:old-idp-mapping OrgIdPMapping
,,,
})))
#+end_src
This issue is about a first step toward this goal.
So at the end of this issue the schemas should be:
#+begin_src clojure
(s/defschema OrgIdPMapping
{:idp (describe s/Str "Internal idp-id")
(s/optional-key :organization-id) (describe s/Str "the organization id provided by the IdP")
:enabled? (describe s/Bool "Do we allow the connection through this IdP?")})
(s/defschema NewOrg
"Org before being saved to DB"
(st/merge
{:id s/Str}
(st/optional-keys
{:idp-mapping OrgIdPMapping
,,,
})))
#+end_src
So, depending on the Identity Provider (IdP) some provide an
=organization-id= some don't.
IROH-Auth currently work with 3 IdPs:
- IDB AMP (stand for Identity Broker that proxy the SAML AMP/Castle
Identity Provider)
- IDB TG (Identity Broker proxy the Threatgrid OpenID Connect)
- SxSO (Okta)
SxSO is the only IdP from which we do not care about the =organization-id=.
So organization created through login via IDB AMP or IDB TG will be called
/managed orgs/. Mainly the IdP is responsible for the name of the =org-id=.
For managed orgs, we create the org using the function =iroh-auth.iroh-auth-service.core/sync-user-org=.
Which will use the value returned by =iroh-auth.org-service.core/get-org-by-session-infos=.
So this last function should be modified to always have a field
=idp-mapping=.
During logins via SxSO (or any IdP that does not manage orgs) the
=organization-id= must not be set.
During logins via AMP or TG (or any IdP that manage orgs ) the
=organization-id= of the =OrgIdPMapping= must be set to the value returned
by the IdP.
Note there might be some work to get the information if some IdP manage org
or not.
This information is put in =config.edn=.
Every IdP has a =:manage-orgs= field.