<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Welcome to The Elemental Wizard</title>
    <subtitle>I am the Wizard! I can cast cringe!</subtitle>
    <link rel="self" type="application/atom+xml" href="https://fire-fart-water-earth.net/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-06-08T00:00:00+00:00</updated>
    <id>https://fire-fart-water-earth.net/atom.xml</id>
    <entry xml:lang="en">
        <title>American miles</title>
        <published>2026-06-08T00:00:00+00:00</published>
        <updated>2026-06-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2026/2026-06-08-american-miles/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2026/2026-06-08-american-miles/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2026/2026-06-08-american-miles/">&lt;p&gt;We all have our laughs about Americans, but shouldn&#x27;t we try to help them?&lt;&#x2F;p&gt;
&lt;p&gt;On internets, they often complain that they don&#x27;t understand the difference between a kilogram and a gram. And I have an idea!&lt;&#x2F;p&gt;
&lt;p&gt;They should start using kilomiles, and they would quickly get used to the concept and easily transition to other metric measurements.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Was: 7 m&#x2F;h&lt;&#x2F;p&gt;
&lt;p&gt;Will be: 0.007 km&#x2F;h&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;And they would immediately begin to feel accepted!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>`tar` vs `rsync`</title>
        <published>2026-03-30T00:00:00+00:00</published>
        <updated>2026-03-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2026/2026-03-30-tar-vs-rsync/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2026/2026-03-30-tar-vs-rsync/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2026/2026-03-30-tar-vs-rsync/">&lt;p&gt;In In revolving article &lt;a class=&quot;__external_link__&quot; rel=&quot;noopener nofollow noreferrer&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;drewdevault.com&#x2F;2026&#x2F;03&#x2F;28&#x2F;2026-03-28-rsync-without-rsync.html&quot;&gt;tar: a slop-free alternative to rsync&lt;&#x2F;a&gt; was claimed that it the same:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ tar -cz public | ssh example.org tar -C &amp;#x2F;var&amp;#x2F;www -xz
$ rsync -a public example.org:&amp;#x2F;var&amp;#x2F;www&amp;#x2F;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;🤯 unbelievable!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Sleeping Unicorn: 8mm Film.</title>
        <published>2026-01-31T00:00:00+00:00</published>
        <updated>2026-01-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2026/2026-01-31-sleeping-unicorn-8mm-film/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2026/2026-01-31-sleeping-unicorn-8mm-film/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2026/2026-01-31-sleeping-unicorn-8mm-film/">&lt;p&gt;Rush to buy stocks related to 8mm film!&lt;&#x2F;p&gt;
&lt;p&gt;AI video generation has changed the world. Digital data is fake now.&lt;&#x2F;p&gt;
&lt;p&gt;I assert that in the near future, government CCTV will be replaced with analogue 8mm film cameras.&lt;&#x2F;p&gt;
&lt;p&gt;Do not miss the moment buy immediately it will be too late soon you will regret it.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Humanity’s Survival</title>
        <published>2026-01-27T00:00:00+00:00</published>
        <updated>2026-01-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2026/2026-01-27-humanitys-survival/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2026/2026-01-27-humanitys-survival/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2026/2026-01-27-humanitys-survival/">&lt;p&gt;No more other issues left, worrying for humanity surviving.&lt;&#x2F;p&gt;
&lt;p&gt;Stephen H. told us that we need to colonize a second planet, but that dream feels so far away that even S. Hawking got tired of waiting.&lt;&#x2F;p&gt;
&lt;p&gt;Mars colonization is still very distant, and no one knows how long we will have to wait. While rockets are evolving quickly, the progress is not revolutionary enough to make Mars shuttles a common thing anytime soon.&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile, automation, robots, and AI are undergoing a technological revolution right now.&lt;&#x2F;p&gt;
&lt;p&gt;I’m curious what humanity will achieve first: space shuttles to Mars, or autonomous human cloning farms.&lt;&#x2F;p&gt;
&lt;p&gt;One extra colony is good — but what if humanity starts sending backups of itself before space travel becomes practical?&lt;&#x2F;p&gt;
&lt;p&gt;There’s no need to fly for 10 light-years with thousands of people if you can just send a transport container. It lands by parachute somewhere, expands, and begins printing people.&lt;&#x2F;p&gt;
&lt;p&gt;Or imagine a giant dinosaur hits Earth and kills everyone — but on the Luna, within 15 minutes, humanity begins restoring itself from backup. Once the first group of people is ready, they jump from the Luna back to Earth with parachutes and recolonize the planet.&lt;&#x2F;p&gt;
&lt;p&gt;Recover the civilization, make the Matrix!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>White Photodump</title>
        <published>2026-01-13T00:00:00+00:00</published>
        <updated>2026-01-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2026/2026-01-13-white-photodump/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2026/2026-01-13-white-photodump/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2026/2026-01-13-white-photodump/">&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2026&#x2F;2026-01-13-white-photodump&#x2F;DSC_1533.jpg&quot; alt=&quot;winter&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mail catcher</title>
        <published>2026-01-08T00:00:00+00:00</published>
        <updated>2026-01-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2026/2026-01-08-mail-catcher/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2026/2026-01-08-mail-catcher/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2026/2026-01-08-mail-catcher/">&lt;p&gt;Sometimes you develop. Sometimes you need to send mail. More sometimes &lt;em&gt;(less sometimes?)&lt;&#x2F;em&gt;, you need to send mail while you are developing.&lt;&#x2F;p&gt;
&lt;p&gt;Absolutely never should that mail be sent out to the internet. Who would like to receive 50 test emails? All broken.&lt;&#x2F;p&gt;
&lt;p&gt;The safest and simplest way &lt;em&gt;(post your solutions in the comments!)&lt;&#x2F;em&gt; — a &lt;strong&gt;mail catcher&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;A somewhat fake &lt;code&gt;SMTP&lt;&#x2F;code&gt; server that catches mail, and that’s all.&lt;&#x2F;p&gt;
&lt;p&gt;If you do not like to like yourself, you can use the famous one-liner:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ python -m smtpd -n -c DebuggingServer localhost:1025
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Welp, it works. Thanks!&lt;&#x2F;p&gt;
&lt;p&gt;If you want to have a shared mail catcher for a group of people, there is nothing better than &lt;code&gt;mailtrap.io&lt;&#x2F;code&gt; &lt;em&gt;(there is also &lt;code&gt;mailpit&lt;&#x2F;code&gt;, but you have to self-host it)&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;But if you want to have it on localhost, then just add this to your &lt;code&gt;docker-compose.yml&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;# https:&amp;#x2F;&amp;#x2F;mailpit.axllent.org
smtp-mailpit:
    image: axllent&amp;#x2F;mailpit
    container_name: smtp-mailpit
    ports:
        #- &amp;quot;1025:1025&amp;quot; # pass through STMP port to host machine
        - &amp;quot;8025:8025&amp;quot; # WEB UI port
    environment:
        MP_SMTP_AUTH_ACCEPT_ANY: 1
        MP_SMTP_AUTH_ALLOW_INSECURE: 1
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Than somehow find that your new container in your docker somewhere and use it as &lt;code&gt;SMTP&lt;&#x2F;code&gt; server &lt;code&gt;host:1025&lt;&#x2F;code&gt; with any credentials, and working &lt;code&gt;TLS&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Add a virtual host if your service check domains validity for some reason.&lt;&#x2F;p&gt;
&lt;p&gt;You already know how to do all of this yourself; I do not want to explain obvious basics to you &lt;em&gt;(I do not know how to)&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Then send an email, open that your container UI somehow, and enjoy your local &lt;del&gt;mailtrap&lt;&#x2F;del&gt; &lt;strong&gt;mailpit&lt;&#x2F;strong&gt;!&lt;&#x2F;p&gt;
&lt;p&gt;Very useful, I like it a lot, highly recommend!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>`~&#x2F;.ssh&#x2F;config` and includes</title>
        <published>2025-12-31T00:00:00+00:00</published>
        <updated>2025-12-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-12-31-ssh-config-and-includes/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-12-31-ssh-config-and-includes/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-12-31-ssh-config-and-includes/">&lt;p&gt;It’s kind of obvious that using &lt;code&gt;.ssh&#x2F;config&lt;&#x2F;code&gt; separates a skilled Linux user from a wannabe kubuntu user.&lt;&#x2F;p&gt;
&lt;p&gt;And how could it not? You can set the username, port, and key &lt;em&gt;(oh yes, you can use different keys for different services)&lt;&#x2F;em&gt;, and all those weird host parameters once and then forget about them.&lt;&#x2F;p&gt;
&lt;p&gt;And aliases:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ cat ~&amp;#x2F;.ssh&amp;#x2F;config

Host ffwe_blog
    HostName fire-fart-water-earth.net
    IdentityFile ~&amp;#x2F;.ssh&amp;#x2F;keys&amp;#x2F;private_key
    User blog
    WarnWeakCrypto no

$ ssh ffwe_blog
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Typically, after some time, &lt;code&gt;~&#x2F;.ssh&#x2F;config&lt;&#x2F;code&gt; becomes a disgusting list of dead hosts and removed keys. And you can’t really do anything about it. The dual nature of &lt;code&gt;~&#x2F;.ssh&#x2F;config&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;But today is a magical day, and I have incredible news for you! &lt;code&gt;~&#x2F;.ssh&#x2F;config&lt;&#x2F;code&gt; supports includes! &lt;em&gt;(did no one read the manual at all?)&lt;&#x2F;em&gt; So you can split your huge garbage pile into neat, organized pillars!&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;$ cat ~&amp;#x2F;.ssh&amp;#x2F;config

SetEnv EDITOR=vim
ServerAliveInterval 30

Include .&amp;#x2F;conf.d&amp;#x2F;my_hosts
Include .&amp;#x2F;conf.d&amp;#x2F;work_hosts  
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre&gt;&lt;code&gt;$ cat ~&amp;#x2F;.ssh&amp;#x2F;conf.d&amp;#x2F;my_hosts

# for syntax highlighting
# vi: ft=sshconfig

Host ffwe_blog
    HostName fire-fart-water-earth.net
    IdentityFile ~&amp;#x2F;.ssh&amp;#x2F;keys&amp;#x2F;private_key
    User blog
    WarnWeakCrypto no
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You are welcome! Live better than you lived before!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mozilla&#x27;s AI curve</title>
        <published>2025-12-20T00:00:00+00:00</published>
        <updated>2025-12-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-12-20-mozillas-ai-curve/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-12-20-mozillas-ai-curve/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-12-20-mozillas-ai-curve/">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2025.02.20&lt;&#x2F;strong&gt;: Mozilla diversifies its business through AI products and an online advertising platform&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2025.11.16&lt;&#x2F;strong&gt;: Firefox is developing a navigation mode that uses AI&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2025.12.16&lt;&#x2F;strong&gt;: A new head of Mozilla Corporation has been appointed, focusing on AI in Firefox&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2025.12.19&lt;&#x2F;strong&gt;: Firefox 146.0.1 update: Firefox will introduce an option to completely disable AI&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Braille Nubs</title>
        <published>2025-12-15T00:00:00+00:00</published>
        <updated>2025-12-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-12-15-braille-nubs/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-12-15-braille-nubs/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-12-15-braille-nubs/">&lt;p&gt;Any keyboard has two small nubs &lt;em&gt;(and a third on the numpad)&lt;&#x2F;em&gt; to help you locate C4 by touch.&lt;&#x2F;p&gt;
&lt;p&gt;Not bad. Someone just forgot to tell everyone, but still, not bad.&lt;&#x2F;p&gt;
&lt;p&gt;All the other keys are left smooth, but what if we put Braille nubs on them? &lt;em&gt;(Let’s ignore the insignificant group of people who need more than Latin keys)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We could build our civilization on the common skill of finger reading.&lt;&#x2F;p&gt;
&lt;p&gt;For example, it’s dark in the room. You prob around with your hands and realize -- it’s a light switch! You can summon the light!&lt;&#x2F;p&gt;
&lt;p&gt;Or you’re lying in the dark, finger-reading a book, not afraid that the book will hit you in the face!&lt;&#x2F;p&gt;
&lt;p&gt;Dear gods, we need this urgently!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-12-15-braille-nubs&#x2F;closeup-computer-keyboard-braille-blind-600nw-2299868255-2453828406.jpg&quot; alt=&quot;Braille keyboard&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Terminal shortcuts</title>
        <published>2025-12-13T00:00:00+00:00</published>
        <updated>2025-12-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-12-13-terminal-shortcuts/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-12-13-terminal-shortcuts/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-12-13-terminal-shortcuts/">&lt;p&gt;The terminal has oddly powerful text-editing features. For example, if you have a string and your cursor is in the middle:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;xxx xxx █ xxx xxx
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then you can:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CTRL+W&lt;&#x2F;code&gt; to delete the word on the left&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;ALT+D&lt;&#x2F;code&gt; to delete the word on the right&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Why?&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>GoAT diagrams</title>
        <published>2025-12-12T00:00:00+00:00</published>
        <updated>2025-12-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-12-12-goat-diagrams/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-12-12-goat-diagrams/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-12-12-goat-diagrams/">&lt;p&gt;I’ve always been amused by tables in &lt;code&gt;markdown&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;| Column 1      | Column 2      |
| ------------- | ------------- |
| Cell 1, Row 1 | Cell 2, Row 1 |
| Cell 1, Row 2 | Cell 1, Row 2 |
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It looks really simple and reasonable, and I have no idea how else to make it. But it’s absolutely incomprehensible, unusable, and impossible to make beautiful without a really smart editor.&lt;&#x2F;p&gt;
&lt;p&gt;You can make it ugly and it will still work, but it’s ugly!&lt;&#x2F;p&gt;
&lt;p&gt;But tables are something for the weak and obedient to the gods.&lt;&#x2F;p&gt;
&lt;p&gt;People rebelled, and decided to fully anger the gods, and came up with &lt;a class=&quot;__external_link__&quot; rel=&quot;noopener nofollow noreferrer&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bep&#x2F;goat&quot;&gt;GoAT diagrams&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Delightfully traumatic. Infinitely cursed.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-12-12-goat-diagrams&#x2F;goat_1.jpg&quot; alt=&quot;goat_1&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-12-12-goat-diagrams&#x2F;goat_2.jpg&quot; alt=&quot;goat_2&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Watchdog and cron</title>
        <published>2025-12-09T00:00:00+00:00</published>
        <updated>2025-12-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-12-09-watchdog-and-cron/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-12-09-watchdog-and-cron/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-12-09-watchdog-and-cron/">&lt;p&gt;You already know I despise &lt;code&gt;systemd&lt;&#x2F;code&gt; a bit more than &lt;code&gt;wayland&lt;&#x2F;code&gt;, but the future will be in the future, and the past will still be in the past.&lt;&#x2F;p&gt;
&lt;p&gt;I have message queues and &lt;del&gt;bees&lt;&#x2F;del&gt; workers. Workers die each hour, but my lovely &lt;code&gt;cron&lt;&#x2F;code&gt; resurrects them and forces them to work.&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s just a single server and there won&#x27;t be any more &lt;em&gt;(but there will be fewer)&lt;&#x2F;em&gt;, so don&#x27;t shame me, please.&lt;&#x2F;p&gt;
&lt;p&gt;There are a lot of workers &lt;em&gt;(very few)&lt;&#x2F;em&gt; and even more queues &lt;em&gt;(a very few of few)&lt;&#x2F;em&gt;. They lived in harmony, but I did something wrong and the workers began their deadly loop and started eating memory. And they ate it all.&lt;&#x2F;p&gt;
&lt;p&gt;Using simple spells like &lt;em&gt;&quot;it worked before, which means my changes from yesterday are at fault&quot;&lt;&#x2F;em&gt; it was quite simple to find the broken worker. It was killed, and the rest were told to keep working while ignoring the corpse nearby.&lt;&#x2F;p&gt;
&lt;p&gt;And they worked. For an hour. And then they didn’t. Run them manually — works. Leave them alone — doesn’t.&lt;&#x2F;p&gt;
&lt;p&gt;That was weird, as cron wasn&#x27;t touched, memory wasn’t leaking, but the workers didn’t want to work.&lt;&#x2F;p&gt;
&lt;p&gt;The book of life &lt;em&gt;(&lt;code&gt;&#x2F;var&#x2F;log&#x2F;syslog | grep -i cron&lt;&#x2F;code&gt;)&lt;&#x2F;em&gt; told me that cron worked fine, but not since long ago. And then it didn’t.&lt;&#x2F;p&gt;
&lt;p&gt;It turned out that when the workers ate all the memory — watchdog killed cron. I doubt it realized that cron was the initial culprit; it was simply near the paw of death.&lt;&#x2F;p&gt;
&lt;p&gt;For the very first time in my life, watchdog killed &lt;code&gt;cron&lt;&#x2F;code&gt;! Unbelievable!&lt;&#x2F;p&gt;
&lt;p&gt;Would &lt;code&gt;systemd timers&lt;&#x2F;code&gt; survive? Would the paw of death smite them?&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s a mystery. I could run an experiment, but no. Imperative knowledge is only for people with weak faith.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Photodump</title>
        <published>2025-12-06T00:00:00+00:00</published>
        <updated>2025-12-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-12-06-photodump/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-12-06-photodump/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-12-06-photodump/">&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-12-06-photodump&#x2F;DSC_4495.jpg&quot; alt=&quot;img4&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-12-06-photodump&#x2F;DSC_4505.jpg&quot; alt=&quot;img4&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Someone ruined the internet (x)</title>
        <published>2025-11-28T00:00:00+00:00</published>
        <updated>2025-11-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-11-28-someone-ruined-internet-x/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-11-28-someone-ruined-internet-x/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-11-28-someone-ruined-internet-x/">&lt;p&gt;We all know that &lt;code&gt;email@example.com&lt;&#x2F;code&gt; is an email address. But what does an email address &lt;em&gt;mean&lt;&#x2F;em&gt;?
It means that on a server with the address &lt;code&gt;example.com&lt;&#x2F;code&gt; there is an account named &lt;code&gt;email&lt;&#x2F;code&gt;.
We also know it’s an email address, so we know which port to poke and what protocol to choose &lt;em&gt;(details in &lt;code&gt;dns&lt;&#x2F;code&gt;)&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;And every &lt;code&gt;*nix&lt;&#x2F;code&gt; account can be written as &lt;code&gt;user1@computer1&lt;&#x2F;code&gt;, which means that on &lt;code&gt;computer1&lt;&#x2F;code&gt; there exists an account &lt;code&gt;user1&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The symbol &lt;code&gt;@&lt;&#x2F;code&gt; literally means &lt;code&gt;at&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;user-at-computer1&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;email-at-example.com&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Cose. Uniform.&lt;&#x2F;p&gt;
&lt;p&gt;And then Twitter comes along and decides that everyone will be &lt;code&gt;@user2&lt;&#x2F;code&gt;, and breaks the internet.
TWITTER SHOULD HAVE USED &lt;code&gt;user2@&lt;&#x2F;code&gt;!!!111&lt;&#x2F;p&gt;
&lt;p&gt;We lost everything. Dark times are ahead.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Wordpress actions hooks and filter hooks</title>
        <published>2025-11-27T00:00:00+00:00</published>
        <updated>2025-11-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-11-27-wp-actions-hooks-and-filter-hooks/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-11-27-wp-actions-hooks-and-filter-hooks/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-11-27-wp-actions-hooks-and-filter-hooks/">&lt;blockquote&gt;
&lt;p&gt;There are two types of hooks: &lt;strong&gt;Actions&lt;&#x2F;strong&gt; and &lt;strong&gt;Filters&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Actions&lt;&#x2F;strong&gt; allow you to add data or change how WordPress operates.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Filters&lt;&#x2F;strong&gt; give you the ability to change data during the execution of WordPress Core, plugins, and themes.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre data-lang=&quot;php&quot; class=&quot;language-php &quot;&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;function add_action( $hook_name, $callback, $priority = 10, $accepted_args = 1 ) {
    return add_filter( $hook_name, $callback, $priority, $accepted_args );
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre data-lang=&quot;php&quot; class=&quot;language-php &quot;&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;public function has_filters() {
    foreach ($this-&amp;gt;callbacks as $callbacks) {
        if ($callbacks) {
            return true;
        }
    }

    return false;
}
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Aluminum OS</title>
        <published>2025-11-25T00:00:00+00:00</published>
        <updated>2025-11-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-11-25-os-aluminum/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-11-25-os-aluminum/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-11-25-os-aluminum/">&lt;blockquote&gt;
&lt;p&gt;Google&#x27;s new &#x27;Aluminium OS&#x27; project brings Android to PC&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Will they make a fork &quot;Aluminum OS&quot;?&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>.ssh&#x2F;unknown_hosts</title>
        <published>2025-11-22T00:00:00+00:00</published>
        <updated>2025-11-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-11-22-ssh-unknown-hosts/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-11-22-ssh-unknown-hosts/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-11-22-ssh-unknown-hosts/">&lt;p&gt;When &lt;code&gt;ssh&lt;&#x2F;code&gt; connects to an unknown host, it asks the user to type &lt;code&gt;&quot;yes&quot;&lt;&#x2F;code&gt;. No one knows why we should do it, but &lt;code&gt;ssh&lt;&#x2F;code&gt; will not connect without it.&lt;&#x2F;p&gt;
&lt;p&gt;You can avoid this prompt in two ways:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;# 1. Disable security check (unsafe)
$ ssh -o &amp;quot;StrictHostKeyChecking no&amp;quot; user@example.com
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre&gt;&lt;code&gt;# 2. Automatically make remote host known
$ ssh-keyscan -t rsa example.com &amp;gt;&amp;gt; ~&amp;#x2F;.ssh&amp;#x2F;known_hosts
$ ssh user@example.com
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;There was no warning in the second case! And not because we disabled safety check, we made the host known to us!&lt;&#x2F;p&gt;
&lt;p&gt;Now you should understand that professional do different choices. Be professional, choose safety!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>OTP registration</title>
        <published>2025-11-18T00:00:00+00:00</published>
        <updated>2025-11-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-11-18-otp-registration/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-11-18-otp-registration/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-11-18-otp-registration/">&lt;p&gt;What if we look on &lt;a class=&quot;__external_link__&quot; rel=&quot;noopener nofollow noreferrer&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;OPIE_Authentication_System&quot;&gt;OPIE&lt;&#x2F;a&gt; and &lt;a class=&quot;__external_link__&quot; rel=&quot;noopener nofollow noreferrer&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;OTPW&quot;&gt;OTPW&lt;&#x2F;a&gt; and decide we dont want it.&lt;&#x2F;p&gt;
&lt;p&gt;And we make registration by OTP generation. Singlefactory. While you have access to key -- you have access to the service.&lt;&#x2F;p&gt;
&lt;p&gt;No need to know any password, no any use of e-mails and logins.&lt;&#x2F;p&gt;
&lt;p&gt;Cool! Dumb and cool!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Zola SSG: the story of success</title>
        <published>2025-11-16T00:00:00+00:00</published>
        <updated>2025-11-16T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/grimoire/2025/2025-11-16-zola-the-first-battle/"/>
        <id>https://fire-fart-water-earth.net/grimoire/2025/2025-11-16-zola-the-first-battle/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/grimoire/2025/2025-11-16-zola-the-first-battle/">&lt;p&gt;Many burned candles had I burn to figure out how the  &lt;em&gt;static site generator &lt;a class=&quot;__external_link__&quot; rel=&quot;noopener nofollow noreferrer&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;zola&lt;&#x2F;a&gt;&lt;&#x2F;em&gt; works.&lt;&#x2F;p&gt;
&lt;p&gt;It uses &lt;code&gt;.md&lt;&#x2F;code&gt; files, and it seemed like the safest option.&lt;&#x2F;p&gt;
&lt;p&gt;Apparently it can&#x27;t render &lt;code&gt;```&lt;&#x2F;code&gt; and for some unknown reason it wraps everything in layers of &lt;code&gt;&amp;lt;code&amp;gt;&lt;&#x2F;code&gt; and &lt;code&gt;&amp;lt;p&amp;gt;&lt;&#x2F;code&gt; even with disabled highligting.&lt;&#x2F;p&gt;
&lt;p&gt;That’s unfortunate -- to fall on the text you shouldn&#x27;t touch.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-11-16-zola-the-first-battle&#x2F;20251116_131546_t3ZBMv.png&quot; alt=&quot;img4&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-11-16-zola-the-first-battle&#x2F;20251116_132043_VTtJ2S.png&quot; alt=&quot;img4&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-11-16-zola-the-first-battle&#x2F;20251116_131608_dLL3ci.png&quot; alt=&quot;img4&quot; &#x2F;&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;fire-fart-water-earth.net&#x2F;grimoire&#x2F;2025&#x2F;2025-11-16-zola-the-first-battle&#x2F;20251116_131627_KrxPDO.png&quot; alt=&quot;img4&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>About</title>
        <published>2025-11-10T00:01:00+00:00</published>
        <updated>2025-11-10T00:01:00+00:00</updated>
        
        <author>
          <name>
            
              Elemental Wizard &lt;elemental-wizard@fire-fart-water-earth.net&gt;
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://fire-fart-water-earth.net/about/"/>
        <id>https://fire-fart-water-earth.net/about/</id>
        
        <content type="html" xml:base="https://fire-fart-water-earth.net/about/">&lt;p&gt;&lt;code&gt;===========[about.md]===========&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Random placeholder page just to have a page&lt;&#x2F;p&gt;
&lt;p&gt;I do not understand why this page is in feed too.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
