<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>TGM</title>
    <subtitle>blog&#x2F;portfolio&#x2F;projects&#x2F;lists&#x2F;research</subtitle>
    <link rel="self" type="application/atom+xml" href="https://tgm.happyngreen.fr/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-02-24T00:00:00+00:00</updated>
    <id>https://tgm.happyngreen.fr/atom.xml</id>
    <entry xml:lang="en">
        <title>Fabulous Brussels</title>
        <published>2026-02-24T00:00:00+00:00</published>
        <updated>2026-02-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/fabulous-brussels/"/>
        <id>https://tgm.happyngreen.fr/lists/fabulous-brussels/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/fabulous-brussels/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;feu.ultravnr.be&#x2F;&quot;&gt;Bruxelles brûle t-il?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pinkscreens.org&#x2F;en&#x2F;pink-screens&quot;&gt;Pink Screens | Genres d&#x27;à côté&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;loadmo.re&#x2F;&quot;&gt;LOADMORE&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;telsquels.be&#x2F;&quot;&gt;💤 Tels Quels – Pour vivre heureux, vivons Tels Quels&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.xlr8rs.be&#x2F;home-2&#x2F;&quot;&gt;💤 XLR8RS – Club d’Ultimate Frisbee à Bruxelles&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.yiny.org&#x2F;w&#x2F;hwEDm2dRrpmgqCkNGudTvT&quot;&gt;💤 Les Vielles Salopes - Douce France - YinY.org&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Go</title>
        <published>2026-02-24T00:00:00+00:00</published>
        <updated>2026-02-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/programming/golang/"/>
        <id>https://tgm.happyngreen.fr/wiki/programming/golang/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/programming/golang/">&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;go&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; fix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;go&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; get&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -u&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;go&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; mod tidy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Thinkpad</title>
        <published>2026-02-05T00:00:00+00:00</published>
        <updated>2026-02-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/hardware/thinkpad/"/>
        <id>https://tgm.happyngreen.fr/wiki/hardware/thinkpad/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/hardware/thinkpad/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;thinkpad&#x2F;wiki&#x2F;index&#x2F;&quot;&gt;rthinkpad Wiki Your Guide to ThinkPads&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thinkwiki.org&#x2F;wiki&#x2F;ThinkWiki&quot;&gt;ThinkWiki&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Cameron n’est qu’une incarnation de plus de la prédation du capitalisme, cynique au point de nous faire passer un monde synthétique comme un geste politique</title>
        <published>2026-01-01T00:00:00+00:00</published>
        <updated>2026-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/citation-vincent-zoanima/"/>
        <id>https://tgm.happyngreen.fr/blog/citation-vincent-zoanima/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/citation-vincent-zoanima/">&lt;blockquote&gt;
&lt;p&gt;J’écrivais récemment pour un texte que je prépare : l’expérience se partage, la consommation se satisfait. Et je trouve dans les commentaires des panégyristes de Cameron beaucoup de (auto)satisfaction.&lt;&#x2F;p&gt;
&lt;p&gt;La question n’est pas de savoir si Télérama a raison de critiquer les carences et l’insuffisance scénaristique de ce film, la question est de savoir ce qui est véhiculé par Cameron, et ce depuis des décennies. Au hasard : une certaine fascination pour la guerre et la violence. Paul Virilio pointait ça déjà du doigt dans les années 90, comme lorsqu&#x27;il soulevait qu&#x27;Aliens n&#x27;est qu&#x27;un genre de répétition générale de la Première Guerre du Golfe (sans parler de la manipulation qui va avec, comme par exemple le personnage de Newt qui n&#x27;est qu&#x27;un pis-aller scénaristique, une justification émotionnelle au déferlement de violence qui s&#x27;en suit.) C&#x27;est ce qu&#x27;on appelle communément le « soft power » états-unien. (Le regretté Mark Fisher fait aussi une excellente lecture du T-1000 en tant que nouvelle forme, après celle du T-800, que prendrait la prédation capitaliste et les formes du travail, mais c&#x27;est une autre histoire.)&lt;&#x2F;p&gt;
&lt;p&gt;Au lieu d’être employés à la concordance imaginaire du collectif humain au milieu naturel, les récits sont sempiternellement façonnés pour l’alliance des relations entre collectifs humains : individus, générations, civilisation. L’être humain en tant qu’individu, les humains en tant que sociétés, en tant qu’espèce sont devenus, dans l’Occident moderne, le héros incessant de tous les récits. C’est un culte de la personnalité dont il nous faut sortir désormais. Jean-Christophe Cavallin nous rappelle que le rôle de la fiction devrait être d’assurer l’entretien du régime symbolique, de faire en sorte qu’il reste en prise avec la réalité sans mettre en péril notre vie psychique. Si la fiction répare quelque chose, ce n’est pas le monde abîmé, mais la machine symbolique qui permet au monde et à la pensée de co-évoluer et de co-produire.&lt;&#x2F;p&gt;
&lt;p&gt;Je fais partie de celles et ceux qui persistent et signent en disant que, par-delà l&#x27;hypocrisie du concept (profondément colonialiste) d&#x27;Avatar, il y a un discours mégalomane qui se veut démiurgique, voire messianique (cf. son livre Histoire de la SF). Je le redis : Cameron, dans sa course au progrès à tout prix — science sans conscience —, a une foi aveugle et irresponsable en la technologie. Faire un film qui se veut « écologiste » (ou « progressiste » ou « humaniste », que les laudateurs choisissent l&#x27;adjectif qu&#x27;ils veulent, je garde en tous cas les guillemets ironiques pour chacun d’entre eux) en le séparant aussi intrinsèquement du vivant n’est plus un paradoxe, c’est le symptôme d’une schize qui frise la pathologie – celle du désir de se passer des humains (ou tout du moins de les réifier) au profit d’images idéalisées (revoir à ce sujet l’entretien entre Godard et Daney en 1988). C&#x27;est sur ce point que le fond et la forme de Cameron se marient et engendrent des monstres. Cameron n’est qu’une incarnation de plus de la prédation du capitalisme, cynique au point de nous faire passer un monde synthétique comme un geste politique.&lt;&#x2F;p&gt;
&lt;p&gt;La difficulté pour ses fans est de réussir à passer outre l&#x27;éventuelle jouissance ressentie dans un de ses films (jouissance que je ne nie pas, mais on ne peut pas s’en contenter…) pour tenter de voir par-delà, chercher ce qui est « réellement » dit.&lt;&#x2F;p&gt;
&lt;p&gt;Et toutes celles et ceux qui nous diront qu&#x27;il est un « grand storyteller », un « superbe technicien » ou un « grand réalisateur » n&#x27;y changeront rien à mes yeux : il est proche des gouvernements US, d&#x27;Elon Musk et autres ordures de la Silicon Valley. Il est donc du côté de nos ennemis. (On ne peut se plaindre que le cordon sanitaire avec l&#x27;extrême droite ait été coupé sans faire le ménage jusque dans nos imaginaires et nos goûts.)&lt;&#x2F;p&gt;
&lt;p&gt;La question n&#x27;est donc pas « scénario ou pas scénario ». S&#x27;il il y a une ligne de démarcation entre deux camps, elle est peut-être plutôt là : celle que Paul B. Preciado définissait très bien en 2014 dans l&#x27;Entretien infini : « Soit on est du côté de l&#x27;esthétique du capital, soit on est du côté de la transformation sociale. Et au milieu, il n&#x27;y a rien. »&lt;&#x2F;p&gt;
&lt;p&gt;Et puisqu&#x27;on parle de transformation sociale, mentionnons Ursula K. Le Guin grâce à un article de Mark Fisher sur son blog k-punk : « Avatar is Le Guin-lite, a degraded version of the scenario that Le Guin developed in novels such as The Word For World Is Forest, The Dispossessed and City Of Illusions, but stripped of all Le Guin&#x27;s ambivalence and intelligence »&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;— Vincent Capes de la chaîne &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;blog&#x2F;citation-vincent-zoanima&#x2F;www.youtube.com&#x2F;channel&#x2F;UCCjMm8Z-g8AyGEmUz8cGZiQ&quot;&gt;Zoe Anima&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;via &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dD5tImgXjBM&quot;&gt;Le Fossoyeur de Film @YT&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Nix</title>
        <published>2025-12-29T00:00:00+00:00</published>
        <updated>2026-01-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/nix/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/nix/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/nix/">&lt;p&gt;nix is a language&#x2F;tool used to handle reproducible declarative packages and system configurations.&lt;&#x2F;p&gt;
&lt;p&gt;It can be used as a package manager &lt;em&gt;nearly&lt;&#x2F;em&gt; everywhere, as an OS, both for server and user machines, and as a dev env and services hosting deployements.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;package-search-configuration-options&quot;&gt;Package Search &amp;amp; configuration options&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;Packages&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;search.nixos.org&#x2F;packages&quot;&gt;Official nixpkgs search&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Options&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mynixos.com&#x2F;&quot;&gt;MyNixOS&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;home-manager-options.extranix.com&#x2F;&quot;&gt;Home Manager OPTION SEARCH&lt;&#x2F;a&gt;, by the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;extranix.com&#x2F;&quot;&gt;ExtraNix Project&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Passing Mentions&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;flakehub.com&#x2F;&quot;&gt;Flakehub&lt;&#x2F;a&gt;, by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;determinate.systems&#x2F;&quot;&gt;Determinate Systems&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;wikis&quot;&gt;Wikis&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.nixos.org&quot;&gt;Official NixOS wiki&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nixos.wiki&quot;&gt;nixos.wiki&lt;&#x2F;a&gt;, unofficial user wiki&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nix.dev&#x2F;&quot;&gt;nix.dev&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Manuals&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nixos.org&#x2F;manual&#x2F;nixpkgs&#x2F;stable&#x2F;&quot;&gt;&lt;code&gt;nixpkgs&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nixos.org&#x2F;manual&#x2F;nixos&#x2F;stable&#x2F;&quot;&gt;NixOS&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nix.dev&#x2F;manual&#x2F;nix&#x2F;2.28&#x2F;&quot;&gt;&lt;code&gt;nix&lt;&#x2F;code&gt; at nix.dev&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;learning-ressources&quot;&gt;Learning Ressources&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nixos.org&#x2F;guides&#x2F;nix-pills&#x2F;&quot;&gt;Nix Pills&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nix.dev&#x2F;tutorials&#x2F;nixos&#x2F;&quot;&gt;nix.dev&#x27;s NixOS&lt;&#x2F;a&gt; tutorial&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;xeiaso.net&#x2F;&quot;&gt;XeIaso&#x27;s blog&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lantian.pub&#x2F;en&#x2F;article&#x2F;modify-website&#x2F;nixos-why.lantian&#x2F;&quot;&gt;NixOS&lt;&#x2F;a&gt; Series&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.tweag.io&#x2F;blog&#x2F;2020-05-25-flakes&#x2F;&quot;&gt;Nix Flakes&lt;&#x2F;a&gt; Series&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nixos-and-flakes.thiscute.world&#x2F;&quot;&gt;NixOS &amp;amp; Flakes Book&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zero-to-nix.com&#x2F;&quot;&gt;Zero to Nix&lt;&#x2F;a&gt;, by Determinate Systems (again)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nixcloud.io&#x2F;tour&#x2F;?id=introduction&#x2F;nix&quot;&gt;A tour of Nix&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PLRGI9KQ3_HP_OFRG6R-p4iFgMSK1t5BHs&quot;&gt;Nixology&lt;&#x2F;a&gt; playlist&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;borretti.me&#x2F;article&#x2F;nixos-for-the-impatient&quot;&gt;NixOS for the Impatient&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki-old.nikiv.dev&#x2F;operating-systems&#x2F;linux&#x2F;nixos#nix-configs-nixos&quot;&gt;Everything I Know&lt;&#x2F;a&gt; → &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nikiv.dev&#x2F;past&quot;&gt;key&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Gabriella439&#x2F;nixos-in-production&quot;&gt;NixOS in Production&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Passing Mention&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nixops.readthedocs.io&#x2F;en&#x2F;latest&#x2F;introduction.html&quot;&gt;NixOps&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Sources: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;NixOS&#x2F;comments&#x2F;15zi438&#x2F;learning_resources&#x2F;&quot;&gt;Reddit&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;system-wide-userspace-wide&quot;&gt;System-wide&#x2F;userspace-wide&lt;&#x2F;h3&gt;
&lt;p&gt;There are two ways to install nix to use as your system package manager etc:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nix-community.github.io&#x2F;home-manager&#x2F;&quot;&gt;home-manager&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;nix-community&#x2F;home-manager&quot;&gt;source code&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;!-- - [nixOS]() --&gt;
&lt;p&gt;You do not necessarily need home-manager, but it automates nicely setting up your environment, handle dotfiles etc.&lt;&#x2F;p&gt;
&lt;p&gt;On a non-nix machine, I first install nix, then home-manager (root access needed), in single-user mode.&lt;&#x2F;p&gt;
&lt;p&gt;I then setup my home.nix file, and then run :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;home-manager&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; switch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This installs and sets up everything as defined in the home.nix file.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;specifics&quot;&gt;Specifics&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;missing-etc-nix-nix-conf-or-config-nix-nix-conf&quot;&gt;Missing &lt;code&gt;&#x2F;etc&#x2F;nix&#x2F;nix.conf&lt;&#x2F;code&gt; or &lt;code&gt;~&#x2F;.config&#x2F;nix&#x2F;nix.conf&lt;&#x2F;code&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;It&#x27;s okay to create those files.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;flatpaks&quot;&gt;Flatpaks&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nixos.wiki&#x2F;wiki&#x2F;Flatpak&quot;&gt;wiki page on Flatpaks in nix&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Apparently, installing the package is enough to add flatpaks to the system.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fripes à Bruxelles</title>
        <published>2025-12-04T00:00:00+00:00</published>
        <updated>2025-12-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/maps/bxl-fripes/"/>
        <id>https://tgm.happyngreen.fr/maps/bxl-fripes/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/maps/bxl-fripes/"></content>
        
    </entry>
    <entry xml:lang="en">
        <title>Bonne question pour savoir comment l&#x27;autre personne va</title>
        <published>2025-11-30T00:00:00+00:00</published>
        <updated>2025-11-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/question-comment-ca-va/"/>
        <id>https://tgm.happyngreen.fr/lists/question-comment-ca-va/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/question-comment-ca-va/">&lt;p&gt;Liste de question à poser à la place de &lt;strong&gt;«Comment ça va ?»&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;T&#x27;as des belles choses de prévus aujourd&#x27;hui&#x2F;cette semaine ?&lt;&#x2F;li&gt;
&lt;li&gt;Est-ce que tu as fait des belles choses aujourd&#x27;hui&#x2F;cette semaine ?&lt;&#x2F;li&gt;
&lt;li&gt;À quoi penses-tu ces derniers temps ?&lt;&#x2F;li&gt;
&lt;li&gt;Y a-t-il eu quelque chose d&#x27;intéressant (excitant, cool, amusant) récemment ?&lt;&#x2F;li&gt;
&lt;li&gt;Alors, à quoi ressemble l&#x27;avenir ?&lt;&#x2F;li&gt;
&lt;li&gt;Comment te sens-tu ces derniers jours ?&lt;&#x2F;li&gt;
&lt;li&gt;Comment était ta semaine ?&lt;&#x2F;li&gt;
&lt;li&gt;Qu&#x27;est-ce qui occupe ton temps ces jours-ci ?&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;ul&gt;
&lt;li&gt;Quel était le highlight de ta semaine ?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Tu fais quoi de tes journée ?&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Python</title>
        <published>2025-11-30T00:00:00+00:00</published>
        <updated>2025-11-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/python/"/>
        <id>https://tgm.happyngreen.fr/wiki/python/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/python/">&lt;h2 id=&quot;learning-ressources&quot;&gt;Learning Ressources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mathspp.com&#x2F;&quot;&gt;Mathspp&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mathspp.gumroad.com&#x2F;l&#x2F;pydonts&quot;&gt;Pydon&#x27;ts – Write elegant Python code&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Hack</title>
        <published>2025-11-18T00:00:00+00:00</published>
        <updated>2025-11-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/fabulous-hack/"/>
        <id>https://tgm.happyngreen.fr/lists/fabulous-hack/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/fabulous-hack/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.rockbox.org&#x2F;&quot;&gt;Rockbox - Free Music Player Firmware&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;kavishdevar&#x2F;librepods&quot;&gt;kavishdevar&#x2F;librepods: AirPods liberated from Apple&#x27;s ecosystem.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Thunderbird</title>
        <published>2025-11-18T00:00:00+00:00</published>
        <updated>2025-11-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/thunderbird/"/>
        <id>https://tgm.happyngreen.fr/wiki/thunderbird/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/thunderbird/">&lt;h2 id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;inbox-not-working-correctly&quot;&gt;Inbox not working correctly&lt;&#x2F;h3&gt;
&lt;p&gt;→ &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;saywebsolutions.com&#x2F;blog&#x2F;thunderbird-unified-inbox-not-showing-all-accounts&quot;&gt;Thunderbird Unified Inbox Not Showing All Accounts&lt;&#x2F;a&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20250812160619&#x2F;https:&#x2F;&#x2F;saywebsolutions.com&#x2F;blog&#x2F;thunderbird-unified-inbox-not-showing-all-accounts&quot;&gt;web archive&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Manuals</title>
        <published>2025-11-11T00:00:00+00:00</published>
        <updated>2025-11-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/manuals/"/>
        <id>https://tgm.happyngreen.fr/lists/manuals/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/manuals/">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dramforever.github.io&#x2F;easyriscv&#x2F;&quot;&gt;Easy RISC-V&lt;&#x2F;a&gt;, an interactive introduction to RISC-V assembly programming, by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dramforever&quot;&gt;dramforever&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;helix-nikita-revencos-projects.vercel.app&#x2F;&quot;&gt;Helix Editor | Helix&lt;&#x2F;a&gt;, alternate pedagogie &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;linux&#x2F;helix&#x2F;&quot;&gt;helix&lt;&#x2F;a&gt; manual.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Android</title>
        <published>2025-11-11T00:00:00+00:00</published>
        <updated>2025-11-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/android/android/"/>
        <id>https://tgm.happyngreen.fr/wiki/android/android/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/android/android/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;eylenburg.github.io&#x2F;android_comparison.htm&quot;&gt;Comparison of Android-based Operating Systems&lt;&#x2F;a&gt; → great analysis of security in different android-based ROMs, notably &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;grapheneos.org&#x2F;&quot;&gt;GrapheneOS&lt;&#x2F;a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;calyxos.org&#x2F;&quot;&gt;CalyxOS&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Flour Glue</title>
        <published>2025-11-11T00:00:00+00:00</published>
        <updated>2025-11-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/diy/flour-glue/"/>
        <id>https://tgm.happyngreen.fr/wiki/diy/flour-glue/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/diy/flour-glue/"></content>
        
    </entry>
    <entry xml:lang="en">
        <title>Euro Cloud Providers</title>
        <published>2025-11-04T00:00:00+00:00</published>
        <updated>2025-11-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/euro-cloud-provider/"/>
        <id>https://tgm.happyngreen.fr/lists/euro-cloud-provider/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/euro-cloud-provider/">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;european-alternatives.eu&#x2F;category&#x2F;cloud-computing-platforms&quot;&gt;European cloud computing platforms | European Alternatives&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gridscale.io&#x2F;en&#x2F;pricing&#x2F;&quot;&gt;Prices of the gridscale cloud services&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.ionos.co.uk&#x2F;servers&#x2F;vps&quot;&gt;VPS Hosting UK | Cheap » from £1&#x2F;mth | IONOS&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.scaleway.com&#x2F;en&#x2F;&quot;&gt;Europe&#x27;s empowering cloud provider | Scaleway&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;european-alternatives.eu&#x2F;category&#x2F;vps-virtual-private-server-hosters&quot;&gt;European virtual private server (VPS) hosters | European Alternatives&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;my.tilaa.com&#x2F;en&#x2F;configure-vps&quot;&gt;VPS configurator: configure your VPS yourself&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;upcloud.com&#x2F;products&#x2F;cloud-servers&#x2F;#cloud-servers&quot;&gt;UpCloud Cloud Server Infrastructure&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.ovhcloud.com&#x2F;en&#x2F;vps&#x2F;&quot;&gt;VPS - Your virtual private server in the cloud | OVHcloud Worldwide&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gridscale.io&#x2F;en&#x2F;cloud-portfolio-en&#x2F;&quot;&gt;Cloud Portfolio - gridscale&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cyso.cloud&#x2F;pricing&quot;&gt;Cyso European Cloud Pricing – Transparent &amp;amp; Flexible&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;my.fuga.cloud&#x2F;&quot;&gt;My Cyso | Cloud&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;my.ionos.fr&#x2F;server-configuration&#x2F;?skipContractSelection=true&amp;amp;skipDomainCheck=true&amp;amp;cmsIdentifier=tariff-core-vps-linux-l&amp;amp;locale=fr-fr&amp;amp;pageName=serveurs&#x2F;vps&quot;&gt;Configuration du serveur | IONOS&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.hetzner.com&#x2F;cloud&#x2F;&quot;&gt;Cheap hosted VPS by Hetzner: our cloud hosting services&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Forward Proxy</title>
        <published>2025-10-23T00:00:00+00:00</published>
        <updated>2025-10-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/sysadmin/forward-proxy/"/>
        <id>https://tgm.happyngreen.fr/wiki/sysadmin/forward-proxy/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/sysadmin/forward-proxy/">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.shellhacks.com&#x2F;linux-proxy-server-settings-set-proxy-command-line&#x2F;&quot;&gt;Linux Proxy Server Settings - Set Proxy For Command Line - ShellHacks&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;unix.stackexchange.com&#x2F;questions&#x2F;213737&#x2F;how-do-i-set-systemwide-connection-over-a-proxy-server&quot;&gt;💤 linux - How do I set systemwide connection over a proxy server - Unix &amp;amp; Linux Stack Exchange&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.squid-cache.org&#x2F;Versions&#x2F;&quot;&gt;💤 squid : Optimising Web Delivery&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;kalaksi&#x2F;docker-tinyproxy&#x2F;blob&#x2F;master&#x2F;docker-compose.yml&quot;&gt;💤 docker-tinyproxy&#x2F;docker-compose.yml at master · kalaksi&#x2F;docker-tinyproxy&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tarampampam&#x2F;3proxy-docker&quot;&gt;💤 tarampampam&#x2F;3proxy-docker: 🥷 Docker image with 3proxy - Tiny free proxy server&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;3proxy&#x2F;3proxy?tab=readme-ov-file&quot;&gt;💤 3proxy&#x2F;3proxy: 3proxy - tiny free proxy server&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;caddyserver.com&#x2F;docs&#x2F;install#docker&quot;&gt;💤 Install — Caddy Documentation&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;caddyserver.com&#x2F;docs&#x2F;running#docker-compose&quot;&gt;💤 Keep Caddy Running — Caddy Documentation&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;caddyserver.com&#x2F;docs&#x2F;build#docker&quot;&gt;Build from source — Caddy Documentation&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>ShadowDark</title>
        <published>2025-10-16T00:00:00+00:00</published>
        <updated>2025-10-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/ttrpg/shadowdark/"/>
        <id>https://tgm.happyngreen.fr/wiki/ttrpg/shadowdark/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/ttrpg/shadowdark/">&lt;h2 id=&quot;system&quot;&gt;System&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thearcanelibrary.com&#x2F;pages&#x2F;shadowdark&quot;&gt;ShadowDark&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;The Arcane Librarie&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@TheArcaneLibrary&quot;&gt;Youtube Channel&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ressources&quot;&gt;Ressources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;shadowdarklings.net&quot;&gt;ShadowDarklings&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Rust</title>
        <published>2025-09-28T00:00:00+00:00</published>
        <updated>2025-09-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/rust/fabulous-rust/"/>
        <id>https://tgm.happyngreen.fr/wiki/rust/fabulous-rust/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/rust/fabulous-rust/">&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;language&quot;&gt;Language&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;facet.rs&#x2F;&quot;&gt;facet.rs&lt;&#x2F;a&gt; - &lt;em&gt;facet is a derive macro and a trait that gives runtime (and to some extent, const-time) knowledge about the shape, trait implementations, and characteristics of arbitrary types.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;g-plane&#x2F;malva&quot;&gt;malva&lt;&#x2F;a&gt; - &lt;em&gt;Configurable, smart and fast CSS, SCSS, Sass and Less formatter with dprint integration.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;document-creation&quot;&gt;Document creation&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;typst&#x2F;typst&quot;&gt;typst&lt;&#x2F;a&gt; - &lt;em&gt;Typst is a new markup-based typesetting system that is designed to be as powerful as LaTeX while being much easier to learn and use&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;LaurenzV&#x2F;hayro&quot;&gt;hayro&lt;&#x2F;a&gt; - &lt;em&gt;An experimental, work-in-progress PDF interpreter and renderer.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bzsanti&#x2F;oxidizePdf&quot;&gt;oxidize-pdf&lt;&#x2F;a&gt; - &lt;em&gt;A pure Rust PDF generation and manipulation library with zero external PDF dependencies. Production-ready for basic PDF functionality. Generate PDFs 2x faster than PDFSharp, with memory safety guarantees and a 5.2MB binary size.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;messense&#x2F;mupdf-rs&quot;&gt;mupdf-rs&lt;&#x2F;a&gt; - &lt;em&gt;Rust binding to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ArtifexSoftware&#x2F;mupdf&quot;&gt;mupdf&lt;&#x2F;a&gt;, MuPDF is a lightweight open source software framework for viewing and converting PDF, XPS, and E-book documents.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;authors-of-note&quot;&gt;Authors of note&lt;&#x2F;h2&gt;
&lt;p&gt;This is  a listing of people that work on rust, whose work is too extensive to list in other sections. I however do not consider those people better then the devs working on projects solo etc.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mitsuhiko?tab=repositories&amp;amp;q=&amp;amp;type=source&amp;amp;language=rust&amp;amp;sort=&quot;&gt;Armin Ronacher &#x2F; mitsuhiko&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Maps</title>
        <published>2025-09-24T00:00:00+00:00</published>
        <updated>2025-09-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/ttrpg/maps/"/>
        <id>https://tgm.happyngreen.fr/wiki/ttrpg/maps/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/ttrpg/maps/">&lt;h2 id=&quot;commercial-maps&quot;&gt;Commercial Maps&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.czepeku.com&#x2F;&quot;&gt;Czepeku&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.patreon.com&#x2F;tomcartos&quot;&gt;Tom Cartos&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Virtual Table Top</title>
        <published>2025-09-24T00:00:00+00:00</published>
        <updated>2025-09-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/ttrpg/owlbear-rodeo/"/>
        <id>https://tgm.happyngreen.fr/wiki/ttrpg/owlbear-rodeo/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/ttrpg/owlbear-rodeo/">&lt;h2 id=&quot;online-vtt&quot;&gt;Online VTT&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;roll20&quot;&gt;Roll20&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;owlbear&quot;&gt;Owlbear&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.owlbear.rodeo&quot;&gt;Owlbear Rodeo&lt;&#x2F;a&gt; is new kid in the block online VTT.
Launched in ... by two australians, it aims to be a minimalist tool that focuses on maps and tokens.&lt;&#x2F;p&gt;
&lt;p&gt;It is a React web app that uses the Material You design style.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Performance&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;In my opinion, it is snappier and faster then Roll20.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Audio in TTRPG</title>
        <published>2025-09-23T00:00:00+00:00</published>
        <updated>2025-09-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/ttrpg/audio/"/>
        <id>https://tgm.happyngreen.fr/wiki/ttrpg/audio/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/ttrpg/audio/">&lt;h2 id=&quot;original-soundtracks&quot;&gt;Original Soundtracks&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;video-games&quot;&gt;Video Games&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;all souls games&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PLxh_0CD1_70Or5zVrJS7G5jWehpTzFNH6&quot;&gt;Dark Souls 1&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PLlHY6e7WCV6M7UV1EBjAFA349aTyutIU4&quot;&gt;Dark Souls 3&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PLCLeSTzz6trY_Qn_8vMnqO9TbqesAM4x6&quot;&gt;Bloodborn&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PLTmJuovQUxPuSYfrtCgpsLwQOeRXSkFzp&quot;&gt;Elden Ring&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Other Games&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PL1ij2T_0HM3TnXecXuyqMgYUB5sHyY1ri&quot;&gt;The Witcher 3: The Wild Hunt&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;films&quot;&gt;Films&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PLBKadB95sF46sIN2fmEWPPzlCeRXx-Lio&quot;&gt;King Arthur&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;tv-shows&quot;&gt;TV Shows&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PLDisKgcnAC4S9_AC6YANS-G1YH7L_GF2S&quot;&gt;Carnival Row&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Communication</title>
        <published>2025-09-16T00:00:00+00:00</published>
        <updated>2025-09-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/communication/"/>
        <id>https://tgm.happyngreen.fr/lists/communication/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/communication/">&lt;h2 id=&quot;visioconference&quot;&gt;Visioconférence&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;em&gt;Liste des instances gratuites et publiques de Jitsi &#x2F; BigBlueButton&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;jitsi-meet-via-chatons&quot;&gt;Jitsi Meet via CHATONS&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;Collectif des Hébergeurs Alternatifs,Transparents, Ouverts, Neutres et
Solidaires&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Colibris Outils Libres (AS24940 Hébergé en Allemagne en IPv4 uniquement) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;visio.colibris-outilslibres.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;visio.colibris-outilslibres.org&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;TeDomum (AS12876 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;meet.tedomum.net&#x2F;&quot;&gt;https:&#x2F;&#x2F;meet.tedomum.net&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Artifaille (AS12322 Hébergé sur une Freebox FTTH en IPv4 uniquement) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;meet.artifaille.fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;meet.artifaille.fr&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Alolise (AS199422 hébergé en France en IPv4 uniquement)
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;meet.alolise.org&quot;&gt;https:&#x2F;&#x2F;meet.alolise.org&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;roflcopter.fr (AS24940 hébergé en Allemagne en IPv4 uniquement)
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;meet.roflcopter.fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;meet.roflcopter.fr&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;HADOLY (Hébergeur Associatif Décentralisé et Ouvert à Lyon) (AS51083 Hébergé
en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.hadoly.fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.hadoly.fr&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;devloprog.org (AS5410, hébergé sur une Bbox FTTH en IPv4 uniquement) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;meet.devloprog.org&quot;&gt;https:&#x2F;&#x2F;meet.devloprog.org&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Pâquerette (AS29222 hébergé en Suisse en IPv4 uniquement)
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;visio.paquerette.eu&#x2F;&quot;&gt;https:&#x2F;&#x2F;visio.paquerette.eu&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Algoo (AS12876 Hébergé en France en IPv4 uniquement)
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;suricate.tv&#x2F;&quot;&gt;https:&#x2F;&#x2F;suricate.tv&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;DryCat (AS24940 Hébergé en Allemagne et IPv6 dispo)
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;meet.drycat.fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;meet.drycat.fr&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;jitsi-meet-via-autres-acteurs&quot;&gt;Jitsi Meet via autres acteurs&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;WebConférence de l&#x27;État (AS60855 Hébergé en France en IPv4 uniquement) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;webconf.numerique.gouv.fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;webconf.numerique.gouv.fr&#x2F;&lt;&#x2F;a&gt;&lt;br &#x2F;&gt;
Restriction : obligation de créer le salon depuis le RIE (Le réseau
interministériel de l&#x27;État)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Renater :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rendez-vous.renater.fr&#x2F;home&#x2F;&quot;&gt;https:&#x2F;&#x2F;rendez-vous.renater.fr&#x2F;home&#x2F;&lt;&#x2F;a&gt;&lt;br &#x2F;&gt;
Restriction : Service réservées aux établissement d’enseignement supérieur.
obligation de s&#x27;identifier.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Rezopole (AS199422 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;meeting.rezopole.net&#x2F;&quot;&gt;https:&#x2F;&#x2F;meeting.rezopole.net&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Hivane NetWork (AS34019 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.hivane.net&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.hivane.net&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Elkaïm Élie (AS12876 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;framatalk.jesuisfrancobelge.eu&#x2F;&quot;&gt;https:&#x2F;&#x2F;framatalk.jesuisfrancobelge.eu&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Nextmap.io (AS35426 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.nextmap.io&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.nextmap.io&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Association Viviers Fibre (AS16276 Hébergé en France en IPv4 uniquement) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;webconf.viviers-fibre.net&#x2F;&quot;&gt;https:&#x2F;&#x2F;webconf.viviers-fibre.net&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;SilentT – Clément Breuil (AS62000 Hébergé en France en IPv4 uniquement) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.silentt.fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.silentt.fr&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;MilkyWan (AS57199 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.milkywan.fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.milkywan.fr&#x2F;&lt;&#x2F;a&gt; (cf
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lafibre.info&#x2F;milkywan&#x2F;jitsiframatalk-un-service-de-visioconference-pour-aider-les-teletravailleurs&#x2F;?topicseen&quot;&gt;Jitsi&#x2F;Framatalk : Un service de visioconférence pour aider les télétravailleurs&lt;&#x2F;a&gt;)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Grifon Fédération FDN (AS204092 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;framatalk.grifon.fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;framatalk.grifon.fr&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Vevox (AS16276 Hébergé en France en IPv4 uniquement) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;videoconf.wevox.eu&quot;&gt;https:&#x2F;&#x2F;videoconf.wevox.eu&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Florian &#x2F; minzord (AS197922 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.minzord.eu.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.minzord.eu.org&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Vidéos du Libre (AS197422 Hébergé en France et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.videodulib.re&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.videodulib.re&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;BIM (Bienvenue sur l&#x27;Internet Montpellierain) (AS200162 Hébergé en France en
IPv4 uiquement) : &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;allo.bim.land&#x2F;&quot;&gt;https:&#x2F;&#x2F;allo.bim.land&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;thedark (AS29222 Hébergé en Suisse en IPv4 uiniquement) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.thedark.xyz&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.thedark.xyz&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;BrainMill (AS48514 Hébergé en Suède et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.brainmill.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.brainmill.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Freifunk Düsseldorf (AS207871 Hébergé en Allemagne et IPv6 dispo) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.freifunk-duesseldorf.de&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.freifunk-duesseldorf.de&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;jitsi-via-grosse-instance&quot;&gt;Jitsi via Grosse Instance&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Framasoft (redirige vers un pool de serveurs chez différents hébergeurs en
Europe) :
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;framatalk.org&#x2F;accueil&#x2F;fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;framatalk.org&#x2F;accueil&#x2F;fr&#x2F;&lt;&#x2F;a&gt;
(attention, il peut être surchargé compte tenu de sa popularité)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Celle des développeurs Jitsi hébergé chez Amazon en IPv4 uniquement (AS16509)
: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.org&#x2F;jitsi-meet&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.org&#x2F;jitsi-meet&#x2F;&lt;&#x2F;a&gt; (qui redirige
vers &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;meet.jit.si&#x2F;&quot;&gt;https:&#x2F;&#x2F;meet.jit.si&#x2F;&lt;&#x2F;a&gt; ) (attention, il peut être
surchargé compte tenu de sa popularité)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Jitsi hébergé chez l&#x27;opérateur Free:
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jitsi.free.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;jitsi.free.org&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Auteur (&lt;em&gt;n.d.&lt;&#x2F;em&gt;). &lt;em&gt;Visioconférence: Liste des instances gratuites et
publiques de Jitsi&lt;&#x2F;em&gt;. Visioconférence: Liste des instances gratuites et
publiques de Jitsi &#x2F; BigBlueBu, Retrieved September 16, 2025 at 12:02:54
from
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lafibre.info&#x2F;navigateurs&#x2F;visioconference&#x2F;&quot;&gt;https:&#x2F;&#x2F;lafibre.info&#x2F;navigateurs&#x2F;visioconference&#x2F;&lt;&#x2F;a&gt; -
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;https:&#x2F;&#x2F;lafibre.info&#x2F;navigateurs&#x2F;visioconference&#x2F;&quot;&gt;🏛 archive&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Board Games</title>
        <published>2025-09-09T00:00:00+00:00</published>
        <updated>2025-09-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/fabulous-boardgames/"/>
        <id>https://tgm.happyngreen.fr/lists/fabulous-boardgames/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/fabulous-boardgames/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.regles-du-jeu.net&#x2F;&quot;&gt;regles du jeu.net&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Web</title>
        <published>2025-09-09T00:00:00+00:00</published>
        <updated>2025-09-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/fabulous-web/"/>
        <id>https://tgm.happyngreen.fr/lists/fabulous-web/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/fabulous-web/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;yoavg.github.io&#x2F;eternal&#x2F;#&quot;&gt;Eternal Struggle&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.darkpattern.games&#x2F;&quot;&gt;DarkPattern.games » Healthy Gaming « Avoid Addictive Dark Patterns&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;acrylicmatch.com&#x2F;&quot;&gt;Acrylic Match&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;hrc.contentdm.oclc.org&#x2F;digital&#x2F;collection&#x2F;p15878coll84&#x2F;search&quot;&gt;Browse - Harry Ransom Center Digital Collections&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;how-did-i-get-here.net&#x2F;&quot;&gt;How Did I Get Here&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;xslt.rip&#x2F;&quot;&gt;XSLT.RIP - Google are killing XSLT!&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;projecteuler.net&#x2F;&quot;&gt;About - Project Euler&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;platforms&quot;&gt;Platforms&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;openbenches.org&#x2F;&quot;&gt;OpenBenches Welcome!&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bookshelf.town&#x2F;&quot;&gt;Bookshelf Town&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;personal-websites&quot;&gt;Personal Websites&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chsmc.org&#x2F;&quot;&gt;Chase McCoy&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kevquirk.com&#x2F;design-history&#x2F;&quot;&gt;Design History | Kev Quirk&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;heatherburns.tech&#x2F;&quot;&gt;Hi, I&#x27;m Heather Burns – — yes, that one.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>My setup on linux</title>
        <published>2025-09-09T00:00:00+00:00</published>
        <updated>2025-09-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/my-system/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/my-system/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/my-system/">&lt;h2 id=&quot;general&quot;&gt;General&lt;&#x2F;h2&gt;
&lt;p&gt;Those couple of pages have pretty good recommendation for tools to use on your
system.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;swaywm&#x2F;sway&#x2F;wiki&#x2F;Useful-add-ons-for-sway&quot;&gt;Useful Add Ons for Sway&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.hypr.land&#x2F;Useful-Utilities&#x2F;&quot;&gt;Useful Utilities - hyprland wiki&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arewewaylandyet.com&#x2F;&quot;&gt;Are we Wayland yet&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;sway&quot;&gt;Sway&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;media&quot;&gt;Media&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;heyjuvi&#x2F;avizo&quot;&gt;avizo&lt;&#x2F;a&gt; -
&lt;blockquote&gt;
&lt;p&gt;a simple notification daemon, mainly intended to be used for multimedia keys
for example with Sway.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;utility&quot;&gt;Utility&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sr.ht&#x2F;~leon_plickat&#x2F;lswt&#x2F;&quot;&gt;lswt&lt;&#x2F;a&gt; - list Wayland toplevels. →
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;aur.archlinux.org&#x2F;packages&#x2F;lswt&quot;&gt;AUR&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;You can alternatively use: &lt;code&gt;swaymsg -t get_tree&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;for app_ids:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;swaymsg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; get_tree&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; jq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;.. | .name? &#x2F;&#x2F; empty&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;or for names:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;swaymsg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; get_tree&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; jq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;.. | try .app_id? &#x2F;&#x2F; empty&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>date</title>
        <published>2025-09-05T00:00:00+00:00</published>
        <updated>2026-01-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/date/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/date/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/date/">&lt;p&gt;Use:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;man date&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;or if you have a tldr client (like &lt;code&gt;tealdeer&lt;&#x2F;code&gt;):&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;tdlr date&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;open-a-file-with-today-s-date&quot;&gt;Open a file with today&#x27;s date:&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Your editor + the date expression + the rest of the file name + file extension &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; $(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;+%Y-%m-%d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;_something.md&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Créer un ficher avec la date</title>
        <published>2025-09-05T00:00:00+00:00</published>
        <updated>2025-09-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/la-fonction-date/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/la-fonction-date/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/la-fonction-date/">&lt;h1 id=&quot;creer-un-fichier-avec-la-commande-date&quot;&gt;Créer un fichier avec la commande date&lt;&#x2F;h1&gt;
&lt;p&gt;Il est courant d&#x27;utiliser la commande [[date]] pour générer dynamiquement un nom
de fichier basé sur la date ou l&#x27;heure actuelle. Cette technique est utile pour
organiser des fichiers ou des journaux.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;creer-un-fichier-nomme-avec-la-date&quot;&gt;Créer un fichier nommé avec la date&lt;&#x2F;h2&gt;
&lt;p&gt;Pour créer un fichier utilisant la date actuelle dans son nom, combinez &lt;code&gt;date&lt;&#x2F;code&gt;
avec une commande comme &lt;code&gt;touch&lt;&#x2F;code&gt; (création de fichiers) ou un éditeur de texte.
Exemple :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;touch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;+%Y-%m-%d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Cela crée un fichier nommé &lt;code&gt;2024-11-20.txt&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Si vous voulez inclure l&#x27;heure, utilisez un format étendu :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;touch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;+%Y-%m-%d_%H-%M-%S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ce fichier inclura également l&#x27;heure, par exemple : &lt;code&gt;2024-11-20_14-30-45.txt&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;utiliser-un-editeur-de-texte&quot;&gt;Utiliser un éditeur de texte&lt;&#x2F;h2&gt;
&lt;p&gt;Si vous voulez créer et ouvrir un fichier directement dans un éditeur comme
&lt;code&gt;nano&lt;&#x2F;code&gt;, &lt;code&gt;vim&lt;&#x2F;code&gt;, ou &lt;code&gt;micro&lt;&#x2F;code&gt;, utilisez la commande suivante :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;micro&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;+%Y-%m-%d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Cela ouvrira le fichier &lt;code&gt;2024-11-20.txt&lt;&#x2F;code&gt; dans l&#x27;éditeur.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;automatisation-avec-un-script&quot;&gt;Automatisation avec un script&lt;&#x2F;h2&gt;
&lt;p&gt;Pour simplifier le processus, créez un script Bash ou Zsh :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Exemple :&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;#!&#x2F;bin&#x2F;bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Créer ou ouvrir un fichier nommé avec la date actuelle&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;FILENAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;+%Y-%m-%d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;touch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;$FILENAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #0DB9D7;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;Fichier créé : &lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;$FILENAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Rendez le script exécutable :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; +x script_date.sh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Puis exécutez-le :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;.&#x2F;script_date.sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;applications-pratiques&quot;&gt;Applications pratiques&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Gestion de journaux&lt;&#x2F;strong&gt; : Créez des fichiers de log ou des rapports
quotidiens automatiquement nommés.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Organisation de projets&lt;&#x2F;strong&gt; : Archivez vos notes ou tâches par date.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sauvegardes&lt;&#x2F;strong&gt; : Nommez les fichiers de sauvegarde avec une date et une
heure pour faciliter le suivi des versions.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;ressources&quot;&gt;Ressources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Consultez &lt;code&gt;man date&lt;&#x2F;code&gt; pour explorer les options de format.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Explorez des scripts avancés pour des tâches automatisées avec des dates.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Rust Syntax</title>
        <published>2025-09-05T00:00:00+00:00</published>
        <updated>2025-09-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/rust/rust-syntax/"/>
        <id>https://tgm.happyngreen.fr/wiki/rust/rust-syntax/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/rust/rust-syntax/">&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Primitives&lt;&#x2F;strong&gt; = the categories&#x2F;types themselves (like &lt;code&gt;i32&lt;&#x2F;code&gt;, &lt;code&gt;bool&lt;&#x2F;code&gt;, &lt;code&gt;char&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Literals&lt;&#x2F;strong&gt; = the actual written values you put in your code (like &lt;code&gt;5&lt;&#x2F;code&gt;,
&lt;code&gt;&quot;hello&quot;&lt;&#x2F;code&gt;, &lt;code&gt;true&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;aka&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Primitive&lt;&#x2F;strong&gt; = “&lt;em&gt;money&lt;&#x2F;em&gt;” (the concept of a type of thing)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Literal&lt;&#x2F;strong&gt; = “&lt;em&gt;$10 bill in my hand&lt;&#x2F;em&gt;” (a specific value of that type)&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Type&lt;&#x2F;strong&gt; = &lt;code&gt;Dog&lt;&#x2F;code&gt; (what it is)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Trait&lt;&#x2F;strong&gt; = &lt;code&gt;Speak&lt;&#x2F;code&gt; (what it can do)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Method&lt;&#x2F;strong&gt; = &lt;code&gt;lick&lt;&#x2F;code&gt; and &lt;code&gt;run&lt;&#x2F;code&gt; (actions a Dog knows how to do)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Function&lt;&#x2F;strong&gt; = &lt;code&gt;double&lt;&#x2F;code&gt; (general action not tied to Dog)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Expression&lt;&#x2F;strong&gt; = &lt;code&gt;x * 2&lt;&#x2F;code&gt;, &lt;code&gt;Dog::new(...)&lt;&#x2F;code&gt;, &lt;code&gt;self.age += 1&lt;&#x2F;code&gt; (the little building
blocks inside everything)&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>date</title>
        <published>2025-09-05T00:00:00+00:00</published>
        <updated>2025-09-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/textil/sachoches-de-velos/"/>
        <id>https://tgm.happyngreen.fr/wiki/textil/sachoches-de-velos/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/textil/sachoches-de-velos/">&lt;h1 id=&quot;diy-sacs-de-velo-et-autres-matos&quot;&gt;DIY Sacs de vélo et autres matos&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;general&quot;&gt;General&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;news&#x2F;the-functional-sewing-project&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;news&#x2F;the-functional-sewing-project&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thefunctionalsewingproject.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.thefunctionalsewingproject.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;tag&#x2F;myobg&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;tag&#x2F;myobg&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;projects-specifique&quot;&gt;Projects Spécifique:&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;a-diy-waxed-canvas-frame-bag&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;a-diy-waxed-canvas-frame-bag&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;make-your-own-stem-bag&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;make-your-own-stem-bag&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;how-to-make-a-bikepacking-framebag-krampus&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;how-to-make-a-bikepacking-framebag-krampus&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=oWDRiexLA0I&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=oWDRiexLA0I&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;make-trail-wallet&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;make-trail-wallet&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;make-your-own-fanny-pack&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;make-your-own-fanny-pack&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;plog&#x2F;bike-tire-belt&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;plog&#x2F;bike-tire-belt&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;make-cycling-cap&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;make-cycling-cap&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;accessoire-velo&quot;&gt;Accessoire Vélo&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;index&#x2F;add-cage-mounts-bike&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;index&#x2F;add-cage-mounts-bike&#x2F;&lt;&#x2F;a&gt; *
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;tubus-vega-surly-ecr-rack-mods-extra-h20&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;gear&#x2F;tubus-vega-surly-ecr-rack-mods-extra-h20&#x2F;&lt;&#x2F;a&gt;
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bikepacking.com&#x2F;news&#x2F;usps-mailer-bikepacking-bags&#x2F;&quot;&gt;https:&#x2F;&#x2F;bikepacking.com&#x2F;news&#x2F;usps-mailer-bikepacking-bags&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>sac</title>
        <published>2025-09-05T00:00:00+00:00</published>
        <updated>2025-09-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/textil/sacs/"/>
        <id>https://tgm.happyngreen.fr/wiki/textil/sacs/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/textil/sacs/">&lt;h3 id=&quot;stuff-sack&quot;&gt;Stuff sack&lt;&#x2F;h3&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Workspace</title>
        <published>2025-09-01T00:00:00+00:00</published>
        <updated>2025-09-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2025-workspace/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2025-workspace/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2025-workspace/">&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;portfolio&#x2F;2025-workspace&#x2F;.&#x2F;self1.jpg&quot; alt=&quot;Some IMage&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;portfolio&#x2F;2025-workspace&#x2F;.&#x2F;self3.jpg&quot; alt=&quot;Some IMage&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;portfolio&#x2F;2025-workspace&#x2F;.&#x2F;ecran.jpg&quot; alt=&quot;Some IMage&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;portfolio&#x2F;2025-workspace&#x2F;.&#x2F;P1210999.jpg&quot; alt=&quot;Some IMage&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;portfolio&#x2F;2025-workspace&#x2F;.&#x2F;P1220017.jpg&quot; alt=&quot;Some IMage&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Shell tricks</title>
        <published>2025-09-01T00:00:00+00:00</published>
        <updated>2025-09-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/shell-tricks/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/shell-tricks/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/shell-tricks/">&lt;h3 id=&quot;fuzzy-finding-and-opening-files-in-helix-fzf-skim&quot;&gt;Fuzzy-Finding and Opening Files in Helix (fzf &#x2F; skim)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Open file with fzf:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; $(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;fzf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Define a shell function (in &lt;code&gt;~&#x2F;.bashrc&lt;&#x2F;code&gt; or &lt;code&gt;~&#x2F;.zshrc&lt;&#x2F;code&gt;):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #7AA2F7;&quot;&gt;fhx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;fzf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;)&amp;quot;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then just run &lt;code&gt;fhx&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Limit to project files with &lt;code&gt;fd&lt;&#x2F;code&gt; or &lt;code&gt;rg&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; $(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;fd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; fzf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# or&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; $(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;rg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --files&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; fzf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Open multiple files:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; $(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;fzf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;🔀 &lt;strong&gt;Alternative:&lt;&#x2F;strong&gt; You can use
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;lotabout&#x2F;skim&quot;&gt;&lt;strong&gt;skim (sk)&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;, a Rust-based fzf clone, in
the same way:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; $(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;find-and-remove-file&quot;&gt;Find and remove file&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; $(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Maps &amp; Routing</title>
        <published>2025-08-29T00:00:00+00:00</published>
        <updated>2025-08-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/maps/"/>
        <id>https://tgm.happyngreen.fr/lists/maps/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/maps/">&lt;h2 id=&quot;general-maps-found-online-desktop&quot;&gt;General Maps found online (desktop)&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;foss-privacy-friendly&quot;&gt;FOSS (privacy friendly ?)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.openstreetmap.org&#x2F;&quot;&gt;OpenStreetMap&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;graphhopper.com&#x2F;maps&#x2F;?profile=car&amp;amp;layer=Omniscale&quot;&gt;GraphHopper&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;valhalla.openstreetmap.de&#x2F;&quot;&gt;Valhalla&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gpx.studio&#x2F;app&quot;&gt;gpxStudio&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;proprietary-non-privacy-friendly&quot;&gt;Proprietary (non-privacy-friendly)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.google.com&#x2F;maps&quot;&gt;Google Maps&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;maps.apple.com&#x2F;&quot;&gt;AppleMaps&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bing.com&#x2F;maps&quot;&gt;Bing Maps, by Microsoft&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.waze.com&#x2F;live-map&quot;&gt;Waze&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.viamichelin.com&#x2F;&quot;&gt;ViaMichelin&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.mapquest.com&#x2F;&quot;&gt;MapQuest&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Site de Rando et Balades</title>
        <published>2025-08-29T00:00:00+00:00</published>
        <updated>2025-08-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/rando/"/>
        <id>https://tgm.happyngreen.fr/lists/rando/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/rando/">&lt;h2 id=&quot;generique&quot;&gt;Générique&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.decathlon-outdoor.com&quot;&gt;Decathlon Outdoor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;bretagne&quot;&gt;Bretagne&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;finistere&quot;&gt;Finistère&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.toutcommenceenfinistere.com&#x2F;balades-pres-de-chez-vous&#x2F;&quot;&gt;Tout Commence au Finistère&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.tourisme-landerneau-daoulas.fr&#x2F;trouver-son-activite&#x2F;randonnee-et-velo&#x2F;balades-et-randos&#x2F;&quot;&gt;Pay de Landerneau&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.crozon-tourisme.bzh&#x2F;trouver-son-activite&#x2F;randonnees&#x2F;toutes-les-randonnees&#x2F;&quot;&gt;Presqu&#x27;île de Crozon&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.montsdarreetourisme.bzh&#x2F;randonn%C3%A9es&#x2F;les-circuits-p%C3%A9destres&#x2F;&quot;&gt;Monts d&#x27;Arrée&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.pnr-armorique.fr&#x2F;annuaires&quot;&gt;Parc Naturel Régional d&#x27;Armorique&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.menezhom-atlantique.bzh&#x2F;balades-randonnees&#x2F;balades-et-randos-a-pied&#x2F;&quot;&gt;Menez-Hom Atlantique&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cotedeslegendes.bzh&#x2F;en&#x2F;a-voir-a-faire&#x2F;bouger-se-faire-du-bien&#x2F;activites-outdoor-nature&#x2F;randonnee&#x2F;circuits-randonnees&#x2F;&quot;&gt;La Côte des Légendes&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.roscoff-tourisme.com&#x2F;fr&#x2F;a-voir-a-faire&#x2F;randonnees&#x2F;randonnees-a-pied&#x2F;&quot;&gt;roscoff - cote des légendes&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.baiedemorlaix.bzh&#x2F;fr&#x2F;itineraire&#x2F;?fwp_type_iti=pedestre&quot;&gt;Baie de Morlaix&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Static Site Generators</title>
        <published>2025-08-24T00:00:00+00:00</published>
        <updated>2025-08-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/ssg/"/>
        <id>https://tgm.happyngreen.fr/lists/ssg/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/ssg/">&lt;p&gt;What are Static Site Generators →
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Static_site_generator&quot;&gt;The Wikipedia Article&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;You can then also have a look at the following list for inspiration:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jamstack.org&#x2F;generators&#x2F;&quot;&gt;Jamstack - Site Generators complete list&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I&#x27;ve listed below my favorite SSG (Static Site Generators):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;getzola.org&quot;&gt;Zola&lt;&#x2F;a&gt;, &lt;em&gt;written in Rust, very fast, relavitely easy to
use. I use it for this website, and it has served me well.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.11ty.dev&#x2F;&quot;&gt;Eleventy&lt;&#x2F;a&gt;, &lt;em&gt;written in Javascript, also quite fast,
you need to learn JS to be able to build something with this. It is however
very very VERY extensible, lots of template languages to choose from etc.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zine-ssg.io&#x2F;&quot;&gt;Zine SSG&lt;&#x2F;a&gt;, &lt;em&gt;written in Zig, in alpha version as of time
of writing, should be VERRRRY fast, probably in the ballpark of zola.
Implements it&#x27;s own templating language and style using custom html tags, it&#x27;s
own markdown superset that makes it more extensible. I&#x27;m very curious to see
where this goes.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;worthy-mentions&quot;&gt;Worthy mentions&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rust-lang.github.io&#x2F;mdBook&#x2F;&quot;&gt;mdBook&lt;&#x2F;a&gt;, &lt;em&gt;similar to Gitbook, but in
Rust. Used by The Rust Book&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;axodotdev&#x2F;oranda&quot;&gt;oranda&lt;&#x2F;a&gt;, &lt;em&gt;build single page dev project
landing pages; I have not tried this, but it seems interesting. Written in
Rust&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Bretagne</title>
        <published>2025-08-22T00:00:00+00:00</published>
        <updated>2025-08-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/bretagne/"/>
        <id>https://tgm.happyngreen.fr/wiki/bretagne/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/bretagne/">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bretagne-vivante.org&quot;&gt;Bretagne Vivante - Une voix pour la nature&lt;&#x2F;a&gt; -
la principale association de protection de la nature et de la biodiversité en
Bretagne.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.toutcommenceenfinistere.com&#x2F;balades-pres-de-chez-vous&#x2F;&quot;&gt;Tout commence en Finistère - balade&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>cargo</title>
        <published>2025-08-22T00:00:00+00:00</published>
        <updated>2025-08-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/rust/cargo/"/>
        <id>https://tgm.happyngreen.fr/wiki/rust/cargo/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/rust/cargo/">&lt;p&gt;&lt;code&gt;cargo&lt;&#x2F;code&gt; comes preinstalled with rustup.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cargo new&lt;&#x2F;code&gt; → either creates a new folder with a &lt;code&gt;Cargo.toml&lt;&#x2F;code&gt;, a &lt;code&gt;src&#x2F;main.rs&lt;&#x2F;code&gt;
and initializes a git repo (by default).&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cargo init&lt;&#x2F;code&gt; in a preexisting folder.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cargo new --vcs&lt;&#x2F;code&gt; → to change the version control tool.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cargo build&lt;&#x2F;code&gt; to compile and create an executable. &lt;code&gt;--debug&lt;&#x2F;code&gt; (which is by
default) compiles faster then &lt;code&gt;--release&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cargo run&lt;&#x2F;code&gt; to compile and immediatly run the resulting executable, without
making an executable. Faster then &lt;code&gt;build&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cargo check&lt;&#x2F;code&gt; to check the code without making an executable nor running the
program. Serves to check if the program still compiles. It is faster then
&lt;code&gt;run&lt;&#x2F;code&gt; and &lt;code&gt;build&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cargo run&#x2F;build --offline&lt;&#x2F;code&gt; to use local offline dep instead of online.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cargo add&lt;&#x2F;code&gt; to add dependencies to the project (and automatically in the
&lt;code&gt;Cargo.toml&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;external-tooling&quot;&gt;External tooling&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;cargo-upgrades&quot;&gt;cargo-upgrades&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;cargo-edit&quot;&gt;cargo-edit&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;oxalica&#x2F;cargo-bloated&quot;&gt;cargo-bloat&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;the-lean-crate&#x2F;cargo-diet&quot;&gt;cargo-diet&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Both tools, when installed, can help automatically upgrade dependencies to latest compatible version.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>rustup</title>
        <published>2025-08-20T00:00:00+00:00</published>
        <updated>2025-08-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/rust/rustup/"/>
        <id>https://tgm.happyngreen.fr/wiki/rust/rustup/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/rust/rustup/">&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h2&gt;
&lt;p&gt;Installation documentation can be found on the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rustup.rs&#x2F;&quot;&gt;rustup.rs&lt;&#x2F;a&gt;
website.&lt;&#x2F;p&gt;
&lt;p&gt;Alternatively, you can also use your distros packages version or
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rust-lang.github.io&#x2F;rustup&#x2F;installation&#x2F;other.html&quot;&gt;other means&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;rustup update&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;More on &lt;code&gt;rustup&lt;&#x2F;code&gt; in my &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;rust&#x2F;rustup&#x2F;&quot;&gt;dedicated wiki page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Once &lt;code&gt;rustup&lt;&#x2F;code&gt; is installed, you can access &lt;strong&gt;The Rust Book&lt;&#x2F;strong&gt;, &lt;strong&gt;Rust by
Examples&lt;&#x2F;strong&gt; and the &lt;strong&gt;std library documentation&lt;&#x2F;strong&gt; locally and offline via the
cmd:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;rustup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; doc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;rustup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; doc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --book&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Alternatively, the book mentions a interactive version of the Rust Book, via
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rust-book.cs.brown.edu&#x2F;&quot;&gt;&lt;em&gt;Experiment: Improving the Rust Book&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mini PCs</title>
        <published>2025-08-14T10:06:08+02:00</published>
        <updated>2025-08-14T10:06:08+02:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/microblog-2025-08-14-10-06-08-02-00/"/>
        <id>https://tgm.happyngreen.fr/blog/microblog-2025-08-14-10-06-08-02-00/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/microblog-2025-08-14-10-06-08-02-00/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;minisforumpc.eu&quot;&gt;Miniforum&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bee-link.com&#x2F;&quot;&gt;Beelink&lt;&#x2F;a&gt;, via
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;world.hey.com&#x2F;dhh&#x2F;it-s-a-beelink-baby-243fdaf1&quot;&gt;D.H.Hansson&lt;&#x2F;a&gt;, who is
also behind omarchy.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;Portable-Charger-TSA-Approved-Digital-Display&#x2F;dp&#x2F;B0BYNZXFM2?th=1&quot;&gt;Anker Prime Power Bank&lt;&#x2F;a&gt;,
also via
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;world.hey.com&#x2F;dhh&#x2F;all-in-on-omarchy-at-37signals-68162450&quot;&gt;D.H.Hansson&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>License &amp; Copyright</title>
        <published>2025-08-14T00:00:00+00:00</published>
        <updated>2025-08-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/license/"/>
        <id>https://tgm.happyngreen.fr/wiki/license/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/license/">&lt;h2 id=&quot;handling-third-party-code-and-license-notices&quot;&gt;Handling Third-Party Code and License Notices&lt;&#x2F;h2&gt;
&lt;p&gt;When incorporating external code (directly or indirectly) into a multi licensed
or open source project, the following rules could apply:&lt;&#x2F;p&gt;
&lt;h3 id=&quot;file-level-license-headers&quot;&gt;File-Level License Headers&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Do &lt;strong&gt;not remove or alter&lt;&#x2F;strong&gt; existing SPDX headers or copyright notices in
third-party source files.&lt;&#x2F;li&gt;
&lt;li&gt;If you modify such a file, &lt;strong&gt;add your own attribution&lt;&#x2F;strong&gt; line beneath the
original one:&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&#x2F;&#x2F; SPDX-FileCopyrightText: © 2023 Original Author &amp;lt;author@example.com&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&#x2F;&#x2F; SPDX-FileCopyrightText: © 2025 Your Name &amp;lt;you@example.com&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&#x2F;&#x2F; SPDX-License-Identifier: \[original license]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;The original license identifier (e.g. &lt;code&gt;MIT&lt;&#x2F;code&gt;, &lt;code&gt;Apache-2.0&lt;&#x2F;code&gt;, &lt;code&gt;AGPL-3.0-only&lt;&#x2F;code&gt;)
must remain unchanged unless the upstream license explicitly permits
re-licensing.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;project-level-notices&quot;&gt;Project-Level Notices&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;In addition to per-file headers, the project must include a &lt;code&gt;LICENSE&lt;&#x2F;code&gt; and&#x2F;or
&lt;code&gt;ThirdPartyNotices.txt&lt;&#x2F;code&gt; file that:&lt;&#x2F;li&gt;
&lt;li&gt;Lists &lt;strong&gt;all third-party components&lt;&#x2F;strong&gt; bundled or redistributed.&lt;&#x2F;li&gt;
&lt;li&gt;Preserves their license texts (MIT, Apache, BSD, GPL, AGPL, etc.).&lt;&#x2F;li&gt;
&lt;li&gt;Includes copyright statements where required.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;transitive-dependencies&quot;&gt;Transitive Dependencies&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;License obligations extend to both:&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Direct dependencies&lt;&#x2F;strong&gt; you intentionally import.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Transitive dependencies&lt;&#x2F;strong&gt; bundled within them.&lt;&#x2F;li&gt;
&lt;li&gt;Use tools such as &lt;code&gt;license-checker&lt;&#x2F;code&gt; or &lt;code&gt;oss-attribution-generator&lt;&#x2F;code&gt; to generate
a complete &lt;code&gt;ThirdPartyNotices.txt&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;special-considerations&quot;&gt;Special Considerations&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Permissive licenses&lt;&#x2F;strong&gt; (MIT, BSD, Apache-2.0): generally require only
attribution and preservation of notices.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Copyleft licenses&lt;&#x2F;strong&gt; (GPL, AGPL): may obligate distribution of full source
code if your package is deployed or accessed over a network.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;SPFx (SharePoint Framework)&lt;&#x2F;strong&gt;:&lt;&#x2F;li&gt;
&lt;li&gt;Solutions must ship with a &lt;code&gt;ThirdPartyNotices.txt&lt;&#x2F;code&gt; inside the &lt;code&gt;.sppkg&lt;&#x2F;code&gt;
package.&lt;&#x2F;li&gt;
&lt;li&gt;Avoid strong-copyleft libraries (GPL&#x2F;AGPL) unless you are prepared to release
the entire SPFx solution’s source code.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Rclone</title>
        <published>2025-08-14T00:00:00+00:00</published>
        <updated>2025-08-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/rclone/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/rclone/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/rclone/">&lt;p&gt;sync&lt;&#x2F;p&gt;
&lt;p&gt;bisync&lt;&#x2F;p&gt;
&lt;h2 id=&quot;alternatives&quot;&gt;Alternatives&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Jwink3101&#x2F;syncrclone&quot;&gt;syncrclone&lt;&#x2F;a&gt; - alternative to
&lt;code&gt;rclone bisync&lt;&#x2F;code&gt;. Implementations
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Jwink3101&#x2F;syncrclone&#x2F;blob&#x2F;master&#x2F;docs&#x2F;rclone_bisync_compare.md&quot;&gt;differ&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>LLM serpent</title>
        <published>2025-08-14T00:05:15+02:00</published>
        <updated>2025-08-14T00:05:15+02:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/microblog-2025-08-14-00-05-15-02-00/"/>
        <id>https://tgm.happyngreen.fr/blog/microblog-2025-08-14-00-05-15-02-00/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/microblog-2025-08-14-00-05-15-02-00/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2508.00331&quot;&gt;Embryology of a Language Model&lt;&#x2F;a&gt;, via
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.robinsloan.com&#x2F;newsletters&#x2F;inevitable-technologies&#x2F;&quot;&gt;Robin Sloan&lt;&#x2F;a&gt;
→ Superbe generated visualisations of points in an LLM model. I love how it
looks like dry pastel, and the colors work really well together.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;assets&#x2F;img&#x2F;baby-dragons-1.webp&quot; alt=&quot;Image from a baby dragon, stolen from Robin Sloan&amp;#39;s blog&quot; &#x2F;&gt;
&lt;em&gt;Image from a baby dragon, stolen from Robin Sloan&#x27;s blog.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;huggingface.co&#x2F;docs&#x2F;hub&#x2F;ollama&quot;&gt;Use Ollama with any GGUF Model on Hugging Face Hub&lt;&#x2F;a&gt;,
via &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;llm&#x2F;&quot;&gt;my wiki entry on LLMs&lt;&#x2F;a&gt; → A welcome feature, that enables
pulling in custom quantized models.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>State Surveillance, Arch and Psych</title>
        <published>2025-08-13T11:09:22+02:00</published>
        <updated>2025-08-13T11:09:22+02:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/microblog-2025-08-13-11-09-22-02-00/"/>
        <id>https://tgm.happyngreen.fr/blog/microblog-2025-08-13-11-09-22-02-00/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/microblog-2025-08-13-11-09-22-02-00/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fightchatcontrol.eu&#x2F;&quot;&gt;Fight Chat Control&lt;&#x2F;a&gt; - Here we go again. I&#x27;m
definitly sending an email to my MP.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;omarchy.org&#x2F;&quot;&gt;Omarchy&lt;&#x2F;a&gt;, via &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;37signals.com&#x2F;&quot;&gt;37signals&lt;&#x2F;a&gt; - a
&quot;custom archlinux + hyperland setup&quot;. I&#x27;m definitly going to go look at the
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;basecamp&#x2F;omarchy&quot;&gt;repo&lt;&#x2F;a&gt; to see how they setup the whole
system.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;DARVO&quot;&gt;DARVO&lt;&#x2F;a&gt; - &quot;deny, attack, reverse victim
and offender&quot;, common manipulation tactique.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Audio</title>
        <published>2025-08-13T00:00:00+00:00</published>
        <updated>2025-08-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/fabulous-audio/"/>
        <id>https://tgm.happyngreen.fr/lists/fabulous-audio/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/fabulous-audio/">&lt;h2 id=&quot;synth-stuff&quot;&gt;Synth stuff&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.composersdesktop.com&#x2F;&quot;&gt;Composer&#x27;s Desktop Project&lt;&#x2F;a&gt; via
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=5wIOBBodoic&quot;&gt;Benn Jordan&lt;&#x2F;a&gt; - a mature and
wide-ranging suite of sound-manipulation programs. &lt;code&gt;#cli&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>LLM</title>
        <published>2025-08-13T00:00:00+00:00</published>
        <updated>2025-08-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/llm/"/>
        <id>https://tgm.happyngreen.fr/wiki/llm/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/llm/">&lt;h2 id=&quot;prompt-engineering&quot;&gt;Prompt Engineering&lt;&#x2F;h2&gt;
&lt;h2 id=&quot;context-engineering&quot;&gt;Context Engineering&lt;&#x2F;h2&gt;
&lt;h2 id=&quot;local-inference-and-model-libraries&quot;&gt;Local inference and model libraries&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ollama.com&quot;&gt;Ollama&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lmstudio.ai&#x2F;&quot;&gt;LM Studio&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.vllm.ai&#x2F;en&#x2F;stable&#x2F;&quot;&gt;vllm&lt;&#x2F;a&gt; &lt;em&gt;I have not tested this system.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;how-to-download-huggingface-models-via-ollama&quot;&gt;How to download huggingface models via Ollama&lt;&#x2F;h3&gt;
&lt;p&gt;via
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;huggingface.co&#x2F;docs&#x2F;hub&#x2F;ollama&quot;&gt;Use Ollama with any GGUF Model on Hugging Face Hub&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;ollama&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; run hf.co&#x2F;{username}&#x2F;{repository}:{quantization}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# It also works with pull&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;interface&quot;&gt;Interface&lt;&#x2F;h2&gt;
&lt;p&gt;→ Ollama and LM Studio provide and inteface&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;openwebui.com&#x2F;&quot;&gt;OpenWebUI&lt;&#x2F;a&gt; → this project is being used by a bunch of
LLM startups, notably z.ai and kimi&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;gguf-sources&quot;&gt;GGUF sources&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;huggingface.co&quot;&gt;Hugginface&lt;&#x2F;a&gt; is as of writing this the biggest models
repo.&lt;&#x2F;p&gt;
&lt;p&gt;Here are some notable LLM model publishers:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;huggingface.co&#x2F;bartowski&quot;&gt;Bartowski&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;llm&#x2F;huggingface.co&#x2F;unsloth&quot;&gt;Unsloth AI&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;huggingface.co&#x2F;mradermacher&quot;&gt;team mradermacher&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Rust</title>
        <published>2025-08-13T00:00:00+00:00</published>
        <updated>2025-08-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/rust/rust/"/>
        <id>https://tgm.happyngreen.fr/wiki/rust/rust/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/rust/rust/">&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h2&gt;
&lt;p&gt;Install using &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;rust&#x2F;rustup&#x2F;&quot;&gt;rustup&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;rustup&quot;&gt;rustup&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;rustup&lt;&#x2F;code&gt; packages all things rust, including &lt;code&gt;rustc&lt;&#x2F;code&gt;,&lt;code&gt;cargo&lt;&#x2F;code&gt;,&lt;code&gt;rust-analyzer&lt;&#x2F;code&gt;,
and the &lt;code&gt;std&lt;&#x2F;code&gt; lib.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;rustc&quot;&gt;rustc&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;rustc&lt;&#x2F;code&gt; compiles a binary. Usually we use &lt;code&gt;cargo&lt;&#x2F;code&gt; instead of &lt;code&gt;rustc&lt;&#x2F;code&gt; directly.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;cargo&quot;&gt;cargo&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;cargo&lt;&#x2F;code&gt; is the package manager and utility to build&#x2F;run&#x2F;check a rust project.&lt;&#x2F;p&gt;
&lt;p&gt;See &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;rust&#x2F;cargo&#x2F;&quot;&gt;cargo&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;rust-analyzer&quot;&gt;rust-analyzer&lt;&#x2F;h3&gt;
&lt;h2 id=&quot;syntax&quot;&gt;Syntax&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;fn main()&lt;&#x2F;code&gt; is always the first function to run in a rust program (probably true
for most programming languages).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Most lines of Rust code end with a semicolon.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Rust importst the std
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;std&#x2F;prelude&#x2F;index.html&quot;&gt;prelude&lt;&#x2F;a&gt;. Other std libraries
also have preludes, but need to be explicitly brought in to scope with &lt;code&gt;use&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;println!()&lt;&#x2F;code&gt; is a &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;rust&#x2F;rust&#x2F;#Macros&quot;&gt;macros&lt;&#x2F;a&gt; that prints a string to the screen.&lt;&#x2F;p&gt;
&lt;p&gt;Variables are immutable by default. To make a mutable variable, you need to
prefix with &lt;code&gt;mut&lt;&#x2F;code&gt; → &lt;code&gt;let mut apples = 5;&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;::&lt;&#x2F;code&gt; → associated function of a type. For example, &lt;code&gt;String::new()&lt;&#x2F;code&gt; is the
&lt;code&gt;new()&lt;&#x2F;code&gt; function of &lt;code&gt;String&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;An &lt;em&gt;associated function&lt;&#x2F;em&gt; is a function that’s implemented on a type[...].
You’ll find a &lt;code&gt;new&lt;&#x2F;code&gt; function on many types because it’s a common name for a
function that makes a new value of some kind.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;diff between types, functions and methods ? (and traits ...)&lt;&#x2F;p&gt;
&lt;p&gt;A &lt;strong&gt;handle&lt;&#x2F;strong&gt; is just an indirect reference to a resource.&lt;&#x2F;p&gt;
&lt;p&gt;Instead of directly giving you the resource (like the actual keyboard device, or
a file), the system gives you a small object or identifier that you can use to
interact with it.&lt;&#x2F;p&gt;
&lt;p&gt;You can think of it as a ticket or remote control that lets you operate
something else.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;use std::io&lt;&#x2F;code&gt; could also be directly called with &lt;code&gt;std::io::Sdin&lt;&#x2F;code&gt; or somthing.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;&amp;amp;&lt;&#x2F;code&gt; indicates that this argument is a reference, which gives you a way to
let multiple parts of your code access one piece of data without needing to
copy that data into memory multiple times.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s often wise to introduce a newline and other whitespace to help break up
long lines when you call a method with the &lt;code&gt;.method_name()&lt;&#x2F;code&gt; syntax.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;enum-methods&quot;&gt;Enum &amp;amp; methods&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;Result&lt;&#x2F;code&gt; return value is an &lt;code&gt;enum&lt;&#x2F;code&gt; type, which means it can have multiple
possible states, called &lt;strong&gt;variants&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;Result&lt;&#x2F;code&gt;&#x27;s variants are &lt;code&gt;Ok&lt;&#x2F;code&gt; and &lt;code&gt;Err&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Values of the Result type, like values of any type, have methods defined on
them.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;macros&quot;&gt;Macros&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;println()&lt;&#x2F;code&gt; is a function, &lt;code&gt;println!()&lt;&#x2F;code&gt; is a macros. Rust macros are a way to
write code that generates code to extend Rust syntax. Macros don’t always follow
the same rules as functions.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;dependencies&quot;&gt;Dependencies&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;where-to-look-for-crates-a-k-a-libraries&quot;&gt;Where to look for crates a.k.a. libraries&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.rs&#x2F;&quot;&gt;docs.rs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;&quot;&gt;crates.io&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;update-a-dependency-to-the-latest-version&quot;&gt;Update a dependency to the latest version&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# 1. Edit Cargo.toml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;dependencies&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;crate_name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;x.y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;   # set to desired&#x2F;latest version&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# 2. Update&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;cargo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; crate_name&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# 3. Verify&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;cargo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; tree&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; crate_name&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;cargo update -p crate_name&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; → updates only that dependency&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;cargo update&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; → updates all dependencies&lt;&#x2F;li&gt;
&lt;li&gt;Loosen version in &lt;code&gt;Cargo.toml&lt;&#x2F;code&gt; if updates are blocked by constraints&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;compiling&quot;&gt;Compiling&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;types-of-builds&quot;&gt;Types of builds&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;--dev&lt;&#x2F;code&gt; builds are optimized at level 0, which means it&#x27;s unoptimized, but is
also faster to compile.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;cargo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; build&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --dev&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;--release&lt;&#x2F;code&gt; flag indicates an optimization level of 3, the maximum. It takes
longer to compile.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;cargo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; build&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --release&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;cross-compiling-from-archlinux&quot;&gt;Cross Compiling from Archlinux&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;requirements&quot;&gt;Requirements&lt;&#x2F;h4&gt;
&lt;p&gt;You first need &lt;code&gt;rustup&lt;&#x2F;code&gt; to be able to add targets.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Windows&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; mingw-w64-gcc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Linux&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Since we already on linux, we don&#x27;t need much. However, &lt;strong&gt;to compile to ARM&lt;&#x2F;strong&gt;,
we need:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; aarch64-linux-gnu-gcc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;and then set it as the linker for the ARM target in &lt;code&gt;.cargo&#x2F;config.toml&lt;&#x2F;code&gt;(local):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;target&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;aarch64-unknown-linux-gnu&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;linker&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;aarch64-linux-gnu-gcc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Cargo ignores linker settings in Cargo.toml. It only reads them from
&lt;code&gt;.cargo&#x2F;config.toml&lt;&#x2F;code&gt; (project-local) or &lt;code&gt;~&#x2F;.cargo&#x2F;config.toml&lt;&#x2F;code&gt; (global).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;MacOS&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I don&#x27;t know yet...&lt;&#x2F;p&gt;
&lt;p&gt;Maybe this
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;shepherdjerred&#x2F;macos-cross-compiler&quot;&gt;MacOS Cross-Compiler - github.com&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;studios.ptilouk.net&#x2F;superfluous-returnz&#x2F;blog&#x2F;2022-03-16_macos.html
https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;beta&#x2F;rustc&#x2F;platform-support&#x2F;apple-darwin.html
https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;beta&#x2F;rustc&#x2F;platform-support.html
https:&#x2F;&#x2F;wapl.es&#x2F;rust&#x2F;2019&#x2F;02&#x2F;17&#x2F;rust-cross-compile-linux-to-macos.html&#x2F; ← seems
promissing&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;github.com&#x2F;cross-rs&#x2F;cross&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;github.com&#x2F;tpoechtrager&#x2F;osxcross&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Timeline visualisations</title>
        <published>2025-08-12T11:34:37+02:00</published>
        <updated>2025-08-12T11:34:37+02:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/microblog-2025-08-12-11-34-37-02-00/"/>
        <id>https://tgm.happyngreen.fr/blog/microblog-2025-08-12-11-34-37-02-00/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/microblog-2025-08-12-11-34-37-02-00/">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;immich.app&#x2F;cursed-knowledge&#x2F;&quot;&gt;Cursed Knowledge - immich.app&lt;&#x2F;a&gt; - a
funny list of &lt;em&gt;cursed knowledge&lt;&#x2F;em&gt; from building the immich.app. It made me
discover notably &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dop251&#x2F;goja&quot;&gt;goja&lt;&#x2F;a&gt;, a
ECMAScript&#x2F;JavaScript engine in pure Go. I&#x27;m supprised that runtime was not
mentioned in
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;buttondown.com&#x2F;whatever_jamie&#x2F;archive&#x2F;the-many-many-many-javascript-runtimes-of-the-last-decade&#x2F;&quot;&gt;The many, many, many JavaScript runtimes of the last decade&lt;&#x2F;a&gt;
article I read last month.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.historicaltechtree.com&#x2F;&quot;&gt;Historical Tech Tree&lt;&#x2F;a&gt; - a cool
visualisation of technology overtime.&lt;code&gt;#depnum&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Interesting Links #1</title>
        <published>2025-08-11T00:00:00+00:00</published>
        <updated>2025-08-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/interesting-links-1/"/>
        <id>https://tgm.happyngreen.fr/blog/interesting-links-1/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/interesting-links-1/">&lt;p&gt;A while back, I &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;uchu.style&#x2F;&quot;&gt;stumbled&lt;&#x2F;a&gt; upon this personal website:
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;webb.page&#x2F;&quot;&gt;webb.page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I found the horizontal layout quite interesting. Unfortunately, I find it also
jarring to alternate scrolling directions when making a single (in my case)
downwards motion.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>First microblog post</title>
        <published>2025-08-11T00:00:00+00:00</published>
        <updated>2025-08-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/microblog-2025-08-11/"/>
        <id>https://tgm.happyngreen.fr/blog/microblog-2025-08-11/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/microblog-2025-08-11/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wplace.live&#x2F;&quot;&gt;Wplace - Paint the world&lt;&#x2F;a&gt; a new project that is similar
to reddit &#x2F;r&#x2F;places.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sky.dlazaro.ca&#x2F;&quot;&gt;Horizon at ...&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>HTML</title>
        <published>2025-08-11T00:00:00+00:00</published>
        <updated>2025-08-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/webdev/html/"/>
        <id>https://tgm.happyngreen.fr/wiki/webdev/html/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/webdev/html/">&lt;h2 id=&quot;syntax&quot;&gt;Syntax&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;developer.mozilla.org&#x2F;en-US&#x2F;docs&#x2F;Web&#x2F;HTML&#x2F;Reference&#x2F;Elements&#x2F;output&quot;&gt;output&lt;&#x2F;a&gt; tag, via &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;denodell.com&#x2F;blog&#x2F;html-best-kept-secret-output-tag&quot;&gt;Den Odell&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;developer.mozilla.org&#x2F;en-US&#x2F;docs&#x2F;Web&#x2F;HTML&#x2F;Reference&#x2F;Elements&#x2F;hgroup&quot;&gt;hgroup&lt;&#x2F;a&gt; tag&lt;&#x2F;li&gt;
&lt;li&gt;the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;developer.mozilla.org&#x2F;en-US&#x2F;docs&#x2F;Web&#x2F;HTML&#x2F;Reference&#x2F;Elements&#x2F;meter&quot;&gt;meter&lt;&#x2F;a&gt; tag, via &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;shkspr.mobi&#x2F;blog&#x2F;2025&#x2F;10&#x2F;quick-and-dirty-bar-charts-using-htmls-meter-element&#x2F;&quot;&gt;Terence Eden&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;howto-s-tricks&quot;&gt;Howto&#x27;s &amp;amp; Tricks&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Open link in new tab&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #BA3C97;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BA3C97;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9AA5CE;&quot;&gt;  Check out &lt;&#x2F;span&gt;&lt;span style=&quot;color: #BA3C97;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;a&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #BB9AF7;&quot;&gt;    href&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;https:&#x2F;&#x2F;example.com&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #BB9AF7;&quot;&gt;    target&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;_blank&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #BB9AF7;&quot;&gt;    rel&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;noopener noreferrer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #BA3C97;&quot;&gt;  &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9AA5CE;&quot;&gt;SomeLink&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BA3C97;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BA3C97;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9AA5CE;&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #BA3C97;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #BA3C97;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;target=&quot;_blank&quot;&lt;&#x2F;code&gt; to open in new tab, &lt;code&gt;rel=&quot;noopener noreferrer&quot;&lt;&#x2F;code&gt; to avoid
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Tabnabbing&quot;&gt;tabnabbing&lt;&#x2F;a&gt;, a type of phishing
attack via malecious login page doppelganger.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.freecodecamp.org&#x2F;news&#x2F;how-to-use-html-to-open-link-in-new-tab&#x2F;&quot;&gt;Source&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Auto-Reload&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;htmhell.dev&#x2F;adventcalendar&#x2F;2024&#x2F;11&#x2F;&quot;&gt;Makeshift hot reload - HTMHell&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Events Bruxelles</title>
        <published>2025-07-07T00:00:00+00:00</published>
        <updated>2025-07-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/events-bx/"/>
        <id>https://tgm.happyngreen.fr/lists/events-bx/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/events-bx/">&lt;p&gt;Where to find out about events in Bruxelles, excluding facebook.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Surveillance Capitalism</title>
        <published>2025-06-19T00:00:00+00:00</published>
        <updated>2025-06-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/surveillance-capitalism/"/>
        <id>https://tgm.happyngreen.fr/lists/surveillance-capitalism/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/surveillance-capitalism/"></content>
        
    </entry>
    <entry xml:lang="en">
        <title>javascript</title>
        <published>2025-06-17T00:00:00+00:00</published>
        <updated>2025-06-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/webdev/js/"/>
        <id>https://tgm.happyngreen.fr/wiki/webdev/js/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/webdev/js/">&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;resolving-eacces-permissions-errors-when-installing-packages-globally-npm-docs&quot;&gt;Resolving EACCES permissions errors when installing packages globally | npm Docs&lt;&#x2F;h1&gt;
&lt;p&gt;If you see an &lt;code&gt;EACCES&lt;&#x2F;code&gt; error when you try to
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.npmjs.com&#x2F;downloading-and-installing-packages-globally&quot;&gt;install a package globally&lt;&#x2F;a&gt;,
you can either:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Reinstall npm with a node version manager (recommended),&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;or&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Manually change npm&#x27;s default directory&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;reinstall-npm-with-a-node-version-manager&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.npmjs.com&#x2F;resolving-eacces-permissions-errors-when-installing-packages-globally#reinstall-npm-with-a-node-version-manager&quot;&gt;Reinstall npm with a node version manager&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;This is the best way to avoid permissions issues. To reinstall npm with a node
version manager, follow the steps in
&quot;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.npmjs.com&#x2F;downloading-and-installing-node-js-and-npm&quot;&gt;Downloading and installing Node.js and npm&lt;&#x2F;a&gt;&quot;.
You do not need to remove your current version of npm or Node.js before
installing a node version manager.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;manually-change-npm-s-default-directory&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.npmjs.com&#x2F;resolving-eacces-permissions-errors-when-installing-packages-globally#manually-change-npms-default-directory&quot;&gt;Manually change npm&#x27;s default directory&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;&#x2F;strong&gt; This section does not apply to Microsoft Windows.&lt;&#x2F;p&gt;
&lt;p&gt;To minimize the chance of permissions errors, you can configure npm to use a
different directory. In this example, you will create and use hidden directory
in your home directory.&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Back up your computer.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;On the command line, in your home directory, create a directory for global
installations:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;mkdir -p ~&#x2F;.npm-global&#x2F;lib&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Configure npm to use the new directory path:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;npm config set prefix &#x27;~&#x2F;.npm-global&#x27;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;In your preferred text editor, open or create a &lt;code&gt;~&#x2F;.profile&lt;&#x2F;code&gt; file and add
this line:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;export PATH=~&#x2F;.npm-global&#x2F;bin:$PATH&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;On the command line, update your system variables:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;source ~&#x2F;.profile&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;To test your new configuration, install a package globally without using
&lt;code&gt;sudo&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;npm install -g jshint&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Instead of steps 3-5, you can use the corresponding ENV variable (e.g. if you
don&#x27;t want to modify &lt;code&gt;~&#x2F;.profile&lt;&#x2F;code&gt;):&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;NPM_CONFIG_PREFIX=~&#x2F;.npm-global&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;npx: an alternative to running global commands&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;If you are using npm version 5.2 or greater, you may want to consider
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.npmjs.com&#x2F;cli&#x2F;commands&#x2F;npx&quot;&gt;npx&lt;&#x2F;a&gt; as an alternative way to run
global commands, especially if you only need a command occasionally. For more
information, see
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;medium.com&#x2F;@maybekatz&#x2F;introducing-npx-an-npm-package-runner-55f7d4bd282b&quot;&gt;this article about npx&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;references&quot;&gt;References&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;(&lt;em&gt;n.d.&lt;&#x2F;em&gt;). &lt;em&gt;Resolving EACCES permissions errors when installing packages
globally | npm Docs&lt;&#x2F;em&gt;. Resolving EACCES permissions errors when installing
packages globally | npm Docs, Retrieved June 17, 2025 at 13:19:20 from
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.npmjs.com&#x2F;resolving-eacces-permissions-errors-when-installing-packages-globally#manually-change-npms-default-directory&quot;&gt;https:&#x2F;&#x2F;docs.npmjs.com&#x2F;resolving-eacces-permissions-errors-when-installing-packages-globally#manually-change-npms-default-directory&lt;&#x2F;a&gt; -
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;https:&#x2F;&#x2F;docs.npmjs.com&#x2F;resolving-eacces-permissions-errors-when-installing-packages-globally#manually-change-npms-default-directory&quot;&gt;🏛 archive&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Setting Up Local HTTPS Services with Custom Domains Using Caddy on Arch Linux</title>
        <published>2025-06-05T00:00:00+00:00</published>
        <updated>2025-06-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/local-https-services/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/local-https-services/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/local-https-services/">&lt;p&gt;This guide explains how to serve multiple local services on custom domains (e.g.
&lt;code&gt;.local&lt;&#x2F;code&gt; → &lt;code&gt;service1.local&lt;&#x2F;code&gt;) with &lt;strong&gt;HTTPS&lt;&#x2F;strong&gt;, using &lt;strong&gt;Caddy&lt;&#x2F;strong&gt; and no external DNS
or certificates.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;bricks-prerequisites&quot;&gt;🧱 Prerequisites&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Arch Linux (or derivative)&lt;&#x2F;li&gt;
&lt;li&gt;Services running locally on different ports (e.g., 8080, 9090)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;caddy&lt;&#x2F;code&gt; installed:&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; caddy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;wrench-step-1-map-local-hostnames&quot;&gt;🔧 Step 1: Map Local Hostnames&lt;&#x2F;h3&gt;
&lt;p&gt;Edit &lt;code&gt;&#x2F;etc&#x2F;hosts&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; nano &#x2F;etc&#x2F;hosts&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Add:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;127.0.0.1  service1.local service2.local service3.local&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;file-folder-step-2-configure-caddyfile&quot;&gt;📁 Step 2: Configure Caddyfile&lt;&#x2F;h3&gt;
&lt;p&gt;Edit or create your Caddyfile (default path: &lt;code&gt;&#x2F;etc&#x2F;caddy&#x2F;Caddyfile&lt;&#x2F;code&gt;):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;service&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;.local &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    tls internal&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    reverse_proxy 127.0.0.1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;8080&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;service&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;.local &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    tls internal&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    reverse_proxy 127.0.0.1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;9090&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This tells Caddy to:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Use internal TLS (self-signed CA)&lt;&#x2F;li&gt;
&lt;li&gt;Reverse-proxy requests based on hostname and forward to corresponding ports&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;rocket-step-3-start-caddy&quot;&gt;🚀 Step 3: Start Caddy&lt;&#x2F;h3&gt;
&lt;p&gt;Restart the service to apply changes:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; systemctl restart caddy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;closed-lock-with-key-step-4-trust-caddy-s-local-ca-one-time-setup&quot;&gt;🔐 Step 4: Trust Caddy’s Local CA (One-Time Setup)&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;1-copy-the-root-certificate&quot;&gt;1. Copy the root certificate:&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; cp &#x2F;var&#x2F;lib&#x2F;caddy&#x2F;pki&#x2F;authorities&#x2F;local&#x2F;root.crt &#x2F;etc&#x2F;ca-certificates&#x2F;trust-source&#x2F;anchors&#x2F;caddy-local.crt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;2-update-the-system-trust-store&quot;&gt;2. Update the system trust store:&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; trust extract-compat&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;3-optional-trust-in-firefox&quot;&gt;3. (Optional) Trust in Firefox:&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;Preferences → Privacy &amp;amp; Security → Certificates → View Certificates →
Authorities → Import&lt;&#x2F;li&gt;
&lt;li&gt;Choose &lt;code&gt;&#x2F;var&#x2F;lib&#x2F;caddy&#x2F;pki&#x2F;authorities&#x2F;local&#x2F;root.crt&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Check &lt;strong&gt;“Trust this CA to identify websites”&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;white-check-mark-done&quot;&gt;✅ Done!&lt;&#x2F;h3&gt;
&lt;p&gt;Now you can access:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https:&#x2F;&#x2F;service1.local&lt;&#x2F;code&gt; → &lt;code&gt;127.0.0.1:8080&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;https:&#x2F;&#x2F;service2.local&lt;&#x2F;code&gt; → &lt;code&gt;127.0.0.1:9090&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;All with &lt;strong&gt;trusted HTTPS&lt;&#x2F;strong&gt;, locally.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Accessing Host Services from Inside Podman Compose Containers</title>
        <published>2025-06-04T00:00:00+00:00</published>
        <updated>2025-06-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/container-host-access/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/container-host-access/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/container-host-access/">&lt;h1 id=&quot;accessing-host-services-from-inside-podman-compose-containers&quot;&gt;Accessing Host Services from Inside Podman Compose Containers&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h2&gt;
&lt;p&gt;When running containers with &lt;strong&gt;Podman Compose&lt;&#x2F;strong&gt;, software inside the container may need to access services running on the &lt;strong&gt;host machine&lt;&#x2F;strong&gt; (e.g., a database, API, or development server). However, &lt;code&gt;localhost&lt;&#x2F;code&gt; inside a container refers to the container itself—not the host.&lt;&#x2F;p&gt;
&lt;p&gt;This guide explains how to correctly route traffic from a container to the host.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;ℹ️ &lt;strong&gt;Note&lt;&#x2F;strong&gt;: This method also works with &lt;strong&gt;Docker Compose&lt;&#x2F;strong&gt;, as long as the container runtime supports &lt;code&gt;host.docker.internal&lt;&#x2F;code&gt; or equivalent DNS resolution.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;white-check-mark-recommended-method-host-containers-internal&quot;&gt;✅ Recommended Method: &lt;code&gt;host.containers.internal&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Podman provides a special internal DNS name to reference the host from inside a container:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;host.containers.internal&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This works with &lt;strong&gt;Podman 3.4+&lt;&#x2F;strong&gt; and is the most reliable and secure method.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;example&quot;&gt;Example&lt;&#x2F;h3&gt;
&lt;p&gt;If your host is running a service on &lt;code&gt;localhost:8000&lt;&#x2F;code&gt;, you can access it inside the container as:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;host.containers.internal:8000&quot;&gt;http:&#x2F;&#x2F;host.containers.internal:8000&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;No additional configuration is required.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;wrench-using-podman-compose&quot;&gt;🔧 Using Podman Compose&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-run-your-host-service&quot;&gt;1. Run Your Host Service&lt;&#x2F;h3&gt;
&lt;p&gt;Ensure the service you want to access is running on the host (e.g., &lt;code&gt;localhost:1234&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;2-configure-your-container&quot;&gt;2. Configure Your Container&lt;&#x2F;h3&gt;
&lt;p&gt;Update your application or environment variables to reference the special host address. Example &lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt; (compatible with Podman Compose):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;services&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;  app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; your-image&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;    environment&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;      -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; API_URL=http:&#x2F;&#x2F;host.containers.internal:1234&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;3-start-podman-compose&quot;&gt;3. Start Podman Compose&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;podman-compose&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; up&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Your containerized application will now connect to the host service via the internal alias.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;tools-troubleshooting&quot;&gt;🛠 Troubleshooting&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If &lt;code&gt;host.containers.internal&lt;&#x2F;code&gt; doesn&#x27;t resolve:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Ensure you&#x27;re using Podman 3.4+.&lt;&#x2F;li&gt;
&lt;li&gt;Test DNS inside the container: &lt;code&gt;ping host.containers.internal&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Manually add a host entry via volume mount if needed.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;warning-alternative-host-network-mode-linux-only&quot;&gt;⚠️ Alternative: Host Network Mode (Linux Only)&lt;&#x2F;h2&gt;
&lt;p&gt;Use &lt;code&gt;network_mode: host&lt;&#x2F;code&gt; to fully expose the host network to the container:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;services&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;  app&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; your-image&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;    network_mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; host&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;blockquote&gt;
&lt;p&gt;❗ &lt;strong&gt;Warning&lt;&#x2F;strong&gt;: This disables network isolation and may cause port conflicts. Only use when necessary.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;white-check-mark-summary&quot;&gt;✅ Summary&lt;&#x2F;h2&gt;
&lt;p&gt;To allow a container to access services on the host:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;host.containers.internal:&amp;lt;port&amp;gt;&lt;&#x2F;code&gt; inside the container.&lt;&#x2F;li&gt;
&lt;li&gt;Works with &lt;strong&gt;Podman Compose&lt;&#x2F;strong&gt; and &lt;strong&gt;Docker Compose&lt;&#x2F;strong&gt; (on compatible systems).&lt;&#x2F;li&gt;
&lt;li&gt;Avoid &lt;code&gt;network_mode: host&lt;&#x2F;code&gt; unless isolation is not required.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Scribus</title>
        <published>2025-05-18T00:00:00+00:00</published>
        <updated>2025-05-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/scribus/"/>
        <id>https://tgm.happyngreen.fr/wiki/scribus/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/scribus/">&lt;h2 id=&quot;import-an-svg&quot;&gt;Import an SVG&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;File &amp;gt; Import &amp;gt; Import an SVG&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>*Fabulous LLM</title>
        <published>2025-05-16T00:00:00+00:00</published>
        <updated>2025-08-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/fabulous-llm/"/>
        <id>https://tgm.happyngreen.fr/lists/fabulous-llm/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/fabulous-llm/">&lt;p&gt;Here I list all sorts of tools that use LLMs (&lt;em&gt;Large Language Models&lt;&#x2F;em&gt;). I feel
ambivalent about hosting a ressource list that use those insidious tools. When I
get around to it, I will link a blog post that talks about the problems inherent
to LLMs and other «AI» tools.&lt;&#x2F;p&gt;
&lt;p&gt;In the mean time, here is a non-exhaustive list of articles on the subject of
LLM assisted creation (mostly coding).&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simonwillison.net&#x2F;2025&#x2F;Mar&#x2F;11&#x2F;using-llms-for-code&#x2F;&quot;&gt;Here’s how I use LLMs to help me write code&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simonwillison.net&#x2F;2025&#x2F;Apr&#x2F;29&#x2F;chatgpt-is-not-bad-for-the-environment&#x2F;#atom-everything&quot;&gt;A cheat sheet for why using ChatGPT is not bad for the environment&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simonwillison.net&#x2F;2025&#x2F;Apr&#x2F;23&#x2F;cheating&#x2F;#atom-everything&quot;&gt;A trick to feel less like cheating when you use LLMs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;harper.blog&#x2F;2025&#x2F;02&#x2F;16&#x2F;my-llm-codegen-workflow-atm&#x2F;&quot;&gt;My LLM codegen workflow atm | Harper Reed&#x27;s Blog&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;crawshaw.io&#x2F;blog&#x2F;programming-with-llms&quot;&gt;programming with llms- crawshaw - 2025-01-06&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nullprogram.com&#x2F;blog&#x2F;2024&#x2F;11&#x2F;10&#x2F;&quot;&gt;Everything I&#x27;ve learned so far about running local LLMs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;martinfowler.com&#x2F;articles&#x2F;2023-chatgpt-xu-hao.html&quot;&gt;An example of LLM prompting for programming&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.arguingwithalgorithms.com&#x2F;posts&#x2F;cursor-review.html&quot;&gt;How I write code using Cursor: A review&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;VERY IMPORTANT →
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simonwillison.net&#x2F;2025&#x2F;Mar&#x2F;2&#x2F;hallucinations-in-code&#x2F;&quot;&gt;Hallucinations in code are the least dangerous form of LLM mistakes&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;providers&quot;&gt;Providers&lt;&#x2F;h2&gt;
&lt;p&gt;To check prices for different models and providers, you can refer to this
incredible &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.llm-prices.com&#x2F;&quot;&gt;LLM Pricinc Calculator&lt;&#x2F;a&gt;. It has the
pricing for &lt;strong&gt;Input&lt;&#x2F;strong&gt; and &lt;strong&gt;Output&lt;&#x2F;strong&gt; costs for different models, as well as a
calculator that takes as parameters the number of &lt;strong&gt;input&lt;&#x2F;strong&gt; and &lt;strong&gt;output&lt;&#x2F;strong&gt;
tokens. This tool is made and maintained by the amazing
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simonwillison.net&#x2F;&quot;&gt;Simon Willison&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;cloud&quot;&gt;Cloud&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;openrouter.ai&quot;&gt;Openrouter.ai&lt;&#x2F;a&gt; is a platform that enables you to have a
single api key to be used with multiple models, including private ones.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;chats&quot;&gt;Chats&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;Most, if not all services listed in the Chat section, will use your data for
training purposes. They are not suitable for privacy sensitive queries.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;claude.ai&#x2F;&quot;&gt;Claude&lt;&#x2F;a&gt;, by Anthropic - $&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chatgpt.com&#x2F;&quot;&gt;Chatgpt&lt;&#x2F;a&gt; by OpenAI - $&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gemini.google.com&#x2F;&quot;&gt;Gemini&lt;&#x2F;a&gt;, by Google - $&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;aistudio.google.com&#x2F;prompts&#x2F;new_chat&quot;&gt;AI Studio&lt;&#x2F;a&gt;, also by Google.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chat.mistral.ai&#x2F;chat&quot;&gt;Le Chat&lt;&#x2F;a&gt;, by Mistral ($)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chat.deepseek.com&#x2F;&quot;&gt;Deepseek&lt;&#x2F;a&gt;, by Deepseek $&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chat.qwen.ai&#x2F;&quot;&gt;Qwen&lt;&#x2F;a&gt;, by QwenAI $&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chat.z.ai&#x2F;&quot;&gt;GLM&lt;&#x2F;a&gt;, by z.ai&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;grok.com&#x2F;&quot;&gt;Grok&lt;&#x2F;a&gt;, by x.ai → use is ethical very questionable, since
it is built by a E. Musk company. Know for being extreme right oriented, and
will actively provide erroneous opinions as facts.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.phind.com&#x2F;&quot;&gt;Phind&lt;&#x2F;a&gt;, by Phind. &lt;em&gt;Creates a lot of diagrams&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.perplexity.ai&#x2F;&quot;&gt;Perplexity&lt;&#x2F;a&gt;, by PerplexityAI ($)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.kimi.com&#x2F;&quot;&gt;Kimi&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;poe.com&#x2F;&quot;&gt;Poe&lt;&#x2F;a&gt;, access to multiple models. #freetier&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Meta ($)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Amazon $&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lmarena.ai&#x2F;&quot;&gt;LMArena&lt;&#x2F;a&gt;, free random models&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;local&quot;&gt;Local&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ggml-org&#x2F;llama.cpp&quot;&gt;Llama.ccp&lt;&#x2F;a&gt;, inference engine in C&#x2F;C++,
very efficient and is the basis for most other serving tools.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ollama.com&quot;&gt;Ollama&lt;&#x2F;a&gt;, go based hosting tool, with a good DL directory
of models. It serves an OpenAI compatible API endpoint.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Mozilla-Ocho&#x2F;llamafile?tab=readme-ov-file&quot;&gt;Llamafile&lt;&#x2F;a&gt;
cross-platform model in a file, that runs both with CLI interface, web
interface, and can also serve as an OpenAI compatible API endpoint.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lmstudio.ai&#x2F;&quot;&gt;LM Studio&lt;&#x2F;a&gt;, electron based local interface, model
curated, local server capable app. Not entirely open source though.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;cli&quot;&gt;CLI&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;llm.datasette.io&#x2F;en&#x2F;stable&#x2F;index.html&quot;&gt;llm&lt;&#x2F;a&gt;, a python CLI tool with a
really cool range of features and uses, also by
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simonwillison.net&#x2F;&quot;&gt;Simon Willison&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;aider.chat&quot;&gt;Aider.chat&lt;&#x2F;a&gt;, a python cli llm «agent» that sort of
automates programming. You can connect all sorts of providers to it, including
your own locally served models (via Ollama,Llama.ccp, VLLM, LM Studio).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.anthropic.com&#x2F;en&#x2F;docs&#x2F;claude-code&#x2F;overview&quot;&gt;Anthropic Code&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;openai&#x2F;codex&quot;&gt;OpenAi Codex&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;editors&quot;&gt;Editors&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cursor.com&#x2F;&quot;&gt;Cursor&lt;&#x2F;a&gt;, electron VSCode-based LLM-enabled editor,
not FOSS.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;voideditor.com&#x2F;&quot;&gt;Void&lt;&#x2F;a&gt;, Cursor clone, FOSS.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zed.dev&#x2F;&quot;&gt;zed.dev&lt;&#x2F;a&gt;, rust IDE with AI agent, auto-complete. &lt;em&gt;I really
like this IDE, since it is not electron based, but developed in rust
directly.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;training&quot;&gt;Training&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;p-e-w&#x2F;heretic&quot;&gt;p-e-wheretic Fully automatic censorship removal for language models&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Stupid Violent Media</title>
        <published>2025-05-14T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/stupide-violent-media/"/>
        <id>https://tgm.happyngreen.fr/lists/stupide-violent-media/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/stupide-violent-media/">&lt;p&gt;Films that celebrate violence, especially really stupid nonsensical violence.
Which means most violence, maybe?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;real-nonsense&quot;&gt;Real Nonsense&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Nobody&lt;&#x2F;li&gt;
&lt;li&gt;John Wick&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;political-nonsense&quot;&gt;Political Nonsense&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Warfare&lt;&#x2F;li&gt;
&lt;li&gt;Civil War&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Ereader</title>
        <published>2025-05-14T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/ereader/"/>
        <id>https://tgm.happyngreen.fr/wiki/ereader/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/ereader/">&lt;h2 id=&quot;kobo-clara-hd&quot;&gt;Kobo Clara HD&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;setup&quot;&gt;Setup&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;Connect the device to a computer with the help of a microUSB cable.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;127.0.0.1:8000&#x2F;alt-wiki&#x2F;gear&#x2F;koboClaraHD&#x2F;#bypassing-registration&quot;&gt;Bypass Registration&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Open the device, to access the microsd card that serves as storage.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;bypassing-registration&quot;&gt;Bypassing Registration&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Connect the Clara HD to a computer as directed, but instead of downloading the
Kobo app, instead open the Clara HD internal storage on the computer, which
should have become available as a USB device.&lt;&#x2F;p&gt;
&lt;p&gt;Navigate to the (possibly hidden by default) &lt;code&gt;.kobo&lt;&#x2F;code&gt; directory, where there
should be a &lt;code&gt;KoboReader.sqlite&lt;&#x2F;code&gt; file. This is an SQLite database, and we will
need to install the SQLite tools to access it (e.g. &lt;code&gt;sudo pacman -S sqlite&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;Once SQLite is installed, open a command prompt in this directory and run:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sqlite3 KoboReader.sqlite&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;From the SQLite prompt, run:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;span class=&amp;quot;k&amp;quot;&amp;gt;INSERT&amp;lt;&#x2F;span&amp;gt; &amp;lt;span class=&amp;quot;k&amp;quot;&amp;gt;INTO&amp;lt;&#x2F;span&amp;gt; &amp;lt;span class=&amp;quot;k&amp;quot;&amp;gt;user&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;p&amp;quot;&amp;gt;(&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;n&amp;quot;&amp;gt;UserID&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;p&amp;quot;&amp;gt;,&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;n&amp;quot;&amp;gt;UserKey&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;p&amp;quot;&amp;gt;)&amp;lt;&#x2F;span&amp;gt; &amp;lt;span class=&amp;quot;k&amp;quot;&amp;gt;VALUES&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;p&amp;quot;&amp;gt;(&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;s1&amp;quot;&amp;gt;&amp;#39;1&amp;#39;&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;p&amp;quot;&amp;gt;,&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;s1&amp;quot;&amp;gt;&amp;#39;&amp;#39;&amp;lt;&#x2F;span&amp;gt;&amp;lt;span class=&amp;quot;p&amp;quot;&amp;gt;);&amp;lt;&#x2F;span&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;And then exit SQLite. Then eject the Clara HD internal storage from the
computer, and disconnect it. The Clara HD should continue as if it were
successfully registered!&lt;&#x2F;p&gt;
&lt;p&gt;Using this method enables all functionality of the Clara HD, including the beta
web browser, and firmware updates. To check for updates, connect to WiFi, then
tap the sync icon in the top right corner of the screen and tap ‘Sync now’. The
sync will fail, but the device should still check for firmware updates, and if
one is found, direct you to install it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;backup-and-restore&quot;&gt;Backup and restore&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;remove-the-microsd&quot;&gt;Remove the microSD&lt;&#x2F;h4&gt;
&lt;p&gt;Remove the back cover of the e-reader and follow the safety measures if you
haven&#x27;t yet. Then carefully remove the microSD card and connect it to your
computer.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;backup&quot;&gt;Backup&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;h4&gt;
&lt;p&gt;Now backup all the partitions at once using &lt;code&gt;dd&lt;&#x2F;code&gt; and &lt;code&gt;xz&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; dd if=&#x2F;dev&#x2F;sde bs=4M conv=sync,noerror status=progress&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; xz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; kobo_sdcard_&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;+%Y-%m-%d_%H-%M-%S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;)&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;.img.xz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;flags&quot;&gt;Flags&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;status=progress&lt;&#x2F;code&gt; enables progress information&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;you can find the block size (&lt;code&gt;bs&lt;&#x2F;code&gt;) of the device by running
&lt;code&gt;stat -fc %s &#x2F;dev&#x2F;&amp;lt;microsd&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: &lt;code&gt;conv=sync,noerror&lt;&#x2F;code&gt; tells &lt;code&gt;dd&lt;&#x2F;code&gt; that if it can&#x27;t read a block due to a
read error, then it should at least write something to its output of the
correct length&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-2&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;restore&quot;&gt;Restore&lt;&#x2F;h3&gt;
&lt;p&gt;To restore the backup, simply uncompress the image and write it to the microSD.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;xz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -dc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; kobo-backup.img.xz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; dd of=&#x2F;dev&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;micros&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; bs=4M status=progress&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;software&quot;&gt;Software&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;koreader&quot;&gt;KOReader&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;koreader.rocks&#x2F;&quot;&gt;Main Project Portal&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;koreader&#x2F;koreader&quot;&gt;Github Repo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;koreader&#x2F;koreader&#x2F;wiki&#x2F;Installation-on-Kobo-devices&quot;&gt;Github Wiki Page&lt;&#x2F;a&gt; for Kobo devices &lt;em&gt;which leads to the link below.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.mobileread.com&#x2F;forums&#x2F;showthread.php?t=314220&quot;&gt;Kobo Installation Instruction Posts&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The last link is the most important and relevant one.&lt;&#x2F;p&gt;
&lt;p&gt;Basically, installing KOReader on a Kobo device, after a couple of steps detailed in the instruction post, is as follows:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Download the relevant .zip file → &lt;em&gt;I use the package containing KoReader and Plato with KFmon&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Extract its content to the root of your device. This step is important, since there are hidden files (&lt;code&gt;.add&lt;&#x2F;code&gt;, &lt;code&gt;.koreader&lt;&#x2F;code&gt;, etc) that need to be added. You might miss them if you simply extract the zip file and copy it&#x27;s content by hand at the root of your ereader.&lt;&#x2F;li&gt;
&lt;li&gt;Reboot the device,&lt;&#x2F;li&gt;
&lt;li&gt;Open the new Kfmon button on the bottom right,&lt;&#x2F;li&gt;
&lt;li&gt;Wait for the Downloading page to disappear.&lt;&#x2F;li&gt;
&lt;li&gt;Open KoReader by opening the dialoge with the KFmon button, and selecting KOReader.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;inkbox&quot;&gt;Inkbox&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;Website:&lt;&#x2F;em&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;inkbox.ddns.net&quot;&gt;https:&#x2F;&#x2F;inkbox.ddns.net&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Repo:&lt;&#x2F;em&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;inkbox.ddns.net&#x2F;git&#x2F;explore&quot;&gt;Inkbox Gitlab&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Here is the
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.mobileread.com&#x2F;forums&#x2F;showthread.php?p=4387514#post4387514&quot;&gt;MobileRead annoucement&lt;&#x2F;a&gt;
of Inkbox. It also features the Kobo Clara HD link.&lt;&#x2F;p&gt;
&lt;p&gt;As of 2024-04-12 &lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-3&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, the provided InkBox OS image for the &lt;strong&gt;Clara HD (N249)&lt;&#x2F;strong&gt;
could only work with the following board revisions:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;37NB-E60K00+4A4&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;37NB-E60K00+4A4+.C.&lt;&#x2F;code&gt; (may not fully work, but should boot)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This image will not work for the following board revision and could permanently
damage your device if you try to boot it:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;37NB-E60K00+4A4+.B.&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For more details, please look here:
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;postmarketOS&#x2F;pmaports&#x2F;-&#x2F;issues&#x2F;2356&quot;&gt;Kobo Clara not booting with mainline kernel - postmarketOS gitlab&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;miscaleanous&quot;&gt;Miscaleanous&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;custom-fonts&quot;&gt;Custom Fonts&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-4-1&quot;&gt;&lt;a href=&quot;#fn-4&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Bookerly() → AUR&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vollkorn-typeface.com&#x2F;&quot;&gt;Volkorn (serif)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;impallari&#x2F;Libre-Baskerville&quot;&gt;LibreBaskerville (serif)&lt;&#x2F;a&gt; →
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fonts.google.com&#x2F;specimen&#x2F;Libre+Baskerville&quot;&gt;GoogleFonts&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;LInux LIbertine&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;https:&#x2F;&#x2F;dmpop.github.io&#x2F;koreader-compendium&#x2F;01-custom-fonts&#x2F;&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20230610222521if_&#x2F;https:&#x2F;&#x2F;thepenguin.eu&#x2F;2020-01-02-some-nice-fonts-for-your-ebook-reader&#x2F;&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;yingtongli.me&#x2F;blog&#x2F;2018&#x2F;07&#x2F;29&#x2F;kobo-sd.html&quot;&gt;https:&#x2F;&#x2F;yingtongli.me&#x2F;blog&#x2F;2018&#x2F;07&#x2F;29&#x2F;kobo-sd.html&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-2&quot;&gt;↩2&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-3&quot;&gt;↩3&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.inference.org.uk&#x2F;saw27&#x2F;notes&#x2F;backup-hard-disk-partitions.html&quot;&gt;https:&#x2F;&#x2F;www.inference.org.uk&#x2F;saw27&#x2F;notes&#x2F;backup-hard-disk-partitions.html&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-2&quot;&gt;↩2&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-3&quot;&gt;↩3&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;aartoni&#x2F;n249&#x2F;blob&#x2F;main&#x2F;backup.md&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;aartoni&#x2F;n249&#x2F;blob&#x2F;main&#x2F;backup.md&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20230610222521if_&#x2F;https:&#x2F;&#x2F;thepenguin.eu&#x2F;2020-01-02-some-nice-fonts-for-your-ebook-reader&#x2F;&quot;&gt;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20230610222521if_&#x2F;https:&#x2F;&#x2F;thepenguin.eu&#x2F;2020-01-02-some-nice-fonts-for-your-ebook-reader&#x2F;&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-4-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Browser Extensions</title>
        <published>2025-05-14T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/extensions/"/>
        <id>https://tgm.happyngreen.fr/wiki/extensions/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/extensions/">&lt;h2 id=&quot;development&quot;&gt;Development&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;signing-an-extension&quot;&gt;Signing an Extension&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;support.mozilla.org&#x2F;en-US&#x2F;kb&#x2F;add-on-signing-in-firefox&quot;&gt;Add-on signing in Firefox | Firefox Help&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;extensionworkshop.com&#x2F;documentation&#x2F;publish&#x2F;signing-and-distribution-overview&#x2F;#distributing-your-addon&quot;&gt;Signing and distribution overview | Firefox Extension Workshop&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;extensions-i-use&quot;&gt;Extensions I use:&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;markdownload&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;deathau&#x2F;markdownload&quot;&gt;MarkDownload&lt;&#x2F;a&gt;**&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;Back-matter template&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I use it to get a decent reference to copy in my documentation or other markdown
documents for which I need a citation.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;### References&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-  {byline} (*n.d.*). *{title}*. {pageTitle}, Retrieved {date:MMMM D, YYYY [at] HH:mm:ss} from [{baseURI}]({baseURI}) - [🏛 archive](https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;{baseURI})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Example&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;### References&lt;&#x2F;p&gt;
&lt;p&gt;- n.a. (&lt;em&gt;n.d.&lt;&#x2F;em&gt;). &lt;em&gt;How to Cite Sources | Citation Generator &amp;amp; Quick Guide&lt;&#x2F;em&gt;. How
to Cite Sources | Citation Generator &amp;amp; Quick Guide, Retrieved April 20, 2024
at 21:22:22 from
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.scribbr.com&#x2F;category&#x2F;citing-sources&#x2F;https:&#x2F;&#x2F;www.scribbr.com&#x2F;category&#x2F;citing-sources&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.scribbr.com&#x2F;category&#x2F;citing-sources&#x2F;&lt;&#x2F;a&gt; -
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;https:&#x2F;&#x2F;www.scribbr.com&#x2F;category&#x2F;citing-sources&#x2F;&quot;&gt;🏛 archive&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Laptops</title>
        <published>2025-05-14T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/laptop/"/>
        <id>https://tgm.happyngreen.fr/wiki/laptop/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/laptop/">&lt;h2 id=&quot;msi-gl63-8re&quot;&gt;MSI GL63-8RE&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;BIOS Keybinding: &lt;kbd&gt;Suppr&lt;&#x2F;kbd&gt;&#x2F;&lt;kbd&gt;Del&lt;&#x2F;kbd&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Boot Menu Keybinding: &lt;kbd&gt;F11&lt;&#x2F;kbd&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Issue with the &lt;kbd&gt;Super&lt;&#x2F;kbd&gt; and &lt;kbd&gt;Fn&lt;&#x2F;kbd&gt; keys switching sides, despite the option being changed in the BIOS.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;software&quot;&gt;Software&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dmitry-s93&#x2F;MControlCenter&quot;&gt;MControlCenter&lt;&#x2F;a&gt; is a Free and
Open Source GNU&#x2F;Linux application that allows you to change the settings of MSI
laptops.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>waybar</title>
        <published>2025-05-14T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/waybar/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/waybar/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/waybar/">&lt;h1 id=&quot;waybar&quot;&gt;Waybar&lt;&#x2F;h1&gt;
&lt;p&gt;Waybar is a&lt;&#x2F;p&gt;
&lt;p&gt;It can use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fontawesome.com&#x2F;search&quot;&gt;FontAwesome&lt;&#x2F;a&gt; &amp;amp;
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.nerdfonts.com&#x2F;cheat-sheet&quot;&gt;Nerd Fonts&lt;&#x2F;a&gt; to display icons next to
your modules.&lt;&#x2F;p&gt;
&lt;p&gt;For both you need to have them installed on your system and use them as fonts in
your CSS.&lt;&#x2F;p&gt;
&lt;p&gt;Note that you can use multiple encoding formats for those icons, like UTF, or
the name of the icon (for FontAwesome).&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>VPN</title>
        <published>2025-05-14T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/vpn/"/>
        <id>https://tgm.happyngreen.fr/wiki/vpn/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/vpn/">&lt;p&gt;From multiple sources, there seem to be too good vpns with decent prices and
freedom to do what you want:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mullvad.net&#x2F;&quot;&gt;Mullvad&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;airvpn.org&#x2F;&quot;&gt;AirVPN&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Both boast decent prices, desktop applications to run the VPN and Config
Generator Tools for system configuration (Wireguard or OpenVPN).&lt;&#x2F;p&gt;
&lt;p&gt;I have had trouble with the GUI clients of both of them:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mullvad-vpn&lt;&#x2F;code&gt; app, found in the AUR, seems to disconnect every one and off,
and had multiple javascript error popup&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;eddie-ui&lt;&#x2F;code&gt; from AirVPN just doesn&#x27;t launch under archlinux &amp;gt; sway&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I used the &lt;code&gt;wireguard&lt;&#x2F;code&gt; generated config files. I used
&lt;code&gt;wg-quick up my_conf_interface_name.conf&lt;&#x2F;code&gt; and the same with down to shut it
down.&lt;&#x2F;p&gt;
&lt;p&gt;NOTE: rename the config file to an appropriate name, it will be used to generate
the VPN network interface you need to input in qBittorrent.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Wallpapers</title>
        <published>2025-05-14T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/wallpapers/"/>
        <id>https://tgm.happyngreen.fr/wiki/wallpapers/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/wallpapers/">&lt;h1 id=&quot;some-good-wallpaper-sources&quot;&gt;Some good wallpaper sources&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;github&quot;&gt;Github&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;zhichaoh&#x2F;catppuccin-wallpapers&quot;&gt;catppuccin-wallpapers - zhichaoh&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;D3Ext&#x2F;aesthetic-wallpapers&quot;&gt;aesthetic-wallpapers - D3Ext&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;linuxdotexe&#x2F;nordic-wallpapers&quot;&gt;nordic-wallpapers - linuxdotexe&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Linus Custom Timer</title>
        <published>2025-05-13T00:00:00+00:00</published>
        <updated>2025-05-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/20m-timer/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/20m-timer/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/20m-timer/">&lt;h1 id=&quot;how-to-set-up-a-20-minute-computer-break&quot;&gt;How to set up a 20-minute computer break&lt;&#x2F;h1&gt;
&lt;p&gt;Every 20 minutes, take a 20-second break and focus your eyes on something at
least 20 feet away.&lt;&#x2F;p&gt;
&lt;p&gt;So let&#x27;s setup a scheduled notification every twenty minutes of using the
computer, to help follow the 20-20-20 rule to lessen eyestrain.&lt;&#x2F;p&gt;
&lt;p&gt;It uses
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.freedesktop.org&#x2F;software&#x2F;systemd&#x2F;man&#x2F;systemd.timer.html&quot;&gt;systemd timers&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Set up a service unit for the notification&lt;&#x2F;li&gt;
&lt;li&gt;Set up a timer unit to schedule the service&lt;&#x2F;li&gt;
&lt;li&gt;Run commands to enable the timer&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The service unit:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# ~&#x2F;.config&#x2F;systemd&#x2F;user&#x2F;twenty.service&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;Unit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;Description&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;20-20-20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; rule&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; notifier&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;Service&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;ExecStart&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;&#x2F;usr&#x2F;bin&#x2F;notify-send&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; --hint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; int:transient:1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;20-20-20 rule&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;Take a break!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This is a declarative equivalent of a shell script that contains the command to
run. The important part is the last line, which contains the actual command.
Notice that it has a &#x27;hint&#x27;, a typed key-value pair setting which will ensure
that the notification doesn&#x27;t stick around in the desktop environment&#x27;s
notification history after it disappears from the screen. This hint is
documented &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;developer.gnome.org&#x2F;notification-spec&#x2F;#hints&quot;&gt;here&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Remember to place the file in exactly the directory shown above. You will
probably need to create it first, with:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; ~&#x2F;.config&#x2F;systemd&#x2F;user&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Second, the timer unit:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# ~&#x2F;.config&#x2F;systemd&#x2F;user&#x2F;twenty.timer&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;Unit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;Description&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;20-20-20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; rule&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;Timer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;OnCalendar&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;*:0,20,40:00&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;Install&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;WantedBy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;timers.target&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This declares a schedule to run the &lt;code&gt;twenty.service&lt;&#x2F;code&gt; unit on (the service name
is implicitly understood from the name of the timer file).&lt;&#x2F;p&gt;
&lt;p&gt;The two significant parts of this timer unit are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;OnCalendar=&lt;&#x2F;code&gt; property which sets the schedule. This property can
understand various date and time formats, but in this case we are using
&lt;code&gt;hh:mm:ss&lt;&#x2F;code&gt;. The &lt;code&gt;hh&lt;&#x2F;code&gt; component is &lt;code&gt;*&lt;&#x2F;code&gt; meaning run every hour; the &lt;code&gt;mm&lt;&#x2F;code&gt;
component is &lt;code&gt;0,20,40&lt;&#x2F;code&gt; meaning run on the zeroth, twentieth, and fortieth
minutes; and the &lt;code&gt;ss&lt;&#x2F;code&gt; component is &lt;code&gt;00&lt;&#x2F;code&gt; meaning run on the zeroth second. This
translates to: run every twenty minutes.&lt;&#x2F;li&gt;
&lt;li&gt;The &lt;code&gt;WantedBy=&lt;&#x2F;code&gt; property which describes when the timer should be &lt;em&gt;enabled&lt;&#x2F;em&gt; on
system boot. In this case it says: enable this timer when enabling all other
timers on boot.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Finally, enable the timer immediately without needing to reboot the system:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; daemon-reload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt; # Tell systemd about the new units&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; enable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --user --now&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; twenty.timer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt; # Install the timer&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This should set up a symbolic link to the timer, thus installing and enabling
it. Note that we are using the &lt;code&gt;--user&lt;&#x2F;code&gt; flag which means enable this timer for
this user only, not for the entire system (i.e. all users, which would require
admin privileges). The &lt;code&gt;--now&lt;&#x2F;code&gt; flag also immediately activates the timer.&lt;&#x2F;p&gt;
&lt;p&gt;Check that the timer is active:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; list-timers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --user&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;NEXT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;                        LEFT       LAST                        PASSED      UNIT                         ACTIVATES&lt;&#x2F;span&gt;&lt;span&gt;                     &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;Sun&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; 2020-10-11 20:40:00 EDT 15min left Sun 2020-10-11 20:20:50 EDT 4min 7s ago twenty.timer                 twenty.service&lt;&#x2F;span&gt;&lt;span&gt;                &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;Mon&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; 2020-10-12 10:33:34 EDT 14h left   Sat 2020-10-10 20:20:28 EDT 24h ago     systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;n&#x2F;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;                         n&#x2F;a        Sat 2020-10-10 20:17:29 EDT 24h ago     grub-boot-success.timer      grub-boot-success.service&lt;&#x2F;span&gt;&lt;span&gt;     &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; timers listed.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;Pass&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --all&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; to see loaded but inactive timers, too.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This listing shows when the timer will run next.&lt;&#x2F;p&gt;
&lt;p&gt;If you need to disable the timer:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; disable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; twenty.timer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt; # Install the timer&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you need to edit and reload the timer, you can disable, then edit, then
daemon-reload, then enable as shown above.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;references&quot;&gt;References&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;Yawar Amin (&lt;em&gt;n.d.&lt;&#x2F;em&gt;). &lt;em&gt;How to set up a 20-minute computer break on Linux&lt;&#x2F;em&gt;. How
to set up a 20-minute computer break on Linux - DEV Community, Retrieved April
20, 2024 at 12:57:26 from
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dev.to&#x2F;yawaramin&#x2F;how-to-set-up-a-20-minute-computer-break-on-linux-2kna&quot;&gt;https:&#x2F;&#x2F;dev.to&#x2F;yawaramin&#x2F;how-to-set-up-a-20-minute-computer-break-on-linux-2kna&lt;&#x2F;a&gt; -
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;https:&#x2F;&#x2F;dev.to&#x2F;yawaramin&#x2F;how-to-set-up-a-20-minute-computer-break-on-linux-2kna&quot;&gt;🏛 archive&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;CAO (&lt;em&gt;n.d.&lt;&#x2F;em&gt;). &lt;em&gt;20-20-20 Rule | Canadian Association of Optometrists&lt;&#x2F;em&gt;. 20-20-20
Rule | Canadian Association of Optometrists, Retrieved April 20, 2024 at
12:57:54 from
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;opto.ca&#x2F;eye-health-library&#x2F;20-20-20-rule&quot;&gt;https:&#x2F;&#x2F;opto.ca&#x2F;eye-health-library&#x2F;20-20-20-rule&lt;&#x2F;a&gt; -
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;https:&#x2F;&#x2F;opto.ca&#x2F;eye-health-library&#x2F;20-20-20-rule&quot;&gt;🏛 archive&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Distrobox</title>
        <published>2025-04-29T00:00:00+00:00</published>
        <updated>2025-04-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/distrobox/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/distrobox/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/distrobox/">&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;distrobox.it&quot;&gt;distrobox.it&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;distrobox.it&#x2F;#installation&quot;&gt;official docs&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Distrobox is widely available through package managers.&lt;&#x2F;p&gt;
&lt;p&gt;Alternativelyj, you can use the script at:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  curl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;89luca89&#x2F;distrobox&#x2F;main&#x2F;install&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; sh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You also need to install either &lt;code&gt;podman&lt;&#x2F;code&gt;, &lt;code&gt;lilipod&lt;&#x2F;code&gt;(or &lt;strong&gt;docker&lt;&#x2F;strong&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;As of latest update to this page, I have tried lilipod, which worked well with the archlinux image.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;distrobox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; create&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; your_container_name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; quay.io&#x2F;toolbx&#x2F;arch-toolbox:latest&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Usually,  &lt;code&gt;distrobox&lt;&#x2F;code&gt; asks you to pull the image, which you should.&lt;&#x2F;p&gt;
&lt;p&gt;Then to enter the container, run&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  distrobox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; enter your_container_name&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You still have access to all the files while using the container system executables, tools, etc.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Équipement randonnée</title>
        <published>2025-04-25T00:00:00+00:00</published>
        <updated>2025-04-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/equipement-randonnee/"/>
        <id>https://tgm.happyngreen.fr/lists/equipement-randonnee/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/equipement-randonnee/">&lt;h2 id=&quot;rando-d-une-journee&quot;&gt;Rando d&#x27;une journée&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;moyen de navigation;
&lt;ul&gt;
&lt;li&gt;boussol&lt;&#x2F;li&gt;
&lt;li&gt;carte&lt;&#x2F;li&gt;
&lt;li&gt;système GPS&#x2F;tel&lt;&#x2F;li&gt;
&lt;li&gt;carte offline de la zone ou l&#x27;on va&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;vêtement
&lt;ul&gt;
&lt;li&gt;veste imperméable &#x2F; coupe-vent&lt;&#x2F;li&gt;
&lt;li&gt;polaire&lt;&#x2F;li&gt;
&lt;li&gt;chemise&#x2F;tshirt de rando&lt;&#x2F;li&gt;
&lt;li&gt;sous-vêtement thermique&lt;&#x2F;li&gt;
&lt;li&gt;chausettes de rando ?&lt;&#x2F;li&gt;
&lt;li&gt;tour coup&lt;&#x2F;li&gt;
&lt;li&gt;casequette&#x2F;chapeau&lt;&#x2F;li&gt;
&lt;li&gt;chaussures de rando&#x2F;sandales&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;protection solaire
&lt;ul&gt;
&lt;li&gt;crème solaire&lt;&#x2F;li&gt;
&lt;li&gt;baume à lèvres&lt;&#x2F;li&gt;
&lt;li&gt;lunettes de soleil&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;éclairage
&lt;ul&gt;
&lt;li&gt;lampe frontal&lt;&#x2F;li&gt;
&lt;li&gt;batterie de rechange&#x2F;portable&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;soins et 1er secours
&lt;ul&gt;
&lt;li&gt;trousse de premier secours&lt;&#x2F;li&gt;
&lt;li&gt;couverture de survie (feu de camps → alumettes&#x2F;briquets,allume-feu)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;nourriture&lt;&#x2F;li&gt;
&lt;li&gt;nourriture lyophilisée&lt;&#x2F;li&gt;
&lt;li&gt;barres énergétiques&lt;&#x2F;li&gt;
&lt;li&gt;hydratation ( en moyenne 2L par jours, augmente si il faut chaud ou
l&#x27;itinéraire est difficile)
&lt;ul&gt;
&lt;li&gt;poche à eau&lt;&#x2F;li&gt;
&lt;li&gt;gourde&lt;&#x2F;li&gt;
&lt;li&gt;bouteil isotherme&lt;&#x2F;li&gt;
&lt;li&gt;filtre à eau ?&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;sac entre 15L et 30L&lt;&#x2F;li&gt;
&lt;li&gt;accessoires
&lt;ul&gt;
&lt;li&gt;mouchoirs jetables&lt;&#x2F;li&gt;
&lt;li&gt;sac à déchets&lt;&#x2F;li&gt;
&lt;li&gt;gel désinfectants&lt;&#x2F;li&gt;
&lt;li&gt;anti-insecte&lt;&#x2F;li&gt;
&lt;li&gt;serviette microfibre&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Prompts</title>
        <published>2025-04-25T00:00:00+00:00</published>
        <updated>2024-10-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/prompts/"/>
        <id>https://tgm.happyngreen.fr/lists/prompts/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/prompts/">&lt;p&gt;This is a list loos library of prompt templates I use with LLMs.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>caps2esc</title>
        <published>2025-04-09T00:00:00+00:00</published>
        <updated>2025-04-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/caps2esc/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/caps2esc/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/caps2esc/">&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;interception&#x2F;linux&#x2F;plugins&#x2F;caps2esc&quot;&gt;caps2esc&lt;&#x2F;a&gt; is a plugin
for the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;interception&#x2F;linux&#x2F;tools&quot;&gt;interception-tools&lt;&#x2F;a&gt;. It
enables a user to capture key presses at a very low level in Linux, and change
them to something else. As the name suggests, &lt;code&gt;caps2esc&lt;&#x2F;code&gt; is used to switch the
&lt;code&gt;capslock&lt;&#x2F;code&gt; key with the &lt;code&gt;esc&lt;&#x2F;code&gt; key.&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;code&gt;escape&lt;&#x2F;code&gt; key is extremely important in the vim&#x2F;Emacs workflow. The user
needs it to switch out of modes like &lt;code&gt;insert&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;I came upon it after wanting to change my &lt;code&gt;EDITOR&lt;&#x2F;code&gt; to helix. I remembered the
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=D2B3YI_d6HA&quot;&gt;Comment arrêter de se servir de vim comme un goret - Nuit de l&#x27;Info 2018&lt;&#x2F;a&gt;.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I followed this
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;User:Zaidhaan&#x2F;caps2esc&quot;&gt;page from the Archlinux wiki&lt;&#x2F;a&gt;
after installing &lt;code&gt;intercept-tools&lt;&#x2F;code&gt; and &lt;code&gt;intercept-caps2esc&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;→ From the page:&lt;&#x2F;p&gt;
&lt;p&gt;Create the following udevmon job configuration file:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;&#x2F;etc&#x2F;interception&#x2F;udevmon.d&#x2F;caps2esc.yml&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt; JOB&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; intercept -g $DEVNODE | caps2esc | uinput -d $DEVNODE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;  DEVICE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;    EVENTS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;      EV_KEY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;KEY_CAPSLOCK&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; KEY_ESC&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;By default, this remaps the following:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Escape as Caps Lock.&lt;&#x2F;li&gt;
&lt;li&gt;Caps Lock as Escape when pressed alone and as Ctrl when pressed together with
another key.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Next, start&#x2F;enable &lt;code&gt;udevmon.service&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;There are many more configuration options, that can be found in the
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Interception-tools&quot;&gt;Archlinux Intercept Tools&lt;&#x2F;a&gt;
and the Gitlab page (&lt;em&gt;second link from the top&lt;&#x2F;em&gt;).&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>interesting horizontal layout blog</title>
        <published>2025-04-03T00:00:00+00:00</published>
        <updated>2025-04-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/interesting-horizontal-layout-blog/"/>
        <id>https://tgm.happyngreen.fr/blog/interesting-horizontal-layout-blog/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/interesting-horizontal-layout-blog/">&lt;p&gt;A while back, I &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;uchu.style&#x2F;&quot;&gt;stumbled&lt;&#x2F;a&gt; upon this personal website: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;webb.page&#x2F;&quot;&gt;webb.page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I found the horizontal layout quite interesting. Unfortunately, I find it also jarring to alternate scrolling directions when making a single (in my case) downwards motion.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Single Link #5: Drum Patterns</title>
        <published>2025-03-28T00:00:00+00:00</published>
        <updated>2025-03-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/single-link-5-beat-templates/"/>
        <id>https://tgm.happyngreen.fr/blog/single-link-5-beat-templates/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/single-link-5-beat-templates/">&lt;p&gt;Here is my entry for this weeks &lt;a href=&quot;&#x2F;tags&#x2F;singlelink&#x2F;&quot;&gt;Singlelink&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;drumpatterns.onether.com&#x2F;&quot;&gt;Drums Patterns&lt;&#x2F;a&gt; is a website that collects and shares drum patterns. You can play user made patterns, or make your own.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m not a drummer myself, but visually, the site in interesting to me. Notably, I find the way the drum patterns are displayed quite cool.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Hey look, similar color scheme</title>
        <published>2025-03-27T00:00:00+00:00</published>
        <updated>2025-03-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/hey-look-similar-color-scheme/"/>
        <id>https://tgm.happyngreen.fr/blog/hey-look-similar-color-scheme/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/hey-look-similar-color-scheme/">&lt;p&gt;Hey, look, a similar blog color scheme:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.baldurbjarnason.com&#x2F;&quot;&gt;Baldur Bjanrnason&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Docker</title>
        <published>2025-03-25T00:00:00+00:00</published>
        <updated>2025-05-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/docker/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/docker/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/docker/">&lt;h2 id=&quot;docker-on-archlinux-for-testing&quot;&gt;Docker on Archlinux for testing&lt;&#x2F;h2&gt;
&lt;p&gt;First install &lt;code&gt;docker&lt;&#x2F;code&gt;, &lt;code&gt;docker-compose&lt;&#x2F;code&gt; and from the AUR
&lt;code&gt;docker-rootless-extras&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; docker docker-compose&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;yay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; docker-rootless-extras&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;and then start the &lt;code&gt;docker.socket&lt;&#x2F;code&gt; service with:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; enable docker.socket&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; start docker.socket&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;To finish, add the following line to your &lt;code&gt;.bashrc&lt;&#x2F;code&gt; or &lt;code&gt;.zshrc&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #0DB9D7;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;export DOCKER_HOST=unix:&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;$XDG_RUNTIME_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;&#x2F;docker.sock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; .zshrc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #0DB9D7;&quot;&gt;source&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; .zshrc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;		#reload shell&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Reference:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Docker&quot;&gt;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Docker&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Docker#Rootless_Docker_daemon&quot;&gt;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Docker#Rootless_Docker_daemon&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;docker-compose&quot;&gt;Docker Compose&lt;&#x2F;h2&gt;
&lt;h2 id=&quot;environment&quot;&gt;Environment&lt;&#x2F;h2&gt;
&lt;p&gt;This is the section where you specify environment variables globally inside the
container.&lt;&#x2F;p&gt;
&lt;p&gt;An equivalent is &lt;code&gt;export Variable=value&lt;&#x2F;code&gt; in your Unix shell.&lt;&#x2F;p&gt;
&lt;p&gt;From inside a container, you can find out which Env Variables are being set by
using :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;printenv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;em&gt;This works in any shell, be it container or host.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;!!!!!! Don&#x27;t forget, it&#x27;s &lt;code&gt;- VARIABLE_NAME=value&lt;&#x2F;code&gt;, not with &lt;code&gt;:&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;network&quot;&gt;Network&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;local-deployement&quot;&gt;Local Deployement&lt;&#x2F;h4&gt;
&lt;p&gt;You don&#x27;t have to set &lt;code&gt;networks:&lt;&#x2F;code&gt; for local deployement.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# networks:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;#   my-external-network:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;#     external: true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Docker Compose automatically creates a default network for your services, and all services in the same compose file can communicate with each other using their service names as hostnames. &lt;em&gt;See below&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;You might use networks for:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple isolated networks&lt;&#x2F;li&gt;
&lt;li&gt;Connecting to external networks&lt;&#x2F;li&gt;
&lt;li&gt;Custom network configuration - specific drivers, subnets, etc.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;requests-from-one-container-to-another-using-the-same-network&quot;&gt;Requests from one container to another using the same network&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;http:&#x2F;&#x2F;your_container_name:PORT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Say you have two services: &lt;code&gt;app&lt;&#x2F;code&gt; and &lt;code&gt;api&lt;&#x2F;code&gt;, the latter using port &lt;code&gt;8966&lt;&#x2F;code&gt;. You can use http:&#x2F;&#x2F;api:8966 in &lt;code&gt;app&lt;&#x2F;code&gt; to connect to &lt;code&gt;api&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;networking-access-outside-host-service-from-inside-a-container&quot;&gt;Networking: Access outside host service from inside a container&lt;&#x2F;h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;network_mode: host&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; option. → however, this defeats the purpose of the
container, which is to be isolated from the host system.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;extra_host: - host.docker.internal:docker.gateway&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; → this gives the
outside container IP address. Each container has an outside IP address.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;To find it, just use:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Gateway IP address&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  docker&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; network your_network inspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; Gateway&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Internal Subnet range, useful for the command below&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  docker&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; network your_network inspect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; Subnet&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ufw&lt;&#x2F;code&gt; allow container external IP range with port&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;This one worked! Usually, something like :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; ufw allow from 172.31.0.0&#x2F;16 to any port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 56789&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;*Replace the IP address with your containers outside IP subnet range, follow the
command outside.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;entrypoint-command&quot;&gt;&lt;code&gt;entrypoint&lt;&#x2F;code&gt;, &lt;code&gt;command&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Those two run the program&#x2F;command&#x2F;script inside the container at the start or
running the container.&lt;&#x2F;p&gt;
&lt;p&gt;Apparently, &lt;code&gt;entrypoint&lt;&#x2F;code&gt; is harder to modify on the fly, while &lt;code&gt;command&lt;&#x2F;code&gt; is more
flexible.&lt;&#x2F;p&gt;
&lt;p&gt;If you need to run something that needs to run endlessly, use:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;command&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;: [&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;&#x2F;bin&#x2F;bash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;, &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;-c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;, &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;&#x2F;path&#x2F;to&#x2F;script&#x2F;or&#x2F;binary &amp;amp;&amp;amp; tail -f &#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;tail&lt;&#x2F;code&gt; enables it main process of the script&#x2F;binary to exit while keeping the
container alive.&lt;&#x2F;p&gt;
&lt;p&gt;If you get &lt;code&gt;something exited with code 0&lt;&#x2F;code&gt; this means the container stopped. The
command above might help. &lt;em&gt;This is mostly relevant for custom&#x2F;modified
containers.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;devices&quot;&gt;Devices&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;gpu&quot;&gt;GPU&lt;&#x2F;h4&gt;
&lt;p&gt;For Intel GPU:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# Total GPU capabilities&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;devices:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  - &#x2F;dev&#x2F;dri:&#x2F;dev&#x2F;dri&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# Just for computation purposes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;devices:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  - &#x2F;dev&#x2F;render128:&#x2F;dev&#x2F;render128&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;docker-compose-commands&quot;&gt;Docker Compose commands&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;stats&quot;&gt;stats&lt;&#x2F;h3&gt;
&lt;p&gt;The &lt;code&gt;stats&lt;&#x2F;code&gt; command displays the system usage stats of the current docker
compose container.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;docker&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; compose stats&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Karmic Cycle Quote</title>
        <published>2025-03-10T00:00:00+00:00</published>
        <updated>2025-03-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/karmic-cycle-quote/"/>
        <id>https://tgm.happyngreen.fr/blog/karmic-cycle-quote/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/karmic-cycle-quote/">&lt;blockquote&gt;
&lt;p&gt;“You have touched my heart, and I hope you will hear me when I say: You are not stuck, you understand? You can let go of your story. You can escape the karmic cycle. Find peace, in this life. I have hope for you.”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;em&gt;The White Lotus&lt;&#x2F;em&gt;, Episode 4 of Season 3, 15min 4sec.&lt;&#x2F;p&gt;
&lt;p&gt;This one really hit me.&lt;&#x2F;p&gt;
&lt;p&gt;The way the actress plays out those lines, it makes me feel that something important is happening right there and then. Important both for the characters, and for the story (and that part makes me a bit anxious, not going to lie).&lt;&#x2F;p&gt;
&lt;p&gt;I hope someday I can use that when playing TRPG (&lt;em&gt;Tabletop Role-Playing Games&lt;&#x2F;em&gt;), both as a player or a GM.&lt;&#x2F;p&gt;
&lt;p&gt;Maybe even say that I myself, to someone I care about. I certainly don&#x27;t feel emotionally mature to say something as deep at this moment of my life.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>helix: LSP</title>
        <published>2025-03-06T00:00:00+00:00</published>
        <updated>2025-03-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/helix-lsp/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/helix-lsp/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/helix-lsp/">&lt;h2 id=&quot;lsp-formater&quot;&gt;LSP&#x2F;FORMATER&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;helix&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --health&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; lang_name&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# for example&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;helix&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --health&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; markdown&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This flag enables an info dump that shows you what you can set up.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;formaters&quot;&gt;Formaters&lt;&#x2F;h2&gt;
&lt;p&gt;For
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;helix-editor&#x2F;helix&#x2F;wiki&#x2F;Formatter-Configurations&quot;&gt;the official lists&lt;&#x2F;a&gt;.
I recommend using anything other than JavaScript&#x2F;TypeScript LSP&#x27;s and formaters.
Beware high memory usage.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;specific-language&quot;&gt;Specific Language&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;spellchecking&quot;&gt;Spellchecking&lt;&#x2F;h3&gt;
&lt;p&gt;Spellchecking can be done via a multitude of tools, LSP and non-LSP.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Notable mentions:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ltex-plus&#x2F;ltex-ls-plus&quot;&gt;ltex-ls-plus&lt;&#x2F;a&gt; → uses LanguageTool&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;writewithharper.com&quot;&gt;Harper&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tekumara&#x2F;typos-lsp&quot;&gt;typos-lsp&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vale.sh&quot;&gt;Vale.sh&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;ltex-ls-plus&lt;&#x2F;strong&gt; has a high memory and CPU usage. It is also a bit slow. But it
handles [FR].&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;language-server&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;ltex-ls-plus&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;ltex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;diagnosticSeverity&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;warning&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;ltex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;disabledRules&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;en-US&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;PROFANITY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;en-GB&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;PROFANITY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;ltex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;dictionary&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;en-US&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;builtin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;en-GB&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;builtin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;There is :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;blopker&#x2F;codebook&quot;&gt;codebook-lsp&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;helix-editor&#x2F;spellbook&quot;&gt;spellbook&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;markdown&quot;&gt;Markdown&lt;&#x2F;h3&gt;
&lt;p&gt;I used &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dprint.dev&#x2F;&quot;&gt;dprint&lt;&#x2F;a&gt; for Markdown combined with &lt;code&gt;markdownlint&lt;&#x2F;code&gt;.
But &lt;code&gt;dprint&lt;&#x2F;code&gt; can do much more.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;jinja&quot;&gt;Jinja&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;uros-5&#x2F;jinja-lsp&quot;&gt;jinja-lsp&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;tera-rust-templating-language&quot;&gt;Tera (rust templating language)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;uncenter&#x2F;tree-sitter-tera&quot;&gt;tree-sitter-tera&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;javascript-typescript&quot;&gt;Javascript&#x2F;Typescript&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;biomejs.dev&#x2F;guides&#x2F;editors&#x2F;third-party-extensions&#x2F;&quot;&gt;Biome&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Linux Networking</title>
        <published>2025-03-06T00:00:00+00:00</published>
        <updated>2025-03-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/linux-networking/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/linux-networking/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/linux-networking/">&lt;h2 id=&quot;programs-to-manage-networking-in-linux&quot;&gt;Programs to manage networking in linux:&lt;&#x2F;h2&gt;
&lt;p&gt;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;ConnMan&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;iwd&lt;&#x2F;li&gt;
&lt;li&gt;NetworkManager&lt;&#x2F;li&gt;
&lt;li&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;wifi-iwd-or-wpa-supplicant&quot;&gt;Wifi: IWD or wpa_supplicant&lt;&#x2F;h2&gt;
&lt;p&gt;https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;archlinux&#x2F;comments&#x2F;eusuif&#x2F;the_insanity_of_wifi_iwd_wpa_supplicant_iw_ip&#x2F;
https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Iwd
https:&#x2F;&#x2F;archive.kernel.org&#x2F;oldwiki&#x2F;iwd.wiki.kernel.org&#x2F;gettingstarted.html
https:&#x2F;&#x2F;wiki.gentoo.org&#x2F;wiki&#x2F;Iwd
https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Iwd
https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Wpa_supplicant&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;discussion.fedoraproject.org&#x2F;t&#x2F;howto-replace-wpa-supplicant-with-iwd-a-newer-wireless-daemon&#x2F;144111&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ap&quot;&gt;AP&lt;&#x2F;h2&gt;
&lt;p&gt;https:&#x2F;&#x2F;archive.kernel.org&#x2F;oldwiki&#x2F;iwd.wiki.kernel.org&#x2F;ap_mode.html&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Notes on Intro to Psychology</title>
        <published>2025-03-06T00:00:00+00:00</published>
        <updated>2025-03-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/notes-coursera-intro-psy/"/>
        <id>https://tgm.happyngreen.fr/wiki/notes-coursera-intro-psy/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/notes-coursera-intro-psy/">&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;introduction-psychology&quot;&gt;Introduction to Psychology - Coursera&#x2F;Yale&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;module-1&quot;&gt;Module 1&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;introductory-reading&quot;&gt;Introductory Reading&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nobaproject.com&#x2F;modules&#x2F;history-of-psychology&quot;&gt;History of Psychology By David B. Baker and Heather Sperry University of Akron, The University of Akron&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nobaproject.com&#x2F;modules&#x2F;research-designs&quot;&gt;Research Designs By Christie Napa Scollon Singapore Management University&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;text-1&quot;&gt;Text 1&lt;&#x2F;h3&gt;
&lt;p&gt;American-centric&lt;&#x2F;p&gt;
&lt;p&gt;Historical period:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;For the purposes of this module, we will examine the development of psychology in America and use the mid-19th century as our starting point.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;History (ours) is important to define who we are.&lt;&#x2F;p&gt;
&lt;p&gt;Precursors to psychology:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;philosphers (such as John Locke and Thomas Reid) who promoted &lt;strong&gt;empiricism&lt;&#x2F;strong&gt; → the idea that all knowledge comes from experience.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;the role of the human observer and the primacy of the senses in defining how the mind comes to acquire knowledge.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;early 1800s, universities, empiricism is taught courses on mental and moral philosophy. (hehehe morality and mental stuff...)&lt;&#x2F;p&gt;
&lt;p&gt;19th century, philosophical questions on mind &amp;amp; knowledge is matche by physiological investigations → sensory system of humans.&lt;&#x2F;p&gt;
&lt;p&gt;H. von Hemboltz (German) → measures speed of neuron impulse&lt;&#x2F;p&gt;
&lt;p&gt;senses can be deceived + mind is measurable by methods of &quot;science&quot;&lt;&#x2F;p&gt;
&lt;p&gt;psychological reality ø physical reality&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;philosophical speculation about the nature of mind became subject to the rigors of science.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;psychophysics:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The question of the relationship between the mental (experiences of the senses) and the material (external reality)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;The formal development of modern psychology = invention of experimental psychology.&lt;&#x2F;p&gt;
&lt;p&gt;German physician, physiologist, and philosopher Wilhelm Wundt :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Students were trained to offer detailed self-reports of their reactions to various stimuli, a procedure known as introspection.&lt;&#x2F;p&gt;
&lt;p&gt;The goal was to identify the elements of consciousness.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Studied:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Sensation and perception&lt;&#x2F;li&gt;
&lt;li&gt;Mental chronometry, more commonly known as reaction time.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Wundt → America via Edward Bradford Titchener: &lt;strong&gt;structuralism&lt;&#x2F;strong&gt;: describe the elements of concious experience&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;For Titchener, the general adult mind was the proper focus for the new psychology, and he excluded from study those with mental deficiencies, children, and animals&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;American Psychological Association (APA) in 1892&lt;&#x2F;p&gt;
&lt;p&gt;Titchner first student → women named Margaret Floy Washburn, who became first woman to earn a PhD and 2st woman president of APA.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Striking a balance between the science and practice of psychology continues to this day.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;William James → functionalism : the utility of focus&lt;&#x2F;p&gt;
&lt;p&gt;influeced by Darwin&#x27;s theory of evolution.&lt;&#x2F;p&gt;
&lt;p&gt;opened the way to animal an comparative psychology.&lt;&#x2F;p&gt;
&lt;p&gt;W. James wrote: &lt;em&gt;Principles of Psychology&lt;&#x2F;em&gt;:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;James proposed that consciousness is ongoing and continuous; it cannot be isolated and reduced to elements. For James, consciousness helped us adapt to our environment in such ways as allowing us to make choices and have personal responsibility over those choices.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;G. Stanley Hall:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;created the first journal of psychology in America, American Journal of Psychology.&lt;&#x2F;li&gt;
&lt;li&gt;researched the process of adaptation and human development.&lt;&#x2F;li&gt;
&lt;li&gt;mentored first black man who got a PhD in psychology, Francis Cecil Sumner, who become to be commonly known as the “Father of Black Psychology„&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;James McKeen Cattell:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;student of Wundt&lt;&#x2F;li&gt;
&lt;li&gt;researched assessment of individual differences → Ways in which people differ in terms of their behavior, emotion, cognition, and development.&lt;&#x2F;li&gt;
&lt;li&gt;promoted eugenics ... outch&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;aside&gt;
&lt;p&gt;What about Phenotype&#x27;s enviromental parameters ? When was that observed ?&lt;&#x2F;p&gt;
&lt;p&gt;Also, what about &lt;strong&gt;determinism&lt;&#x2F;strong&gt; and &lt;strong&gt;constructivism&lt;&#x2F;strong&gt; ?&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;ul&gt;
&lt;li&gt;believed that mental abilities such as intelligence were inherited and could be measured using mental tests.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;the-growth-of-psychology&quot;&gt;The Growth of Psychology&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;strong&gt;Gestalt Psychology&lt;&#x2F;strong&gt;
Began in Germany.&lt;&#x2F;p&gt;
&lt;p&gt;Max Wertheimer&lt;&#x2F;p&gt;
&lt;p&gt;In opposition to Wundt&#x27;s laboratory approach.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;[They] believed that studying the whole of any experience was richer than studying individual aspects of that experience. The saying “the whole is greater than the sum of its parts” is a Gestalt perspective.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Hypothesis: the mind processes information simultaneously rather than sequentially.
Using Gestalt Principles, they explored the nature of learning and thinking.&lt;&#x2F;p&gt;
&lt;p&gt;Most early academics of this school of thought were Jewish, and fled Germany.&lt;&#x2F;p&gt;
&lt;p&gt;In America, Gestalt Psychology served as a precursor to cognitive Psychology (&lt;em&gt;The study of mental processes&lt;&#x2F;em&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Behaviorism&lt;&#x2F;strong&gt; early 20th John B. Watson (1878–1958) and B. F. Skinner (1904–1990)&lt;&#x2F;p&gt;
&lt;p&gt;Behaviorism ≠ mind → overt and observable behavior as proper subject.
→ hope to derive laws of learning → promote prediction + behavior control
Ivan Pavlov influenced the early behaviorism in America → work on &lt;strong&gt;conditioned learning&lt;&#x2F;strong&gt; = learning + behavior = conditioned by environment and events outside of mind&#x2F;consciousness.&lt;&#x2F;p&gt;
&lt;p&gt;Behaviorism dominated the American Psychology before 60s, until recognition of it&#x27;s inability to fully explain human behavior, neglecting mental processes.&lt;&#x2F;p&gt;
&lt;p&gt;But turn to cognitive psy. was not new :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;30s → British psychologist Frederic C. Bartlett (1886–1969): the &lt;strong&gt;constructive mind&lt;&#x2F;strong&gt; → people use past experiences to construct frameworks to understand new experiences.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;major pioneers in American cognitive psychology:
Jerome Bruner (1915–), Roger Brown (1925–1997), and George Miller (1920–2012).&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Bruner:
&lt;ul&gt;
&lt;li&gt;cognitive aspects of sensation and perception.&lt;&#x2F;li&gt;
&lt;li&gt;flashbulb memory : high detail vivid memory of emotionally significant event.&lt;&#x2F;li&gt;
&lt;li&gt;tip-of-the-tongue phenomenon&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Miller:
&lt;ul&gt;
&lt;li&gt;working memory&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;The Magic Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information&lt;&#x2F;em&gt;, in 1956, one of most highly cited papers in Psychology.&lt;&#x2F;li&gt;
&lt;li&gt;popular interpretation: number of bits of information an average human can hold in memory is 7 ± 2.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;aside&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;That is a bit cybernetic stuff. This also seems overly simplistic.
I wonder how well this held out overtime.&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;ul&gt;
&lt;li&gt;same time as computer science was growing + used as analogy to mind.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;applied-psychology-in-america&quot;&gt;Applied Psychology in America&lt;&#x2F;h4&gt;
&lt;p&gt;America → !! application of psychology to everyday life.
!!! Mental testing (?)&lt;&#x2F;p&gt;
  &lt;aside&gt;
&lt;p&gt;How very utilitarian.&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;p&gt;Intelligence testing → Alfred Binet →&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;goal was to develop a test that would identify schoolchildren in need of educational support.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Introduced by Henry Goddard and standardized by Lewis Terman at Stanford Uni.&lt;&#x2F;p&gt;
&lt;p&gt;HUGE debate on &lt;strong&gt;nature&#x2F;nurture&lt;&#x2F;strong&gt; → the relative contributions of heredity and environment in determining intelligence&lt;&#x2F;p&gt;
&lt;p&gt;employee selection, eyewitness testimony, and psychotherapy
psychology of advertising and marketing
industrial psychology and engineering psychology
time and motion studies to improve efficiency in industry
psychology of efficiency
Clinical psychology&lt;&#x2F;p&gt;
&lt;p&gt;WWII = necessity for professional psychologists&lt;&#x2F;p&gt;
&lt;p&gt;scientist-practitioner model = both researcher and clinical study.
scholar-practitioner = emphasis on clinical training. &lt;strong&gt;more common&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h4 id=&quot;psychology-and-society&quot;&gt;Psychology and Society&lt;&#x2F;h4&gt;
&lt;p&gt;SPSSI (&lt;em&gt;Society for the Psychological Study of Social Issues&lt;&#x2F;em&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Helen Thompson Woolley → examined the assumption that women were overemotional compared to men and found that emotion did not influence women’s decisions any more than it did men’s.&lt;&#x2F;p&gt;
&lt;p&gt;Leta S. Hollingworth → found that menstruation did not negatively impact women’s cognitive or motor abilities.&lt;&#x2F;p&gt;
&lt;p&gt;Mamie Phipps Clark (1917–1983) and her husband Kenneth Clark → studied the psychology of race and demonstrated the ways in which school segregation negatively impacted the self-esteem of African American children.&lt;&#x2F;p&gt;
&lt;p&gt;Brown v. Board of Education, which ended school segregation&lt;&#x2F;p&gt;
&lt;p&gt;Association of Black Psychologists (ABPsi)&lt;&#x2F;p&gt;
&lt;p&gt;Evelyn Hooker → “The Adjustment of the Male Overt Homosexual,” → No significant differences in psychological adjustment between homosexual and heterosexual men → helped to de-pathologize homosexuality → contributed to the decision by the American Psychiatric Association to remove homosexuality from the Diagnostic and Statistical Manual of Mental Disorders.&lt;&#x2F;p&gt;
 &lt;aside&gt;
&lt;p&gt;What about homosexual women?&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;h3 id=&quot;text-2-research-designs&quot;&gt;Text 2 → Research Designs&lt;&#x2F;h3&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>RPG GMing</title>
        <published>2025-03-06T00:00:00+00:00</published>
        <updated>2025-03-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/rpg-gm/"/>
        <id>https://tgm.happyngreen.fr/wiki/rpg-gm/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/rpg-gm/">&lt;h2 id=&quot;types-of-questions-for-players-and-when-to-use-them&quot;&gt;Types of questions for players, and when to use them&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Closed&lt;&#x2F;strong&gt; = yes or no&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Open&lt;&#x2F;strong&gt; = generates more detail&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Reading&lt;&#x2F;strong&gt; = emphasis one solution&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Inverted&lt;&#x2F;strong&gt; = outcome is set, lots of creative limitation there.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Redirect&lt;&#x2F;strong&gt; = motivate inter-player interactions&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Affective&lt;&#x2F;strong&gt; = character internal monologue, feelings and emotions. Deep &amp;amp; rich inner life.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;when-to-use-the-questions-based-on-outcome-information-required&quot;&gt;When to use the questions, based on outcome&#x2F;information required&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;assets&#x2F;img&#x2F;rpg.gm.questions.png&quot; alt=&quot;Diagram of questions&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The six question types before neatly fit into the three functional categories. If you want to:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Clarify or learn about a character or the world then you can ask open questions to elicit detail or closed questions to clarify established facts.&lt;&#x2F;li&gt;
&lt;li&gt;Tempt players or incite quick action then you can ask leading questions to prime them for a tense situation or an inverted questions to have them roleplay or explain what happened.&lt;&#x2F;li&gt;
&lt;li&gt;Learn about a character’s state or adjust the pace then you can ask affective questions to learn about a character’s emotions and thoughts on the scene or redirect questions to gently check-in with a player or have them comment on the actions of another character.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;&#x2F;strong&gt;: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;thebardicinquiry.com&#x2F;2022&#x2F;10&#x2F;23&#x2F;how-to-improve-player-engagement-in-roleplaying-games-using-questions&#x2F;&quot;&gt;How to improve player engagement in roleplaying games using questions -- The Bardic Inquiry&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Good &amp; Bad Product Design</title>
        <published>2025-03-05T00:00:00+00:00</published>
        <updated>2025-03-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/good-bad-product-design/"/>
        <id>https://tgm.happyngreen.fr/blog/good-bad-product-design/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/good-bad-product-design/">&lt;blockquote&gt;
&lt;p&gt;Good designs expose systematic structure; they lean on their users’ ability to understand this structure and apply it to new situations. We were born for this.&lt;&#x2F;p&gt;
&lt;p&gt;Bad designs paper over the structure with superficial labels that hide the underlying system, inhibiting their users’ ability to actually build a clear model in their heads.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;from Andrea diSessa&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;9780262541329&#x2F;changing-minds&#x2F;&quot;&gt;Changing Minds&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;via [Avoid the nightmare bicycle - Geoffrey Litt]&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Organisations</title>
        <published>2025-03-05T00:00:00+00:00</published>
        <updated>2025-03-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/organisations/"/>
        <id>https://tgm.happyngreen.fr/lists/organisations/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/organisations/">&lt;p&gt;A list of orgs of interest.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>test</title>
        <published>2025-03-05T00:00:00+00:00</published>
        <updated>2025-03-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/test/"/>
        <id>https://tgm.happyngreen.fr/wiki/test/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/test/">&lt;!-- Your content here --&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Design Tools</title>
        <published>2025-03-04T00:00:00+00:00</published>
        <updated>2025-03-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/design-tools/"/>
        <id>https://tgm.happyngreen.fr/lists/design-tools/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/design-tools/">&lt;p&gt;-&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;hue.tools&quot;&gt;hue.tools&lt;&#x2F;a&gt; a tool for colors. Better then the W3school one.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Firefox</title>
        <published>2025-03-04T00:00:00+00:00</published>
        <updated>2025-03-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/firefox/"/>
        <id>https://tgm.happyngreen.fr/wiki/firefox/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/firefox/">&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;keybindings&quot;&gt;Keybindings&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;keywords&quot;&gt;Keywords&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;*&lt;&#x2F;code&gt; → Search bookmarks&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;%&lt;&#x2F;code&gt; → Search open tabs&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;^&lt;&#x2F;code&gt; → Search history&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;about:addons&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;about:config&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;about:preferences&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;about:profiles&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;about:profiling&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;about:processes&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;configuration&quot;&gt;Configuration&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;run-firefox-with-prime-run-on-nvidia-intel-system&quot;&gt;Run firefox with prime-run on nvidia+intel system&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;blog&#x2F;firefox-prime-run&#x2F;&quot;&gt;My blog post&lt;&#x2F;a&gt; about that procedure and
how it solved some crashes of firefox.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;memory-usage&quot;&gt;Memory usage&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;about:memory&lt;&#x2F;code&gt; and &lt;code&gt;about:processes&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;robots.net&#x2F;tech&#x2F;how-to-limit-firefox-ram-usage&#x2F;
https:&#x2F;&#x2F;gbtimes.com&#x2F;how-to-make-firefox-use-less-memory&#x2F;
https:&#x2F;&#x2F;superuser.com&#x2F;questions&#x2F;1740578&#x2F;how-to-reduce-the-firefox-memory-usage-as-much-as-possible
https:&#x2F;&#x2F;support.mozilla.org&#x2F;en-US&#x2F;kb&#x2F;firefox-uses-too-much-memory-or-cpu-resources
https:&#x2F;&#x2F;support.mozilla.org&#x2F;en-US&#x2F;kb&#x2F;firefox-uses-too-much-memory-or-cpu-resources#w_firefox-tools
https:&#x2F;&#x2F;support.mozilla.org&#x2F;en-US&#x2F;kb&#x2F;task-manager-tabs-or-extensions-are-slowing-firefox&lt;&#x2F;p&gt;
&lt;p&gt;How do I find out which extensions take a lot of ram.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-do-i-run-autodiscardtab-more-agressively&quot;&gt;How do I run AutoDiscardTab more agressively ? !!!!&lt;&#x2F;h2&gt;
&lt;p&gt;The &lt;code&gt;about:&lt;&#x2F;code&gt; keyword in the searchbar enables access to divers tools and
configuration pages. There is autocomplete on, so if you can&#x27;t find a page, it
either doesn&#x27;t exist, or you are misspelling the words.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;unloading-tabs&quot;&gt;Unloading Tabs&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;about:unloads&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;It displays information about your open tabs, such as the order of priority
for unloading tabs, the last time you accessed each tab and the memory each
tab is consuming.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;support.mozilla.org&#x2F;en-US&#x2F;kb&#x2F;unload-inactive-tabs-save-system-memory-firefox&quot;&gt;Unload Inactive Tabs - Mozilla&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;sidebar-tabs&quot;&gt;Sidebar Tabs&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;about:config&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;type &lt;code&gt;sidebar&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Scroll down until you see &lt;code&gt;sidebar.verticalTabs&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Set &lt;code&gt;sidebar.verticalTabs&lt;&#x2F;code&gt;, &lt;code&gt;sidebar.revamp.round-content-area&lt;&#x2F;code&gt; and
&lt;code&gt;sidebar.revamp&lt;&#x2F;code&gt; to &lt;code&gt;true&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;&lt;strong&gt;Fix gesture swiping tabs not working correctly on linux (laggy, jagged slow
movement):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;same as above&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;apz.gtk.pangesture.delta_mode&lt;&#x2F;code&gt; set to &lt;code&gt;2&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Programming Languages</title>
        <published>2025-03-04T00:00:00+00:00</published>
        <updated>2025-03-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/programming-languages/"/>
        <id>https://tgm.happyngreen.fr/wiki/programming-languages/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/programming-languages/">&lt;h2 id=&quot;zig-vs-rust&quot;&gt;Zig vs Rust&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;old.reddit.com&#x2F;r&#x2F;rust&#x2F;comments&#x2F;1333zs1&#x2F;zig_or_rust&#x2F;&quot;&gt;Zig or Rust - Reddit.com&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;matklad.github.io&#x2F;2023&#x2F;03&#x2F;26&#x2F;zig-and-rust.html&quot;&gt;Zig and Rust - Matklad&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Notes on Jacob Geller&#x27;s Video Essay Method</title>
        <published>2025-03-03T00:00:00+00:00</published>
        <updated>2025-03-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/notes-on-jacob-geller-s-video-essay-method/"/>
        <id>https://tgm.happyngreen.fr/blog/notes-on-jacob-geller-s-video-essay-method/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/notes-on-jacob-geller-s-video-essay-method/">&lt;p&gt;Here are my notes on Jacob Geller&#x27;s method to create a video essay, as told in this &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nebula.tv&#x2F;videos&#x2F;jacob-geller-making-a-video-essay-the-jacob-geller-method&#x2F;&quot;&gt;presentation on Nebula&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ambient-research&quot;&gt;Ambient Research&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ambient research&lt;&#x2F;strong&gt;: what you absorb from media you consume. It&#x27;s like picoré everywhere. When you find the idea, you have a encyclopedia in your head from which you can pull links to the subject.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Read people that write better than you, to improve your own writing.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;finding-ideas&quot;&gt;Finding Ideas&lt;&#x2F;h2&gt;
&lt;p&gt;Start from a detail, not a whole. This detail is the spark.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Why that moment triggered a reaction in me ?&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;For essays, also think about the question your essay is posing.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Because this is &lt;strong&gt;what brings people in.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I have a rule for myself which is, if I feel like I already have the answer to whatever question that I have posed, I as a viewer would not be interested in it, because I would think «I already know where this is going». I have to assume that&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;There should be some ambiguity about why it does make me feel the way that I do. Investigating that is hopefully where I find the rest of the essay.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Already at the beginning you should be formulating a title ? That is the core of the question you are asking.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;research-true&quot;&gt;Research (true)&lt;&#x2F;h2&gt;
&lt;p&gt;University skill → use research paper&#x27;s bibliography as a map to where I want to go with the essay.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;outlines-and-intros&quot;&gt;Outlines and Intros&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;outlines&quot;&gt;Outlines&lt;&#x2F;h3&gt;
&lt;p&gt;Useful as a writing tool to scope out the breadth of your essay. It is less of a strict guideline. See it as a creative limitation which is good.&lt;&#x2F;p&gt;
&lt;p&gt;Going on tangents is the enemy of good pacing.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;intro&quot;&gt;Intro&lt;&#x2F;h3&gt;
&lt;p&gt;Here Jacob mentions the attention span metric for YouTube Video as an indicator of if the intro is good or not.&lt;&#x2F;p&gt;
&lt;aside&gt;
&lt;p&gt;I wonder what good examples I can find in different media and ways to tell a story, of telling a smaller story that leads to the overarching one.&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;p&gt;Tell a smaller story that ends at the start of the larger essay. It&#x27;s a way to lead in the viewer&#x2F;reader&#x2F;player etc.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pull the viewer in with a short anecdote that proves I know how to tell a story [...] but it does not require them to buy into the entire premise of the essay.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;You need them to trust you, by giving them something right away.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;writing&quot;&gt;Writing&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Your own voice, who you are speaking as ? personal perspective or not ? For whome do you speak to ?&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Are you writing about something or about you experiencing that something ? Meaning, &lt;strong&gt;are you a part of the story ?&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Two perspectives are mentioned here:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;2000 m view, pure facts&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;your process getting to the 2000m view. How hard was it to find the information ?&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;who you are writing for ? do the people understand (technical writing) or not (layman) what you are writing about ? What&#x27;s the level of understanding ?&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Jacob:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] What I want to do generally is let the hardcore committed fans know that I know what depth there is, I know all the nuances that are potentially there on the topic, but try to talk about it without using the terminology that can become so obvious when you are in that community.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;The danger of excluding less knowledgable people. Sometimes you need to assume people are starting at level 0.&lt;&#x2F;p&gt;
&lt;p&gt;Think about:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;pacing (super important and the hardest to nail in video essays for Jacob)&lt;&#x2F;li&gt;
&lt;li&gt;tone&lt;&#x2F;li&gt;
&lt;li&gt;how it is going to be delivered ? This question is very relevant when it is not just text. Jacob mentions for his videos, the case where is he is filmed entirely, or when he is a talking head, or even a unseen narrator. All those cases and more are written differently.&lt;&#x2F;li&gt;
&lt;li&gt;how emotional you are able to get with your delivery ? Pivots to certain emotions ? This comes down to the viewer considering you as a person or not.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;My essays often end up being about their conclusions.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Use the conclusion to reframe the information stated in the essay, in a new perspective or context.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Make the end statement declarative in some way. [...] How do you want your essay to live on in your audience&#x27;s memory.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Reward those that read to the end.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;polishing&quot;&gt;Polishing&lt;&#x2F;h2&gt;
&lt;p&gt;Whever or not you plan on reading out loud your essay for the final delivery, Jacob states that you should try reading it out loud multiple times.&lt;&#x2F;p&gt;
&lt;p&gt;If you get out of breath in the middle of a sentence, then you should go back to it and improve it by cutting up, shorten it, transform it so that it is more fluid.&lt;&#x2F;p&gt;
&lt;p&gt;The polishing stage is also a good time to check if you have gone out of scope, if your idea got too big!&lt;&#x2F;p&gt;
&lt;p&gt;If you get bored in a section of your own sections&#x2F;paragraphes, etc, then it has to change or go. You are your best (and worst) critic.&lt;&#x2F;p&gt;
&lt;aside&gt;
&lt;p&gt;I&#x27;m starting to wonder if all of this could also be applied to RPG storytelling.&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;p&gt;You want your essay to pull you towards you next point.&lt;&#x2F;p&gt;
&lt;p&gt;Take a couple of days away from your essay after you have written it and return to it with new eyes.&lt;&#x2F;p&gt;
&lt;p&gt;Final stage for Jacob, what music is going to accompany the piece.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Music for me, is an incredibly important tool both telling the audience how to feel and, once again, figuring out how the essay is paced. Audiences can&#x27;t see paragraphs when you are reading them, and so that&#x27;s how I use music: I will use it to seperat different ideas.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Words tell people what to think, music tells them what to feel.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Finding the music is [...] helpful for me [to find out if I&#x27;m conveying the correct emotion].&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;preparing-for-video&quot;&gt;Preparing for Video&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;1st Challenge: Speaking out loud&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;It took Jacob year&#x27;s to learn to talk in a microphone.
Most helpful examples are from the world of radio.&lt;&#x2F;p&gt;
&lt;p&gt;Your voice can be a tool to make you found less monotonous.
Jacob finds himself sometimes exagerating his vocal tones, saying some things faster, some slower, some things more or less emotional.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;It&#x27;s a way to remind the audience that you are not a robot and the things they are watching are thoughts coming out of someone&#x27;s head.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;He records his voice while listening to the music that is going to play. He makes the full track with each music piece first. Then, while listening to this first music track, he records himself. The first track informs him of the emotions to convey.&lt;&#x2F;p&gt;
&lt;p&gt;For recording the images (in video games and whatnot), he uses the script as a shot list. When he describes something, he knows then to go and record that in the video game.&lt;&#x2F;p&gt;
&lt;p&gt;alternatively, ask someone who has record a let&#x27;s play. They are sometimes very gracious and let you take their footage.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;video-editing&quot;&gt;Video editing&lt;&#x2F;h2&gt;
&lt;p&gt;Jacob: it&#x27;s as hard as you want to make it. Then two examples of video editing timelines:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Hideo Kojima (very complexe and LAYERED)&lt;&#x2F;li&gt;
&lt;li&gt;Jacob Geller (2 audio tracks, 3 video tracks.)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Trick for editing: video should follow speech patterns. You finish a sentence, you finish a video clip at the same time, and change clips for a new sentence ?&lt;&#x2F;p&gt;
&lt;p&gt;Speaking rythm first, video second in terms of priority. Slow down the footage, take another longer footage if need be.&lt;&#x2F;p&gt;
&lt;p&gt;IMPORTANT: When words come on screen, we automatically start reading them. Be mindful your use of subtitles etc.&lt;&#x2F;p&gt;
&lt;p&gt;Sound quality is also much more important than video quality !!
&lt;em&gt;Music louder than voice, big NO NO&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The fundamental question you want to answer with editing is simply do you want the audience to notice it&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The fundamental question you want to answer with editing is simply do you want the audience to notice it. Do you want them to think of it as an edited video or not. [...] Remember that you are telling a story and whatever you do, it should further this goal.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Thumbnail + title work together to tell a story&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Terrific CGI</title>
        <published>2025-03-03T00:00:00+00:00</published>
        <updated>2025-03-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/terrific-cgi/"/>
        <id>https://tgm.happyngreen.fr/lists/terrific-cgi/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/terrific-cgi/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ambientcg.com&#x2F;&quot;&gt;AmbientCG&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;polyhaven.com&#x2F;&quot;&gt;Polyhaven&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;blender-addons&quot;&gt;Blender Addons&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blendermarket.com&#x2F;products&#x2F;bagapie-assets&quot;&gt;Baga Pie | Architecture &amp;amp; Vegetation, Rocks, Trees&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>CSS</title>
        <published>2025-02-28T00:00:00+00:00</published>
        <updated>2025-08-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/webdev/css/"/>
        <id>https://tgm.happyngreen.fr/wiki/webdev/css/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/webdev/css/">&lt;h2 id=&quot;cleanup-css&quot;&gt;Cleanup CSS&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;purgecss.com&#x2F;&quot;&gt;PurgeCSS - Remove unused CSS PurgeCSS&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;leeoniya&#x2F;dropcss&quot;&gt;leeoniyadropcss An exceptionally fast, thorough and tiny unused-CSS cleaner&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;uncss&#x2F;uncss&quot;&gt;uncss Remove unused styles from CSS&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;specific-stuff&quot;&gt;specific stuff&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;shkspr.mobi&#x2F;blog&#x2F;2024&#x2F;10&#x2F;you-can-use-text-wrap-balance-on-icons&#x2F;&quot;&gt;You can use text-wrap: balance; on icons&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;text-alignment&quot;&gt;Text Alignment&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;developer.mozilla.org&#x2F;en-US&#x2F;docs&#x2F;Web&#x2F;CSS&#x2F;vertical-align&quot;&gt;&lt;code&gt;vertical-align&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;animations&quot;&gt;Animations&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;developer.mozilla.org&#x2F;en-US&#x2F;docs&#x2F;Web&#x2F;API&#x2F;View_Transition_API&quot;&gt;view transitions&lt;&#x2F;a&gt;, via &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;shkspr.mobi&#x2F;blog&#x2F;2025&#x2F;10&#x2F;getting-started-with-simple-css-view-transitions&#x2F;&quot;&gt;Terence Eden&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;view-transitions.chrome.dev&#x2F;&quot;&gt;chrome dev demo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;demos.jquerymobile.com&#x2F;1.1.0&#x2F;docs&#x2F;pages&#x2F;page-transitions.html&quot;&gt;Old JQuery version&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>SingleLink #4</title>
        <published>2025-02-27T00:00:00+00:00</published>
        <updated>2025-02-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/singlelink-4/"/>
        <id>https://tgm.happyngreen.fr/blog/singlelink-4/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/singlelink-4/">&lt;p&gt;Hi there.&lt;&#x2F;p&gt;
&lt;p&gt;Today&#x27;s single link is :&lt;&#x2F;p&gt;
&lt;h1 id=&quot;kagi-small-web&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;smallweb&#x2F;&quot;&gt;Kagi Small Web&lt;&#x2F;a&gt;&lt;&#x2F;h1&gt;
&lt;p&gt;It&#x27;s an aggregator that serves a random page from the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ar.al&#x2F;2020&#x2F;08&#x2F;07&#x2F;what-is-the-small-web&#x2F;&quot;&gt;small&lt;&#x2F;a&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web0.small-web.org&#x2F;&quot;&gt;web&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;It enabled me to discover nice handwritten human curated information and content. While I&#x27;m unsure I would recommend the search engine Kagi (a paid product), I find this initiative nice.&lt;&#x2F;p&gt;
&lt;p&gt;There at least two others like it that I know of:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;marginalia-search.com&#x2F;&quot;&gt;marginalia search&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiby.org&#x2F;&quot;&gt;wiby.org&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;I&#x27;m thinking of making the &lt;strong&gt;singlelink&lt;&#x2F;strong&gt; into a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simonwillison.net&#x2F;2024&#x2F;Dec&#x2F;22&#x2F;link-blog&#x2F;#atom-everything&quot;&gt;link&lt;&#x2F;a&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;xuanwo.io&#x2F;links&#x2F;2025&#x2F;01&#x2F;link-blog&#x2F;&quot;&gt;blog&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>GLSL</title>
        <published>2025-02-27T00:00:00+00:00</published>
        <updated>2025-02-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/glsl/"/>
        <id>https://tgm.happyngreen.fr/wiki/glsl/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/glsl/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;danielchasehooper.com&#x2F;posts&#x2F;code-animated-rick&#x2F;&quot;&gt;Learn Shader Programming with Rick and Morty&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>git</title>
        <published>2025-02-27T00:00:00+00:00</published>
        <updated>2026-01-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/git/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/git/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/git/">&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ohshitgit.com&#x2F;&quot;&gt;Oh Shit, Git!?!&lt;&#x2F;a&gt; (&amp;amp;
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dangitgit.com&#x2F;en&quot;&gt;Dangit, Git!?!&lt;&#x2F;a&gt; for those that don&#x27;t like swear
words.)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gist.github.com&#x2F;bgauduch&#x2F;06a8c4ec2fec8fef6354afe94358c89e&quot;&gt;multiple-repository-and-identities-git-configuration.md&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;learning-git&quot;&gt;Learning &lt;code&gt;git&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;git-scm.com&#x2F;book&#x2F;en&#x2F;v2&quot;&gt;Pro Git&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jdsalaro.com&#x2F;tutorial&#x2F;git&#x2F;index.html&quot;&gt;Git for Beginners: Zero to Hero 🐙&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.endoflineblog.com&#x2F;gitflow-considered-harmful&quot;&gt;GitFlow considered harmful | End of Line Blog&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.endoflineblog.com&#x2F;oneflow-a-git-branching-model-and-workflow&quot;&gt;OneFlow – a Git branching model and workflow | End of Line Blog&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;10312521&#x2F;how-do-i-fetch-all-git-branches&quot;&gt;branch - How do I fetch all Git branches? - Stack Overflow&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;git-checkout&quot;&gt;&lt;code&gt;git checkout&lt;&#x2F;code&gt;&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;57265785&#x2F;whats-the-difference-between-git-switch-and-git-checkout-branch&#x2F;57266005#57266005&quot;&gt;stackoverflow&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;setup-upstream-and-merge-with-fork-main&quot;&gt;Setup upstream and merge with fork&#x2F;main&lt;&#x2F;h3&gt;
&lt;p&gt;When you make a fork, you might want to track and merge commits from the
upstream repo into your fork&#x27;s main branch. To do so:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # add the upstream&#x2F;main as remote upstream&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; add remote upstream git@the_repo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # fetch upstream&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; fetch upstream&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # merge upstream into main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; merge upstream&#x2F;main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # resolve conflicts&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # then push to your own origin&#x2F;main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; push origin main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;rebase-and-squash&quot;&gt;Rebase and squash&lt;&#x2F;h3&gt;
&lt;p&gt;If you are using a forked repo, don&#x27;t forget to &lt;a href=&quot;#&quot;&gt;update to latest upstream&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# After updating your main branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# use the interactive rebase command&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This opens a todo file for the rebase in progress, in your &lt;code&gt;EDITOR&lt;&#x2F;code&gt;. You then
have to &lt;code&gt;pick&lt;&#x2F;code&gt; the first commit into which you want to squash the other commits.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;add&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; af32ff1b12a1096f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt; #your commit message&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;add&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; 88d6c9bb26ffb381&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt; #your second commit message&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# ...&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The file usually has instructions at the bottom on keywords and the associated
action.&lt;&#x2F;p&gt;
&lt;p&gt;You can &lt;code&gt;pick&lt;&#x2F;code&gt; the commit into which you will &lt;code&gt;squash&lt;&#x2F;code&gt; the other commits.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;pick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; af32ff1b12a1096f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt; #your commit message&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;squash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; 88d6c9bb26ffb381&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt; #your second commit message&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# ...&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Commit messages are then added in order, and can be interactively&lt;&#x2F;p&gt;
&lt;p&gt;Commits can be renamed with &lt;code&gt;edit&lt;&#x2F;code&gt; or after the rebase has been finishe, with:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --amend&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;branching-and-merging-how-to-change-current-branch-in-git-from-master-to-main-stack-overflow&quot;&gt;branching and merging - How to change current branch in git from master to main - Stack Overflow&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;rename your local branch:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; master main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;change the tracked branch&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; fetch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; origin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; origin&#x2F;master main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;change the main local branch&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; remote set-head origin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -a&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;optionally, remove the master branch, local and remotely:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -D&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; push origin :master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;drop-commit&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;1338728&#x2F;how-do-i-delete-a-commit-from-a-branch#1338744&quot;&gt;Drop commit&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Careful:&lt;&#x2F;strong&gt; &lt;code&gt;git reset --hard&lt;&#x2F;code&gt; &lt;strong&gt;WILL DELETE YOUR WORKING DIRECTORY CHANGES&lt;&#x2F;strong&gt;.
Be sure to &lt;strong&gt;stash any local changes you want to keep&lt;&#x2F;strong&gt; before running this
command.&lt;&#x2F;p&gt;
&lt;p&gt;Assuming you are sitting on that commit, then this command will wack it...&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --hard&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; HEAD~1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The &lt;code&gt;HEAD~1&lt;&#x2F;code&gt; means the commit before head.&lt;&#x2F;p&gt;
&lt;p&gt;Or, you could look at the output of &lt;code&gt;git log&lt;&#x2F;code&gt;, find the commit id of the commit
you want to back up to, and then do this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --hard&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;sha1-commit-i&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;If you already pushed it, you will need to do a force push to get rid of it...&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; push origin HEAD&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --force&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;However&lt;&#x2F;strong&gt;, if others may have pulled it, then you would be better off starting
a new branch. Because when they pull, it will just merge it into their work, and
you will get it pushed back up again.&lt;&#x2F;p&gt;
&lt;p&gt;If you already pushed, it may be better to use &lt;code&gt;git revert&lt;&#x2F;code&gt;, to create a &quot;mirror
image&quot; commit that will undo the changes. However, both commits will be in the
log.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;FYI: &lt;code&gt;git reset --hard HEAD&lt;&#x2F;code&gt; is great if you want to get rid of WORK IN
PROGRESS.It will reset you back to the most recent commit, and erase all the
changes in your working tree and index.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;git stash&lt;&#x2F;code&gt; does the same except you can restore it later if you need&lt;&#x2F;strong&gt;,
versus permanently delete with reset hard mode. Check your stashes by using
&lt;code&gt;git stash list&lt;&#x2F;code&gt; and &lt;code&gt;git stash show &#x27;stash@123&#x27;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Lastly, if you need to find a commit that you &quot;deleted&quot;, it is typically present
in &lt;code&gt;git reflog&lt;&#x2F;code&gt; unless you have garbage collected your repository.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;git-branch-management-and-history-cleanup-guide&quot;&gt;Git Branch Management and History Cleanup Guide&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h3&gt;
&lt;p&gt;This guide covers common Git workflows for managing branches, cleaning up commit
history, and preparing branches for pull requests. These techniques help
maintain clean, organized version control history.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;separating-mixed-commits-into-different-branches&quot;&gt;Separating Mixed Commits into Different Branches&lt;&#x2F;h3&gt;
&lt;p&gt;When you have a single branch containing commits for multiple problems that
should be separated:&lt;&#x2F;p&gt;
&lt;h4 id=&quot;method-1-interactive-rebase-recommended&quot;&gt;Method 1: Interactive Rebase (Recommended)&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Create new branches from your mixed branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout your-mixed-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; problem-1-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; problem-2-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Use interactive rebase to filter commits for each branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout problem-1-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; HEAD~n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # where n is the number of commits to review&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Delete lines for commits that belong to problem 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout problem-2-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; HEAD~n&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Delete lines for commits that belong to problem 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;method-2-cherry-picking&quot;&gt;Method 2: Cherry-picking&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Create clean branches from before mixed work&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit-before-mixed-wor&lt;&#x2F;span&gt;&lt;span&gt;k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; problem-1-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; problem-2-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Cherry-pick relevant commits to each branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout problem-1-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; cherry-pick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit-hash-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;1&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit-hash-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;3&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout problem-2-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; cherry-pick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit-hash-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;2&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit-hash-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;4&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;resetting-master-branch-to-origin&quot;&gt;Resetting Master Branch to Origin&lt;&#x2F;h3&gt;
&lt;p&gt;When your local master branch has unwanted commits:&lt;&#x2F;p&gt;
&lt;h4 id=&quot;basic-reset-process&quot;&gt;Basic Reset Process&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Backup current state (safety first)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; branch backup-master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Fetch latest from origin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; fetch origin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Reset to match origin&#x2F;master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --hard&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; origin&#x2F;master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Verify the reset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; status&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --oneline -10&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;if-origin-also-has-bad-commits&quot;&gt;If Origin Also Has Bad Commits&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Find the last good commit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --oneline&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Reset to that specific commit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --hard&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;good-commit-has&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Force push to update origin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; push origin master&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --force-with-lease&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;selective-commit-squashing&quot;&gt;Selective Commit Squashing&lt;&#x2F;h3&gt;
&lt;p&gt;Use interactive rebase to selectively squash commits while ignoring others:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Start interactive rebase&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; HEAD~n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # or git rebase -i &amp;lt;commit-hash&amp;gt;^&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;available-commands-in-interactive-rebase&quot;&gt;Available Commands in Interactive Rebase&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;pick&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; - Keep the commit as-is (ignore&#x2F;don&#x27;t touch)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;squash&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; or &lt;strong&gt;&lt;code&gt;s&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; - Squash this commit into the previous one&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;fixup&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; or &lt;strong&gt;&lt;code&gt;f&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; - Like squash, but discard this commit&#x27;s message&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;drop&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; or &lt;strong&gt;&lt;code&gt;d&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; - Completely remove this commit&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;edit&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; - Pause to modify this commit&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;example-selective-squashing&quot;&gt;Example: Selective Squashing&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pick abc1234 Commit message 1      # keep as-is&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pick def5678 Commit message 2      # this will be the base&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;squash ghi9012 Commit message 3    # squash into commit 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pick jkl3456 Commit message 4      # keep as-is&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pick mno7890 Commit message 5      # keep as-is&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;alternative-cherry-pick-with-squashing&quot;&gt;Alternative: Cherry-pick with Squashing&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Create new branch from clean point&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; cleaned-branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;base-commi&lt;&#x2F;span&gt;&lt;span&gt;t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Cherry-pick and combine commits&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; cherry-pick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;1&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; cherry-pick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --no-commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;2&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # stages without committing&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; cherry-pick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --no-commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;3&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;  # stages without committing&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;Combined commit message&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Cherry-pick other commits normally&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; cherry-pick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;4&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;rebasing-branch-on-updated-master&quot;&gt;Rebasing Branch on Updated Master&lt;&#x2F;h3&gt;
&lt;p&gt;Before creating a pull request, rebase your feature branch on the latest master:&lt;&#x2F;p&gt;
&lt;h4 id=&quot;standard-rebase-workflow&quot;&gt;Standard Rebase Workflow&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Update master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pull origin master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Switch to feature branch and rebase&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; checkout your-feature-branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rebase master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Force push the rebased branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; push origin your-feature-branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --force-with-lease&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;handling-rebase-conflicts&quot;&gt;Handling Rebase Conflicts&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# When conflicts occur during rebase:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# 1. Fix conflicts in your editor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# 2. Stage the resolved files&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; add .&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# 3. Continue the rebase&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --continue&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# If you need to abort the rebase&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --abort&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;interactive-rebase-for-cleanup&quot;&gt;Interactive Rebase for Cleanup&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Rebase with ability to modify commits&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; master&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;best-practices&quot;&gt;Best Practices&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Always backup before destructive operations&lt;&#x2F;strong&gt;: Create backup branches
before using &lt;code&gt;reset --hard&lt;&#x2F;code&gt; or force pushing&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Use &lt;code&gt;--force-with-lease&lt;&#x2F;code&gt; instead of &lt;code&gt;--force&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;: Safer when force pushing
as it won&#x27;t overwrite others&#x27; changes&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Keep commits focused&lt;&#x2F;strong&gt;: Each commit should represent a single logical
change&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Rebase before creating PRs&lt;&#x2F;strong&gt;: Ensures clean, linear history on top of
latest master&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Test after rebasing&lt;&#x2F;strong&gt;: Verify that your changes still work correctly after
rebase operations&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h3 id=&quot;safety-notes&quot;&gt;Safety Notes&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Interactive rebase and force pushing rewrite Git history&lt;&#x2F;li&gt;
&lt;li&gt;Always coordinate with team members before force pushing to shared branches&lt;&#x2F;li&gt;
&lt;li&gt;Use backup branches when performing complex history modifications&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;--force-with-lease&lt;&#x2F;code&gt; is safer than &lt;code&gt;--force&lt;&#x2F;code&gt; for force pushing&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;git-pull-skipped-cherry-pick-commits&quot;&gt;Git Pull: Skipped Cherry-Pick Commits&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;issue-description&quot;&gt;Issue Description&lt;&#x2F;h3&gt;
&lt;p&gt;When executing &lt;code&gt;git pull&lt;&#x2F;code&gt;, users may encounter a warning message about skipped
commits that were previously applied through cherry-picking operations.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;example-output&quot;&gt;Example Output&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;git pull&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;warning: skipped previously applied commit 3a5eaa6&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;hint: use --reapply-cherry-picks to include skipped commits&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;hint: Disable this message with &amp;quot;git config set advice.skippedCherryPicks false&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Successfully rebased and updated refs&#x2F;heads&#x2F;fix_url_parsing.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;explanation&quot;&gt;Explanation&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;warning-message&quot;&gt;Warning Message&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&quot;warning: skipped previously applied commit [hash]&quot;&lt;&#x2F;strong&gt;: Git detected a commit
that had already been applied to the current branch and automatically skipped
it to prevent duplication&lt;&#x2F;li&gt;
&lt;li&gt;This commonly occurs when commits have been cherry-picked from other branches&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;hints-provided&quot;&gt;Hints Provided&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--reapply-cherry-picks&lt;&#x2F;code&gt; flag&lt;&#x2F;strong&gt;: Optional parameter to force reapplication
of skipped commits (rarely needed)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Configuration option&lt;&#x2F;strong&gt;: &lt;code&gt;git config set advice.skippedCherryPicks false&lt;&#x2F;code&gt; to
disable this specific warning message&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;success-confirmation&quot;&gt;Success Confirmation&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&quot;Successfully rebased and updated refs&#x2F;heads&#x2F;[branch-name]&quot;&lt;&#x2F;strong&gt;: Indicates the
pull operation completed successfully using a rebase strategy&lt;&#x2F;li&gt;
&lt;li&gt;The branch has been updated with the latest changes from the remote repository&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;resolution&quot;&gt;Resolution&lt;&#x2F;h3&gt;
&lt;p&gt;This warning is &lt;strong&gt;normal behavior&lt;&#x2F;strong&gt; and indicates successful operation. No
action is required unless you specifically need to reapply the skipped commits.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;related-commands&quot;&gt;Related Commands&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git pull --reapply-cherry-picks&lt;&#x2F;code&gt;: Force reapplication of previously
cherry-picked commits&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;git config set advice.skippedCherryPicks false&lt;&#x2F;code&gt;: Disable the warning message
permanently.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;git-diff&quot;&gt;git diff&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;diff-latest-vs-last-commit&quot;&gt;Diff latest vs last commit&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;As the previous commit can be accessed with HEAD^, I think that you are
looking for something like:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; diff HEAD^ HEAD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;That also can be applied for a :commithash&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; diff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; $commithash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;^&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; $commithash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;As of Git 1.8.5, &lt;code&gt;@&lt;&#x2F;code&gt; is an alias for &lt;code&gt;HEAD&lt;&#x2F;code&gt;, so you can use:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; diff @~..@&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The following will also work:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; show&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you want to know the diff between head and any commit you can use:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; diff commit_id HEAD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;And this will launch your visual diff tool (if configured):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; difftool HEAD^ HEAD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Since comparison to HEAD is default you can omit it (as pointed out by
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;a&#x2F;26771459&#x2F;5124673&quot;&gt;Orient&lt;&#x2F;a&gt;):&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; diff @^&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; diff HEAD^&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; diff commit_id&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;warnings&quot;&gt;Warnings&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;@ScottF and @Panzercrisis explain in the comments that on Windows the &lt;code&gt;~&lt;&#x2F;code&gt;
character must be used instead of &lt;code&gt;^&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Source:
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;9903541&#x2F;finding-diff-between-current-and-last-version&quot;&gt;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;9903541&#x2F;finding-diff-between-current-and-last-version&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;gitignore-exclude-specific-file&quot;&gt;.gitignore exclude specific file&lt;&#x2F;h3&gt;
&lt;p&gt;First, set that file&#x27;s path in the &lt;code&gt;.gitignore&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;path&#x2F;to&#x2F;file.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then exclude the file from the repo.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;If you want to to keep that file locally, use&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  git rm --cached path&#x2F;to&#x2F;file.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Else just use the regular &lt;code&gt;git rm&lt;&#x2F;code&gt; cmd.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Source: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;30227858&#x2F;gitignore-exclude-specific-file&quot;&gt;StackOverflow&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Markup Systems</title>
        <published>2025-02-25T00:00:00+00:00</published>
        <updated>2025-02-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/markup-system/"/>
        <id>https://tgm.happyngreen.fr/wiki/markup-system/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/markup-system/">&lt;h2 id=&quot;scribble&quot;&gt;Scribble&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Scribble is a collection of tools for creating prose documents—papers, books, library documentation, etc.—in HTML or PDF (via Latex) form. More generally, Scribble helps you write programs that are rich in textual content, whether the content is prose to be typeset or any other form of text to be generated programmatically.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;It is a markup language integrated or at least adjacent to Racket, a lisp dialect.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;scribble&#x2F;&quot;&gt;Scribble&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;nota&quot;&gt;Nota&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Nota is a language for writing documents, like academic papers and blog posts. The goal of Nota is to bring documents into the 21st century.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nota-lang.org&#x2F;&quot;&gt;Nota&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;aside&gt;
&lt;p&gt;Bot &lt;strong&gt;Nota&lt;&#x2F;strong&gt; and &lt;strong&gt;Bene&lt;&#x2F;strong&gt; are authored by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;willcrichton.net&#x2F;&quot;&gt;Will P.L. Crichton&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;h2 id=&quot;bene&quot;&gt;Bene&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Bene is a reading system for documents written in the EPUB file format.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;nota-lang&#x2F;bene&#x2F;&quot;&gt;Bene - Github&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;willcrichton.net&#x2F;notes&#x2F;portable-epubs&#x2F;&quot;&gt;Portable-Epubs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;typst&quot;&gt;Typst&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;a new open-source typesetting software that aims to effectively replace LaTeX in its niche and also bring a modern, free tool to a broader set of use cases.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;typst.app&quot;&gt;Typst.app&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;typst&#x2F;typst&quot;&gt;Typst - Github&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;what-people-are-saying-about-typst&quot;&gt;What people are saying about Typst&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;imaginarytext.ca&#x2F;posts&#x2F;2024&#x2F;pandoc-typst-tutorial&#x2F;&quot;&gt;Using Pandoc and Typst to Produce PDFs - imaginarytext.ca&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;imaginarytext.ca&#x2F;posts&#x2F;2024&#x2F;more-typst&#x2F;&quot;&gt;More on Typst - imaginarytext.ca&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>fclones</title>
        <published>2025-02-24T00:00:00+00:00</published>
        <updated>2025-02-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/fclones/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/fclones/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/fclones/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pkolaczk&#x2F;fclones&quot;&gt;Github&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; fclones&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;find-duplicates&quot;&gt;Find duplicates&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  fclones&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; group .&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; dupes.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;remove-duplicates&quot;&gt;Remove duplicates&lt;&#x2F;h3&gt;
&lt;p&gt;Don&#x27;t forget to review the &lt;code&gt;dupes.txt&lt;&#x2F;code&gt; BEFORE making any changes.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  fclones&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; remove&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; dupes.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>NOTES while going through DCIC</title>
        <published>2025-02-24T00:00:00+00:00</published>
        <updated>2025-03-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/notes-dcic/"/>
        <id>https://tgm.happyngreen.fr/wiki/notes-dcic/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/notes-dcic/">&lt;p&gt;&lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dcic-world.org&#x2F;&quot;&gt;A Data-Centric Introduction to Computing&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;1-2-intro&quot;&gt;1. → 2. Intro&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;values&quot;&gt;Values&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;Software is made to run and be maintenained and read by others.&lt;&#x2F;li&gt;
&lt;li&gt;Programmers are responsible for their software.&lt;&#x2F;li&gt;
&lt;li&gt;Programms should be predictable in what they do.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;&lt;strong&gt;Performance, reliability and predictability&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;perspective-on-data&quot;&gt;Perspective on data&lt;&#x2F;h1&gt;
&lt;ul&gt;
&lt;li&gt;data-driven programming (same as &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=WwkuAqObplU&quot;&gt;data-oriented game dev --&amp;gt; Nic Barker&lt;&#x2F;a&gt;?)&lt;&#x2F;li&gt;
&lt;li&gt;real data makes more sense for learners&lt;&#x2F;li&gt;
&lt;li&gt;data science is limited by data, and computer science start after thos limitations&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In particular, the structure of data serve as a point of departure for thinking about and achieving some of the values above—performance, reliability, and predictability—using the many tools of computer science.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;data-centric curriculum&lt;&#x2F;strong&gt; as :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;data centric = data science + data structures&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;In the order of :&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;ideas from data science&lt;&#x2F;li&gt;
&lt;li&gt;classical ideas from data structures&lt;&#x2F;li&gt;
&lt;li&gt;the rest from computer science&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;&lt;strong&gt;notional machines&lt;&#x2F;strong&gt;: abstractions of program behavior meant to help students understand how programs work&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] programs are not only objects that run, but also objects that we reason about.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;socially-responsible computing&lt;&#x2F;p&gt;
&lt;h1 id=&quot;3-1-getting-started&quot;&gt;3.1 Getting Started&lt;&#x2F;h1&gt;
&lt;p&gt;flag observations:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;they are horizontal rectangles&lt;&#x2F;li&gt;
&lt;li&gt;there are between 2 and 5 colors&lt;&#x2F;li&gt;
&lt;li&gt;there are strips, circles and rarely, more complexe images.&lt;&#x2F;li&gt;
&lt;li&gt;sometimes there is only one type of decoration, some have both.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;questions about flags and how to make them:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;how does I draw them on screen ?&lt;&#x2F;li&gt;
&lt;li&gt;how can I store the data for easy replication&lt;&#x2F;li&gt;
&lt;li&gt;are there sometimes other shapes ? Why is it just rectangles ?&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;questions i MIGHT have about the flag problem :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Do I need to be able to draw these images by hand?&lt;&#x2F;p&gt;
&lt;p&gt;Will we be able to generate different sized flags from the same code?&lt;&#x2F;p&gt;
&lt;p&gt;What if we have a non-rectangular flag?&lt;&#x2F;p&gt;
&lt;p&gt;We might want to compute the heights of the stripes from the overall flag dimensions (we’ll write programs using numbers)&lt;&#x2F;p&gt;
&lt;p&gt;We need a way to describe colors to our program (we’ll learn strings)&lt;&#x2F;p&gt;
&lt;p&gt;We need a way to creat&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;3-1-2-numbers&quot;&gt;3.1.2 Numbers&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;A software or web-application in which you write and run programs is called a &lt;strong&gt;programming environment&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;We will use the term &lt;em&gt;expression&lt;&#x2F;em&gt; to refer a computation written in a format that Pyret can understand and evaluate to an answer.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Expression: a computation written in the formal notation of a programming language
Value: an expression that can’t be computed further (it is its own result)
Program: a sequence of expressions that you want to run&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note: a literal is a value stated in the program itself. It has not bee computed.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;functions-and-expression-composing&quot;&gt;functions and expression composing&lt;&#x2F;h3&gt;
&lt;p&gt;3.1.6.1&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;“functions” is the term more commonly used in computing, whereas your math classes likely used “operations”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Every function produces a value, which can be used as input to another function. We build up expressions by using values and the outputs of functions as inputs to other functions.
This idea of using the output of one function as input to another is known as &lt;strong&gt;composition&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;types-and-contracts&quot;&gt;Types and Contracts&lt;&#x2F;h3&gt;
&lt;p&gt;3.1.7.1&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;In programming, values are organized into &lt;strong&gt;types&lt;&#x2F;strong&gt; (e.g., number, string, image). These &lt;strong&gt;types&lt;&#x2F;strong&gt; are used in turn to describe what kind of inputs and results (a.k.a., outputs) a function works with.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;the term &lt;em&gt;contract&lt;&#x2F;em&gt; refers to the required types of inputs and promised types of outputs when using a specific function.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Whenever you compose smaller expressions into more complex expressions, the types produced by the smaller expressions have to match the types required by the function you are using to compose them.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;A contract also summarizes how many inputs a function expects.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;types-of-errors-in-programming&quot;&gt;Types of errors in programming&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;type error&lt;&#x2F;li&gt;
&lt;li&gt;input error&lt;&#x2F;li&gt;
&lt;li&gt;syntax &lt;del&gt;punctuation&lt;&#x2F;del&gt; error&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In programming, we use the term syntax to refer to the rules of writing proper expressions (we explicitly didn’t say “rules of punctuation” because the rules go beyond what you think of as punctuation, but that’s a fair place to start).&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;3.1.7.2&lt;&#x2F;p&gt;
&lt;p&gt;&quot;evaluated&quot; errors, for type errors or incorrect number of inputs.&lt;&#x2F;p&gt;
&lt;p&gt;space around operators
close parentheses
space after comma
quotes around strings&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Every programming language comes with documentation, which is where you find out the various operations and functions that are available, and your options for configuring their parameters.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h1 id=&quot;3-2-naming-values&quot;&gt;3.2 Naming Values&lt;&#x2F;h1&gt;
&lt;p&gt;unkown words at this point when typing puppy :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;unbound&lt;&#x2F;li&gt;
&lt;li&gt;not previously defined&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;“unbound identifier” when an expression contains a name that has not been associated with (or bound to) a value.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;So far, we&#x27;ve seen &lt;strong&gt;words&lt;&#x2F;strong&gt; used for :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;data within strings&lt;&#x2F;li&gt;
&lt;li&gt;names for values (also called &lt;strong&gt;identifiers&lt;&#x2F;strong&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Main differences:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;string&quot; vs name&lt;&#x2F;li&gt;
&lt;li&gt;string contain spaces, names cannot&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Expressions vs Statements&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Definitions and expressions are two useful aspects of programs, each with their own role. Definitions tell Pyret to associate names with values. Expressions tell Pyret to perform a computation and return the result.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;In programming, we distinguish &lt;em&gt;expressions&lt;&#x2F;em&gt;, which yield values, from &lt;em&gt;statements&lt;&#x2F;em&gt;, which don’t yield values but instead give some other kind of instruction to the language. So far, definitions are the only kinds of statements we’ve seen.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The program directory is an essential part of how programs evaluate.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;em&gt;Might need to delete later, if substitution is defined&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;How does Pyret evaluate (width * 3)? Since width is a word (not a string), Pyret looks up its value in the directory. Pyret substitutes that value for the name in the expression, resulting in 30 * 3, which then evaluates to 90. After running these two expressions, the directory looks like:&lt;&#x2F;p&gt;
&lt;p&gt;Directory&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;width →  30&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;height →  90&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Note that the entry for height in the directory has the result of width * 3, not the expression. This will become important as we use named values to prevent us from doing the same computation more than once.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;In practice, programmers don’t name every individual image or expression result when creating more complex expressions. They name ones that will get used more than once, or ones that have particular significance for understanding their program. We’ll have more to say about naming as our programs get more complicated.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;3-3-from-repeated-expressions-to-functions&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dcic-world.org&#x2F;2025-02-09&#x2F;From_Repeated_Expressions_to_Functions.html&quot;&gt;3.3 From Repeated Expressions to Functions&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;To make this program work, then, we need the ability to add &lt;strong&gt;our own operators&lt;&#x2F;strong&gt; (henceforth called &lt;strong&gt;functions&lt;&#x2F;strong&gt;) to Pyret.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;functions&quot;&gt;Functions&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;In programming, a function takes one or more (configuration) parameters and uses them to produce a result.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Strategy: Creating Functions From Expressions&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Write down at least two expressions showing the desired computation.&lt;&#x2F;li&gt;
&lt;li&gt;Identify wich part is fixed and which is changing.&lt;&#x2F;li&gt;
&lt;li&gt;For each changing part, give it a name, which will be the parameter that stands for that part.&lt;&#x2F;li&gt;
&lt;li&gt;Rewrite the examples to be in terms of these parameters.&lt;&#x2F;li&gt;
&lt;li&gt;Name the function something suggestive.&lt;&#x2F;li&gt;
&lt;li&gt;Write the syntax for functions around the expression where the expression is called the body of the function.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;em&gt;Programmers often use angle brackets to say “replace with something appropriate”; the brackets themselves aren’t part of the notation.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;When we provide values for the parameters of a function to get a result, we say that we are &lt;em&gt;calling&lt;&#x2F;em&gt; the function. We use the term &lt;em&gt;call&lt;&#x2F;em&gt; for expressions of this form.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Substitution restores that expression, while still allowing the programmer to write the shorthand (func name).&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;annotating the parameters with information about the expected type of value for each parameter.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; fun three-stripe-flag(top :: String,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      middle :: String,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      bottom :: String):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  frame(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    above(rectangle(120, 30, &amp;quot;solid&amp;quot;, top),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      above(rectangle(120, 30, &amp;quot;solid&amp;quot;, middle),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        rectangle(120, 30, &amp;quot;solid&amp;quot;, bottom))))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;em&gt;Is this setting a type ?&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is also common practice to add a &lt;strong&gt;type annotation&lt;&#x2F;strong&gt; that captures the type of the function’s output. That annotation goes after the list of parameters:&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Note that all of these type annotations are optional. Pyret will run your program whether or not you include them. You can put type annotations on some parameters and not others; you can include the output type but not any of the parameter types. Different programming languages have different rules about types.&lt;&#x2F;p&gt;
&lt;p&gt;We will think of types as playing two roles: giving Pyret information that it can use to focus error messages more accurately, and guiding human readers of programs as to the proper use of user-defined functions.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Programmers also annotate a function with a docstring, a short, human-language description of what the function does.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Python has docstrigs, java has javadoc, go has godoc, etc.&lt;&#x2F;p&gt;
&lt;p&gt;the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Don%27t_repeat_yourself&quot;&gt;DRY principle&lt;&#x2F;a&gt;, where DRY means &quot;don’t repeat yourself&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;Writing good code annotation is hard. Try to be as concise and straight to the point as possible.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;In each of the functions above, we’ve started with some examples of what we wanted to compute, generalized from there to a generic formula, turned this into a function, and then used the function in place of the original expressions.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Keep examples to use as tests.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Software Evolves. Over time, any program that has any use will change and grow, and as a result may end up producing different values than it did initially.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Therefore, it’s always useful to keep those examples around for future reference, so you can immediately be alerted if the function deviates from the examples it was supposed to generalize.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;In fact, this is so valuable in professional software development that good programmers always write down large collections of examples—called tests—to make sure their programs are behaving as they expect.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;For our purposes, we are writing examples as part of the process of making sure we understand the problem. It’s always a good idea to make sure you understand the question before you start writing code to solve a problem. Examples are a nice intermediate point: you can sketch out the relevant computation on concrete values first, then worry about turning it into a function. &lt;mark&gt;If you can’t write the examples, chances are you won’t be able to write the function either.&lt;&#x2F;mark&gt; Examples break down the programming process into smaller, manageable steps&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;we also want to include special yet valid cases that the function might have to handle, such as an empty message.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Always create the test first with your expected returned values, before running the function itself. Don&#x27;t use the function to provide the returned values, as this might poison your tests with erroneous examples, if you borked the function.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;3-4-conditionals-and-booleans&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dcic-world.org&#x2F;2025-02-09&#x2F;Conditionals_and_Booleans.html&quot;&gt;3.4 Conditionals and Booleans&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;when choosing examples, use edge cases to fine-tune tests;&lt;&#x2F;p&gt;
&lt;p&gt;proposed examples from the course follow this strategy: define the boundary, just over the boundary, both natural and real(decimal) numbers &lt;em&gt;floats and ints&lt;&#x2F;em&gt;, and use both types of static value that is being used in the computation.&lt;&#x2F;p&gt;
&lt;p&gt;add-shipping expression is different from other functions used so far in that there are two computed values that appear only inside the function, and change based on the input value.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;This calls for being able to ask questions about inputs within our programs.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;conditionals-computations-with-decisions&quot;&gt;Conditionals: Computations with Decisions&lt;&#x2F;h3&gt;
&lt;p&gt;new expression: if expression (or statement) that can ask a questions that produce true or false (Booleans).&lt;&#x2F;p&gt;
&lt;p&gt;else marks the false case(in the example)&lt;&#x2F;p&gt;
&lt;p&gt;end instructs pyret that we&#x27;re stopping the interrogation&lt;&#x2F;p&gt;
&lt;h3 id=&quot;booleans&quot;&gt;Booleans&lt;&#x2F;h3&gt;
&lt;p&gt;The values true and false&lt;&#x2F;p&gt;
&lt;p&gt;names after George Boole&lt;&#x2F;p&gt;
&lt;p&gt;Many built-in functions return boolean&lt;&#x2F;p&gt;
&lt;p&gt;x == x&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;==&lt;&#x2F;code&gt; check if two values are equal&lt;&#x2F;p&gt;
&lt;p&gt;Strings are case-sensitive!
Compare strings to determine their alphabetical order → this means that &lt;code&gt;a&lt;&#x2F;code&gt; comes before &lt;code&gt;b&lt;&#x2F;code&gt;, thus &lt;code&gt;a &amp;lt; b&lt;&#x2F;code&gt;; &lt;code&gt;a&lt;&#x2F;code&gt; is &quot;smaller than &lt;code&gt;b&lt;&#x2F;code&gt;&quot;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;alphabetical order = ascending order&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;With strings, keep in mind of ASCII and what&#x27;s outside of ASCII. → &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.lexiconista.com&#x2F;falsehoods-about-languages&#x2F;&quot;&gt;Falsehoods programmers believe about languages&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Notably, ordering depends on location (geography).&lt;&#x2F;p&gt;
&lt;p&gt;In general, you can compare almost any two values for equality.&lt;&#x2F;p&gt;
&lt;p&gt;There are specific operator to compare values of a specific kind (or type?)
Those operators are only accept the type, and only the type. It returns a useful error because it does &lt;del&gt;type-checking(?)&lt;&#x2F;del&gt; not work on another type. Free debugging!!&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Then, Pyret will signal an error if you go wrong, instead of blindly returning an answer (false) which lets your program continue to compute a nonsensical value.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;In fact, just about every kind of data will have some Boolean-valued operators to enable comparisons.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;combining-booleans&quot;&gt;Combining Booleans&lt;&#x2F;h2&gt;
&lt;p&gt;Make decisions on more than one boolean.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pyret offers three main operations: &lt;code&gt;and&lt;&#x2F;code&gt;, &lt;code&gt;or&lt;&#x2F;code&gt;, and &lt;code&gt;not&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Explain why numbers and strings are not good ways to express the answer to a true&#x2F;false question.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;del&gt;well, I&#x27;m guessing its something to do with how operators determines if something is true or false?&lt;&#x2F;del&gt; I believe that numbers or strings don&#x27;t necessarily describe the complexity of the question? Or maybe they might not have any relation to the question and thus are not easily understandable?&lt;&#x2F;p&gt;
&lt;p&gt;Asking multiple questions&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;else if&lt;&#x2F;code&gt; → evaluates each question expression in &lt;strong&gt;order&lt;&#x2F;strong&gt;, until it returns the result in case the answer that returns true.&lt;&#x2F;p&gt;
&lt;p&gt;In the exercise, there is a implicit &lt;code&gt;between&lt;&#x2F;code&gt; expression: &lt;code&gt;(x &amp;gt;= 30)&lt;&#x2F;code&gt; after a if statement for &lt;code&gt;(x &amp;lt;= 10)&lt;&#x2F;code&gt;
but there is also the &lt;code&gt;if (x &amp;gt; 10) and (x &amp;lt;= 30)&lt;&#x2F;code&gt; to explicit the &lt;code&gt;between 10 and 30&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The second option improves readability, especially for future readers. It makes the if statement error proof against an earlier question that would be erroneous, since we are evaluating a specific range. It would also hold up much better in case of modifications of the earlier statement too.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Exercise&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;fun show-ad(haircolor :: String, age :: Number) -&amp;gt; Boolean:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  doc: &amp;quot;show an ad if the haircolor is pink&#x2F;purple and the age is between 9-18&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  if ((haircolor == &amp;quot;pink&amp;quot;) or (haircolor == &amp;quot;purple&amp;quot;)) and ((age &amp;gt;= 9) and (age &amp;lt;= 18)):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  else:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;where: &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  show-ad(&amp;quot;purple&amp;quot;,9) is true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  show-ad(&amp;quot;purple&amp;quot;,18) is true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  show-ad(&amp;quot;purple&amp;quot;,7) is false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  show-ad(&amp;quot;green&amp;quot;,9) is false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  show-ad(&amp;quot;pink&amp;quot;,18) is true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  show-ad(&amp;quot;pink&amp;quot;,19) is false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;end  &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Responsible&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Assumptions about users get encoded in even the simplest functions.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;What data about individuals should be used to represent them for processing by programs and what stereotypes might those data encode. [...] Decisions based on those predictions can be inaccurate and hence harmful.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;function-composition&quot;&gt;Function Composition&lt;&#x2F;h2&gt;
&lt;p&gt;two examples:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;fun1(fun2 (arg), arg)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;and&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;output_fun2 = fun2(arg) &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;fun1(output_fun2, arg)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The second option commits the &lt;code&gt;output_fun2&lt;&#x2F;code&gt; to &quot;memory&quot; as an extra step and is more verbose, while the first option directly substitutes the &lt;code&gt;fun2&lt;&#x2F;code&gt; output as an argument for &lt;code&gt;fun1&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Two styles, each with pros and cons.
There seems to be an importance in how programs evaluate. My intuition would be that it&#x27;s the programming language who is responsible.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Directory entries made within a function are local (private) to the function body&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;It&#x27;s the whole &lt;code&gt;global var&lt;&#x2F;code&gt; vs &lt;code&gt;var declared inside a function&lt;&#x2F;code&gt; as in &lt;code&gt;local var&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;For some reason, the course material keeps mentioning a directory that is created for each program, where data values are store. Is this a reference to memory and memory management?&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;nested-conditionals&quot;&gt;Nested Conditionals&lt;&#x2F;h3&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>wine</title>
        <published>2025-02-16T00:00:00+00:00</published>
        <updated>2025-02-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/wine/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/wine/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/wine/">&lt;h2 id=&quot;instalation&quot;&gt;Instalation&lt;&#x2F;h2&gt;
&lt;p&gt;Install &lt;code&gt;wine&lt;&#x2F;code&gt; and &lt;code&gt;winetricks&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;On Archlinux, &lt;code&gt;wine&lt;&#x2F;code&gt; is in the &lt;code&gt;multilib&lt;&#x2F;code&gt; repo, which is not enables by default. You need to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Official_repositories#Enabling_multilib&quot;&gt;enable it first&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Then install :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; wine winetricks&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;minimal-wine-setup-for-gaming&quot;&gt;Minimal Wine Setup for Gaming&lt;&#x2F;h2&gt;
&lt;p&gt;Install the following&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  winetricks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; vcrun2022&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  winetricks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; dxvk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  winetricks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; vkd3d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  winetricks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; corefonts&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  winetricks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; xna40&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then ensure only one sound device is selected in &lt;code&gt;winecfg&lt;&#x2F;code&gt; and that you have the corresponding audio backend installed.&lt;&#x2F;p&gt;
&lt;p&gt;In my case, although I usually have pipewire installed, I&#x27;ve had better result with alsa.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  winetricks sound=alsa&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This command changes the &lt;code&gt;verb&lt;&#x2F;code&gt; sound to use alsa instead of pulse.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;run-apps-or-games&quot;&gt;Run apps or games&lt;&#x2F;h2&gt;
&lt;p&gt;To run software with &lt;code&gt;wine&lt;&#x2F;code&gt;, just prefix it with the &lt;code&gt;wine&lt;&#x2F;code&gt; command.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;  wine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; my_app.exe&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Wine&quot;&gt;Wine - Archlinux.org&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sebsauvage.net&#x2F;wiki&#x2F;doku.php?id=wine&quot;&gt;Wine - Wiki sebsauvage.net&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>A great explanation of the Y2K bug</title>
        <published>2025-02-12T00:00:00+00:00</published>
        <updated>2025-02-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/y2k-explanation/"/>
        <id>https://tgm.happyngreen.fr/blog/y2k-explanation/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/y2k-explanation/">&lt;h2 id=&quot;nic-baker&quot;&gt;Nic Baker&lt;&#x2F;h2&gt;
&lt;p&gt;I started watching all of &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@nicbarkeragain&quot;&gt;Nic Baker&#x27;s videos&lt;&#x2F;a&gt; after reading Simon Willison&#x27;s &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;simonwillison.net&#x2F;2024&#x2F;Dec&#x2F;21&#x2F;&quot;&gt;post&lt;&#x2F;a&gt; on the Clay UI library that Nic Barker built.
In his post, Simon Willison mentions the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=DYWTw19_8r4&quot;&gt;intro video&lt;&#x2F;a&gt; that Nic Barker made to this library.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;His intro video to the library is outstanding: I learned a ton about how UI layout works from this, and the animated visual explanations are clear, tasteful and really helped land the different concepts.&lt;&#x2F;p&gt;
&lt;p&gt;John Willison
I was also blown away, not just by the results of Clay, but by Nic Barker&#x27;s quality as presenter and teaching.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;aside&gt;
&lt;p&gt;I use Grayjay to follow people on Twitch, Youtube and Peertube. I highly recommended it.&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;p&gt;This I added all his videos in the Watch Later playlist in &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;grayjay.app&#x2F;&quot;&gt;Grayjay&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;y2k&quot;&gt;Y2K&lt;&#x2F;h2&gt;
&lt;p&gt;Today I final start watching the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@nicbarkeragain&quot;&gt;video Nic Barker made about the Y2K bug&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Not only was it very funny, I finaly understood how base2 works !!
Thx Nic :D&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>f2</title>
        <published>2025-02-12T00:00:00+00:00</published>
        <updated>2025-02-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/f2/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/f2/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/f2/">&lt;p&gt;&lt;strong&gt;Source&lt;&#x2F;strong&gt; : &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ayoisaiah&#x2F;f2&quot;&gt;github.com&#x2F;f2&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>helix</title>
        <published>2025-02-11T00:00:00+00:00</published>
        <updated>2025-02-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/helix/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/helix/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/helix/">&lt;h2 id=&quot;tutor&quot;&gt;Tutor&lt;&#x2F;h2&gt;
&lt;p&gt;The tutor, aka Tutorial, is great to learn how to use Helix.&lt;&#x2F;p&gt;
&lt;p&gt;Go thought it once at least. Don&#x27;t hesitate to go back to it if you forget how
keybindings work.&lt;&#x2F;p&gt;
&lt;p&gt;To open the tutor, run :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --tutor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# or, if you don&amp;#39;t have the alias hx = helix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;helix&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --tutor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;open-file-as-sudo&quot;&gt;Open file as sudo&lt;&#x2F;h2&gt;
&lt;p&gt;Instead of running :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; helix myfile.conf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;use &lt;code&gt;sudoedit&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudoedit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; myfile.conf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This will use your $EDITOR, open a temporary file in &lt;code&gt;&#x2F;tmp&lt;&#x2F;code&gt; and then save it to
the correct location.&lt;&#x2F;p&gt;
&lt;p&gt;Don&#x27;t forget to export the EDITOR variable in your &lt;code&gt;.bashrc&lt;&#x2F;code&gt; or &lt;code&gt;.zshrc&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #0DB9D7;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;export EDITOR=helix&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; ~&#x2F;.bashrc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;reference&quot;&gt;Reference&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;helix-editor&#x2F;helix&#x2F;discussions&#x2F;4251&quot;&gt;How to write to files that require super user rights? #4251 - github.com&#x2F;helix&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;man7.org&#x2F;linux&#x2F;man-pages&#x2F;man8&#x2F;sudoedit.8.html&quot;&gt;man sudoedit&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;terminal-view&quot;&gt;Terminal view&lt;&#x2F;h2&gt;
&lt;p&gt;Seems to be in works. For now, it is recommended to run programms or builds in a
seperate terminal, a terminal multiplexer or a terminal (like kitty) that
supports spliting.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;references&quot;&gt;References&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;HelixEditor&#x2F;comments&#x2F;xbcms0&#x2F;how_to_run_code_in_helix&#x2F;&quot;&gt;How to run code in Helix - reddit.com&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;write-without-formating&quot;&gt;Write without formating&lt;&#x2F;h2&gt;
&lt;p&gt;No current straightforward way to do this. But:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;I don&#x27;t think it&#x27;s necessary to add commands for this since there&#x27;s a
workaround: you can &lt;code&gt;:set auto-format false&lt;&#x2F;code&gt;, &lt;code&gt;:write&lt;&#x2F;code&gt;, and then
&lt;code&gt;:set auto-format true&lt;&#x2F;code&gt; when you want auto-formatting again.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;This can then be bound to a key. Apparently there is a way to bind a sequence of
commands to one key.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
test this sequence thing.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;helix-editor&#x2F;helix&#x2F;pull&#x2F;4909#issuecomment-1329848943&quot;&gt;PR - Add :write-without-auto-format commands #4909&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;syntax-highlighting-lsp-formaters-linters&quot;&gt;Syntax Highlighting, LSP, Formaters &amp;amp; Linters&lt;&#x2F;h2&gt;
&lt;p&gt;GO TO &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;linux&#x2F;helix-lsp&#x2F;&quot;&gt;my lsp configuration wiki page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;yank-a-diagnostic&quot;&gt;Yank a diagnostic&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;:yank-diagnostic&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;select-all-occurence-of-regex-in-a-document&quot;&gt;Select all occurence of regex in a document&lt;&#x2F;h3&gt;
&lt;p&gt;Use &lt;code&gt;%&lt;&#x2F;code&gt; to select the whole document, then use &lt;code&gt;s&lt;&#x2F;code&gt; to select all occurence of
the regex.&lt;&#x2F;p&gt;
&lt;p&gt;You can be more specific by being more selective before &lt;code&gt;s&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;workspace&quot;&gt;Workspace&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;helix&quot;&gt;&lt;code&gt;.helix&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;disabling-autoformatting-for-javascript-in-helix&quot;&gt;Disabling Autoformatting for JavaScript in Helix&lt;&#x2F;h4&gt;
&lt;p&gt;To stop Helix from autoformatting &lt;code&gt;.js&lt;&#x2F;code&gt; files, add this block to your
&lt;code&gt;.helix&#x2F;languages.toml&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;language&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;javascript&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;auto-format&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This overrides the default JavaScript config so files are no longer formatted
automatically on save. You can still run &lt;code&gt;:format&lt;&#x2F;code&gt; manually if needed.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>emacs</title>
        <published>2025-02-07T00:00:00+00:00</published>
        <updated>2025-02-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/emacs/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/emacs/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/emacs/">&lt;h2 id=&quot;run-emacs-in-a-terminal&quot;&gt;Run Emacs in a terminal&lt;&#x2F;h2&gt;
&lt;p&gt;well, I haven&#x27;t found it again yet.&lt;&#x2F;p&gt;
&lt;p&gt;There seems to be a emacs daemon mode, that acts like a server. I can then just call &lt;code&gt;emacsclient&lt;&#x2F;code&gt; in a terminal ? Like foot terminal ?&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Weekly Single Link #3</title>
        <published>2025-02-05T00:00:00+00:00</published>
        <updated>2025-02-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/singlelink/"/>
        <id>https://tgm.happyngreen.fr/blog/singlelink/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/singlelink/">&lt;p&gt;This week&#x27;s Single Link is about AI.&lt;&#x2F;p&gt;
&lt;p&gt;Specifically, the web crawler bots employed by AI companies &amp;amp; startups to siphon up content from the internet. I&#x27;ve been reading quite a few posts (blogs and social media) about people observing those web crawlers either scraping entire websites while thoroughly ignoring robots.txt files, or even &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pod.geraspora.de&#x2F;posts&#x2F;17342163&quot;&gt;DDoSing forums&lt;&#x2F;a&gt; and self-hosted services.&lt;&#x2F;p&gt;
&lt;p&gt;This is what was happening with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;xeiaso.net&#x2F;&quot;&gt;Xe Iaso&lt;&#x2F;a&gt;&#x27;s self-hosted Gitea instance. The solution they came up with is &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;xeiaso.net&#x2F;blog&#x2F;2025&#x2F;anubis&#x2F;&quot;&gt;Block AI scrapers with Anubis&lt;&#x2F;a&gt;. This is the week&#x27;s link !!&lt;&#x2F;p&gt;
&lt;p&gt;Anubis is a middleware that forces any browser or bots to solve a puzzle with JavaScript. It&#x27;s pretty neat, and it has a cool illustration that you&#x27;ll see if you visit &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;git.xeserv.us&#x2F;xe&#x2F;anubis-test&#x2F;src&#x2F;branch&#x2F;main&#x2F;README.md&quot;&gt;the test page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;It is the first of its kind. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;marcusb.org&#x2F;hacks&#x2F;quixotic.html&quot;&gt;Other&lt;&#x2F;a&gt; &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;iocaine.madhouse-project.org&#x2F;&quot;&gt;methods&lt;&#x2F;a&gt; always seem to be a poison attack, akin to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zadzmo.org&#x2F;code&#x2F;nepenthes&#x2F;&quot;&gt;tarpits&lt;&#x2F;a&gt; that serve bad content. Anubis is maybe what I would call a naïve captcha ? Much less problematic version of Cloudflares in terms of usability, but probably more costly for the hoster.&lt;&#x2F;p&gt;
&lt;p&gt;PS; I know this is not just one link. But I need to set up the context. It&#x27;s fine. The objective is to reduce flooding readers with links. I&#x27;m mostly keeping to that rule.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>I&#x27;m a brocoli</title>
        <published>2025-02-05T00:00:00+00:00</published>
        <updated>2025-02-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/vegetable/"/>
        <id>https://tgm.happyngreen.fr/blog/vegetable/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/vegetable/">&lt;p&gt;Apperently ?&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;assets&#x2F;img&#x2F;vegetable_ID_Broccoli.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Discovered at &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sophie006liu.github.io&#x2F;vegetal&#x2F;#&quot;&gt;What vegetable are you?&lt;&#x2F;a&gt; via &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sylvia.bearblog.dev&#x2F;about&#x2F;&quot;&gt;Sylvia&#x27;s about page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Caddy Static File Server Configuration</title>
        <published>2025-02-05T00:00:00+00:00</published>
        <updated>2025-02-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/caddy/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/caddy/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/caddy/">&lt;h2 id=&quot;compression&quot;&gt;Compression&lt;&#x2F;h2&gt;
&lt;p&gt;To add gzip encoding support :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;80&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;  root * &#x2F;srv&#x2F;www&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;  file_server&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;  encode zstd, gzip&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;basic-site-configuration-approaches&quot;&gt;Basic Site Configuration Approaches&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-domain-based-approach&quot;&gt;1. Domain-Based Approach&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;site.example.com &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    # Configuration here&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Automatically handles HTTP&#x2F;HTTPS&lt;&#x2F;li&gt;
&lt;li&gt;Cleaner syntax&lt;&#x2F;li&gt;
&lt;li&gt;Automatic SSL certificate management&lt;&#x2F;li&gt;
&lt;li&gt;Best for simple, single-domain setups&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;2-port-based-approach&quot;&gt;2. Port-Based Approach&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;80&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    @site1 host site.example.com&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    handle @site1 {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;        # Configuration here&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;More flexible for complex setups&lt;&#x2F;li&gt;
&lt;li&gt;Better for multiple domains with shared configurations&lt;&#x2F;li&gt;
&lt;li&gt;Explicit port control&lt;&#x2F;li&gt;
&lt;li&gt;Requires separate HTTPS configuration&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;static-vs-general-file-handling&quot;&gt;Static vs General File Handling&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;static-files&quot;&gt;Static Files&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Files that don&#x27;t change frequently (CSS, JS, images, fonts)&lt;&#x2F;li&gt;
&lt;li&gt;Suitable for aggressive caching&lt;&#x2F;li&gt;
&lt;li&gt;Served directly from disk&lt;&#x2F;li&gt;
&lt;li&gt;Typically matched by file extensions&lt;&#x2F;li&gt;
&lt;li&gt;Example extensions: &lt;code&gt;.css&lt;&#x2F;code&gt;, &lt;code&gt;.js&lt;&#x2F;code&gt;, &lt;code&gt;.jpg&lt;&#x2F;code&gt;, &lt;code&gt;.png&lt;&#x2F;code&gt;, &lt;code&gt;.woff2&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;general-files&quot;&gt;General Files&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Any type of file&lt;&#x2F;li&gt;
&lt;li&gt;May be dynamic&lt;&#x2F;li&gt;
&lt;li&gt;Might need processing&lt;&#x2F;li&gt;
&lt;li&gt;Less aggressive caching&lt;&#x2F;li&gt;
&lt;li&gt;No specific extension matching&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;caching-configuration&quot;&gt;Caching Configuration&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;client-side-caching&quot;&gt;Client-Side Caching&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;header @static &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    Cache-Control&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7AA2F7;&quot;&gt;public, max-age=604800, must-revalidate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Controlled via Cache-Control headers&lt;&#x2F;li&gt;
&lt;li&gt;Tells browsers how long to cache content&lt;&#x2F;li&gt;
&lt;li&gt;Common durations:
&lt;ul&gt;
&lt;li&gt;1 week: 604800 seconds&lt;&#x2F;li&gt;
&lt;li&gt;1 month: 2592000 seconds&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;server-side-caching&quot;&gt;Server-Side Caching&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Optional in Caddy&lt;&#x2F;li&gt;
&lt;li&gt;Used for reducing server load&lt;&#x2F;li&gt;
&lt;li&gt;Not necessary for basic static file serving&lt;&#x2F;li&gt;
&lt;li&gt;Beneficial for dynamic content&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;complete-configuration-example&quot;&gt;Complete Configuration Example&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;80&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    # Global compression&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    encode zstd gzip&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    # Security headers&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;    header {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;        Content-Security-Policy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7AA2F7;&quot;&gt;default-src &amp;#39;self&amp;#39;; script-src &amp;#39;self&amp;#39;; style-src &amp;#39;self&amp;#39;; img-src &amp;#39;self&amp;#39;; font-src &amp;#39;self&amp;#39;; object-src &amp;#39;none&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    # Static file handling&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @static &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;        file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;        path *.css *.js *.jpg *.jpeg *.png *.gif *.ico *.svg *.woff *.woff2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    handle @static &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;        header Cache-Control&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7AA2F7;&quot;&gt;public, max-age=604800, must-revalidate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    # Site configurations&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    @site&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt; host site&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;.example.com&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    handle @site&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FF5370;&quot;&gt;        root * &#x2F;path&#x2F;to&#x2F;site1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ABDF5;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    # Global file server&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    file_server&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;best-practices&quot;&gt;Best Practices&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Header Order&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Place global headers before handling directives&lt;&#x2F;li&gt;
&lt;li&gt;Security headers should be defined early in the configuration&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;File Serving&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Use a single global &lt;code&gt;file_server&lt;&#x2F;code&gt; directive when possible&lt;&#x2F;li&gt;
&lt;li&gt;Only specify roots in site-specific handlers&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Compression&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Apply compression globally using &lt;code&gt;encode zstd gzip&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Let Caddy handle compression automatically&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Always include Content Security Policy (CSP) headers&lt;&#x2F;li&gt;
&lt;li&gt;Use appropriate &lt;code&gt;Cache-Control&lt;&#x2F;code&gt; directives&lt;&#x2F;li&gt;
&lt;li&gt;Consider additional security headers as needed&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Caching Strategy&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Use client-side caching for static assets&lt;&#x2F;li&gt;
&lt;li&gt;Consider server-side caching only if needed&lt;&#x2F;li&gt;
&lt;li&gt;Include &lt;code&gt;must-revalidate&lt;&#x2F;code&gt; for better cache control&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;common-issues&quot;&gt;Common Issues&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CSS&#x2F;JS Not Loading&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Check CSP headers&lt;&#x2F;li&gt;
&lt;li&gt;Verify file permissions&lt;&#x2F;li&gt;
&lt;li&gt;Confirm correct file paths&lt;&#x2F;li&gt;
&lt;li&gt;Ensure &lt;code&gt;style-src&lt;&#x2F;code&gt; and &lt;code&gt;script-src&lt;&#x2F;code&gt; are properly configured&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Caching Issues&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Verify Cache-Control header syntax&lt;&#x2F;li&gt;
&lt;li&gt;Check browser developer tools&lt;&#x2F;li&gt;
&lt;li&gt;Clear browser cache during testing&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Multiple Site Configuration&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Use appropriate matching based on hosts&lt;&#x2F;li&gt;
&lt;li&gt;Maintain correct root paths&lt;&#x2F;li&gt;
&lt;li&gt;Keep shared configurations at the global level&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;caddyserver.com&#x2F;docs&#x2F;caddyfile&#x2F;directives&#x2F;header#examples&quot;&gt;header - Caddy Documentation&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;caddyserver.com&#x2F;docs&#x2F;caddyfile&#x2F;directives&#x2F;header#examples&quot;&gt;header - Caddy Documentation&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Interesting setups involving &lt;code&gt;caddy&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nkantar.com&#x2F;blog&#x2F;2025&#x2F;08&#x2F;static-python-uv-caddy-docker&#x2F;&quot;&gt;Static Sites with Python, uv, Caddy, and Docker&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>robots.txt</title>
        <published>2025-02-05T00:00:00+00:00</published>
        <updated>2025-02-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/robots-txt/"/>
        <id>https://tgm.happyngreen.fr/wiki/robots-txt/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/robots-txt/">&lt;p&gt;robots.txt are&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;robots.txt is the filename used for implementing the Robots Exclusion
Protocol, a standard used by websites to indicate to visiting web crawlers and
other web robots which portions of the website they are allowed to visit.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Robots.txt&quot;&gt;robots.txt - wikipedia&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;ai-bot-crawlers-how-to-handle-them&quot;&gt;AI bot crawlers, how to handle them&lt;&#x2F;h2&gt;
&lt;p&gt;There are a couple of projects that aim at helping against ai companies bots
that crawl and scrape our content. Amongst them:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;robotstxt.com&#x2F;ai&quot;&gt;robots.txt&#x2F;ai&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ai-robots-txt&#x2F;ai.robots.txt&quot;&gt;ai-robots.txt&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I&#x27;m going to setup in my Justfile a update setting for my robots.txt file that
is in my static folder.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;github.com&#x2F;ai-robots-txt&#x2F;ai.robots.txt&#x2F;releases&#x2F;latest&#x2F;download&#x2F;robots.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;curl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; https:&#x2F;&#x2F;github.com&#x2F;ai-robots-txt&#x2F;ai.robots.txt&#x2F;releases&#x2F;latest&#x2F;download&#x2F;robots.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; static&#x2F;robots.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;About &lt;code&gt;robots.txt&lt;&#x2F;code&gt; to block crawlers from indexing stuff.&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;searchengineland.com&#x2F;robots-txt-new-meta-tag-llm-ai-429510&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;www.robotstxt.org&#x2F;robotstxt.html&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;developers.google.com&#x2F;search&#x2F;docs&#x2F;crawling-indexing&#x2F;robots&#x2F;intro?visit_id=638273818678687427-847406478&amp;amp;rd=2#:~:text=The%20instructions%20in%20robots.txt%20files%20cannot%20enforce%20crawler%20behavior%20to%20your%20site%3B%20it%27s%20up%20to%20the%20crawler%20to%20obey%20them.&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;developers.google.com&#x2F;search&#x2F;docs&#x2F;crawling-indexing&#x2F;block-indexing&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>aerc</title>
        <published>2025-02-04T00:00:00+00:00</published>
        <updated>2025-02-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/aerc/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/aerc/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/aerc/">&lt;p&gt;aerc, or A&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>dotfiles</title>
        <published>2025-02-04T00:00:00+00:00</published>
        <updated>2025-08-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/dotfiles/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/dotfiles/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/dotfiles/">&lt;h2 id=&quot;stow-git-repo&quot;&gt;stow + git repo&lt;&#x2F;h2&gt;
&lt;p&gt;Install &lt;code&gt;stow&lt;&#x2F;code&gt; and &lt;code&gt;git&lt;&#x2F;code&gt;. Create an empty git repo.&lt;&#x2F;p&gt;
&lt;p&gt;Stow is used to symlink folders and files to specific places.&lt;&#x2F;p&gt;
&lt;p&gt;For example, if a folder called &lt;code&gt;git_repo_name&#x2F;helix&#x2F;.config&#x2F;helix&#x2F;config.toml&lt;&#x2F;code&gt;,
and I run &lt;code&gt;stow helix&lt;&#x2F;code&gt; from the root of the git repo, it whill symlink
&lt;code&gt;git_repo_name&#x2F;helix&#x2F;.config&#x2F;helix&#x2F;config.toml&lt;&#x2F;code&gt; into
&lt;code&gt;~&#x2F;.config&#x2F;helix&#x2F;config.toml&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;When I modify my config files, I&#x27;m essentially modifying the files in my repo
directly.&lt;&#x2F;p&gt;
&lt;p&gt;I have another page that about &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;linux&#x2F;stow&#x2F;&quot;&gt;GNU Stow&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If I ever make my dotfiles public again, I will link them here.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;chezmoi&quot;&gt;Chezmoi&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.chezmoi.io&quot;&gt;https:&#x2F;&#x2F;chezmoi.io&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Init new dotfiles:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;chezmoi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; init&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Add files or folders to chezmoi dotfiles:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;chezmoi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; add ~&#x2F;.bashrc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;em&gt;Note:&lt;&#x2F;em&gt; Add with the whole path ?&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>GNU Stow</title>
        <published>2025-02-04T00:00:00+00:00</published>
        <updated>2025-02-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/stow/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/stow/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/stow/">&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;p&gt;I use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;software&#x2F;stow&#x2F;&quot;&gt;GNU stow&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;I followed the this
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;brandon.invergo.net&#x2F;news&#x2F;2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html&quot;&gt;tutorial by Brandon Invergo&lt;&#x2F;a&gt;,
linked in the official GNU Stow page&lt;&#x2F;p&gt;
&lt;h2 id=&quot;process&quot;&gt;Process&lt;&#x2F;h2&gt;
&lt;p&gt;Stow enables you to store config files in a folder and symlink them in the
proper places.&lt;&#x2F;p&gt;
&lt;p&gt;In the case of my dotfiles are stored in a folder called dotefiles that is also
a git repo.&lt;&#x2F;p&gt;
&lt;p&gt;The structure is as follows, with &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;linux&#x2F;helix&#x2F;&quot;&gt;helix&lt;&#x2F;a&gt; and sway
&lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;linux&#x2F;sway&#x2F;&quot;&gt;sway&lt;&#x2F;a&gt; as examples:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dotfiles&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├─ helix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├─── .config&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├────── helix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├──────── config.toml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├──────── languages.toml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├─ sway&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├─── .config&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├────── sway&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├──────── config&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├──────── styles.css&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├─ other programs ...&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;When running &lt;code&gt;stow folder_name&lt;&#x2F;code&gt; it will symlink the folder or it&#x27;s content (if
already preexisting folder) to the location.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>sway</title>
        <published>2025-02-04T00:00:00+00:00</published>
        <updated>2025-02-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/sway/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/sway/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/sway/">&lt;p&gt;sway is currently the most stable wayland compositor I have ever used. It&#x27;s a
drop-in replacement to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;i3wm.org&#x2F;&quot;&gt;i3&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;setup&quot;&gt;Setup&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;software&quot;&gt;Software&lt;&#x2F;h3&gt;
&lt;p&gt;Here is the list of software I use with sway to run a functionning desktop:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;sway&lt;&#x2F;li&gt;
&lt;li&gt;swaylock&lt;&#x2F;li&gt;
&lt;li&gt;foot&lt;&#x2F;li&gt;
&lt;li&gt;waybar&lt;&#x2F;li&gt;
&lt;li&gt;fuzzel&lt;&#x2F;li&gt;
&lt;li&gt;mako&lt;&#x2F;li&gt;
&lt;li&gt;micro&lt;&#x2F;li&gt;
&lt;li&gt;yazi&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;linux&#x2F;aerc&#x2F;&quot;&gt;aerc&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;quick-install&quot;&gt;Quick install&lt;&#x2F;h3&gt;
&lt;p&gt;Here is an opinionated barebones list of basic programs you will need to run
sway. For a full overview of tools and software I use, there is a
&lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;wiki&#x2F;linux&#x2F;dotfiles&#x2F;&quot;&gt;list&lt;&#x2F;a&gt; in the dotfiles entry of the wiki.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sudo pacman -S sway swayidle swaylock swaybg \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;foot waybar fuzzel mako wlsunset wl-clipboard \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;archlinux&lt;&#x2F;li&gt;
&lt;li&gt;gentoo wiki&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;swayidle-configuration-troubleshooting&quot;&gt;Swayidle Configuration Troubleshooting&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;common-issues-with-screen-locking-and-power-management&quot;&gt;Common Issues with Screen Locking and Power Management&lt;&#x2F;h2&gt;
&lt;p&gt;When configuring swayidle for automatic screen locking and display power
management, certain syntax errors can prevent proper functionality.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;problematic-configuration&quot;&gt;Problematic Configuration&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #0DB9D7;&quot;&gt;exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; swayidle&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;    timeout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 600&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;waylock -fork-on-lock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;\ &lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;    timeout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 900&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;swaymsg &amp;quot;output * power off&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;\&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;    resume&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;swaymsg &amp;quot;output * dpms on&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;\&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;    before-sleep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;waylock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Issues:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;waylock -fork-on-lock&lt;&#x2F;code&gt; uses an invalid flag that doesn&#x27;t exist&lt;&#x2F;li&gt;
&lt;li&gt;Mixing &lt;code&gt;power off&lt;&#x2F;code&gt; with &lt;code&gt;dpms on&lt;&#x2F;code&gt; creates inconsistent commands&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;corrected-configuration&quot;&gt;Corrected Configuration&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #0DB9D7;&quot;&gt;exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; swayidle&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;    timeout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 600&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;waylock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;    timeout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 900&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;swaymsg &amp;quot;output * power off&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;    resume&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;swaymsg &amp;quot;output * power on&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;    before-sleep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;waylock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;power-vs-dpms-commands&quot;&gt;Power vs DPMS Commands&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;Modern approach (recommended):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;swaymsg &quot;output * power off&#x2F;on&quot;&lt;&#x2F;code&gt; - Uses current Wayland protocols&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Legacy approach (still works):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;swaymsg &quot;output * dpms off&#x2F;on&quot;&lt;&#x2F;code&gt; - Based on older X11 DPMS standards&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Both achieve the same result, but &lt;code&gt;power&lt;&#x2F;code&gt; commands are preferred for new
configurations as they use modern Wayland-native protocols and are more
future-proof.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>micro editor</title>
        <published>2025-02-01T00:00:00+00:00</published>
        <updated>2025-02-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/micro/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/micro/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/micro/">&lt;h1 id=&quot;custom-scripts&quot;&gt;Custom scripts&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;code&gt;textfilter&lt;&#x2F;code&gt; does not parse arguments to a shell that would expand &lt;code&gt;$HOME&lt;&#x2F;code&gt; so you could try binding with &lt;code&gt;command:textfilter sh -c \&quot;~&#x2F;path_to_script\&quot;&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;You could also move the script to a directory in &lt;code&gt;$PATH&lt;&#x2F;code&gt; (default &lt;code&gt;~&#x2F;.profile&lt;&#x2F;code&gt; may add &lt;code&gt;~&#x2F;.local&#x2F;bin&lt;&#x2F;code&gt;) so that you&#x27;ll just have to bind &lt;code&gt;command:textfilter script_name&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Programs in &lt;code&gt;$PATH&lt;&#x2F;code&gt; can be run anywhere, so I personally add a prefix like &lt;code&gt;micro-&lt;&#x2F;code&gt; in the filename or avoid adding program-specific parts in scripts.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fediverse</title>
        <published>2025-01-29T00:00:00+00:00</published>
        <updated>2025-01-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/fediverse/"/>
        <id>https://tgm.happyngreen.fr/wiki/fediverse/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/fediverse/">&lt;h2 id=&quot;ressources&quot;&gt;Ressources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fedidevs.com&quot;&gt;FediDevs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>ffmpeg</title>
        <published>2025-01-29T00:00:00+00:00</published>
        <updated>2025-01-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/ffmpeg/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/ffmpeg/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/ffmpeg/">&lt;h3 id=&quot;list-video-file-s-codec&quot;&gt;List Video file&#x27;s codec&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 video.mkv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;&#x2F;strong&gt;: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;2869281&#x2F;how-to-determine-video-codec-of-a-file-with-ffmpeg&quot;&gt;How to determine video codec of a file with FFmpeg -- StackOverflow&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ressources&quot;&gt;Ressources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ffmpegbyexample.com&#x2F;&quot;&gt;FFmpeg by Example&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>TUI Timer</title>
        <published>2025-01-28T00:00:00+00:00</published>
        <updated>2025-01-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/tui-timer/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/tui-timer/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/tui-timer/">&lt;p&gt;Tools used:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;race604&#x2F;clock-tui&quot;&gt;clock-tui&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;pipewire&lt;&#x2F;li&gt;
&lt;li&gt;pipewire-pulse&lt;&#x2F;li&gt;
&lt;li&gt;notify-send&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;with-pplay&quot;&gt;with pplay&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;tclock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; timer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; 1m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;notify-send &lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;Times up&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;; paplay ~&#x2F;Music&#x2F;Tibetan_Singing_Bowl_Set_Sound_Bowl_Meditation_Bowl-sPOTaJZ7cbw.opus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;with-pw-play&quot;&gt;with pw-play&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;tclock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; timer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; 2s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;notify-send &lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;Times up&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;; pw-play ~&#x2F;Music&#x2F;Tibetan_Singing_Bowl_Set_Sound_Bowl_Meditation_Bowl-sPOTaJZ7cbw.opus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;superuser.com&#x2F;questions&#x2F;1816531&#x2F;play-single-mp3-through-specific-pipewire-device-via-shell-command&quot;&gt;Play single mp3 through specific Pipewire device via shell command&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>yt-dlp</title>
        <published>2025-01-28T00:00:00+00:00</published>
        <updated>2025-01-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/yt-dlp/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/yt-dlp/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/yt-dlp/">&lt;h2 id=&quot;video&quot;&gt;Video&lt;&#x2F;h2&gt;
&lt;h2 id=&quot;audio&quot;&gt;Audio&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;download-and-extract-best-audio&quot;&gt;Download and extract best audio&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;yt-dlp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; bestaudio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --extract-audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; URL&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;automation&quot;&gt;Automation&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;stream-a-video-directly-in-a-video-player-without-saving-to-file&quot;&gt;Stream a video directly in a video player without saving to file&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;yt-dlp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; - URL&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; mpv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; -&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# or vlc, or another video player&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;download-from-a-list-inside-a-txt-file&quot;&gt;Download from a list inside a .txt file&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# -a&#x2F;--batch-file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;yt-dlp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; links.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title> Single Weekly Link #2</title>
        <published>2025-01-27T00:00:00+00:00</published>
        <updated>2025-01-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/singlelink-20250127/"/>
        <id>https://tgm.happyngreen.fr/blog/singlelink-20250127/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/singlelink-20250127/">&lt;p&gt;Here is the &lt;strong&gt;Single Weekly Link&lt;&#x2F;strong&gt;!&lt;&#x2F;p&gt;
&lt;p&gt;Man this was hard for me. I had an extraordinary amount of things I would have loved to share with you since last week. But I&#x27;ve allowed myself one link.&lt;&#x2F;p&gt;
&lt;p&gt;This week&#x27;s link is &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;davidar.io&#x2F;post&#x2F;sim-glsl&quot;&gt;Simulating worlds on the GPU: Four billion years in four minutes - David A Roberts&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;PS: I think I&#x27;ll make a shortcode element to make the single link pop more on the page.&lt;&#x2F;p&gt;
&lt;p&gt;Anywho, tata :D&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Science is late to the party</title>
        <published>2025-01-27T00:00:00+00:00</published>
        <updated>2025-01-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/science-is-late-to-the-party/"/>
        <id>https://tgm.happyngreen.fr/lists/science-is-late-to-the-party/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/science-is-late-to-the-party/">&lt;p&gt;A list of articles that illustrate things people know are observed, or how science is late to the party.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>CSS</title>
        <published>2025-01-26T00:00:00+00:00</published>
        <updated>2025-07-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/css/"/>
        <id>https://tgm.happyngreen.fr/lists/css/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/css/">&lt;p&gt;CSS resources&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Random Secret Key Generation</title>
        <published>2025-01-26T00:00:00+00:00</published>
        <updated>2025-01-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/random-secret-key/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/random-secret-key/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/random-secret-key/">&lt;p&gt;To generate a random string of a set size, on linux, run :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# for hex string&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;openssl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -hex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; number&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# output:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;35d9bbe3576a0866335eea99ba7b6a248f89d07d51c2b30022a8b06f7ac587da&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# or for base64 string&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;openssl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -base64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; number&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# output:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;8SGmlygNlJFRPtsvcwzI17VYksi2sblO2AD1I2BPLxs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# hex of length 16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;openssl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -hex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# ... 32&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;openssl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -hex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 32&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# ... 64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;openssl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -hex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;For improved compatibility and reliability, I use the &lt;strong&gt;hexadecimal (hex)&lt;&#x2F;strong&gt; version of character sets to generate secret keys and database (DB) passwords for my Docker Compose containers.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Flutter</title>
        <published>2025-01-25T00:00:00+00:00</published>
        <updated>2025-01-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/flutter/"/>
        <id>https://tgm.happyngreen.fr/wiki/flutter/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/flutter/">&lt;h2 id=&quot;installation-archlinux&quot;&gt;Installation (Archlinux)&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ashpex.net&#x2F;2021&#x2F;06&#x2F;how-to-install-flutter-on-arch-linux&#x2F;&quot;&gt;Install Flutter on Arch Linux&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;ol&gt;
&lt;li&gt;Install flutter&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;yay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; flutter&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;You then need to adjust the permissions of the binary and install folder so that we can run stuff as our user:&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; groupadd flutterusers&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; gpasswd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; $USER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; flutterusers&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; chown&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -R&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; :flutterusers &#x2F;usr&#x2F;lib&#x2F;flutter&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -R&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; g+w &#x2F;usr&#x2F;lib&#x2F;flutter&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; chown&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -R&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; :flutterusers &#x2F;bin&#x2F;flutter&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -R&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; g+w &#x2F;bin&#x2F;flutter&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Android -&amp;gt; Install the necessary packages:&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;yay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; android-sdk android-sdk-platform-tools android-sdk-build-tools&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;yay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; android-platform&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;And also fix the permissions&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; groupadd android-sdk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; gpasswd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; $USER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; android-sdk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; setfacl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -R -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; g:android-sdk:rwx &#x2F;opt&#x2F;android-sdk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; setfacl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -d -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; g:android-sdk:rwX &#x2F;opt&#x2F;android-sdk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;You’ll probably also have to set up environment variables for &lt;code&gt;ANDROID_SDK_ROOT&lt;&#x2F;code&gt; and &lt;code&gt;JAVA_HOME&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;The Java version is under &lt;code&gt;&#x2F;usr&#x2F;lib&#x2F;jvm&lt;&#x2F;code&gt;, in the case of version 8, it’s this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9D7CD8;font-style: italic;&quot;&gt;export&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt; JAVA_HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;=&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;&#x2F;usr&#x2F;lib&#x2F;jvm&#x2F;java-8-openjdk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;check-installation&quot;&gt;Check installation&lt;&#x2F;h3&gt;
&lt;p&gt;To check if flutter is correctly installed:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;flutter&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; doctor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;run-the-app-locally&quot;&gt;Run the app locally&lt;&#x2F;h3&gt;
&lt;p&gt;To run the app on linux:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;flutter&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; run&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;to use Hot Reload while running the app, you need to focus the terminal running the app and press &lt;code&gt;r&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Alternatively, use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pub.dev&#x2F;packages&#x2F;dashmon&quot;&gt;dashmon&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;To install it, run :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;flutter&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pub global activate dashmon&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;and substitute &lt;code&gt;flutter run&lt;&#x2F;code&gt; with &lt;code&gt;dashmon&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;More information in the package page.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;projects&quot;&gt;Projects&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;project-structure&quot;&gt;Project structure&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;configuration&quot;&gt;Configuration&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pubspec.yaml&lt;&#x2F;code&gt; is the configuration file for the app you are making.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;analysis_options.yaml&lt;&#x2F;code&gt; is the configuration file for code analysis.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;main-dart&quot;&gt;main.dart&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Every widget defines a build() method that&#x27;s automatically called every time the widget&#x27;s circumstances change so that the widget is always up to date.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Every build method must return a widget or (more typically) a nested tree of widgets. In this case, the top-level widget is Scaffold. You aren&#x27;t going to work with Scaffold in this codelab, but it&#x27;s a helpful widget and is found in the vast majority of real-world Flutter apps.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Having separate widgets for separate logical parts of your UI is an important way of managing complexity in Flutter.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;safe area: takes into account
expanded, takes the whole space&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title> Single Weekly Link #1</title>
        <published>2025-01-21T00:00:00+00:00</published>
        <updated>2025-01-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/singlelink-20250123/"/>
        <id>https://tgm.happyngreen.fr/blog/singlelink-20250123/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/singlelink-20250123/">&lt;p&gt;I&#x27;m going to try out a new practice. I&#x27;m calling it &lt;strong&gt;Single Weekly Link&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Some blogs I follow (through RSS) have link dumps. A link dump is a blog post that lists links the author has found&#x2F;read&#x2F;stumbled upon.&lt;&#x2F;p&gt;
&lt;p&gt;I used to be follow many of those blogs. Some I still do. An inherent problem I have this is that it&#x27;s very time consuming. When you subscribe to multiple blogsn you very quickly end up with dozens of open tabs. In my case, I regularly achieved the hundreds of tabs in one sitting. Thankfully, the computers I usually have come equipped with more than 16 Go of RAM. This is sufficient to handle Firefox with a whole lot of tabs opened. The challenge was then to triage and read those new webpages before a new batch of link dumps arrived. I struggle to do so.&lt;&#x2F;p&gt;
&lt;p&gt;So here is a format more respectful of our time: I&#x27;ll post every week a new post entitled Single Weekly Link, containing a link that I want to share with the readers of this blog.&lt;&#x2F;p&gt;
&lt;p&gt;This weeks link is &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nicholas.carlini.com&#x2F;writing&#x2F;2025&#x2F;regex-chess.html&quot;&gt; A 2-ply minimax chess engine in 84,688 regular expressions, by Nicholas Carlini&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Zola</title>
        <published>2025-01-20T00:00:00+00:00</published>
        <updated>2025-01-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/webdev/zola-ssg/"/>
        <id>https://tgm.happyngreen.fr/wiki/webdev/zola-ssg/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/webdev/zola-ssg/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zola.discourse.group&#x2F;t&#x2F;breadcrumb&#x2F;509&#x2F;2&quot;&gt;Breadcrumbs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;alanpearce&#x2F;zola-bearblog&quot;&gt;blogging section inspiration&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;miniflux.app&quot;&gt;list section inspiration&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;codeandmedia&#x2F;zola_easydocs_theme&quot;&gt;wiki section inspiration&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Shortcodes don&#x27;t work in templates, only in content files. Use &lt;code&gt;macros&lt;&#x2F;code&gt; in &lt;code&gt;templates&#x2F;macros&#x2F;&lt;&#x2F;code&gt; to make custom components and functions.&lt;&#x2F;p&gt;
&lt;p&gt;Tera (the Rust Jinja-inspired templating engined) has a integer → human readable bitsize function.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Publish Online</title>
        <published>2025-01-11T00:00:00+00:00</published>
        <updated>2025-01-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/publish-online/"/>
        <id>https://tgm.happyngreen.fr/lists/publish-online/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/publish-online/">&lt;p&gt;A list of ressources to publish content online. This is both a list of tools to make websites, and places or tools to take that website online.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;getzola.org&quot;&gt;zola&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dthompson.us&#x2F;projects&#x2F;haunt.html&quot;&gt;haunt&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;quartz.jzhao.xyz&#x2F;&quot;&gt;quartz&lt;&#x2F;a&gt;, for obsidian -&amp;gt; internet&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;platform&quot;&gt;Platform&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;github pages&lt;&#x2F;li&gt;
&lt;li&gt;gitlab pages&lt;&#x2F;li&gt;
&lt;li&gt;codeberg pages&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Art</title>
        <published>2025-01-08T00:00:00+00:00</published>
        <updated>2025-01-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/art/"/>
        <id>https://tgm.happyngreen.fr/lists/art/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/art/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bobatealee.itch.io&#x2F;doom-the-gallery-experience&quot;&gt;DOOM: The Gallery Experience&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Toolbox</title>
        <published>2025-01-08T00:00:00+00:00</published>
        <updated>2025-06-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/toolbox/"/>
        <id>https://tgm.happyngreen.fr/lists/toolbox/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/toolbox/">&lt;p&gt;This is a list of tools I keep coming back to. Across GUI apps, CLI and TUI, web
services, entire desktop environments, to tools in my EDC, &lt;em&gt;Every Day Carry&lt;&#x2F;em&gt;
set, I hope this nudges someone towards awesome software or hardware.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;software&quot;&gt;Software&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;linux-wifi-hotspot&lt;&#x2F;li&gt;
&lt;li&gt;blueman&lt;&#x2F;li&gt;
&lt;li&gt;btop&lt;&#x2F;li&gt;
&lt;li&gt;micro&lt;&#x2F;li&gt;
&lt;li&gt;oh-my-bash&#x2F;oh-my-zsh&lt;&#x2F;li&gt;
&lt;li&gt;sway&lt;&#x2F;li&gt;
&lt;li&gt;firefox&lt;&#x2F;li&gt;
&lt;li&gt;zed&lt;&#x2F;li&gt;
&lt;li&gt;obsidian&lt;&#x2F;li&gt;
&lt;li&gt;foot&lt;&#x2F;li&gt;
&lt;li&gt;stremio&lt;&#x2F;li&gt;
&lt;li&gt;bitwarden&lt;&#x2F;li&gt;
&lt;li&gt;zathura&lt;&#x2F;li&gt;
&lt;li&gt;mpv&lt;&#x2F;li&gt;
&lt;li&gt;zola&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;online-tools&quot;&gt;Online Tools&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sqlite-internal.pages.dev&#x2F;&quot;&gt;SQLite File Format Viewer&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vert.sh&#x2F;&quot;&gt;vert.sh&lt;&#x2F;a&gt; → that one has not worked yet.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;breezepdf.com&quot;&gt;BreezePDF&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gazs.github.io&#x2F;canvas-atkinson-dither&#x2F;&quot;&gt;Atkinson Dithering&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Programming languages</title>
        <published>2024-12-30T00:00:00+00:00</published>
        <updated>2024-12-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/programming/"/>
        <id>https://tgm.happyngreen.fr/lists/programming/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/programming/">&lt;h2 id=&quot;learn-programming&quot;&gt;Learn Programming&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dcic-world.org&quot;&gt;A Data-Centric Introduction to Computing (DCIC)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;weird&quot;&gt;Weird&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.dangermouse.net&#x2F;esoteric&#x2F;piet.html&quot;&gt;Piet (Mondrian)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Wikipedia Reading List</title>
        <published>2024-12-26T00:00:00+00:00</published>
        <updated>2024-12-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/wikipedia/"/>
        <id>https://tgm.happyngreen.fr/lists/wikipedia/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/wikipedia/"></content>
        
    </entry>
    <entry xml:lang="en">
        <title>Web Dev Ressources</title>
        <published>2024-11-19T00:00:00+00:00</published>
        <updated>2025-01-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/web-dev/"/>
        <id>https://tgm.happyngreen.fr/lists/web-dev/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/web-dev/">&lt;h2 id=&quot;html&quot;&gt;HTML&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;iamwillwang.com&#x2F;dollar&#x2F;every-html-element&#x2F;&quot;&gt;Every HTML Element&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;developer.mozilla.org&#x2F;en-US&#x2F;docs&#x2F;Web&#x2F;HTML&quot;&gt;HTML: HyperText Markup Language - MDN&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;css&quot;&gt;CSS&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;lists&#x2F;css&#x2F;&quot;&gt;My other list of CSS ressources&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;fonts&quot;&gt;Fonts&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;font-size&quot;&gt;Font-size&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.fluid-type-scale.com&#x2F;&quot;&gt;Fluid Type Scale Calculator&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.aleksandrhovhannisyan.com&#x2F;blog&#x2F;fluid-type-scale-with-css-clamp&#x2F;&quot;&gt;Creating a Fluid Type Scale with CSS Clamp&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;typescale.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;typescale.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;utopia.fyi&#x2F;type&#x2F;calculator&#x2F;&quot;&gt;https:&#x2F;&#x2F;utopia.fyi&#x2F;type&#x2F;calculator&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;css-tricks.com&#x2F;consistent-fluidly-scaling-type-and-spacing&#x2F;&quot;&gt;Consistent, Fluidly Scaling Type and Spacing&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;modern-fluid-typography.vercel.app&#x2F;&quot;&gt;Modern fluid typography editor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;interactivity&quot;&gt;Interactivity&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;dark-light-toggle&quot;&gt;Dark light toggle&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;codepen.io&#x2F;codeorum&#x2F;pen&#x2F;bGedRJO&quot;&gt;Dark mode in css switcher example&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Artist Websites</title>
        <published>2024-10-21T00:00:00+00:00</published>
        <updated>2024-10-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/artistes-websites/"/>
        <id>https://tgm.happyngreen.fr/lists/artistes-websites/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/artistes-websites/"></content>
        
    </entry>
    <entry xml:lang="en">
        <title>Rapid Photo Downloader Setup</title>
        <published>2024-10-09T00:00:00+00:00</published>
        <updated>2024-10-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/offloading-camera/"/>
        <id>https://tgm.happyngreen.fr/wiki/offloading-camera/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/offloading-camera/">&lt;p&gt;My PHOTOS file name template:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;Image date (YYYY)&amp;gt;&#x2F;&amp;lt;Image date (MM)&amp;gt;&#x2F;&amp;lt;Image date (YYYY_MM_DD)&amp;gt;_&amp;lt;Image date (HH-MM-SS)&amp;gt;_&amp;lt;Camera model (UPPERCASE)&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;My VIDEOS file name template:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;Video date (YYYY)&amp;gt;&#x2F;&amp;lt;Video date (MM)&amp;gt;&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Using greetd as login manager</title>
        <published>2024-09-26T00:00:00+00:00</published>
        <updated>2024-09-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/greetd/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/greetd/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/greetd/">&lt;p&gt;I changed my login manager from &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sddm&#x2F;sddm&quot;&gt;sddm&lt;&#x2F;a&gt; to
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~kennylevinsen&#x2F;greetd&quot;&gt;greetd&lt;&#x2F;a&gt;. I am able to login into sway,
hyprland and riverwm.&lt;&#x2F;p&gt;
&lt;p&gt;I decide to change because it felt that greetd might be more lightweight then
sddm.&lt;&#x2F;p&gt;
&lt;p&gt;It is in fact, with greetd using about 3.6M and the worker launching the
selected session at 8.6M. Compared to sddm at 21M, it&#x27;s slightly smaller in
memory use.&lt;&#x2F;p&gt;
&lt;p&gt;I held back since Hyprland documentation seemed to indicate that it would not
work with greetd. Since then, I moved back to sway due to weird gpu crashes when
using hyprland. I decided today to jump ship.&lt;&#x2F;p&gt;
&lt;p&gt;I used regreet as a greeter. I&#x27;m already thinking of changing to using qtgreet
instead.&lt;&#x2F;p&gt;
&lt;p&gt;To install on archlinux:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; greetd regreet qtgreet&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Everything happens in &lt;code&gt;&#x2F;etc&#x2F;greetd&#x2F;&lt;&#x2F;code&gt; where:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;you configure greetd with &lt;code&gt;config.toml&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;the greeter with &lt;code&gt;regreet.toml&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;the config for the compositor (here &lt;code&gt;sway&lt;&#x2F;code&gt;) used to display the greeter&lt;&#x2F;li&gt;
&lt;li&gt;the entries in &lt;code&gt;environment&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;My config is as follows:&lt;&#x2F;p&gt;
&lt;h2 id=&quot;config-toml&quot;&gt;&lt;code&gt;config.toml&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# The VT to run the greeter on. Can be &amp;quot;next&amp;quot;, &amp;quot;current&amp;quot; or a number&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# designating the VT.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;vt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FF9E64;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;default_session&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;command&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;sway --config &#x2F;etc&#x2F;greetd&#x2F;sway-config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;greeter&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;greetd starts on tty1&lt;&#x2F;p&gt;
&lt;p&gt;it needs a compositor to start. This is way sway is launched first, I believe...&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sway-config&quot;&gt;&lt;code&gt;sway-config&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;exec &amp;quot;regreet; swaymsg exit&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;include &#x2F;etc&#x2F;sway&#x2F;config.d&#x2F;*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;input * {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	xkb_layout fr&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;and the environment:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sway&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;hyprland&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;river&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;zsh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I also needed to modify PAM so that my keyring is opened on login. Nextcloud
Desktop Sync app notably asks for a password or just does not login and needs to
reauthencate on each login. Which is very annoying.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;#%PAM-1.0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;auth       required     pam_securetty.so&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;auth       requisite    pam_nologin.so&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;auth       include      system-local-login&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;auth       optional     pam_gnome_keyring.so  # Add this line&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;account    include      system-local-login&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;session    include      system-local-login&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;session    optional     pam_gnome_keyring.so auto_start  # Add this line&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Awesome Lists</title>
        <published>2024-08-09T00:00:00+00:00</published>
        <updated>2024-08-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/awesome-lists/"/>
        <id>https://tgm.happyngreen.fr/lists/awesome-lists/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/awesome-lists/">&lt;p&gt;&lt;strong&gt;Awesome&lt;&#x2F;strong&gt; Lists sont des listes crée par des utilisateurs de Github. Chaque
liste regroupe des &lt;em&gt;awesome&lt;&#x2F;em&gt; ressources, liens, projets, en rapport à un sujet
particulier.&lt;&#x2F;p&gt;
&lt;p&gt;Voici ma liste de &lt;strong&gt;Awesome Lists&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;awesome-selfhosted&#x2F;awesome-selfhosted&quot;&gt;Awesome Selfhosted&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;DataDaoDe&#x2F;awesome-foss-apps&quot;&gt;Awesome FOSS apps to analyze and learn from&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;edm00se&#x2F;awesome-board-games&quot;&gt;Awesome Board games&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tarmann&#x2F;awesome-rpg&quot;&gt;Awesome RPG&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;godotengine&#x2F;awesome-godot&quot;&gt;Awesome Godot&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;self-hosting-lists&quot;&gt;Self-hosting lists&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;awesome-selfhosted.net&quot;&gt;https:&#x2F;&#x2F;awesome-selfhosted.net&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;general-purpose-wikis&quot;&gt;General Purpose Wikis&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.baeldung.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.baeldung.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;self-hosting-wikis&quot;&gt;Self-Hosting Wikis&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;selfhoster.dev&#x2F;&quot;&gt;https:&#x2F;&#x2F;selfhoster.dev&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;libreserver.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;libreserver.org&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;web-servers&quot;&gt;Web Servers&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;selfhoster.dev&#x2F;simple-docker-compose&#x2F;&quot;&gt;https:&#x2F;&#x2F;selfhoster.dev&#x2F;simple-docker-compose&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tildegit.org&#x2F;solderpunk&#x2F;shizaru&#x2F;&quot;&gt;https:&#x2F;&#x2F;tildegit.org&#x2F;solderpunk&#x2F;shizaru&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20230924185044&#x2F;https:&#x2F;&#x2F;www.simplecto.com&#x2F;use-traefik-with-nginx-apache-caddyserver-serve-static-files&#x2F;&quot;&gt;Use Traefik 2 with Nginx, Apache, or CaddyServer to Serve Static Files&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;container-image-providers&quot;&gt;Container Image Providers&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.linuxserver.io&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.linuxserver.io&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;hotio.dev&#x2F;&quot;&gt;https:&#x2F;&#x2F;hotio.dev&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;server-os&quot;&gt;Server OS&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;homelabos.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;homelabos.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;umbrel.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;umbrel.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous TTRPG</title>
        <published>2024-08-09T00:00:00+00:00</published>
        <updated>2025-08-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/ttrpg/"/>
        <id>https://tgm.happyngreen.fr/lists/ttrpg/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/ttrpg/">&lt;h2 id=&quot;systems&quot;&gt;Systems&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;general-mastodons-of-the-ttrpg-space&quot;&gt;General Mastodons of the TTRPG space&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;apocalypse-world.com&#x2F;&quot;&gt;Apocalypse World&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;plundergrounds.itch.io&#x2F;books-bullets&quot;&gt;Books &amp;amp; Bullets&lt;&#x2F;a&gt; Cthulhu micro
trpg.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;open-source&quot;&gt;Open Source&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rollforshoes.com&#x2F;&quot;&gt;Roll for Shoes&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cairnrpg.com&#x2F;&quot;&gt;Cairn SRD&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jamiltron.itch.io&#x2F;primeval-2d6&quot;&gt;Primeval 2D6&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;squidhead-games.itch.io&#x2F;flexpiel&quot;&gt;Flexspiel&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zeruhur.itch.io&#x2F;gist&quot;&gt;GIST!&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;yggdrasildistro.wordpress.com&#x2F;wp-content&#x2F;uploads&#x2F;2018&#x2F;12&#x2F;Saga-Core-Rulebook-6th-Edition.pdf&quot;&gt;Saga&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;solo-rpgs&quot;&gt;Solo RPGs&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;inflatablestudios.itch.io&#x2F;one-page-solo-engine&quot;&gt;One Page Solo Engine&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;untested&quot;&gt;Untested&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bullypulpitgames.itch.io&#x2F;star-crossed&quot;&gt;Star Crossed&lt;&#x2F;a&gt; →
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bullypulpitgames.com&#x2F;products&#x2F;star-crossed&quot;&gt;official store with actual play&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chrismcdee.itch.io&#x2F;mythic-bastionland&quot;&gt;Mythic Bastionland&lt;&#x2F;a&gt; - &lt;em&gt;In Mythic Bastionland you begin as a young knight errant, seeking the glory to lead warbands, earn a place in court, and rule your own domain. Glory is found in hunting the Myths of this world, manifesting them into reality while protecting the Realm from their strange influence.
Each player is one of 72 Knights, with personal equipment, a unique ability, and a passion that fuels their spirit. As your glory grows, you might eventually embark on the legendary City Quest, an impossible challenge to find The City itself, a shining metropolis seen only in dreams.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;goblinpunch.blogspot.com&#x2F;2016&#x2F;05&#x2F;the-glog.html&quot;&gt;The GLOG&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dunsany.itch.io&#x2F;glog-west-ttrpg&quot;&gt;Glog West TTRPG&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vaultsofvaarn.com&#x2F;&quot;&gt;Vaults of Vaarn&lt;&#x2F;a&gt;,&lt;em&gt;fragments of a blue ruin&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;creators&quot;&gt;Creators&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;johnharper.itch.io&#x2F;&quot;&gt;John Harper&lt;&#x2F;a&gt; &lt;em&gt;Blades in the Dark&lt;&#x2F;em&gt;, &lt;em&gt;Lasers &amp;amp;
Feelings&lt;&#x2F;em&gt;, &lt;em&gt;World of Dungeons&lt;&#x2F;em&gt;, ...&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;thebardicinquiry.itch.io&#x2F;&quot;&gt;The Bardic Inquiry&lt;&#x2F;a&gt; → Solo RPGs&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;cartography&quot;&gt;Cartography&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;cone.itch.io&#x2F;hex-kit&quot;&gt;hex-kit&lt;&#x2F;a&gt; - &lt;em&gt;Hex Kit is a multi-platform desktop application for building hex maps to be used with table top role playing games. Rather than being bogged down by features and complications, Hex Kit is built to be intuitive and quick to use with an emphasis on art.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;music&quot;&gt;Music&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;Desktop&#x2F;Web&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.kenku.fm&#x2F;&quot;&gt;Kenku FM&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tabletopy.com&#x2F;&quot;&gt;Tabletopy  Sounds for tabletop role-playing games, RPG sounds&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tabletopaudio.com&#x2F;&quot;&gt;Tabletop Audio - Ambiences and Music for Tabletop Role Playing Games&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;syrinscape.com&#x2F;&quot;&gt;Sound Effects &amp;amp; Ambient Music for RPGs  Syrinscape&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dscryb.com&#x2F;&quot;&gt;dScryb  Descriptions, Sounds and Maps for Roleplaying Games&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bardic.tools&#x2F;&quot;&gt;RPG Sound Made Easy&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Phone App&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;slashpaf.com&#x2F;audioforge&#x2F;&quot;&gt;Audio Forge - Transform Your TTRPG Soundscapes  Slashpaf&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.tabletone.app&#x2F;&quot;&gt;Tabletop RPG Soundboard &amp;amp; Audio App  TableTone&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;dm&quot;&gt;DM&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;plundergrounds.itch.io&#x2F;oracle&quot;&gt;The Oracle&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thearcanelibrary.com&#x2F;collections&#x2F;combat-cards&#x2F;products&#x2F;campaign-bundle-combat-cards-core-set&quot;&gt;Combat Cards&lt;&#x2F;a&gt;
→ I want to use this with
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;plugins.javalent.com&#x2F;statblocks&quot;&gt;Fantasy Statblock&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.drivethrurpg.com&#x2F;en&#x2F;product&#x2F;134163&#x2F;une-the-universal-npc-emulator-rev&quot;&gt;UNE&lt;&#x2F;a&gt;
&lt;em&gt;Universal NPC Emulator&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Obsidian Plugins&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;plugins.javalent.com&#x2F;&quot;&gt;Javalent&#x27;s Plugins&lt;&#x2F;a&gt; → Includes
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;plugins.javalent.com&#x2F;statblocks&quot;&gt;Fantasy Statblocks&lt;&#x2F;a&gt;, Leaflet map
stuff, intitiative tracker,&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Gameplay Mecanics&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.dungeonworldsrd.com&#x2F;gamemastering&#x2F;fronts&#x2F;&quot;&gt;Dungeon World&#x27;s Fronts&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;social-moderation-tools-methods&quot;&gt;Social Moderation Tools &amp;amp; Methods&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;document&#x2F;d&#x2F;1SB0jsx34bWHZWbnNIVVuMjhDkrdFGo1_hSC2BWPlI3A&#x2F;edit?pli=1&amp;amp;tab=t.0&quot;&gt;X-Card&lt;&#x2F;a&gt;
by John Stavropoulos.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;thoughty.itch.io&#x2F;script-change&quot;&gt;Script Change RPG Toolbox&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ressources&quot;&gt;Ressources&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;online-platforms&quot;&gt;Online Platforms&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;roll20.net&quot;&gt;Roll20&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;foundryvtt.com&quot;&gt;Foundry Virtual Tabletop&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lets-role.com&quot;&gt;Let&#x27;s Role&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.owlbear.rodeo&quot;&gt;Owlbear.rodeo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;playrole.com&quot;&gt;PlayRole&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.beyondtabletop.com&#x2F;&quot;&gt;BeyondTabletop&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;new.tableplop.com&#x2F;&quot;&gt;Tableplop&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;freebeegee.org&quot;&gt;FreeBeeGee&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;notes&quot;&gt;Notes&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.critical-notes.com&#x2F;&quot;&gt;Critical Notes&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;whiteboards&quot;&gt;Whiteboards&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;excalidraw.com&#x2F;&quot;&gt;Excalidraw.com&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;graphic-design&quot;&gt;Graphic Design&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;game-icons.net&#x2F;&quot;&gt;https:&#x2F;&#x2F;game-icons.net&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;other-online-lists&quot;&gt;Other Online lists&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Zireael07&#x2F;awesome-tabletop-rpgs&quot;&gt;Awesome-tabletop-rpg&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nagoshiashumari.github.io&#x2F;Rpg-Awesome&#x2F;&quot;&gt;https:&#x2F;&#x2F;nagoshiashumari.github.io&#x2F;Rpg-Awesome&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Markiplier going strategist</title>
        <published>2024-08-06T00:00:00+00:00</published>
        <updated>2024-08-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/markiplier-start/"/>
        <id>https://tgm.happyngreen.fr/blog/markiplier-start/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/markiplier-start/">&lt;p&gt;I was watching, then listening to Markiplier&#x27;s Series of Videos on The Joy of Creation:&lt;&#x2F;p&gt;
&lt;h2 id=&quot;first-video&quot;&gt;First Video&lt;&#x2F;h2&gt;

&lt;script type=&quot;module&quot; src=&quot;https:&#x2F;&#x2F;cdn.jsdelivr.net&#x2F;npm&#x2F;@justinribeiro&#x2F;lite-youtube@1.5.0&#x2F;lite-youtube.js&quot;&gt;&lt;&#x2F;script&gt;
&lt;lite-youtube videoid=&quot;Fy7MFivzd1k&quot;&gt;&lt;&#x2F;lite-youtube&gt;
&lt;h2 id=&quot;second-video&quot;&gt;Second Video&lt;&#x2F;h2&gt;

&lt;script type=&quot;module&quot; src=&quot;https:&#x2F;&#x2F;cdn.jsdelivr.net&#x2F;npm&#x2F;@justinribeiro&#x2F;lite-youtube@1.5.0&#x2F;lite-youtube.js&quot;&gt;&lt;&#x2F;script&gt;
&lt;lite-youtube videoid=&quot;EYVuTcp0IU0&quot;&gt;&lt;&#x2F;lite-youtube&gt;
&lt;p&gt;When I started the second video, right from the get-go I noticed that Markiplier had a different tone and attitude towards the game.&lt;&#x2F;p&gt;
&lt;p&gt;While the first video had him getting repeatedly confused and startled, the second video is very different.&lt;&#x2F;p&gt;
&lt;p&gt;It seems to me that he goes into this second session with a strategist mindset. The actions he undertakes are now informed by his growing understanding of the game&#x27;s mechanic.&lt;&#x2F;p&gt;
&lt;p&gt;At the start of the second video, he very quickly mentions adversary NPC that he can handle.&lt;&#x2F;p&gt;
&lt;p&gt;At one point, he uses words like «resource management» and «sound queues», talking about the core mechanic of the game of managing electricity fuses to keep the lights on and the noises made by different NPCs and items that he needs to find.&lt;&#x2F;p&gt;
&lt;p&gt;It hit me because I don&#x27;t handle horror&#x2F;scary games well. When I see Mark play like this I&#x27;m not as overwhelmed by what&#x27;s happening, and I think that&#x27;s one of the reasons I keep watching his videos. I get to enjoy those games via&amp;lt; proxy.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fabulous Books</title>
        <published>2024-08-02T00:00:00+00:00</published>
        <updated>2025-08-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/books/"/>
        <id>https://tgm.happyngreen.fr/lists/books/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/books/">&lt;h2 id=&quot;physical-books&quot;&gt;Physical Books&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;online-stores&quot;&gt;Online Stores&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.ethicalbooksearch.com&quot;&gt;Ethical Books Search&lt;&#x2F;a&gt; - a meta search
engine for used books across multiple stores.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.worldofbooks.com&#x2F;&quot;&gt;World of Books&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.momox-shop.fr&#x2F;&quot;&gt;Momox&lt;&#x2F;a&gt; &lt;em&gt;FR&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.abebooks.fr&#x2F;&quot;&gt;AbeBooks&lt;&#x2F;a&gt; &lt;em&gt;FR&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bookshop.org&#x2F;&quot;&gt;Bookshop&lt;&#x2F;a&gt; &lt;em&gt;US&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ebooks&quot;&gt;Ebooks&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;online-libraries&quot;&gt;Online Libraries:&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;Free&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;standardebooks.org&#x2F;&quot;&gt;StandardEbooks.org&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gitenberg.org&#x2F;&quot;&gt;Gitenberg.org&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gutenberg.org&#x2F;&quot;&gt;Gutenberg.org&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.epubbooks.com&#x2F;&quot;&gt;epubbooks.com&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Payed&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;manybooks.net&#x2F;&quot;&gt;manybooks.net&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;software&quot;&gt;Software&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;GUI&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;calibre&lt;&#x2F;li&gt;
&lt;li&gt;KOReader&lt;&#x2F;li&gt;
&lt;li&gt;the cbz and manga ones&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Toolkits&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;readium.org&#x2F;&quot;&gt;Readium&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;readium&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;readium&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;futurepress&#x2F;epub.js&#x2F;&quot;&gt;epub.js&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Self-hosting&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;stump&lt;&#x2F;li&gt;
&lt;li&gt;komga&lt;&#x2F;li&gt;
&lt;li&gt;kavita&lt;&#x2F;li&gt;
&lt;li&gt;calibre-web&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mémoire de fin de Master</title>
        <published>2024-08-01T00:00:00+00:00</published>
        <updated>2024-08-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2024-memoire-depnum/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2024-memoire-depnum/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2024-memoire-depnum/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;depnum.happyngreen.fr&quot;&gt;#1 Lien officiel&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;depnum.codeberg.pages&quot;&gt;#2 Lien de secours&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Mon mémoire de fin de Master à l&#x27;erg prend la forme d&#x27;un blog.&lt;&#x2F;p&gt;
&lt;p&gt;Je partage ici mon expérience en tant que personne confrontée à une dépendance
numérique, que je considère à la fois personnelle et systémique.&lt;&#x2F;p&gt;
&lt;p&gt;Chaque post aborde :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Mon vécu personnel avec les technologies numériques,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Une question que je me pose,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Un aspect spécifique de ma recherche sur la dépendance.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Les articles du blog sont organisés non pas par date, mais dans un ordre que
j&#x27;ai choisi pour offrir une lecture cohérente. Cependant, la date de début de
chaque post est indiquée sous le titre. À noter que j&#x27;ai rédigé la majorité de
ces notes et réflexions de manière non linéaire et souvent en parallèle.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Projects supported &amp; to support</title>
        <published>2024-07-31T00:00:00+00:00</published>
        <updated>2024-07-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/supporting/"/>
        <id>https://tgm.happyngreen.fr/lists/supporting/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/supporting/">&lt;p&gt;A list of projects that :&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;I support financially or with design and coding&lt;&#x2F;li&gt;
&lt;li&gt;I would like to support financially etc&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Firfox Crash on pdf: prime-run</title>
        <published>2024-07-30T00:00:00+00:00</published>
        <updated>2024-07-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/firefox-prime-run/"/>
        <id>https://tgm.happyngreen.fr/blog/firefox-prime-run/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/firefox-prime-run/">&lt;p&gt;I have a dual GPU laptop. It has an integrated iGPU from INTEL and a &lt;code&gt;GTX 1060&lt;&#x2F;code&gt; from NVIDIA. Recently, I tampered with the NVIDIA drivers and env in Hyprland, following the wiki to make sur my laptop works best running wayland and nvidia.&lt;&#x2F;p&gt;
&lt;p&gt;Around that time, I noticed that my browser of choice, Firefox, started to crash very often. I narrowed it down to opening pdfs in the browser (and going on websites that are GPU intensive, I would discover later).&lt;&#x2F;p&gt;
&lt;p&gt;I tried running firefox in safe-mode:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;firefox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E0AF68;&quot;&gt; --safe-mode&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;but that yielded nothing. The browser would not crash then.&lt;&#x2F;p&gt;
&lt;p&gt;I started to think that I might have issues with certain extensions, and I was toying with the idea of refreshing firefox (resets the browser, removes extensions, etc).&lt;&#x2F;p&gt;
&lt;p&gt;I thought it might be a version issue, since i had just updated to v128. So I &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Downgrading_packages&quot;&gt;downgraded&lt;&#x2F;a&gt; firefox to v127, following the Archlinux wiki guide using the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;Arch_Linux_Archive&quot;&gt;Arch Linux Archive&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;To my suprise, runninf the downgraded version both created a new profile (so no extensions and custom settings) but it also immediatly crashed when I opened a pdf from &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;blog&#x2F;firefox-prime-run&#x2F;arxiv.org&quot;&gt;arxiv.org&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;That&#x27;s when I realized that it might be something about GPU.&lt;&#x2F;p&gt;
&lt;p&gt;I quickly ran :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;prime-run&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; firefox&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;to run firfox offloaded to my nvidia card.&lt;&#x2F;p&gt;
&lt;p&gt;AND VOILÀ !&lt;&#x2F;p&gt;
&lt;p&gt;It works ! No more crashes.&lt;&#x2F;p&gt;
&lt;p&gt;My only issue is now that my nvidia is used by my gpu... I&#x27;m going to have to be carefull when doing GPU intensive stuff. + the battery might have a harder time now.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>llms bullshit</title>
        <published>2024-07-30T00:00:00+00:00</published>
        <updated>2024-07-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/llm-bullshit/"/>
        <id>https://tgm.happyngreen.fr/lists/llm-bullshit/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/llm-bullshit/">&lt;p&gt;Inspired by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.web3isgoinggreat.com&#x2F;&quot;&gt;WEB3 is going great&lt;&#x2F;a&gt;, created by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.mollywhite.net&#x2F;&quot;&gt;Molly White&lt;&#x2F;a&gt;. A log of what is happening because of llm products and its creators (awaiting for a better title).
This list is a link list. It provides a chronological ( order from newest when I found the page, not the page&#x27;s creation date) list of links.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Zettlr Custom Theme</title>
        <published>2024-07-30T00:00:00+00:00</published>
        <updated>2024-07-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/zettlr-custom-theme/"/>
        <id>https://tgm.happyngreen.fr/wiki/zettlr-custom-theme/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/zettlr-custom-theme/">&lt;p&gt;I made a custom theme for Zettlr. It&#x27;s a markdown editor to publish papers and
other academic writings. I&#x27;m currently using it to write my master&#x27;s thesus.&lt;&#x2F;p&gt;
&lt;p&gt;I used the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;nealmckee&#x2F;penumbra&quot;&gt;Penumbra color palette&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;{{ git_code(url=&quot; code_lang=&quot;css&quot;) }}&lt;&#x2F;p&gt;
&lt;p&gt;https:&#x2F;&#x2F;codeberg.org&#x2F;Pontoporeia&#x2F;gists&#x2F;raw&#x2F;branch&#x2F;main&#x2F;zettlr_custom_theme.css&quot;,&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>I&#x27;m thinking of buying new hardware</title>
        <published>2024-07-26T00:00:00+00:00</published>
        <updated>2024-07-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/hardware-computer-questions/"/>
        <id>https://tgm.happyngreen.fr/blog/hardware-computer-questions/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/hardware-computer-questions/">&lt;h2 id=&quot;preface&quot;&gt;Preface&lt;&#x2F;h2&gt;
&lt;p&gt;Rough outline of my dilemma, I have a chunky 15.6&quot; laptop and a beefy PC full team red (AMD), both unfit for an easily movable computer.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;requirements&quot;&gt;Requirements&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;m looking for:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;14&quot;, maybe 13&quot; sized laptop
&lt;ul&gt;
&lt;li&gt;a decent screen, no less than Full HD (1920×1080p)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;decent autonomy but not deal-breaker&lt;&#x2F;li&gt;
&lt;li&gt;at least 8th gen INTEL CPU or AMD equivalent. More recent means more performance, but not fundamentally needed for my workloads.&lt;&#x2F;li&gt;
&lt;li&gt;GPU would be nice, but makes the laptop bigger, more prone to heating and more power-hungry.
&lt;ul&gt;
&lt;li&gt;Between NVIDIA or AMD, I&#x27;m more inclined to get an NVIDIA GPU, especially Turing architecture or later.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Don&#x27;t need a lot of space, 500Go will do. 1To might be good, but seems like a lot.&lt;&#x2F;li&gt;
&lt;li&gt;Should have good Linux support.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;contenders&quot;&gt;Contenders&lt;&#x2F;h2&gt;
&lt;p&gt;I have three main contenders. Let&#x27;s do a run-down:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Dell Latitude 7490 &lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;li&gt;ASUS ROG Zephyrus G14 2021 &lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; &lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Framework Laptop 13&quot; &lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-4-1&quot;&gt;&lt;a href=&quot;#fn-4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;specification&quot;&gt;Spécification&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;laptop&lt;&#x2F;th&gt;&lt;th&gt;screen&lt;&#x2F;th&gt;&lt;th&gt;cpu&lt;&#x2F;th&gt;&lt;th&gt;gpu&lt;&#x2F;th&gt;&lt;th&gt;ram&lt;&#x2F;th&gt;&lt;th&gt;ports&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Dell Latitude 7490&lt;&#x2F;td&gt;&lt;td&gt;14&quot;&lt;&#x2F;td&gt;&lt;td&gt;8th Generation Intel Core up to i7 processors&lt;&#x2F;td&gt;&lt;td&gt;Intel UHD Graphics 620 (8th Gen Intel Core)&lt;&#x2F;td&gt;&lt;td&gt;2 DIMM slots supporting up to 32GB&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;ASUS Zephyrus G14 GA401IV-150T rtx 2060 max q&lt;&#x2F;td&gt;&lt;td&gt;14&quot;&lt;&#x2F;td&gt;&lt;td&gt;AMD Ryzen 9 4900HS&lt;&#x2F;td&gt;&lt;td&gt;NVIDIA GeForce RTX 2060 Max-Q - 6 GB VRAM, Core: 975 MHz, Memory: 1375 MHz, GDDR6, 442.59, Optimus&lt;&#x2F;td&gt;&lt;td&gt;16 GB, 8 GB soldered + 8 GB DDR4-3200&lt;&#x2F;td&gt;&lt;td&gt;1x 3.5mm Combo Audio Jack, 1x HDMI 2.0b, 1x USB 3.2 Gen 2 Type-C, 2x USB 3.2 Gen 1 Type-A, 1x USB 3.2 Gen 2 Type-C support DisplayPort™ &#x2F; power delivery &#x2F; G-SYNC&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Framework Laptop 13&quot; (intel or amd)&lt;&#x2F;td&gt;&lt;td&gt;13&quot;&lt;&#x2F;td&gt;&lt;td&gt;intel Ultra&lt;&#x2F;td&gt;&lt;td&gt;Intel® Arc™ graphics&lt;&#x2F;td&gt;&lt;td&gt;8Go - 64Go&lt;&#x2F;td&gt;&lt;td&gt;lots of options, modular, quite costly though&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;opinions&quot;&gt;Opinions&lt;&#x2F;h2&gt;
&lt;p&gt;Here is my thinking.&lt;&#x2F;p&gt;
&lt;p&gt;Third, I&#x27;m not sure whether I even want a new laptop. The NVIDIA laptop is still going strong, and while it has a few problems (hinges are breaking, the SUPER and FN keys are always switched whatever I do, it has crap battery), it can still run most things I need.&lt;&#x2F;p&gt;
&lt;p&gt;Second, I really need a good portable laptop. I go around my city via bike, and having 500g makes a difference.&lt;&#x2F;p&gt;
&lt;p&gt;First of, I&#x27;m very much unsure that I need a good GPU. I mostly use them to play around in Blender, run local LLMs and play games. But since I have my current NVIDIA GPU laptop, I could just do that through that. Even if I sell my beefy PC (that I really don&#x27;t need), I&#x27;d still have enough.&lt;&#x2F;p&gt;
&lt;p&gt;The framework laptop is just out of my budget for now. Upwards of 1200 € is a lot. The refurbished version does not seem to be in stock very often. It&#x27;s unfortunate, since it is unrivalled in terms of repairability and sustainability.&lt;&#x2F;p&gt;
&lt;p&gt;The g14 is an excellent form factor, though a bit heavy. And it heats up a lot I hear. The fans can even be a bit loud. I can find it on the cheap second hand. 700€ ish&lt;&#x2F;p&gt;
&lt;p&gt;The Dell is a bit ancient, but it has an 8th gen Intel, which is good enough for most things. Cheapest, max 350 €. Make sure to get the right specs !!!&lt;&#x2F;p&gt;
&lt;p&gt;All have decent RAM, though I would like to be able to go upwards of 20Go.&lt;&#x2F;p&gt;
&lt;p&gt;Disk Size wise, I don&#x27;t think any are a problem.&lt;&#x2F;p&gt;
&lt;p&gt;But I really don&#x27;t know...&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.dell.com&#x2F;support&#x2F;manuals&#x2F;fr-fr&#x2F;latitude-13-7390-laptop&#x2F;latitude_7290_7390_7490_tgb&#x2F;technical-specifications?guid=guid-5d8de0b8-5523-4f10-a6d0-999199b74bea&amp;amp;lang=en-us&quot;&gt;latitude 7490 - technical-specifications - dell.com&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rog.asus.com&#x2F;laptops&#x2F;rog-zephyrus&#x2F;2021-rog-zephyrus-g14-series&#x2F;spec&#x2F;&quot;&gt;asus 2021-rog-zephyrus-g14 - asus&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.notebookcheck.net&#x2F;Asus-Zephyrus-G14-Ryzen-9-GeForce-RTX-2060-Max-Q-Laptop-Review-Kicking-Core-i9-to-the-Curb.457817.0.html&quot;&gt;Asus-Zephyrus-G14-Ryzen-9-GeForce-RTX-2060-Max-Q-Laptop-Review - notebookcheck.net&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;frame.work&#x2F;fr&#x2F;en&#x2F;products&#x2F;laptop13-diy-intel-ultra-1?tab=specs&quot;&gt;laptop 13&quot; - frame.work&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-4-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Écrire&#x2F;Writing</title>
        <published>2024-07-20T00:00:00+00:00</published>
        <updated>2024-07-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/writing/"/>
        <id>https://tgm.happyngreen.fr/lists/writing/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/writing/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;diataxis.fr&#x2F;&quot;&gt;Diátaxis - A systematic approach to technical documentation authoring&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;evaparish.com&#x2F;blog&#x2F;how-i-edit&quot;&gt;What I think about when I edit - Eva Parish&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;link-dump&quot;&gt;Link dump&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=874747&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=874747&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.covingtoninnovations.com&#x2F;mc&#x2F;WriteThinkLearn.htm&quot;&gt;https:&#x2F;&#x2F;www.covingtoninnovations.com&#x2F;mc&#x2F;WriteThinkLearn.htm&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=23492358&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=23492358&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;acesounderglass.com&#x2F;2020&#x2F;06&#x2F;10&#x2F;what-to-write-down-when-youre-reading-to-learn&#x2F;&quot;&gt;https:&#x2F;&#x2F;acesounderglass.com&#x2F;2020&#x2F;06&#x2F;10&#x2F;what-to-write-down-when-youre-reading-to-learn&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=3982354&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=3982354&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;randsinrepose.com&#x2F;archives&#x2F;please-learn-to-write&#x2F;&quot;&gt;https:&#x2F;&#x2F;randsinrepose.com&#x2F;archives&#x2F;please-learn-to-write&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ics.uci.edu&#x2F;~sternh&#x2F;courses&#x2F;210&#x2F;cohen94_pval.pdf&quot;&gt;https:&#x2F;&#x2F;ics.uci.edu&#x2F;~sternh&#x2F;courses&#x2F;210&#x2F;cohen94_pval.pdf&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=J7E-aoXLZGY&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=J7E-aoXLZGY&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;freemind.sourceforge.io&#x2F;wiki&#x2F;index.php&#x2F;Main_Page&quot;&gt;https:&#x2F;&#x2F;freemind.sourceforge.io&#x2F;wiki&#x2F;index.php&#x2F;Main_Page&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;andromeda.rutgers.edu&#x2F;~jlynch&#x2F;Writing&#x2F;&quot;&gt;https:&#x2F;&#x2F;andromeda.rutgers.edu&#x2F;~jlynch&#x2F;Writing&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;English-Language-Users-Guide&#x2F;dp&#x2F;1585101850&#x2F;ref=sr_1_23&#x2F;103-1573744-7019061?ie=UTF8&amp;amp;s=books&amp;amp;qid=1193178971&amp;amp;sr=1-23&quot;&gt;https:&#x2F;&#x2F;www.amazon.com&#x2F;English-Language-Users-Guide&#x2F;dp&#x2F;1585101850&#x2F;ref=sr_1_23&#x2F;103-1573744-7019061?ie=UTF8&amp;amp;s=books&amp;amp;qid=1193178971&amp;amp;sr=1-23&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sas.upenn.edu&#x2F;~haroldfs&#x2F;dravling&#x2F;grice.html&quot;&gt;https:&#x2F;&#x2F;www.sas.upenn.edu&#x2F;~haroldfs&#x2F;dravling&#x2F;grice.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=2860861&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=2860861&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.xaprb.com&#x2F;blog&#x2F;2011&#x2F;08&#x2F;04&#x2F;computer-science-students-learn-to-write&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.xaprb.com&#x2F;blog&#x2F;2011&#x2F;08&#x2F;04&#x2F;computer-science-students-learn-to-write&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.essayjudge.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.essayjudge.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Muphry%27s_law&quot;&gt;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Muphry%27s_law&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.museumsilkeborg.dk&#x2F;why-did-tollund-man-have-to-die&quot;&gt;https:&#x2F;&#x2F;www.museumsilkeborg.dk&#x2F;why-did-tollund-man-have-to-die&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9603029&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9603029&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jacobian.org&#x2F;series&#x2F;great-documentation&#x2F;&quot;&gt;https:&#x2F;&#x2F;jacobian.org&#x2F;series&#x2F;great-documentation&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ericholscher.com&#x2F;blog&#x2F;2014&#x2F;feb&#x2F;27&#x2F;how-i-judge-documentation-quality&#x2F;&quot;&gt;https:&#x2F;&#x2F;ericholscher.com&#x2F;blog&#x2F;2014&#x2F;feb&#x2F;27&#x2F;how-i-judge-documentation-quality&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matheusfelipeog&#x2F;beautiful-docs&#x2F;blob&#x2F;master&#x2F;README.md&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;matheusfelipeog&#x2F;beautiful-docs&#x2F;blob&#x2F;master&#x2F;README.md&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.heavybit.com&#x2F;library&#x2F;video&#x2F;2014-12-09-jacob-kaplan-moss&quot;&gt;https:&#x2F;&#x2F;www.heavybit.com&#x2F;library&#x2F;video&#x2F;2014-12-09-jacob-kaplan-moss&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;coursebuffet.com&#x2F;sub&#x2F;english&quot;&gt;https:&#x2F;&#x2F;coursebuffet.com&#x2F;sub&#x2F;english&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.coursebuffet.com&#x2F;sub&#x2F;english&#x2F;402&#x2F;engineering-communication&quot;&gt;https:&#x2F;&#x2F;www.coursebuffet.com&#x2F;sub&#x2F;english&#x2F;402&#x2F;engineering-communication&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=40892298&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=40892298&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=31711071&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=31711071&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22814342&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=22814342&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.nytimes.com&#x2F;2020&#x2F;04&#x2F;07&#x2F;smarter-living&#x2F;how-to-edit-your-own-writing.html&quot;&gt;https:&#x2F;&#x2F;www.nytimes.com&#x2F;2020&#x2F;04&#x2F;07&#x2F;smarter-living&#x2F;how-to-edit-your-own-writing.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20200407214010&#x2F;https:&#x2F;&#x2F;www.nytimes.com&#x2F;2020&#x2F;04&#x2F;07&#x2F;smarter-living&#x2F;how-to-edit-your-own-writing.html&quot;&gt;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20200407214010&#x2F;https:&#x2F;&#x2F;www.nytimes.com&#x2F;2020&#x2F;04&#x2F;07&#x2F;smarter-living&#x2F;how-to-edit-your-own-writing.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=37358400&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=37358400&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stingingfly.org&#x2F;2017&#x2F;10&#x2F;24&#x2F;edit-lousy-writing&#x2F;&quot;&gt;https:&#x2F;&#x2F;stingingfly.org&#x2F;2017&#x2F;10&#x2F;24&#x2F;edit-lousy-writing&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.advancedfictionwriting.com&#x2F;articles&#x2F;snowflake-method&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.advancedfictionwriting.com&#x2F;articles&#x2F;snowflake-method&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;thisblogisaploy.blogspot.com&#x2F;2011&#x2F;09&#x2F;how-i-plot-novel-in-5-steps.html&quot;&gt;https:&#x2F;&#x2F;thisblogisaploy.blogspot.com&#x2F;2011&#x2F;09&#x2F;how-i-plot-novel-in-5-steps.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.antipope.org&#x2F;charlie&#x2F;blog-static&#x2F;2010&#x2F;03&#x2F;cmap-5-why-books-are-the-lengt.html&quot;&gt;https:&#x2F;&#x2F;www.antipope.org&#x2F;charlie&#x2F;blog-static&#x2F;2010&#x2F;03&#x2F;cmap-5-why-books-are-the-lengt.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;freelancewritinggigs.com&#x2F;2010&#x2F;03&#x2F;how-i-improved-productivity-by-canceling-my-home-internet-connection&#x2F;&quot;&gt;https:&#x2F;&#x2F;freelancewritinggigs.com&#x2F;2010&#x2F;03&#x2F;how-i-improved-productivity-by-canceling-my-home-internet-connection&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ludumdare.com&#x2F;resources&#x2F;archive&#x2F;compo&#x2F;?u=about-ludum-dare&#x2F;&quot;&gt;https:&#x2F;&#x2F;ludumdare.com&#x2F;resources&#x2F;archive&#x2F;compo&#x2F;?u=about-ludum-dare&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;thewhitetulip&#x2F;Tasks&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;thewhitetulip&#x2F;Tasks&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.fastcompany.com&#x2F;3063392&#x2F;your-most-productive-self&#x2F;how-writing-to-do-lists-helps-your-brain-even-when-you-dont-comple&quot;&gt;https:&#x2F;&#x2F;www.fastcompany.com&#x2F;3063392&#x2F;your-most-productive-self&#x2F;how-writing-to-do-lists-helps-your-brain-even-when-you-dont-comple&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bulletjournal.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;bulletjournal.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.fastcompany.com&#x2F;3021586&#x2F;most-productive-people-box-aaron-levie&quot;&gt;https:&#x2F;&#x2F;www.fastcompany.com&#x2F;3021586&#x2F;most-productive-people-box-aaron-levie&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.buzzfeed.com&#x2F;rachelwmiller&#x2F;how-to-start-a-bullet-journal&quot;&gt;https:&#x2F;&#x2F;www.buzzfeed.com&#x2F;rachelwmiller&#x2F;how-to-start-a-bullet-journal&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bakadesuyo.com&#x2F;2016&#x2F;02&#x2F;evening-ritual&#x2F;&quot;&gt;https:&#x2F;&#x2F;bakadesuyo.com&#x2F;2016&#x2F;02&#x2F;evening-ritual&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.mytinytodo.net&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.mytinytodo.net&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;theonejb&#x2F;dotfiles&#x2F;tree&#x2F;master&#x2F;taskwarrior&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;theonejb&#x2F;dotfiles&#x2F;tree&#x2F;master&#x2F;taskwarrior&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.paulgraham.com&#x2F;makersschedule.html&quot;&gt;https:&#x2F;&#x2F;www.paulgraham.com&#x2F;makersschedule.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Shorthand&quot;&gt;https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Shorthand&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;weekplan.net&#x2F;online-course-time-management&#x2F;braindumps-how-to-reduce-stress-instantly&#x2F;&quot;&gt;https:&#x2F;&#x2F;weekplan.net&#x2F;online-course-time-management&#x2F;braindumps-how-to-reduce-stress-instantly&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.evalapply.org&#x2F;posts&#x2F;why-and-how-i-use-org-mode&#x2F;index.html&quot;&gt;https:&#x2F;&#x2F;www.evalapply.org&#x2F;posts&#x2F;why-and-how-i-use-org-mode&#x2F;index.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.beeminder.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.beeminder.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;orgmode.org&#x2F;worg&#x2F;org-tutorials&#x2F;advanced-searching.html&quot;&gt;https:&#x2F;&#x2F;orgmode.org&#x2F;worg&#x2F;org-tutorials&#x2F;advanced-searching.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kitchingroup.cheme.cmu.edu&#x2F;blog&#x2F;2017&#x2F;01&#x2F;03&#x2F;Find-stuff-in-org-mode-anywhere&#x2F;&quot;&gt;https:&#x2F;&#x2F;kitchingroup.cheme.cmu.edu&#x2F;blog&#x2F;2017&#x2F;01&#x2F;03&#x2F;Find-stuff-in-org-mode-anywhere&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;orgmode.org&#x2F;manual&#x2F;Search-view.html&quot;&gt;https:&#x2F;&#x2F;orgmode.org&#x2F;manual&#x2F;Search-view.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;alphapapa&#x2F;org-ql&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;alphapapa&#x2F;org-ql&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;casouri&#x2F;xeft&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;casouri&#x2F;xeft&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.evalapply.org&#x2F;posts&#x2F;why-and-how-i-use-org-mode&#x2F;index.html#fn1&quot;&gt;https:&#x2F;&#x2F;www.evalapply.org&#x2F;posts&#x2F;why-and-how-i-use-org-mode&#x2F;index.html#fn1&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lists.gnu.org&#x2F;archive&#x2F;html&#x2F;emacs-orgmode&#x2F;2021-04&#x2F;msg00108.html&quot;&gt;https:&#x2F;&#x2F;lists.gnu.org&#x2F;archive&#x2F;html&#x2F;emacs-orgmode&#x2F;2021-04&#x2F;msg00108.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;niklasfasching&#x2F;go-org&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;niklasfasching&#x2F;go-org&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;hitchdev.com&#x2F;orji&#x2F;&quot;&gt;https:&#x2F;&#x2F;hitchdev.com&#x2F;orji&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;braintool.org&#x2F;2022&#x2F;04&#x2F;29&#x2F;Tools4Thought-should-use-Org-for-interop.html&quot;&gt;https:&#x2F;&#x2F;braintool.org&#x2F;2022&#x2F;04&#x2F;29&#x2F;Tools4Thought-should-use-Org-for-interop.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=thpzXjmYyGk&amp;amp;t=376s&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=thpzXjmYyGk&amp;amp;t=376s&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;c&#x2F;systemcrafters&#x2F;playlists&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;c&#x2F;systemcrafters&#x2F;playlists&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=34127742&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=34127742&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?app=desktop&amp;amp;v=oSdLfPas8dw&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?app=desktop&amp;amp;v=oSdLfPas8dw&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;raymondwriteswrongs.wordpress.com&#x2F;2015&#x2F;04&#x2F;22&#x2F;writing-advice-from-gene-wolfe&#x2F;&quot;&gt;https:&#x2F;&#x2F;raymondwriteswrongs.wordpress.com&#x2F;2015&#x2F;04&#x2F;22&#x2F;writing-advice-from-gene-wolfe&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20190113185037&#x2F;https:&#x2F;&#x2F;blog.manythingsblue.com&#x2F;2019-01&#x2F;writing-things-down&#x2F;&quot;&gt;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20190113185037&#x2F;https:&#x2F;&#x2F;blog.manythingsblue.com&#x2F;2019-01&#x2F;writing-things-down&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=25250058&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=25250058&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mtlynch.io&#x2F;editor&#x2F;&quot;&gt;https:&#x2F;&#x2F;mtlynch.io&#x2F;editor&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=2179254&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=2179254&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.codinghorror.com&#x2F;blog&#x2F;2011&#x2F;02&#x2F;how-to-write-without-writing.html&quot;&gt;https:&#x2F;&#x2F;www.codinghorror.com&#x2F;blog&#x2F;2011&#x2F;02&#x2F;how-to-write-without-writing.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=2177226&quot;&gt;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=2177226&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nickm.com&#x2F;post&#x2F;2009&#x2F;07&#x2F;introducing-curveship&#x2F;&quot;&gt;https:&#x2F;&#x2F;nickm.com&#x2F;post&#x2F;2009&#x2F;07&#x2F;introducing-curveship&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;writing.stackexchange.com&#x2F;&quot;&gt;https:&#x2F;&#x2F;writing.stackexchange.com&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.henrikkarlsson.xyz&#x2F;p&#x2F;writing-to-think&quot;&gt;https:&#x2F;&#x2F;www.henrikkarlsson.xyz&#x2F;p&#x2F;writing-to-think&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>List of internet hivemind examples and other weird tales</title>
        <published>2024-07-14T00:00:00+00:00</published>
        <updated>2024-07-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/internet-hivemind/"/>
        <id>https://tgm.happyngreen.fr/lists/internet-hivemind/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/internet-hivemind/">&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;suanto.com&#x2F;2024&#x2F;06&#x2F;06&#x2F;the-time-I-built-an-ROV-01&#x2F;&quot;&gt;The Time I Built an ROV to Solve Missing Person Cases&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.otherhand.org&#x2F;home-page&#x2F;search-and-rescue&#x2F;&quot;&gt;Search &#x2F; Rescue&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Restaurants Vegan</title>
        <published>2024-06-19T00:00:00+00:00</published>
        <updated>2024-06-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/vegan-restaurants/"/>
        <id>https://tgm.happyngreen.fr/lists/vegan-restaurants/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/vegan-restaurants/">&lt;h2 id=&quot;par-villes&quot;&gt;Par Villes&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;paris&quot;&gt;Paris&lt;&#x2F;h3&gt;
&lt;h3 id=&quot;bruxelles&quot;&gt;Bruxelles&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sushibuzz.be&#x2F;&quot;&gt;SushiBuzz&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;38 Avenue Docteur Dejase 1030 Bruxelles&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Demander Vegan, pas Vege.&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;moteur-de-recherches&quot;&gt;Moteur de recherches&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.happycow.net&quot;&gt;HappyCow&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;listicles&quot;&gt;Listicles&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bevegan.be&#x2F;fr&#x2F;manger-vegane-a-bruxelles-notre-guide-des-bonnes-adresses&#x2F;&quot;&gt;Manger végane à Bruxelles : notre guide des bonnes adresses - BeVegan.be&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Gérer les couleurs lors du ricing de mon OS</title>
        <published>2024-06-14T00:00:00+00:00</published>
        <updated>2024-06-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/ricing-1/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/ricing-1/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/ricing-1/">&lt;p&gt;La couleur de mon environement de travail sur ordinateur m&#x27;est très important.&lt;&#x2F;p&gt;
&lt;p&gt;Qu&#x27;est ce que je dois modifier dans mes dotfiles pour changer les couleurs et unifié le look de mon système ?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hyprland&quot;&gt;hyprland&lt;&#x2F;h2&gt;
&lt;p&gt;les couleurs dans hyprland interviennent dans la sections &lt;code&gt;general&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;col.inactive_border&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;col.active_border&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;em&gt;unknown parameters&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;col.nogroup_border&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;col.nogroup_border_active&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;et dans la section &lt;code&gt;decoration&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;col.shadow&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;col.shadow_inactive&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;waybar&quot;&gt;waybar&lt;&#x2F;h2&gt;
&lt;p&gt;Comme waybar utilise du CSS, on peut importer dans &lt;code&gt;style.css&lt;&#x2F;code&gt; un fichier qui est dédier au couleurs. On crée des variables CSS associé au couleurs.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;apps&quot;&gt;Apps&lt;&#x2F;h2&gt;
&lt;p&gt;Les applications linux sont généralement conçus avec GTK ou Qt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;directement-dans-la-config-de-hyprland&quot;&gt;Directement dans la config de &lt;code&gt;hyprland&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;nwg-look&quot;&gt;nwg-look&lt;&#x2F;h3&gt;
&lt;p&gt;Application qui permet de modifier des param_tre&lt;&#x2F;p&gt;
&lt;p&gt;qt6ct &#x2F; qt5ct
foot terminal
zsh
logseq
obsidian
nvim
micro&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>DepNum</title>
        <published>2024-06-01T00:00:00+00:00</published>
        <updated>2024-06-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2024-depnum/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2024-depnum/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2024-depnum/">&lt;p&gt;mqjdfmqlksjdfmlkjdqsmlfkj&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Interesting stuff</title>
        <published>2024-05-24T00:00:00+00:00</published>
        <updated>2024-05-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/interesting/"/>
        <id>https://tgm.happyngreen.fr/lists/interesting/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/interesting/">&lt;p&gt;2024-05-24&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Number_16_%28spider%29&quot;&gt;Number 16 (spider) | wikipedia.org&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Anti-Monopoly</title>
        <published>2024-05-23T00:00:00+00:00</published>
        <updated>2024-10-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/anti-monopoly/"/>
        <id>https://tgm.happyngreen.fr/lists/anti-monopoly/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/anti-monopoly/">&lt;p&gt;List of anti-monopoly &#x2F; anti-trust examples:&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>testing html</title>
        <published>2024-05-22T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/testing-html/"/>
        <id>https://tgm.happyngreen.fr/wiki/testing-html/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/testing-html/">&lt;p&gt;https:&#x2F;&#x2F;heydonworks.com&#x2F;article&#x2F;testing-html-with-modern-css&#x2F;#main
https:&#x2F;&#x2F;github.com&#x2F;potch&#x2F;unmaintained.tech
https:&#x2F;&#x2F;github.com&#x2F;Heydon&#x2F;REVENGE.CSS&#x2F;tree&#x2F;master?tab=readme-ov-file&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Alternative Tools</title>
        <published>2024-04-18T00:00:00+00:00</published>
        <updated>2024-04-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/alternative/"/>
        <id>https://tgm.happyngreen.fr/lists/alternative/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/alternative/"></content>
        
    </entry>
    <entry xml:lang="en">
        <title>Blogging Platform List</title>
        <published>2024-04-15T00:00:00+00:00</published>
        <updated>2024-04-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/blogging/"/>
        <id>https://tgm.happyngreen.fr/lists/blogging/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/blogging/">&lt;h2 id=&quot;hosted-platform&quot;&gt;Hosted Platform&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bearblog.dev&#x2F;&quot;&gt;BearBlog&lt;&#x2F;a&gt;, light minimalist hosted blog, free tier (less then Mataroa Blog) but a growing community.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mataroa.blog&#x2F;&quot;&gt;Mataroa Blog&lt;&#x2F;a&gt;, light, minimalist hosted blog, free tier.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;writefreely.org&#x2F;&quot;&gt;Write Freely&lt;&#x2F;a&gt;, fediverse-connected super simple writing platform.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;cms&quot;&gt;CMS&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;chyrplite.net&quot;&gt;Chyrp Lite&lt;&#x2F;a&gt;, lightweight blogging engine, in PHP, self-hostable.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;havenweb.org&#x2F;index.html&quot;&gt;Haven&lt;&#x2F;a&gt;, another blog CMS, in Ruby.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ghost.org&#x2F;&quot;&gt;Ghost&lt;&#x2F;a&gt; a bit heavy, monetization, newsletter, blog, self-hostable.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;ssg&quot;&gt;SSG&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;getzola.org&quot;&gt;Zola&lt;&#x2F;a&gt;, Rust-based Static Site Generator, minimalist.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Notes on the V.O.M.I.T System</title>
        <published>2024-04-14T00:00:00+00:00</published>
        <updated>2024-04-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/vomit-system-notes/"/>
        <id>https://tgm.happyngreen.fr/blog/vomit-system-notes/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/vomit-system-notes/">&lt;p&gt;The V.O.M.I.T. System by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=U8RQsJ0Q3Mo&quot;&gt;@struthless&lt;&#x2F;a&gt; is a method of journaling. It combines multiple exercices for different needs and goals to make journaling clear.&lt;&#x2F;p&gt;
&lt;p&gt;The idea is that journaling is like vomiting, &lt;strong&gt;it makes you feel better after&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Obviously, each letter stands for one reason for journaling: Vent, Obligations, Mindset, Ideate and Trajectory&lt;&#x2F;p&gt;
&lt;h2 id=&quot;vent&quot;&gt;Vent&lt;&#x2F;h2&gt;
&lt;hr &#x2F;&gt;
&lt;blockquote&gt;
&lt;p&gt;« Write what makes you angry.»&lt;&#x2F;p&gt;
&lt;p&gt;- Po Bronson&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Journaling to Vent is a good way to start a «journaling session».&lt;&#x2F;p&gt;
&lt;h3 id=&quot;think-of-something-that-makes-you-mad&quot;&gt;Think of &lt;strong&gt;something that makes you mad&lt;&#x2F;strong&gt;.&lt;&#x2F;h3&gt;
&lt;p&gt;The idea is not to try and write a rant, it&#x27;s more of a way to start off writing. &lt;strong&gt;It&#x27;s to get you started.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;This exercice also has a &lt;strong&gt;mind dump effect&lt;&#x2F;strong&gt;. It&#x27;s where the action of putting ideas and thoughts outside of your minde aka paper or (meh) computer takes you from chaotic to fixed (momentarily).
&lt;img src=&quot;&#x2F;img&#x2F;mind_dump.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;@struthless calles it &lt;strong&gt;an&amp;gt; « if you want a kitten ask for a horse » indexing effect&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;« I don&#x27;t know what I think until I write it.»&lt;&#x2F;p&gt;
&lt;p&gt;- Someone&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Put the mess on paper. Paper is finite. Paper is matter you kinda shape. There is this phenomena where matter transforms you as you transform it (&lt;em&gt;Tim Ingold&lt;&#x2F;em&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;Turn the light on in a dark room to look for your keys.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;obligation&quot;&gt;Obligation&lt;&#x2F;h2&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Stop your obligations from being &lt;strong&gt;« rogue intrusive thoughts that just bug us»&lt;&#x2F;strong&gt;. And also &lt;strong&gt;get those obligations DONE&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;We are mind-dumping our responsibilities aka to-do list. &lt;strong&gt;Our brain should be used to solve problems, not to store them.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;To free up the BRAIN, put those obligations on paper !&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: check out Thiago Forte&#x27;s concept of second brain
taking your thoughts and putting them somewhere else.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Note 2: READ &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bookshop.org&#x2F;p&#x2F;books&#x2F;proust-and-the-squid-the-story-and-science-of-the-reading-brain-maryanne-wolf&#x2F;15548247?ean=9780060933845&quot;&gt;Proust and the Squid: The Story and Science of the Reading Brain&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;actionnable&quot;&gt;Actionnable:&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Obligation Dump&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;→ Anything that could remotely be considered an obligation. Everything from the mundane to the grandiose&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Organize&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;→ split into broad categories aka Buckets&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prioritise&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;→ Guiding Question: one principle or question to run things by to easily discriminate the importance of the task. ex:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;« what one thing on this list, if done, would make everything else easier ? »&lt;&#x2F;p&gt;
&lt;p&gt;Tim Ferris&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bare Minimum &amp;amp; Killing It&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Write the to-do list. You can divide into&lt;&#x2F;p&gt;
&lt;p&gt;→ a &lt;strong&gt;Bare Minimum&lt;&#x2F;strong&gt; list, for when you are not at your best, or if life is curve-balling you, and&lt;&#x2F;p&gt;
&lt;p&gt;→ a &lt;strong&gt;Killing It&lt;&#x2F;strong&gt; list, for when you have energy to spare.&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;strong&gt;Bare Minimum&lt;&#x2F;strong&gt; is also guilt-diffusing and builds courage and motivation because it&#x27;s easy to do. &lt;strong&gt;Baby steps !!!&lt;&#x2F;strong&gt;→&lt;&#x2F;p&gt;
&lt;h2 id=&quot;mindset&quot;&gt;Mindset&lt;&#x2F;h2&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;2 meanings of mindset:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;the operating system that your brain computer runs.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;tech metaphor that I don&#x27;t like, though I can&#x27;t tell why just yet...&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;something you can train&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;train your mindset: 6 journaling techniques&lt;&#x2F;p&gt;
&lt;h3 id=&quot;reframing&quot;&gt;Reframing&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;how is this the best thing that has ever happened to me ?&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Gets you thinking.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;possibility&quot;&gt;Possibility&lt;&#x2F;h3&gt;
&lt;p&gt;Check out « Because ...» statements. It&#x27;s a way of gathering evidence that we are whatever the thing that we say we want to be ???&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;DUnno what that means&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;oh wait, :&lt;&#x2F;p&gt;
&lt;p&gt;tangible bank of evidence.&lt;&#x2F;p&gt;
&lt;p&gt;Identity statement: « I am healthy »&lt;&#x2F;p&gt;
&lt;p&gt;BECAUSE:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;list 3 things from your day that support that statement&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;I went for a walk&lt;&#x2F;li&gt;
&lt;li&gt;I ate vegetables&lt;&#x2F;li&gt;
&lt;li&gt;I went to bed early&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;em&gt;etc.. if more&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Effects:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;positive because you see the evidence. That&#x27;s the thing that causes change&lt;&#x2F;li&gt;
&lt;li&gt;makes you create evidence and foster actions and habits that benefit you.&lt;&#x2F;li&gt;
&lt;li&gt;it&#x27;s a great reality check. You cannot grow taller biologically when you are old.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;inversion&quot;&gt;Inversion&lt;&#x2F;h3&gt;
&lt;p&gt;The idea is to practice a reaction to a problem in everyday life: look for solution, but also the opposite of a solution.&lt;&#x2F;p&gt;
&lt;p&gt;The goal is to &lt;strong&gt;take open-ended problems and turn them into really simple things to do.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;When stuck on a question, ask the opposite. &lt;strong&gt;Inverting it to make the answer(s) clearer.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;ex :&lt;&#x2F;em&gt; How can I write more ? well, how can I write less ?&lt;&#x2F;p&gt;
&lt;h3 id=&quot;perspective&quot;&gt;Perspective&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;« you know that whole phenomenon that &lt;strong&gt;other people&#x27;s problems are easier to solve than your own&lt;&#x2F;strong&gt; like you know when your friend has this conundrum and they&#x27;re like what do I do what do I do and everyone&#x27;s like obviously you do this you just do this man but they still deliberate and it&#x27;s not as clear as it is to everybody else and it makes sense obviously you know they&#x27;re the ones who actually have to live it they&#x27;re the ones with all the Nuance whereas &lt;strong&gt;the people giving the advice have the luxury of not getting caught in the details and perspective&lt;&#x2F;strong&gt; and &lt;strong&gt;that is what we can practice giving ourselves perspective&lt;&#x2F;strong&gt; »&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Journaling prompt:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If you were a friend who was giving YOU advice&lt;&#x2F;strong&gt; on this situation right now (and you really really wanted YOU to succeed), &lt;strong&gt;what advice would you give&lt;&#x2F;strong&gt; ?&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;« We are practicticing looking outside ourselves in order to help ourselves.»&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;discipline&quot;&gt;Discipline&lt;&#x2F;h3&gt;
&lt;p&gt;meta-tool: not a prompt, but the act of journaling.
See &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=mFvdHfhVIsQ&quot;&gt;I replaced Social Media with Micro-Journalling for 1 Year - @struthless&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;«switching from something that pacifies your brain to something that gets you to actively reflect on what your brain&#x27;s doing»&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;gratitude&quot;&gt;Gratitude&lt;&#x2F;h3&gt;
&lt;p&gt;Prompt: &lt;strong&gt;What are three things you are gratiful for today ?&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;EXTRA:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Something mun date,&lt;&#x2F;li&gt;
&lt;li&gt;something that happened by chance,&lt;&#x2F;li&gt;
&lt;li&gt;something that you made happen.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;ideate&quot;&gt;Ideate&lt;&#x2F;h2&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Ideate: The skill of having ideas. It&#x27;s not innate, it&#x27;s a muscle you can work for it to become easier and maybe «better»&lt;&#x2F;p&gt;
&lt;p&gt;I. Try and come up with 30 answers to the problem you are solving, in 5 minutes.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;« if you want a kitten ask for a horse »&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DON&#x27;T EDIT THE LIST UNTIL IT&#x27;S OVER&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Quantity over quality.&lt;&#x2F;p&gt;
&lt;p&gt;II. How would ******* solve this problem ?&lt;&#x2F;p&gt;
&lt;p&gt;III. Open the loop&lt;&#x2F;p&gt;
&lt;p&gt;If you open the loop, our brain wants to close the loop.&lt;&#x2F;p&gt;
&lt;p&gt;Write down the question somewhere, and your brain will want to close the loop.&lt;&#x2F;p&gt;
&lt;p&gt;Write the question down before going to bed, sleep, and answer the question when you wake up.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;open &amp;gt; sleep &amp;gt; close&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Litterally, &lt;strong&gt;SLEEP ON IT&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;trajectory&quot;&gt;Trajectory&lt;&#x2F;h2&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;two different techniques, one for the macro and one for the micro&lt;&#x2F;p&gt;
&lt;h3 id=&quot;direction&quot;&gt;Direction&lt;&#x2F;h3&gt;
&lt;p&gt;Over a time periode, write down the goal:&lt;&#x2F;p&gt;
&lt;p&gt;Goal: ****&lt;&#x2F;p&gt;
&lt;p&gt;and you ask whether you&#x27;re moving away or toward the goal.&lt;&#x2F;p&gt;
&lt;p&gt;actions that prevent it &amp;amp; actions that enable it.&lt;&#x2F;p&gt;
&lt;p&gt;Write the evidence for both !&lt;&#x2F;p&gt;
&lt;p&gt;ANd then make a plan inspired by both lists.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;day-to-day&quot;&gt;DAY-TO-DAY&lt;&#x2F;h2&gt;
&lt;p&gt;Make the hidden metrics visible&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bookshop.org&#x2F;p&#x2F;books&#x2F;metric-society-on-the-quantification-of-the-social-steffen-mau&#x2F;7511192?ean=9781509530410&quot;&gt;The Metric Society: On the Quantification of the Social -
Steffen Mau &lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;What excited me today ?&lt;&#x2F;li&gt;
&lt;li&gt;What drained me of energy ?&lt;&#x2F;li&gt;
&lt;li&gt;What did I learn ?&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Journaling those questions over a long periode of time would yield overarching tendencies that could be enlighting.&lt;&#x2F;p&gt;
&lt;p&gt;Here is a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vomitsystem.com&#x2F;&quot;&gt;web page&lt;&#x2F;a&gt; hosted by someone else with screen shots from the video.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>🚲 Info Vélo</title>
        <published>2024-04-02T00:00:00+00:00</published>
        <updated>2025-07-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/info-velo/"/>
        <id>https://tgm.happyngreen.fr/lists/info-velo/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/info-velo/">&lt;p&gt;Voici une compilation de sources d&#x27;informations sur les vélos que j&#x27;ai trouver
dans mes recherches Internet.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fr.icancycling.com&#x2F;blogs&#x2F;articles&#x2F;bike-size-chart&quot;&gt;Le tableau complet des tailles de vélo pour vous aider à trouver le bon vélo&lt;&#x2F;a&gt;,
pour avoir trouver la taille du vélo adéquoite.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;sites-et-articles&quot;&gt;Sites et Articles&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;biketips.com&quot;&gt;BikeTips&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Plein d&#x27;articles super précis sur la mécanique vélo.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.lecyclo.com&#x2F;blogs&#x2F;conseils&quot;&gt;LeCyclo&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Quelque articles intéréssents et des sélections en lien avec des
thématiques, comme la sécurité ou le confort. Le site permet aussi de voir
une sélection de pièces et des idées, comme
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.lecyclo.com&#x2F;collections&#x2F;fixation-porte-bagages?page=1&quot;&gt;les fixations sur hauban pour porte-bagage arrière&lt;&#x2F;a&gt;
quand on a pas de braze-on.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.provelo.org&#x2F;&quot;&gt;ProVelo&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Balayage aussi des pratiques à vélos. Je me suis surtout concentré sur les
articles sur le cyclo-tourisme&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.helmet.beam.vt.edu&quot;&gt;Virginia Tech Helmet Rating&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;J&#x27;ai découvert ce site sur une chaine de nebula.tv. Le laboratoire fait des
test sur 5 examplaire d&#x27;un modèle pour tester la capacité du casque à te
protéger d&#x27;une commotion cérébrale. Et on peut tout de suite voir que le
prix et la mesure ne se corrèle pas forcément.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;wiki-forums&quot;&gt;Wiki &amp;amp; Forums&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bicycles.stackexchange.com&quot;&gt;bicycle.stackexchange.com&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Il y a toujours quelqu&#x27;un qui a eu le problème auquel tu est confronté. Pas
forcément des réponses, mais des avis divers qui permettent de parfois faire
un peu le tour de ta question. Et n&#x27;hésite pas à participer, les communautés
stackexchange sont souvent super sympa.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sheldonbrown.com&quot;&gt;sheldonbrown.com&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Un très bon site, qui m&#x27;a été conseillé par un mécano vélo de Bruxelles.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;blog&quot;&gt;Blog&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cyclingabout.com&quot;&gt;CyclingAbout&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;découverte en lisant ce post de David Charles,
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;davidcharles.substack.com&#x2F;p&#x2F;pretty-pickle&quot;&gt;Pretty Pickle&lt;&#x2F;a&gt; qui
mentionne aussi BikeTips, mentionné plus haut, et donc CyclingAbout,
notamment sur
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cyclingabout.com&#x2F;gradient-threshold-steepest-hill&#x2F;&quot;&gt;le calcule de la pente la plus abrupte possible en fonction de ton poinds, etc&lt;&#x2F;a&gt;,
ainsi que
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cyclingabout.com&#x2F;gear-ratios-how-to-select-touring-bike-gearing&#x2F;&quot;&gt;deux&lt;&#x2F;a&gt;
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cyclingabout.com&#x2F;wider-gear-range-road-shifters-gears-for-easier-hill-climbing&#x2F;&quot;&gt;articles&lt;&#x2F;a&gt;
sur le les cassettes + plateau + dérailleurs.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;blog-posts&quot;&gt;Blog Posts&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;johngodlee.xyz&#x2F;posts&#x2F;2023-08-12-bike_refurb&#x2F;&quot;&gt;Refurbishing my bike - 2023-08-12 - John L. Godlee&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;conversion and refurbishing of a road bike into a single-speed bike.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;video&quot;&gt;Vidéo&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;c&#x2F;RJTheBikeGuy&quot;&gt;RJ The Bike Guy&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@VintageBike&quot;&gt;The Vintage Bike Factory&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@lecyclocom&quot;&gt;LeCyclo.com&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;routing&quot;&gt;Routing&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;geovelo.app&#x2F;&quot;&gt;Geovelo&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;organicmaps.app&#x2F;&quot;&gt;OrganicsMap&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;veloplanner.com&#x2F;&quot;&gt;Veloplanner&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ravel.wallonie.be&#x2F;home&#x2F;carte-interactive.html&quot;&gt;Ravel et Véloroutes en Wallonie&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.fietsnet.be&#x2F;routeplanner&#x2F;default.aspx&quot;&gt;Fietsnet&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.fietsroute.org&#x2F;planificateur-velo-belgique.html&quot;&gt;fietsroute planificateur vélo belgique&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.groteroutepaden.be&#x2F;&quot;&gt;GroteRoutepaden&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.velo-ravel.net&#x2F;luc.html&quot;&gt;velo-ravel.net&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sncf-connect.com&#x2F;train&#x2F;velo-a-bord&quot;&gt;💤 Voyager en train avec son vélo - SNCF Connect&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.veloabord.fr&#x2F;&quot;&gt;SNCF TER - Portail national des Régions&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=cIjlHzkC_Vc&amp;amp;t=148&quot;&gt;Les Tutos Recto Verso Vélo - Comment Démonter Son Vélo Pour Le Mettre Dans Le Train - YouTube&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Rt58E0gcG3o&amp;amp;t=210&quot;&gt;Les 9 Critères Pour Choisir Son Vélo D’aventure - YouTube&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;trips&quot;&gt;Trips&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;bruxelles&quot;&gt;Bruxelles&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;environnement.brussels&#x2F;citoyen&#x2F;agir-pour-lenvironnement&#x2F;decouvrir-la-nature-en-ville&#x2F;la-promenade-verte-visitez-bruxelles-pied-ou-velo&quot;&gt;La Promenade Verte  Bruxelles à pied ou à vélo Citoyen - Bruxelles Environnement&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;oise&quot;&gt;Oise&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.oisetourisme.com&#x2F;bouger&#x2F;a-velo&#x2F;veloroutes-et-voies-vertes-et-carnets-de-route&#x2F;&quot;&gt;Véloroutes et voies vertes - Oise Tourisme&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>CLI&#x2F;TUI tools</title>
        <published>2024-03-02T00:00:00+00:00</published>
        <updated>2025-08-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/cli-tools/"/>
        <id>https://tgm.happyngreen.fr/lists/cli-tools/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/cli-tools/">&lt;h2 id=&quot;2026-03&quot;&gt;2026-03&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;lycheeverse&#x2F;lychee&quot;&gt;lycheeverselychee ⚡ Fast, async, stream-based link checker written in Rust. Finds broken URLs and mail addresses inside Markdown, HTML, reStructuredText, websites and more!&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;2026-01&quot;&gt;2026-01&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;fdroid&#x2F;sdkmanager&quot;&gt;sdkmanager&lt;&#x2F;a&gt;, a drop-in replacement for &lt;code&gt;sdkmanager&lt;&#x2F;code&gt; from the Android SDK written in Python.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pranshuparmar&#x2F;witr&quot;&gt;witr&lt;&#x2F;a&gt;, [it] exists to answer a single question:
&lt;blockquote&gt;
&lt;p&gt;Why is this running?&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;2025-11&quot;&gt;2025-11&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;magika-cli&quot;&gt;magika-cli&lt;&#x2F;a&gt;, file content type detection using &quot;AI&quot;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.httrack.com&#x2F;&quot;&gt;httrack&lt;&#x2F;a&gt;, useful website mirroring CLI tool&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;2025-08&quot;&gt;2025-08&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;cherti&#x2F;blinky&#x2F;&quot;&gt;blinky&lt;&#x2F;a&gt;, an AUR-helper, python&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rustic-rs&#x2F;rustic&quot;&gt;rustic&lt;&#x2F;a&gt;, a rust alternative to &lt;code&gt;restic&lt;&#x2F;code&gt;,
compatible though in beta as of now&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;restic&#x2F;restic&quot;&gt;restic&lt;&#x2F;a&gt; - Fast, secure, efficient backup
program; go&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;eradman&#x2F;entr&quot;&gt;entr&lt;&#x2F;a&gt; - Run arbitrary commands when files
change;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;watchexec&#x2F;watchexec&quot;&gt;watchexec&lt;&#x2F;a&gt; - Executes commands in
response to file modifications; rust&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sharkdp&#x2F;hyperfine&quot;&gt;hyperfine&lt;&#x2F;a&gt;, a rust command-line
benchmarking tool.
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;man.archlinux.org&#x2F;man&#x2F;time.1.en&quot;&gt;time&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;!-- - [pperf]() --&gt;
&lt;!-- - [s]() --&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;skim-rs&#x2F;skim&quot;&gt;skim&lt;&#x2F;a&gt;, a rust alternative to &lt;code&gt;fzf&lt;&#x2F;code&gt;. A fuzzy
finder.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;2025-04&quot;&gt;2025-04&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ayoisaiah&#x2F;f2&quot;&gt;f2&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;F2 is a cross-platform command-line tool for batch renaming files and
directories quickly and safely. Written in Go!&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;2025-04-1&quot;&gt;2025-04&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;offpunk.net&#x2F;&quot;&gt;offpunk&lt;&#x2F;a&gt;, similar to lynx.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;2025-02&quot;&gt;2025-02&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mise.jdx.dev&#x2F;dev-tools&#x2F;&quot;&gt;mise-en-place&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;2025-02-1&quot;&gt;2025-02&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~leon_plickat&#x2F;lswt&quot;&gt;lswt&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.visidata.org&#x2F;&quot;&gt;visidata&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bombadillo.colorfield.space&#x2F;&quot;&gt;bombadillo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dhth&#x2F;hours&quot;&gt;hours&lt;&#x2F;a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dhth&#x2F;omm&quot;&gt;omm&lt;&#x2F;a&gt; &amp;amp;
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dhth&#x2F;commits&quot;&gt;commits&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;intuis&#x2F;rustmission&quot;&gt;rustmission&lt;&#x2F;a&gt; &amp;amp;
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;transmission&#x2F;transmission&quot;&gt;tranmission&lt;&#x2F;a&gt; as daemon&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;2025-01&quot;&gt;2025-01&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sharkdp&#x2F;fd&quot;&gt;fd&lt;&#x2F;a&gt;, sensible alternative to find, written in
&lt;em&gt;rust&lt;&#x2F;em&gt;, &lt;strong&gt;5&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;coastalwhite&#x2F;lemurs&quot;&gt;lemurs&lt;&#x2F;a&gt;, login manager, TUI, written
in &lt;em&gt;rust&lt;&#x2F;em&gt;, &lt;strong&gt;4&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mihaigalos&#x2F;musage&quot;&gt;musage&lt;&#x2F;a&gt;, memory usage, TUI,&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mihaigalos&#x2F;dusage&quot;&gt;dusage&lt;&#x2F;a&gt;, disk usage, TUI,&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bloznelis&#x2F;typioca&quot;&gt;typioca&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;max-niederman&#x2F;ttyper&quot;&gt;ttyper&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;ddworken&#x2F;hishtory&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;lycheeverse&#x2F;lychee&quot;&gt;lychee&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;jamielinux&#x2F;bashmount&quot;&gt;bashmount&lt;&#x2F;a&gt;, disk mounting utility,
tui, shell script, &lt;strong&gt;5&#x2F;5&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;abhimanyu003&#x2F;sttr&quot;&gt;sttr&lt;&#x2F;a&gt; string manipulation multitool !
looks useful. &lt;strong&gt;4&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ifd3f&#x2F;caligula&quot;&gt;caligula&lt;&#x2F;a&gt;, a iso image burner, tui
alternative to balena etcher, with built in checksum validation. &lt;strong&gt;5&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Byron&#x2F;dua-cli&quot;&gt;dua-cli&lt;&#x2F;a&gt; &lt;strong&gt;5&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;darkhz&#x2F;bluetuith&quot;&gt;bluetuith&lt;&#x2F;a&gt;, bluetooth utility, &lt;strong&gt;5&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;git.sixfoisneuf.fr&#x2F;termsonic&#x2F;about&#x2F;&quot;&gt;termsonic&lt;&#x2F;a&gt;, subsonic client,
&lt;strong&gt;5&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;aome510&#x2F;spotify-player&quot;&gt;spotify-player&lt;&#x2F;a&gt;, spotify player,
&lt;strong&gt;5&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gnu.org&#x2F;software&#x2F;stow&#x2F;&quot;&gt;GNU Stow&lt;&#x2F;a&gt;, that one is complicated to
explain. I use it to manage dotfiles, &lt;strong&gt;4&#x2F;4&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;boxdot&#x2F;gurk-rs&quot;&gt;gurk-rs&lt;&#x2F;a&gt;, a terminal signal messenger
client (needs to be built from source), &lt;strong&gt;3&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;pythops&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pythops&quot;&gt;pythops&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pythops&#x2F;impala&quot;&gt;impala&lt;&#x2F;a&gt;, wifi utility &lt;strong&gt;2&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pythops&#x2F;bluetui&quot;&gt;bluetui&lt;&#x2F;a&gt;, bluetooth utility, &lt;strong&gt;3&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;2024-03&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.chezmoi.io&#x2F;&quot;&gt;chemzoi&lt;&#x2F;a&gt;, &lt;strong&gt;4&#x2F;5&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;aristocratos&#x2F;btop&quot;&gt;btop&lt;&#x2F;a&gt;, a graphical process&#x2F;system
monitor, *****&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;eza-community&#x2F;eza&quot;&gt;eza&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;atuin.sh&#x2F;&quot;&gt;atuin&lt;&#x2F;a&gt;* &#x2F;&#x2F; alternative
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;cantino&#x2F;mcfly&quot;&gt;mcfly&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;h2 id=&quot;dust-disk-usage-analyzer-very-fast&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bootandy&#x2F;dust&quot;&gt;dust&lt;&#x2F;a&gt;, disk usage analyzer, very fast,&lt;&#x2F;h2&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sharkdp&#x2F;bat&quot;&gt;bat&lt;&#x2F;a&gt;, a more&#x2F;less&#x2F;cat alternative, with more
features ?&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tldr-pages&#x2F;tldr&quot;&gt;tldr&lt;&#x2F;a&gt;, terminal tools cheatsheet, sort of
an alternative to man pages, *****&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;zellij.dev&#x2F;about&#x2F;&quot;&gt;zellij.dev&lt;&#x2F;a&gt; terminal multiplexer, I rarely use it
now days. Dunno if I ever used . *&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;fenrus75&#x2F;powertop&quot;&gt;powertop&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rothgar&#x2F;awesome-tuis&quot;&gt;rothgar&#x27;s awesome-tuis list&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;toolleeo&#x2F;awesome-cli-apps-in-a-csv&quot;&gt;awesome-cli-in-a-csv&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ratatui.rs&#x2F;showcase&#x2F;apps&#x2F;&quot;&gt;ratatui (rust)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;charm.sh&#x2F;&quot;&gt;charm.sh&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;charmbracelet&#x2F;bubbletea&quot;&gt;bubbletea (go)&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;charmbracelet&#x2F;gum&quot;&gt;gum&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>blogrolls</title>
        <published>2024-02-25T00:00:00+00:00</published>
        <updated>2024-02-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/blogroll/"/>
        <id>https://tgm.happyngreen.fr/lists/blogroll/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/blogroll/">&lt;h1 id=&quot;decouvert-en-2024-ou-avant&quot;&gt;Découvert en 2024 ou avant.&lt;&#x2F;h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blogroll.org&#x2F;&quot;&gt;:Ye Olde Blogroll&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;collection.mataroa.blog&#x2F;&quot;&gt;Curated list of personal blogs on any topic, by mataroa.blog&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;garden.delyo.be&#x2F;&quot;&gt;Delo&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.joanperalta.net&#x2F;&quot;&gt;fékékro&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.aliceneron.eu&#x2F;&quot;&gt;Alice Néron&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Um... bientôt. En ce moment j&#x27;ai régulièrement 1000+ articles dans mon lecteurs de flux rss. C&#x27;est un peu galère.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mes extensions de navigateurs [2024]</title>
        <published>2024-02-25T00:00:00+00:00</published>
        <updated>2024-02-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/browser-extensions/"/>
        <id>https://tgm.happyngreen.fr/lists/browser-extensions/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/browser-extensions/">&lt;p&gt;J&#x27;utilise &lt;strong&gt;Firefox comme navigateur principale&lt;&#x2F;strong&gt;. Une des raisons pour laquelle je reste sur Firefox est que j&#x27;utilise beaucoup d&#x27;&lt;strong&gt;extension de navigateur&lt;&#x2F;strong&gt;. Firefox a un excellent écosystème d&#x27;extension qui me permettent de bloquer les publicités, limité certaines connexion internet, etc.&lt;&#x2F;p&gt;
&lt;p&gt;La plus part des extensions ci-dessous sont open-source et parfois libre. Le lien vers le code source est listé dans la page &lt;strong&gt;addon.mozilla.org&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Un autre point intéréssent, Firefox sur Android permet d&#x27;utiliser certaines des extensions listé dessous. Soyez à l&#x27;affût pour la bannière &lt;mark&gt;Available on Firefox for Android™Available on Firefox for Android™&lt;&#x2F;mark&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Chrome a aussi beaucoup d&#x27;extension. Cependant, à cause de changements au niveau des formats d&#x27;extension de navigateur, Chrome et les navigateurs basé sur le moteur web de chrome sont pas aussi efficace.&lt;&#x2F;p&gt;
&lt;p&gt;Voici une liste exhaustive des extensions que j&#x27;utilise:&lt;&#x2F;p&gt;
&lt;h2 id=&quot;le-starter-kit-d-extensions&quot;&gt;Le starter kit d&#x27;extensions&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;ublock-origin&quot;&gt;Ublock Origin&lt;&#x2F;a&gt; ⇾ bloque les publicités&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;privacy-badger17&quot;&gt;Privacy Badger&lt;&#x2F;a&gt; ⇾ bloquage de tracker&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.localcdn.org&#x2F;&quot;&gt;LocalCDN&lt;&#x2F;a&gt; ⇾ permet de bloquer des appels à des domaines qui peuvent servir de traqueur tier (google fonts casse certains sites)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;facebook-container&#x2F;&quot;&gt;Facebook Container&lt;&#x2F;a&gt; ⇾ utilise le système de container de Firefox. Permet de hermétiser Facebook et bloquer leur traquage&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;bitwarden-password-manager&#x2F;&quot;&gt;Bitwarden Extension&lt;&#x2F;a&gt; ⇾ permet de remplir automatiquement les identifiants lié à un service&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;consent-o-matic&#x2F;&quot;&gt;Consent-O-Matic&lt;&#x2F;a&gt; ⇾ essaye de remplir automatiquement les bannières de cookies et les cacher&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;libredirect&#x2F;&quot;&gt;LibRedirect&lt;&#x2F;a&gt; ⇾ une superbe extension de navigateur qui permet d&#x27;automatiquement rediriger vers des versions plus légère et respectueuse de services internet important (wikipedia, youtube, twitter, reddit). Vaut le détour, même si ça ne marche pas très bien car il faut des instances qui marchent.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;cookie-autodelete&quot;&gt;Cookie AutoDelete&lt;&#x2F;a&gt; ⇾ suppression des cookies de navigation, avec une whiteliste de nom de domaine à ne pas supprimer&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;tab-management&quot;&gt;Tab management&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;sidebery&#x2F;&quot;&gt;Sideberry&lt;&#x2F;a&gt; ⇾ gestion des onglets dans une barre latérale&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;tab-stash&#x2F;&quot;&gt;Tabstash&lt;&#x2F;a&gt; ⇾ permet de mettre de côté des onglets, qui sont synchroniser entre session grâce à Firefox Sync&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;bookmark-dupes&#x2F;&quot;&gt;Bookmark Dupes&lt;&#x2F;a&gt; ⇾ gestion de dupliquata dans les bookmarks (marque-page). J&#x27;ai installé l&#x27;extension pour gérer les duplicata de Tabstash, qui sauvegarde les onglets comme bookmark dans un dossier particulier.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;anti-censure&quot;&gt;Anti-censure&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;snowflake.torproject.org&#x2F;&quot;&gt;Snowflake&lt;&#x2F;a&gt; ⇾ un projet de &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.torproject.org&#x2F;&quot;&gt;Tor Project&lt;&#x2F;a&gt;, permet apparement à d&#x27;autre utilisateurices d&#x27;échapper à la des firewall nationaux ou autre quand les gens se connecte au réseau Tor.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;magnolia1234&#x2F;bypass-paywalls-firefox-clean&quot;&gt;Bypass Paywall&lt;&#x2F;a&gt; ⇾ permet d&#x27;éviter certains &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Paywall&quot;&gt;paywalls&lt;&#x2F;a&gt;. Je me retrouve parfois à aller sur &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&quot;&gt;web.archive.org&lt;&#x2F;a&gt;, ce qui permet d&#x27;avoir accès aux articles. Pas sûr de l&#x27;utiliser longtemps.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;sauvegarder-des-contenus-internet&quot;&gt;Sauvegarder des contenus internet&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;single-file&#x2F;&quot;&gt;SingleFile&lt;&#x2F;a&gt; ⇾ sauvegarde d&#x27;une page web en un fichier html unique&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;markdownload&#x2F;&quot;&gt;MarkDownload&lt;&#x2F;a&gt; ⇾ sauvegarde de sélection ou de page sous le format &lt;code&gt;markdown&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;joplin-web-clipper&#x2F;&quot;&gt;Joplin Web Clipper&lt;&#x2F;a&gt; ⇾ permet comme MarkDownload de récupérer du contenus sur la page, en &lt;code&gt;markdown&lt;&#x2F;code&gt;, et de l&#x27;envoyer sous la forme de note dans (Joplin)[https:&#x2F;&#x2F;joplinapp.org&#x2F;]. J&#x27;utilise plus Joplin, mais c&#x27;était pratique pour des citations.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;extension-pour-youtube&quot;&gt;Extension pour Youtube&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sponsor.ajay.app&#x2F;&quot;&gt;SponsorBlock for YouTube - Skip Sponsorships&lt;&#x2F;a&gt; ⇾  Set de paramètres pour modifier&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;youtube-recommended-videos&quot;&gt;Unhook&lt;&#x2F;a&gt; ⇾ autre set de paramètres permettant spécifiquement de cacher des éléments de Youtube&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;leechblock-ng&#x2F;&quot;&gt;LeechBlock&lt;&#x2F;a&gt; ⇾ permet de bloquer l&#x27;accès à certaines pages pendant certaines plages horaires définit par l&#x27;utilisateurice. Je n&#x27;ai pas réussi à l&#x27;utiliser longtemps.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;language-and-writing-extensions&quot;&gt;Language and writing extensions&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;languagetool&#x2F;&quot;&gt;LanguagueTool&lt;&#x2F;a&gt; ⇾ Outils propriétaire freemium correcteur d&#x27;orthographe.
&lt;ul&gt;
&lt;li&gt;J&#x27;espère que ça n&#x27;exfiltre pas mes données. &lt;mark&gt;TODO&lt;&#x2F;mark&gt; check les conditions d&#x27;utilisations.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;emoji-sav&#x2F;&quot;&gt;Emoji&lt;&#x2F;a&gt; ⇾ permet d&#x27;avoir les émoji d&#x27;Unicode à porter de mains 😇&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;firefox-translations&#x2F;&quot;&gt;Firefox Translations&lt;&#x2F;a&gt; ⇾ traduction locale de la page, avec possibilité de traduire en temps réel les pages visitées. Il me semble que cette extension est maintenant un élément de Firefox, active par défault.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;outils-webdev&quot;&gt;Outils webdev&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;addons.mozilla.org&#x2F;en-US&#x2F;firefox&#x2F;addon&#x2F;styl-us&#x2F;&quot;&gt;Stylus&lt;&#x2F;a&gt; ⇾ permet de créer du css pour des pages spécifiques. Je tiens cette technique de &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;garden.delyo.be&#x2F;&quot;&gt;delyo&lt;&#x2F;a&gt; quand nous avons travailler sur &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.erg.be&quot;&gt;le site officiel de l&#x27;erg&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>🧭 Link Directory</title>
        <published>2024-02-25T00:00:00+00:00</published>
        <updated>2024-02-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/link-directory/"/>
        <id>https://tgm.happyngreen.fr/lists/link-directory/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/link-directory/">&lt;h1 id=&quot;2024&quot;&gt;[2024]&lt;&#x2F;h1&gt;
&lt;p&gt;Je test actuellement les 100 recherche d&#x27;un compte non-payé de &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kagi.com&#x2F;&quot;&gt;Kagi.com&lt;&#x2F;a&gt;. Super, notamment pour les recherches focus sur le small web. Ça me fait penser à &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;search.marginalia.nu&#x2F;&quot;&gt;search.marginalia.nu&lt;&#x2F;a&gt; ou  &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiby.me&#x2F;&quot;&gt;wiby.me&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Par contre ça me gêne que Kagi soient payent. Ça concrétise malgré elleux un système ou les gens qui payent ont de meilleurs résultat que les gens qui ne payent pas, et qui sont de fait des produits elleux même.&lt;&#x2F;p&gt;
&lt;p&gt;Un autre projet intéréssent, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stract.com&#x2F;&quot;&gt;Stract.com&lt;&#x2F;a&gt;. À surveiller 👁️&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>When I quit Smoking</title>
        <published>2023-10-29T00:00:00+00:00</published>
        <updated>2023-10-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/quitsmoking/"/>
        <id>https://tgm.happyngreen.fr/quitsmoking/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/quitsmoking/">&lt;p&gt;Hello&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Disk Operations</title>
        <published>2023-07-02T00:00:00+00:00</published>
        <updated>2023-07-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/wiki/linux/dd-command/"/>
        <id>https://tgm.happyngreen.fr/wiki/linux/dd-command/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/wiki/linux/dd-command/">&lt;h2 id=&quot;dd&quot;&gt;&lt;code&gt;dd&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;you can use the dd command to copy a drive in Linux, including the Windows file
system, to another hard drive. The dd command is a powerful tool for copying and
converting files, and it can be used for cloning disks and partitions. However,
it&#x27;s important to note that dd is a low-level tool that operates at the block
level, so it requires careful usage to avoid data loss.&lt;&#x2F;p&gt;
&lt;p&gt;Here is an example of how to use the dd command to clone a disk or partition:&lt;&#x2F;p&gt;
&lt;p&gt;To clone an entire disk:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;dd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; if=&#x2F;dev&#x2F;sda of=&#x2F;dev&#x2F;sdb&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;In this example, &#x2F;dev&#x2F;sda is the source disk, and &#x2F;dev&#x2F;sdb is the destination
disk. The if argument specifies the input file (source disk), and the of
argument specifies the output file (destination disk).&lt;&#x2F;p&gt;
&lt;p&gt;To clone a specific partition:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;dd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt; if=&#x2F;dev&#x2F;sda1 of=&#x2F;dev&#x2F;sdb1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;In this example, &lt;code&gt;&#x2F;dev&#x2F;sda1&lt;&#x2F;code&gt; is the source partition, and &#x2F;dev&#x2F;sdb1 is the
destination partition. The if argument specifies the input file (source
partition), and the of argument specifies the output file (destination
partition).&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s important to double-check and ensure that you have specified the correct
source and destination devices before running the dd command, as it can
overwrite data without warning.&lt;&#x2F;p&gt;
&lt;p&gt;Please note that the dd command can take some time to complete, especially when
dealing with large disks or partitions. Additionally, the destination disk or
partition should have enough capacity to accommodate the source data.&lt;&#x2F;p&gt;
&lt;p&gt;Remember to refer to the provided sources for more detailed instructions and
considerations when using the dd command for cloning disks or partitions.&lt;&#x2F;p&gt;
&lt;p&gt;Yes, the dd command does have a way to enable a verbose mode to display progress
information during the copying process.&lt;&#x2F;p&gt;
&lt;p&gt;One way to achieve this is by sending specific signals to the dd process.
According to the information in askubuntu.com, you can send an INFO signal to a
running dd process to make it print I&#x2F;O statistics to standard error and then
resume copying. This can be done using the kill command.&lt;&#x2F;p&gt;
&lt;p&gt;Here is an example of using the INFO signal to make dd print progress
information:&lt;&#x2F;p&gt;
&lt;p&gt;$ dd if=&#x2F;dev&#x2F;zero of=&#x2F;dev&#x2F;null count=10MB &amp;amp; pid=$! $ kill -s INFO $pid; wait
$pid&lt;&#x2F;p&gt;
&lt;p&gt;In this example, dd is copying data from &#x2F;dev&#x2F;zero (a null device) to &#x2F;dev&#x2F;null
(a black hole), so it won&#x27;t actually write any data to the disk. The count
parameter specifies the amount of data to copy.&lt;&#x2F;p&gt;
&lt;p&gt;On systems lacking the INFO signal, dd responds to the USR1 signal instead,
unless the POSIXLY_CORRECT environment variable is set.&lt;&#x2F;p&gt;
&lt;p&gt;Another option mentioned in askubuntu.com is to use the status=progress option.
This option displays the progress information in real-time. Here&#x27;s an example:&lt;&#x2F;p&gt;
&lt;p&gt;$ dd if=&#x2F;dev&#x2F;zero of=&#x2F;dev&#x2F;null count=10MB status=progress&lt;&#x2F;p&gt;
&lt;p&gt;This command will copy 10MB of data from &#x2F;dev&#x2F;zero to &#x2F;dev&#x2F;null and display
progress information during the copying process.&lt;&#x2F;p&gt;
&lt;p&gt;Additionally, linuxcommando.blogspot.com suggests using pv (Pipe Viewer) and
dialog to show a progress bar during the dd command execution. Here&#x27;s an
example:&lt;&#x2F;p&gt;
&lt;p&gt;(pv -n &#x2F;dev&#x2F;sda | dd of=&#x2F;dev&#x2F;sdb bs=128M conv=notrunc,noerror) 2&amp;gt;&amp;amp;1 | dialog
--gauge &quot;Running dd command (cloning), please wait...&quot; 10 70 0&lt;&#x2F;p&gt;
&lt;p&gt;This command combines pv and dd to show a progress bar using dialog.&lt;&#x2F;p&gt;
&lt;p&gt;Please note that the availability and behavior of the INFO and USR1 signals may
vary depending on the operating system and version of dd being used. It&#x27;s always
a good idea to consult the man page or relevant documentation for your specific
environment.&lt;&#x2F;p&gt;
&lt;p&gt;Remember to refer to the provided sources for more detailed instructions and
examples on how to make the dd command verbose.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Parcours et deux pratiques</title>
        <published>2023-06-01T00:00:00+00:00</published>
        <updated>2023-06-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2023-parcours-et-deux-pratiques/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2023-parcours-et-deux-pratiques/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2023-parcours-et-deux-pratiques/">&lt;h2 id=&quot;teddybear&quot;&gt;Teddybear&lt;&#x2F;h2&gt;
&lt;p&gt;Après la présentation du parcours, les visiteur.euse.s étaient invité.e.s à
emballer ensemble avec moi un appareil électronique leur appartenant. Cela a
parfois comme effet de bloquer l&#x27;accès facile à l&#x27;appareil.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;mr-alternative&quot;&gt;Mr Alternative&lt;&#x2F;h2&gt;
&lt;p&gt;Après l&#x27;emballage, les visiteur.euse.s étaient invité.e.s à prendre part à une
conversation autour des services qu&#x27;iels utilisent grâce à leur outil
électronique. Je peux alors proposer des alternatives plus respectueuse de leur
attention, de leur vie privée, ou un usage différent d&#x27;un service déjà utilisé.
La prise de notes était faite sur papier carbone, permettent de laisser une
copie avec lea visiteur.euse.s.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Productivity Porn, ou la productivité feigné</title>
        <published>2023-04-12T00:00:00+00:00</published>
        <updated>2023-04-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/reconstruction-zola-blog/"/>
        <id>https://tgm.happyngreen.fr/blog/reconstruction-zola-blog/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/reconstruction-zola-blog/">&lt;h2 id=&quot;reprendre-la-base&quot;&gt;Reprendre la base&lt;&#x2F;h2&gt;
&lt;p&gt;J&#x27;ai utiliser Bearblog la dernière fois. Ce que j&#x27;apprécis dans le fonctionnement de Bearblog, c&#x27;est la simplicité, et le fait que c&#x27;est juste un blog. Une liste de lien, et c&#x27;est tout.&lt;&#x2F;p&gt;
&lt;p&gt;De ce fait, je dois trouver comment lister le contenus du blog dans &lt;code&gt;index.html&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;now-html&quot;&gt;Now.html&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;premiere-iteration&quot;&gt;Première itération&lt;&#x2F;h3&gt;
&lt;p&gt;L&#x27;idée est d&#x27;avoir une page NOW, qui permet d&#x27;exposer et informer les visiteurices des projets sur lequels on travail en ce moment.&lt;&#x2F;p&gt;
&lt;p&gt;Pour ce problème là, j&#x27;ai aussi fait appel à ChatGPT. Mais en lui demandant des solutions, j&#x27;ai finis par me rendre compte que les données réel accessible à ChatGPT datent de Septembre 2021.&lt;&#x2F;p&gt;
&lt;p&gt;Au final, j&#x27;ai repris la forme générale, j&#x27;ai garder la méthode qui consiste à ajouter ceci dans [extra]&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Specify the path to the now.md file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;now&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;content&#x2F;now.md&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;site_name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;TGM&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;ainsi que&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;[[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;routes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;]]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# Create a route for the &#x2F;now page&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #51597D;font-style: italic;&quot;&gt;# This tells Zola to use the now.html template for the now page&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;&#x2F;now&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #C0CAF5;&quot;&gt;template&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt; = &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECE6A;&quot;&gt;now.html&lt;&#x2F;span&gt;&lt;span style=&quot;color: #89DDFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;J&#x27;ai créé le template &lt;code&gt;now.html&lt;&#x2F;code&gt; mais j&#x27;y est juste mit config.now.content, en faisant référence  :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;{% extends &amp;quot;base.html&amp;quot; %}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;h1&amp;gt;What I&amp;#39;m Doing Now&amp;lt;&#x2F;h1&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    {{ config.now.content }}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;C&#x27;est là que j&#x27;ai compris comment fonctionne la syntaxe de Tera pour aller chercher des information dans du toml.&lt;&#x2F;p&gt;
&lt;p&gt;config = config.toml&lt;&#x2F;p&gt;
&lt;p&gt;now = content&#x2F;now.md&lt;&#x2F;p&gt;
&lt;p&gt;content = le contenus du fichier. Si j&#x27;avais voulus avoir un titre, alors j&#x27;aurais mis dans le frontmatter:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;+++&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;title = mon titre&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;+++&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;et je l&#x27;aurais appeller avec:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;{{config.now.title}}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;deuxieme-iteration&quot;&gt;Deuxième itération&lt;&#x2F;h3&gt;
&lt;p&gt;En relisant un peu la documentation de Zola, je me suis rendu compte que le système utilise par défault page.html, si le template existe, pour générer les pages qui sont directement dans content.&lt;&#x2F;p&gt;
&lt;p&gt;Donc j&#x27;ai litéralement changé de stratégie, et j&#x27;ai créé ma page.html:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;{% extends &amp;quot;base.html&amp;quot; %}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;{% block content %}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  {{ page.title }}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;&#x2F;h1&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;&amp;lt;p class=&amp;quot;subtitle&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;{{ page.date }}&amp;lt;&#x2F;strong&amp;gt;&amp;lt;&#x2F;p&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;{{ page.content | safe }}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;{% endblock content %}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Et je pointe dans le nav.html vers now.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Le cercle-bibliothèque nomade</title>
        <published>2023-03-10T00:00:00+00:00</published>
        <updated>2023-03-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/cercle-bibliotheque-nomade/"/>
        <id>https://tgm.happyngreen.fr/blog/cercle-bibliotheque-nomade/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/cercle-bibliotheque-nomade/">&lt;p&gt;Ce serait un groupe de personnes, qui après un accord préalable, se retrouverait périodiquement, pour lire ensemble, dans un lieu approprié, et se prêter des livres provenant des bibliothèques de chaque participant.e. Comme un organisme qui se sépare, puis se réassemble.&lt;&#x2F;p&gt;
&lt;p&gt;On pourrait imaginer que la technique d&#x27;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;uneseuleplanete.org&#x2F;Arpentage&quot;&gt;arpentage&lt;&#x2F;a&gt; pourrait être incorporée comme &lt;strong&gt;pratique&#x2F;rituel&lt;&#x2F;strong&gt; au sein de ce cercle.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Communiquer en 202X - 1</title>
        <published>2023-03-10T00:00:00+00:00</published>
        <updated>2023-03-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/communication-202x/"/>
        <id>https://tgm.happyngreen.fr/blog/communication-202x/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/communication-202x/">&lt;p&gt;Lancé par ce post : &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tgrush.bearblog.dev&#x2F;why-the-hell-are-we-using-discord&#x2F;&quot;&gt;Why the hell are we using discord&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;les-elements-evidents&quot;&gt;Les éléments évidents :&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;open source &#x2F; FOSS&lt;&#x2F;li&gt;
&lt;li&gt;encryption e2e -&amp;gt; comment ne pas embrouiller les utilisateurices avec des clés d&#x27;encryptions etc&lt;&#x2F;li&gt;
&lt;li&gt;cross-plateforme&lt;&#x2F;li&gt;
&lt;li&gt;UI&#x2F;UX un peu près moderne, et surtout sans friction d&#x27;embarquement des nouveaux utilisateurices.&lt;&#x2F;li&gt;
&lt;li&gt;décentralisé ++&lt;&#x2F;li&gt;
&lt;li&gt;auto-hébergeable&lt;&#x2F;li&gt;
&lt;li&gt;pas de crypto&#x2F;blockchain svp&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>J&#x27;ai passé beaucoup de temps à faire un site moche</title>
        <published>2023-03-10T00:00:00+00:00</published>
        <updated>2023-03-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/ricing-observations/"/>
        <id>https://tgm.happyngreen.fr/blog/ricing-observations/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/ricing-observations/">&lt;p&gt;Je l&#x27;admet, le titre est un peu &lt;strong&gt;putaclick&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Je passe, et j&#x27;ai passé, beaucoup de temps à travailler du CSS pour peaufiner l&#x27;aspect visuel d&#x27;un site web.&lt;&#x2F;p&gt;
&lt;p&gt;Pire, mes inspirations étant souvent de l&#x27;école minimaliste, je passe beaucoup de temps à faire quelque chose de basique... Ce qui ne ce voit pas.&lt;&#x2F;p&gt;
&lt;p&gt;Par exemple, je viens de passer 20 min à chercher la typographie parfaite &lt;code&gt;Serif&lt;&#x2F;code&gt; pour le corps de texte. Une fois sélectionné et téléchargé, j&#x27;ai du la convertir en format WOFF, l&#x27;inclure dans mon site et la lier à mon CSS, et l&#x27;appliquer comme typographie de corps de texte...&lt;&#x2F;p&gt;
&lt;p&gt;...Pour au final me rendre compte que, mon site pesant 200kb environs, c&#x27;était la typographie que j&#x27;avais minutieusement sélectionné qui pesait le plus lourd, et qui équivaut à ma quasi totalité du poids. J&#x27;ai enlevé la typographie, et j&#x27;ai juste mis:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;css&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;font-family&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F7768E;&quot;&gt;sans-serif&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;car c&#x27;est ce qui est le plus lisible pour moi.&lt;&#x2F;p&gt;
&lt;p&gt;Encore heureu.euse, je ne suis pas parti.e de rien pour le reste du CSS.&lt;&#x2F;p&gt;
&lt;p&gt;Je me demande si je passe pas trop de temps sur les détails. C&#x27;est peut-être pour éviter les vrais éléments, qui me fond trop peur pour commencer.&lt;&#x2F;p&gt;
&lt;p&gt;Ou c&#x27;est le bon vieux &lt;a href=&quot;https:&#x2F;&#x2F;tgm.happyngreen.fr&#x2F;blog&#x2F;ricing-observations&#x2F;ProductivityPorn.md.html&quot;&gt;productivity porn&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>📚 List Lectures</title>
        <published>2023-03-10T00:00:00+00:00</published>
        <updated>2024-03-10T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/lists/liste-lectures/"/>
        <id>https://tgm.happyngreen.fr/lists/liste-lectures/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/lists/liste-lectures/">&lt;p&gt;&lt;strong&gt;Unkown Date&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;users.speakeasy.net&#x2F;~lion&#x2F;nb&#x2F;html&#x2F;doc003.html&quot;&gt;https:&#x2F;&#x2F;users.speakeasy.net&#x2F;~lion&#x2F;nb&#x2F;html&#x2F;doc003.html&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.researchcatalogue.net&#x2F;view&#x2F;369606&#x2F;384286&quot;&gt;https:&#x2F;&#x2F;www.researchcatalogue.net&#x2F;view&#x2F;369606&#x2F;384286&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;compdemocracy.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;compdemocracy.org&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tutanota.com&#x2F;blog&#x2F;posts&#x2F;germany-against-client-side-scanning-csam&quot;&gt;https:&#x2F;&#x2F;tutanota.com&#x2F;blog&#x2F;posts&#x2F;germany-against-client-side-scanning-csam&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Bibliothèque de pad</title>
        <published>2023-03-02T00:00:00+00:00</published>
        <updated>2023-03-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/etherpad-1/"/>
        <id>https://tgm.happyngreen.fr/blog/etherpad-1/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/etherpad-1/">&lt;h1 id=&quot;j-ai-trop-de-etherpad&quot;&gt;J&#x27;ai trop de &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;etherpad.org&#x2F;&quot;&gt;etherpad&lt;&#x2F;a&gt;&lt;&#x2F;h1&gt;
&lt;p&gt;Tout le monde utilise des &lt;strong&gt;etherpad&lt;&#x2F;strong&gt; (ou &lt;strong&gt;pad&lt;&#x2F;strong&gt;) au lieu de Google Docs. Bien que je salue l&#x27;effort, chaque Etherpad est accessible avec une URL unique. Au-delà de 6 ou 7 pads, Firefox ne peut plus me recommander d&#x27;autres liens ayant comme début d&#x27;URL :&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #A9B1D6; background-color: #1A1B26;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;pad*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;pads*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Il faudrait une sorte d&#x27;interface globale qui permette à chaque utilisateur.ice de voir les pads visités et utilisés par ce.tte utilisateur.ice.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;une-extension-de-navigateur&quot;&gt;Une extension de navigateur&lt;&#x2F;h2&gt;
&lt;p&gt;Ma première idée est une extension de navigateur. Cette extension collecte passivement toutes les URL des pads ouverts dans le navigateur. Les URL sont sauvegardées soit localement ou sur un serveur de type &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nextcloud.com&#x2F;&quot;&gt;nextcloud&lt;&#x2F;a&gt;, par exemple, utilisant l&#x27;accès &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;WebDAV&quot;&gt;WebDAV&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;un-backend-ca-centralise-non&quot;&gt;Un backend, ça centralise, non ?&lt;&#x2F;h2&gt;
&lt;p&gt;Avoir un service&#x2F;programme qui dépend d&#x27;un serveur pose un problème. Le service ne fonctionne alors plus s&#x27;il n&#x27;y a pas internet.&lt;&#x2F;p&gt;
&lt;p&gt;Je vais me renseigner sur les systèmes &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;localfirstweb.dev&#x2F;&quot;&gt;local-first&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;une-bibliotheque-de-pad&quot;&gt;Une bibliothèque de pad&lt;&#x2F;h2&gt;
&lt;p&gt;Ainsi, un système avec des aperçus, comme &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;janeczku&#x2F;calibre-web&quot;&gt;calibreweb&lt;&#x2F;a&gt; ou &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.kavitareader.com&#x2F;&quot;&gt;kavita&lt;&#x2F;a&gt;.
Il faudrait une fonctionnalité de triage en fonction des pads dernièrement modifié par l&#x27;utilisateur.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>L&#x27;inconfort d&#x27;enregistrer mon utilisation de mon ordinateur</title>
        <published>2023-03-02T00:00:00+00:00</published>
        <updated>2023-03-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/self-observe-1/"/>
        <id>https://tgm.happyngreen.fr/blog/self-observe-1/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/self-observe-1/">&lt;h1 id=&quot;02-mars-2023&quot;&gt;02 mars 2023&lt;&#x2F;h1&gt;
&lt;p&gt;J&#x27;ai mis en place OBS pour que mes sessions d&#x27;ordinateur soit enregistrer.
Le but est d&#x27;avoir du rush pour en faire quelque chose à l&#x27;erg. Je pourrais les utiliser pour mon accrochage éminent, et mes projets plus généralement. En plus, ça me permet d&#x27;observer mes habitudes numériques type laptop&#x2F;pc.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai conscience cependant que je m&#x27;enregistre, et ça me freine à glander.&lt;&#x2F;p&gt;
&lt;aside&gt;
&lt;p&gt;je devrais faire une petite recherche ethymologique de «glander»&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;p&gt;Je le sens dans mon plexus solair et mes tripes. Est-ce du &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.socialcooling.com&#x2F;&quot;&gt;social cooling&lt;&#x2F;a&gt; à l&#x27;oeuvre ?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;petit-point-technique&quot;&gt;Petit point technique&lt;&#x2F;h2&gt;
&lt;p&gt;J&#x27;utilise &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;obsproject.com&#x2F;&quot;&gt;Open Broadcasting System (OBS)&lt;&#x2F;a&gt; pour enregistrer en 720p (&lt;strong&gt;1280×720&lt;&#x2F;strong&gt; pixel) tout mon bureau, sans limite. Je me permet de couper l&#x27;enregistrement quand je ne suis pas activement sur mon ordinateur. Sinon je vais me retrouver avec 15To de vidéo...&lt;&#x2F;p&gt;
&lt;p&gt;Il me faut un moyen efficace de lancer et couper l&#x27;enregistrement.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Peut-être avec&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Et Hop je commence à écrire</title>
        <published>2023-02-28T00:00:00+00:00</published>
        <updated>2023-02-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/start/"/>
        <id>https://tgm.happyngreen.fr/blog/start/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/blog/start/">&lt;h1 id=&quot;je-ne-sais-pas-quoi-ecrire&quot;&gt;Je ne sais pas quoi écrire...&lt;&#x2F;h1&gt;
&lt;p&gt;J&#x27;aime beaucoup lire les blogs artisanaux sur le web. Ça fait longtemps que j&#x27;ai envie de faire partie de cette communauté qui réfléchit ensemble.&lt;&#x2F;p&gt;
&lt;p&gt;Ce site est à prendre en compte comme la troisième ou quatrième tentative de création de blog.
Je suis arrivé à la conclusion que le support importe peu si le contenu est inexistant.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;le-jardin-numerique&quot;&gt;Le jardin numérique&lt;&#x2F;h1&gt;
&lt;p&gt;Si j&#x27;écris ici, c&#x27;est probablement plus pour moi que pour d&#x27;autres lecteurices et internautes.
Cela implique donc un certain laxisme, histoire de ne pas me mettre la pression.
C&#x27;est un juste milieu que de vouloir écrire et s&#x27;exprimer et de composer un article complexe, original et génial (dans le sens « génie »).
Or, ce qui fonctionne mieux pour moi, c&#x27;est l&#x27;action, le &lt;code&gt;FAIRE&lt;&#x2F;code&gt;, dans la prise de note. Je retourne rarement lire ou regarder ce que j&#x27;ai inscrit dans mes carnets de notes.&lt;&#x2F;p&gt;
&lt;p&gt;Si je crée cet espace, c&#x27;est pour pouvoir partager rapidement mes notes à d&#x27;autres. Le web est pratique pour ça.
Je pourrais d&#x27;ailleurs juste prendre une photo de mes notes manuelles, en s&#x27;inspirant de &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;handwritten.blog&#x2F;&quot;&gt;ce chouette blog qui expérimentait la mise en ligne de notes manuscriptes quasi tel quelles&lt;&#x2F;a&gt;. !! À explorer.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;l-anonymite&quot;&gt;L&#x27;anonymité ?&lt;&#x2F;h1&gt;
&lt;p&gt;Je me demande à quel point je devrais rester anonyme dans ce que j&#x27;écris. Je me doute bien qu&#x27;on peut déjà déduire pas mal de choses de ce que j&#x27;écris, dans cette page même par exemple.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;écris en français. Mon nom de domaine est français. Et de là…&lt;&#x2F;p&gt;
&lt;p&gt;En même temps, en regardant ce que je fais dans ma vie, je me pose la question «&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.penelopetrunk.com&#x2F;2009&#x2F;07&#x2F;21&#x2F;how-to-decide-how-much-to-tell-about-yourself-on-your-blog&#x2F;&quot;&gt;Pourquoi je ne voudrais pas que les internautes sachent ce qui se passe dans ma vie ?&lt;&#x2F;a&gt;». Et bien, plein de choses en fait. Et encore plus si on prend en compte de potentiels employeurs au sein des lecteurices.&lt;&#x2F;p&gt;
&lt;p&gt;Je pense que je n&#x27;ai pas envie de tout dire, ni de me nommer, pas à cet instant de ma vie.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>post1.md</title>
        <published>2023-02-27T00:00:00+00:00</published>
        <updated>2023-02-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/blog/post1/"/>
        <id>https://tgm.happyngreen.fr/blog/post1/</id>
        
        <summary type="html">&lt;p&gt;This article offers a sample of basic Markdown syntax that can be used in Zola
content files, also it shows whether basic HTML elements are decorated with CSS
in a Zola theme.&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Ateliers</title>
        <published>2021-06-01T00:00:00+00:00</published>
        <updated>2021-06-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2021-ateliers/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2021-ateliers/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2021-ateliers/">&lt;p&gt;Galerie virtuelle où sont invités à intervenir d&#x27;autres artistes ou étudiants.
L&#x27;exposition se visite avec un casque de Réalité Virtuelle. Chaque exposant
dispose de son espace personnel aux propriétés spécifiques déterminées par
l&#x27;espace virtuel (monde sans gravité, espace non-euclidien,...). À travers cette
expérience, j&#x27;explore la position de l&#x27;artiste en tant que commissaire
d&#x27;exposition&#x2F;galeriste dans un monde virtuel, et les possibilités qu&#x27;offre un
espace dématérialisé.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Cabinet de Curiosité</title>
        <published>2021-04-01T00:00:00+00:00</published>
        <updated>2021-04-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2021-cabinet-de-curiosite/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2021-cabinet-de-curiosite/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2021-cabinet-de-curiosite/">&lt;p&gt;Le cabinet de curiosités était un meuble contenant des objets catégorisés qui, à
leur tour, contenaient des histoires révélant un aspect de l’histoire naturelle,
sociale et&#x2F; ou culturelle de l’homme. Ce projet de groupe est un site web avec
une structure&#x2F;navigation qui reflète le cabinet de curiosités. Le site entier
ainsi que chaque objet ont été encodés, photographiés (ou modélisés) pour la
présentation.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Exploration 3D</title>
        <published>2020-01-01T00:00:00+00:00</published>
        <updated>2021-06-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2020-3d/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2020-3d/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2020-3d/">&lt;h2 id=&quot;variation-dindin-jarr&quot;&gt;Variation DinDin Jarr&lt;&#x2F;h2&gt;
&lt;p&gt;Reprenant la sculpture DimDimJaar de l&#x27;artiste chinoise Guan Xian. L&#x27;ayant
remodélisée dans l&#x27;espace 3D, j&#x27;explore diverses ambiances et quelques scénarios
d&#x27;implantation de l&#x27;œuvre.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;very-random&quot;&gt;Very Random&lt;&#x2F;h2&gt;
&lt;p&gt;Série d&#x27;expérimentations dans Blender. Les formes se transforment au fur et à
mesure que je découvre l&#x27;entièreté des paramètres permettant leurs créations.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;zipper&quot;&gt;Zipper&lt;&#x2F;h2&gt;
&lt;p&gt;Première commande 3D professionnelle. Une fermeture éclair, rendue dans un clip
360 sur fond en dégradé allant d&#x27;un gris foncé à blanc, style studio photo.
Format prévu pour Instagram.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Interférence</title>
        <published>2020-01-01T00:00:00+00:00</published>
        <updated>2020-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2020-interference/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2020-interference/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2020-interference/">&lt;p&gt;Projet de fin d&#x27;année, mise en situation concours 1% en France. Le projet
s&#x27;implante dans le patio du bâtiment. L’installation se compose d’un jardin
minéral qui occupe l’intégralité du patio, et qui est surmonté d’une canopée
sous laquelle se trouve un bassin rempli d’eau, dont la base renferme un
projecteur lumineux. Le but de cette installation est de mettre en évidence le
phénomène d’interférence d’ondes à la surface de l’eau.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>#rourou</title>
        <published>2019-01-01T00:00:00+00:00</published>
        <updated>2019-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2019-rourou/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2019-rourou/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2019-rourou/">&lt;p&gt;&lt;strong&gt;#RouRou&lt;&#x2F;strong&gt; est un projet collaboratif développé pendant une Jam Créative. En
prenant le pigeon comme reflet de l&#x27;homme, chaque case propose un archétype
sociétal selon l&#x27;artiste. Le projet devait se prolonger par l&#x27;affichage des
images dans la ville, lançant un retentissant #ROUROU&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Silhouettes</title>
        <published>2018-01-01T00:00:00+00:00</published>
        <updated>2018-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2018-silhouettes/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2018-silhouettes/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2018-silhouettes/">&lt;p&gt;Projet d&#x27;installation de silhouettes peintes au pochoir à même la rue dans tout
le centre ville de Mons. Les silhouettes de personnages dansant ou de la vie de
tous les jours suspendus dans la rue apportent la poésie dans l&#x27;espace urbain et
invitent les passants à la recherche des funambules invisibles.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Skate</title>
        <published>2018-01-01T00:00:00+00:00</published>
        <updated>2018-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2018-skate/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2018-skate/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2018-skate/">&lt;p&gt;Projet issu de la collaboration entre Arts² et un magasin de skate à Mons. Les
deux projets sont des explorations sur le détournement ou l&#x27;explosion de la
forme du skate, passant par le skate-légume biodégradable et réutilisable à la
planche en composition abstraite.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Montagnes</title>
        <published>2017-01-01T00:00:00+00:00</published>
        <updated>2017-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://tgm.happyngreen.fr/portfolio/2017-montagnes/"/>
        <id>https://tgm.happyngreen.fr/portfolio/2017-montagnes/</id>
        
        <content type="html" xml:base="https://tgm.happyngreen.fr/portfolio/2017-montagnes/">&lt;p&gt;Série de peintures, croquis, dessin, etc, reprenant les codes d&#x27;un paysage de
montagnes, souvent désertique. Utilise les codes d&#x27;illustration et cartographies
de mondes médiévale fantaisie.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
