<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>akos.ma</title><link>https://akos.ma/</link><description>Recent content on akos.ma</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 09 Oct 2026 00:00:00 +0200</lastBuildDate><atom:link href="https://akos.ma/index.xml" rel="self" type="application/rss+xml"/><item><title>Solving Systems of Linear Equations with Matrices</title><link>https://akos.ma/blog/solving-systems-of-linear-equations-with-matrices/</link><pubDate>Fri, 09 Oct 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/solving-systems-of-linear-equations-with-matrices/</guid><description> In a previous post I solved a 3×3 system by elimination. Here is the same system written with matrices and solved by row reduction on the augmented matrix.</description><content:encoded><![CDATA[ <p>In <a href="/blog/systems-of-linear-equations/">an earlier article</a> I solved a 3x3 system by elimination; here is the same system written with matrices and solved by row reduction on the augmented matrix.</p>
$$
\begin{cases}
x + y + z = 6 \\
2x - y + z = 3 \\
3x + 2y - z = 4
\end{cases}
$$<p>The same information fits into one matrix equation \(A\mathbf{x} = \mathbf{b}\), where</p>
$$
A = \begin{pmatrix}
1 & 1 & 1 \\
2 & -1 & 1 \\
3 & 2 & -1
\end{pmatrix}, \quad
\mathbf{x} = \begin{pmatrix} x \\ y \\ z \end{pmatrix}, \quad
\mathbf{b} = \begin{pmatrix} 6 \\ 3 \\ 4 \end{pmatrix}.
$$<p>Each row of \(A\) holds the coefficients of one equation, and \(\mathbf{b}\) holds the constants on the right-hand side.</p>
<h2 id="augmented-matrix">Augmented matrix</h2>
<p>We pack \(A\) and \(\mathbf{b}\) into the <strong>augmented matrix</strong> \([A \mid \mathbf{b}]\). Row operations on this matrix are exactly the legitimate moves from elimination: add a multiple of one row to another, multiply a row by a nonzero scalar, swap two rows.</p>
$$
\left(\begin{array}{ccc|c}
1 & 1 & 1 & 6 \\
2 & -1 & 1 & 3 \\
3 & 2 & -1 & 4
\end{array}\right)
$$<p>Subtract \(2\) times row \(1\) from row \(2\), and \(3\) times row \(1\) from row \(3\):</p>
$$
\left(\begin{array}{ccc|c}
1 & 1 & 1 & 6 \\
0 & -3 & -1 & -9 \\
0 & -1 & -4 & -14
\end{array}\right)
$$<p>Swap rows \(2\) and \(3\) so the next pivot sits in a convenient place, then multiply the new row \(2\) by \(-1\):</p>
$$
\left(\begin{array}{ccc|c}
1 & 1 & 1 & 6 \\
0 & 1 & 4 & 14 \\
0 & -3 & -1 & -9
\end{array}\right)
$$<p>Add \(3\) times row \(2\) to row \(3\):</p>
$$
\left(\begin{array}{ccc|c}
1 & 1 & 1 & 6 \\
0 & 1 & 4 & 14 \\
0 & 0 & 11 & 33
\end{array}\right)
$$<p>Divide row \(3\) by \(11\):</p>
$$
\left(\begin{array}{ccc|c}
1 & 1 & 1 & 6 \\
0 & 1 & 4 & 14 \\
0 & 0 & 1 & 3
\end{array}\right)
$$<p>Now <strong>back-substitute</strong> with row operations. <em>Back-substitution</em> means solving from the bottom up once the matrix is triangular: the last row gives \(z = 3\); the row above reads \(y + 4z = 14\), so \(y = 2\); then the first row \(x + y + z = 6\) yields \(x = 1\). The next row operations carry out the same idea without writing each substitution out longhand—they clear the entries above each pivot until the left side is the identity. Subtract \(4\) times row \(3\) from row \(2\):</p>
$$
\left(\begin{array}{ccc|c}
1 & 1 & 1 & 6 \\
0 & 1 & 0 & 2 \\
0 & 0 & 1 & 3
\end{array}\right)
$$<p>Subtract row \(2\) and row \(3\) from row \(1\):</p>
$$
\left(\begin{array}{ccc|c}
1 & 0 & 0 & 1 \\
0 & 1 & 0 & 2 \\
0 & 0 & 1 & 3
\end{array}\right)
$$<p>The left block is the identity matrix, so the last column reads off the solution:</p>
$$
\mathbf{x} = \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix},
\quad \text{i.e.} \quad (x, y, z) = (1, 2, 3),
$$<p>which matches what we obtained by hand in the first post.</p>
<h2 id="same-idea-different-bookkeeping">Same idea, different bookkeeping</h2>
<p>Elimination and row reduction are the same moves; the matrix form just keeps the coefficients lined up so each step is easy to scan. For a \(3 \times 3\) system with a unique solution, \(\det A \neq 0\), and you could also write \(\mathbf{x} = A^{-1}\mathbf{b}\) or use <a href="https://en.wikipedia.org/wiki/Cramer%27s_rule">Cramer’s rule</a>; for larger systems, stable computer implementations usually stick to variants of this row-reduction idea rather than explicit inverses.</p>
]]></content:encoded></item><item><title>UAP or UFO, Buenos Aires, 1985</title><link>https://akos.ma/blog/uap-or-ufo-buenos-aires-1985/</link><pubDate>Fri, 02 Oct 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/uap-or-ufo-buenos-aires-1985/</guid><description><![CDATA[ <p>The other day I came across <a href="https://www.instagram.com/reels/DO320jnAW6m/">this reel on Instagram</a> (in Spanish) about a UFO (or &ldquo;OVNI&rdquo; according to the Spanish acronym) that flew over Buenos Aires on Tuesday, September 17th, 1985.</p>]]></description><content:encoded><![CDATA[ <p>The other day I came across <a href="https://www.instagram.com/reels/DO320jnAW6m/">this reel on Instagram</a> (in Spanish) about a UFO (or &ldquo;OVNI&rdquo; according to the Spanish acronym) that flew over Buenos Aires on Tuesday, September 17th, 1985.</p>
<blockquote
    class="instagram-media"
    data-instgrm-captioned
    data-instgrm-permalink="https://www.instagram.com/p/DO320jnAW6m"
    data-instgrm-version="14"
    style="
      background: #fff;
      border: 0;
      border-radius: 3px;
      box-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.5), 0 1px 10px 0 rgba(0, 0, 0, 0.15);
      margin: 1px;
      max-width: 540px;
      min-width: 326px;
      padding: 0;
      width: 99.375%;
      width: -webkit-calc(100% - 2px);
      width: calc(100% - 2px);
    "
  >
    <div style="padding: 16px">
      <a
        href="https://www.instagram.com/p/DO320jnAW6m"
        style="
          background: #ffffff;
          line-height: 0;
          padding: 0 0;
          text-align: center;
          text-decoration: none;
          width: 100%;
        "
        target="_blank"
      >
        <div style="display: flex; flex-direction: row; align-items: center">
          <div
            style="
              background-color: #f4f4f4;
              border-radius: 50%;
              flex-grow: 0;
              height: 40px;
              margin-right: 14px;
              width: 40px;
            "
          ></div>
          <div
            style="
              display: flex;
              flex-direction: column;
              flex-grow: 1;
              justify-content: center;
            "
          >
            <div
              style="
                background-color: #f4f4f4;
                border-radius: 4px;
                flex-grow: 0;
                height: 14px;
                margin-bottom: 6px;
                width: 100px;
              "
            ></div>
            <div
              style="
                background-color: #f4f4f4;
                border-radius: 4px;
                flex-grow: 0;
                height: 14px;
                width: 60px;
              "
            ></div>
          </div>
        </div>
        <div style="padding: 19% 0"></div>
        <div
          style="display: block; height: 50px; margin: 0 auto 12px; width: 50px"
        >
          <svg
            width="50px"
            height="50px"
            viewBox="0 0 60 60"
            version="1.1"
            xmlns="https://www.w3.org/2000/svg"
            xmlns:xlink="https://www.w3.org/1999/xlink"
          >
            <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
              <g transform="translate(-511.000000, -20.000000)" fill="#000000">
                <g>
                  <path
                    d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"
                  ></path>
                </g>
              </g>
            </g>
          </svg>
        </div>
        <div style="padding-top: 8px">
          <div
            style="
              color: #3897f0;
              font-family: Arial, sans-serif;
              font-size: 14px;
              font-style: normal;
              font-weight: 550;
              line-height: 18px;
            "
          >
            View this post on Instagram
          </div>
        </div>
        <div style="padding: 12.5% 0"></div>
        <div
          style="
            display: flex;
            flex-direction: row;
            margin-bottom: 14px;
            align-items: center;
          "
        >
          <div>
            <div
              style="
                background-color: #f4f4f4;
                border-radius: 50%;
                height: 12.5px;
                width: 12.5px;
                transform: translateX(0px) translateY(7px);
              "
            ></div>
            <div
              style="
                background-color: #f4f4f4;
                height: 12.5px;
                transform: rotate(-45deg) translateX(3px) translateY(1px);
                width: 12.5px;
                flex-grow: 0;
                margin-right: 14px;
                margin-left: 2px;
              "
            ></div>
            <div
              style="
                background-color: #f4f4f4;
                border-radius: 50%;
                height: 12.5px;
                width: 12.5px;
                transform: translateX(9px) translateY(-18px);
              "
            ></div>
          </div>
          <div style="margin-left: 8px">
            <div
              style="
                background-color: #f4f4f4;
                border-radius: 50%;
                flex-grow: 0;
                height: 20px;
                width: 20px;
              "
            ></div>
            <div
              style="
                width: 0;
                height: 0;
                border-top: 2px solid transparent;
                border-left: 6px solid #f4f4f4;
                border-bottom: 2px solid transparent;
                transform: translateX(16px) translateY(-4px) rotate(30deg);
              "
            ></div>
          </div>
          <div style="margin-left: auto">
            <div
              style="
                width: 0px;
                border-top: 8px solid #f4f4f4;
                border-right: 8px solid transparent;
                transform: translateY(16px);
              "
            ></div>
            <div
              style="
                background-color: #f4f4f4;
                flex-grow: 0;
                height: 12px;
                width: 16px;
                transform: translateY(-4px);
              "
            ></div>
            <div
              style="
                width: 0;
                height: 0;
                border-top: 8px solid #f4f4f4;
                border-left: 8px solid transparent;
                transform: translateY(-4px) translateX(8px);
              "
            ></div>
          </div>
        </div>
        <div
          style="
            display: flex;
            flex-direction: column;
            flex-grow: 1;
            justify-content: center;
            margin-bottom: 24px;
          "
        >
          <div
            style="
              background-color: #f4f4f4;
              border-radius: 4px;
              flex-grow: 0;
              height: 14px;
              margin-bottom: 6px;
              width: 224px;
            "
          ></div>
          <div
            style="
              background-color: #f4f4f4;
              border-radius: 4px;
              flex-grow: 0;
              height: 14px;
              width: 144px;
            "
          ></div></div
      ></a>
    </div>
  </blockquote><script async src="https://www.instagram.com/embed.js"></script>
<p>What&rsquo;s funny is that I remember seeing this object distinctively. I was in sixth grade of school, and had recently celebrated my 12th birthday. I was in class, when all of a sudden somebody interrupted my teacher to tell her to come outside, and bam, there it was.</p>
<p>The whole class went outside on the school patio; it was a bright, crisp, beautiful spring day outside. And that thing, whatever it was, call it UFO or UAP or OVNI, shiny and metallic, was flying above Buenos Aires, easily seen floating above our heads.</p>
<p>Now that I think about it, if the reel is correct and the thing was so high above that not even a Mirage fighter of the Air Force could approach it, then it must have been massively big. It was easy to tell that it was metallic, and very, very high. It was more than just a dot in the sky.</p>
<p>And then it drifted away. The next day they claimed it was an atmospheric balloon, or something like that, as shown the following day on the <a href="https://tapas.clarin.com/tapa.html#19850918">cover of Clarin</a>, one of Argentina&rsquo;s most widely read newspapers. But of course nobody believed that version, and according to the reel, apparently neither did the pilot that flew as close as possible to it.</p>
<p class="shadow"><img src="clarin.png" alt=""></p>
]]></content:encoded></item><item><title>Old Smuggler</title><link>https://akos.ma/blog/old-smuggler/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/old-smuggler/</guid><description><![CDATA[ <p>In the 2009, extraordinary Oscar-winning Argentine crime drama &ldquo;The Secret in Their Eyes&rdquo;, there&rsquo;s a memorable scene (one of many, actually) driven by <a href="https://es.wikipedia.org/wiki/Mario_Alarc%C3%B3n">Mario Alarcón</a>, who plays the role of judge Raimundo Fortuna-Lacalle.</p>]]></description><content:encoded><![CDATA[ <p>In the 2009, extraordinary Oscar-winning Argentine crime drama &ldquo;The Secret in Their Eyes&rdquo;, there&rsquo;s a memorable scene (one of many, actually) driven by <a href="https://es.wikipedia.org/wiki/Mario_Alarc%C3%B3n">Mario Alarcón</a>, who plays the role of judge Raimundo Fortuna-Lacalle.</p>
<p>At the end of that scene, visible on <a href="https://www.youtube.com/watch?v=ZkIKub9pDxU">YouTube</a>, judge Fortuna-Lacalle stands next to Pablo Sandoval (played by the immense <a href="https://en.wikipedia.org/wiki/Guillermo_Francella">Guillermo Francella</a>) and describes how he (who in the movie suffers of quite chronic alcoholism) started drinking &ldquo;a bottle of Old Smuggler&rdquo; in the middle of a small town in Argentina.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/ZkIKub9pDxU?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<p>The name of the whisky brand is not anodyne and rang a bell in me; the film is set in 1974, right before the start of the <a href="https://en.wikipedia.org/wiki/1976_Argentine_coup_d'%C3%A9tat">&ldquo;National Reorganization Process&rdquo;</a>. I was a baby at that point in time, but years later I had to endure the alcoholism of my mother, who would down a bottle of… <a href="https://es.wikipedia.org/wiki/Old_Smuggler">Old Smuggler</a>, precisely, and sometimes up to 4 times a week.</p>
<p>No, she never abused me or anything; no, she wasn&rsquo;t violent. She was sad. She was deeply wounded, and wouldn&rsquo;t go to a psychologist for a simple reason: if she did, and my father got wind of that, she could lose custody of her child (me) because my father could argue insanity in front of a judge.</p>
<p>So, 3 or 4 bottles of Old Smuggler a week. Yes, a whole bottle per evening. Sometimes coupled with tranquilizers. And in the process, she would tell me, once and again, the shitty situation of being herself, a divorced woman in 1970s and 1980s Argentina.</p>
<p>Which, to be honest, it was all 100% true. I just do not know exactly how she thought that a 6 year-old kid could help her. I could not; but of course, I thought I had to. Why you ask, well, because I loved her, and I wanted her to be happy. But I couldn&rsquo;t do that. Her happiness was not my responsibility. But I did not know that. Couple a mother wound with a father wound, and that&rsquo;s what you end up with.</p>
<p>The problem was that during the process, as I said, she also mixed various other substances with the bottle of Old Smuggler, like <a href="https://en.wikipedia.org/wiki/Diazepam">Valium</a> and <a href="https://en.wikipedia.org/wiki/Bromazepam">Lexotanil</a>, and such a cocktail left wounds in her brain, which would directly lead to her death in 2010, at the young age of 65.</p>
<p>For my part, I had to learn to cope with her alcoholism, until I couldn&rsquo;t do it anymore, and one morning of <a href="/blog/1996/">1996</a> I literally fled home to take a vacation in Argentina, and then after I returned to Geneva I ended up renting my first appartment and moving out of her life completely the following year.</p>
<p>I wrote the paragraph above with a select mix of pride and sadness and shame and guilt… and, yes, with a glass of <a href="https://en.wikipedia.org/wiki/Glenfiddich">Glenfiddich</a> next to my laptop. All of those feelings at the same time. It does not matter how much I write about this, it does not matter how often I talk about this in therapy, it does not matter how much I cry over these things, there are consequences. There are always consequences.</p>
<p>Yes, I was a weirdo when I was a kid. I know that many of you reading these lines, who knew me from the 1980s, will agree with this assessment. There were reasons for my odd behavior. But of course, nobody gave a fucking shit. I was alone handling all this; my father was of course very busy not being there that whole time, and then my <a href="/blog/my-grandmother-herta-schlerff/">grandmother</a> passed away.</p>
<p>So I would come back from school, and I could smell that Old Smuggler shit from a block away, way before opening the door to my home. I knew my mum was dead drunk. I just fucking knew it. Probably puking in the bathroom floor. Probably meaning to tell me once again another story of her childhood. Probably yelling at me for not helping her at all. Probably crying asking me for forgiveness after yelling at me.</p>
<p>Of course, the most definining story of her childhood, that is, her father raping her, was hidden in her subconscious, and she wouldn&rsquo;t learn about it until she started undergoing deep therapy in the early 2000s.</p>
<p>Whenever I tried to talk my mother out of that bottle of Old Smuggler, she quoted the following lyrics from a 1927 tango by Carlos Gardel, called <a href="https://www.youtube.com/watch?v=wlL35VVE0vc">&ldquo;El Tabernero&rdquo;</a>.</p>
<blockquote>
<p>Todos los que son borrachos <br>
no es por el gusto de serlo, <br>
sólo Dios conoce el alma <br>
que palpita en cada ebrio.</p>
</blockquote>
<p>Deepl just brilliantly translated the above lyrics as follows:</p>
<blockquote>
<p>Not everyone who drinks <br>
does so because they enjoy it; <br>
only God knows the soul <br>
that beats within each drunkard.</p>
</blockquote>
<p>She was right. Only God knows the soul that beat within my mother&rsquo;s chest.</p>
<p>I&rsquo;m not drunk. I&rsquo;m just processing, which I will most probably be doing until the day I die. Generational trauma is a thing, and then you die. And that&rsquo;s why reading <a href="https://markwolynn.com/it-didnt-start-with-you/">&ldquo;It Didn&rsquo;t Start With You&rdquo;</a> by Mark Wolynn has been such a trascendental event for me this year.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/wlL35VVE0vc?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

]]></content:encoded></item><item><title>Notes About "Super Nintendo" by Keza MacDonald</title><link>https://akos.ma/blog/notes-about-super-nintendo-by-keza-macdonald/</link><pubDate>Fri, 18 Sep 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/notes-about-super-nintendo-by-keza-macdonald/</guid><description><![CDATA[ <p>A few months ago I wrote <a href="https://deprogrammaticaipsum.com/keza-macdonald/">an article</a> on De Programmatica Ipsum about Keza MacDonald&rsquo;s awesome book <a href="https://www.penguinrandomhouse.com/books/753986/super-nintendo-by-keza-macdonald/">&ldquo;Super Nintendo: The Game-Changing Company That Unlocked the Power of Play&rdquo;</a>, and as I was reading the book I took some notes; here they go, in their entirety, and without any editing, and with the page numbers appended at the end of each for reference.</p>]]></description><content:encoded><![CDATA[ <p>A few months ago I wrote <a href="https://deprogrammaticaipsum.com/keza-macdonald/">an article</a> on De Programmatica Ipsum about Keza MacDonald&rsquo;s awesome book <a href="https://www.penguinrandomhouse.com/books/753986/super-nintendo-by-keza-macdonald/">&ldquo;Super Nintendo: The Game-Changing Company That Unlocked the Power of Play&rdquo;</a>, and as I was reading the book I took some notes; here they go, in their entirety, and without any editing, and with the page numbers appended at the end of each for reference.</p>
<ul>
<li>Hard to make a &ldquo;Corporation&rdquo; entry about Nintendo, being a secretive company. And not catering particularly to developers per se.</li>
<li>Overall theme: Nintendo is about connecting people</li>
<li>Book structured around games and franchises</li>
<li>All games are quite surreal. When you play them, we inhabit two worlds at once (page 46)</li>
<li>Miyamoto: characters devised by programmer not an artist (page 42)</li>
<li>Universal suing Nintendo over the name Donkey Kong (page 36)</li>
<li>Homo ludens (page 8)</li>
<li>Game impact in human society (pages 14 &amp; 15)</li>
<li>Shintoism (page 46)
<ul>
<li>Also bottom page 64</li>
</ul>
</li>
<li>Developers vs management (page 47 bottom)</li>
<li>Wii Sports best selling game ever, followed by Mario Kart 8 Deluxe for the 2017 Switch (page 51)</li>
<li>30 years of <a href="https://en.wikipedia.org/wiki/Super_Mario_64?wprov=sfti1#">Super Mario 64</a></li>
<li>&ldquo;Older and younger developers together&rdquo; (page 55 bottom)</li>
<li>The people making Mario nowadays grew up playing Mario as kids (page 61)
<ul>
<li>Also: Nintendo holds on to its staff for decades</li>
</ul>
</li>
<li>&ldquo;Video games are…&rdquo; (page 67)</li>
<li>&ldquo;Manzai Trio&rdquo; (page 69)</li>
<li>Music by Koji Kondo
<ul>
<li>November 2025 viral <a href="https://youtu.be/DG4ax7ec64o?is=nJG-xJxoGrbW8nCE">video</a> by <a href="https://www.instagram.com/keichan_piano?igsh=MTFjaWhxaXp6MHBuNA==">Keichan</a></li>
</ul>
</li>
<li>Dreams are a common theme in the Zelda series (page 74)</li>
<li>Another religious reference: Link&rsquo;s horse in Ocarina of Time is Epona, goddess of horses in Celtic mythology</li>
<li>Company willing to take risks (page 87)</li>
<li>Zelda as analogy of the story of game dev in the past 40 years (page 94)</li>
<li>4 R&amp;D units (page 101)</li>
<li>Samus Aran first female video game character, inspired by Alien&rsquo;s Ripley (page 103)
<ul>
<li>More on 112-113, comparison to other female characters</li>
</ul>
</li>
<li>&ldquo;Designers didn&rsquo;t need to know about tech&rdquo; (page 104)</li>
<li>Producer cried in relief when Super Metroid was ready (page 107)</li>
<li>Chaotic collab with Retro in the USA (pages 110 &amp; 111)</li>
<li>&ldquo;Tabloid scaremongering&rdquo; about video games (122)</li>
<li>Pokémon Go phenomenon in 2016 (123)</li>
<li>Pokémon biggest franchise of all time (124)</li>
<li>Pokémon == Pocket Monsters</li>
<li>Horrid Time Magazine article about the creator of Pokémon (129)</li>
<li>Pokémon Go crowd disasters (136)</li>
<li>Kirby: literally unheard of in the western world, wildly popular in Japan (142)
<ul>
<li>Song: <a href="https://open.spotify.com/track/3BZGi1yUqQyCNC868AqUGG">Big in Japan</a> by Alphaville</li>
</ul>
</li>
<li>Kirby was created by a Tokyo partner company, HAL. The CEO would become Nintendo CEO in 2002 (143)
<ul>
<li>Quote in page 144</li>
<li>Death in 2015</li>
<li>Kirby&rsquo;s chapter is more about Iwata</li>
<li>HP-65</li>
<li>Appetite for business books (147)</li>
<li>Expanding game to everyone (152)</li>
<li>&ldquo;Unless you shock people, you&rsquo;ll never gain new customers&rdquo; (155)</li>
<li>Iwata perspective of a coder (155) even as CEO</li>
</ul>
</li>
<li>Wii Sports was to the Wii what Tetris was to the Game Boy (169)</li>
<li>Not every game has to be like an encyclopedia. Some are more like magazine or comics (Iwata, 171)</li>
<li>Technology as a whole fells much less playful now than it did then (174)</li>
<li>Animal Crossing and COVID (181)</li>
<li>We are all, along with the developers, cocreators of a game (188) -&gt; Borges?</li>
<li>The spirit of communication of Animal Crossing rubbed off on the developers (193)</li>
<li>Animal Crossing team is almost half women</li>
<li>Change in public perspective on video games after the pandemic (198-199)</li>
<li>Developers should always envision who will eventually play what they&rsquo;re making, the place that the game  might occupy in people&rsquo;s actual lives. (199)</li>
<li>Nintendo is first and foremost a toy maker (207)</li>
<li>Designing software and hardware simultaneously (208)</li>
<li>Business model compared to PlayStation (212)</li>
<li>Wii U flop (215)</li>
<li>Nobody sets out to make a game that isn&rsquo;t fun (221)</li>
<li>Core principles of every Nintendo game (223)</li>
<li>Super Smash Bros in the height of 1990s moral panic over violence on video games (226)</li>
<li>Sakurai&rsquo;s tendinitis working on Smash Ultimate (233)</li>
<li>Roger Caillois in 1958: paidia vs ludus (235)</li>
<li>Video games in museums and covers of magazines: &ldquo;defining cultural medium of the modern world&rdquo; (242)
<ul>
<li>Games are operas made out of bridges (242)</li>
</ul>
</li>
<li>Nintendo more agile than other companies (250)
<ul>
<li>Nintendo pairs older and younger developers since always (250)</li>
</ul>
</li>
<li>Nintendo behaves in the opposite of &ldquo;move fast and break things&rdquo; (252,253)</li>
<li>A company that expends more on protecting than on coming up with new ideas is doomed to failure (261)</li>
</ul>]]></content:encoded></item><item><title>The Checklist</title><link>https://akos.ma/blog/the-checklist/</link><pubDate>Fri, 11 Sep 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/the-checklist/</guid><description><![CDATA[ <p>When I was a kid, while my mom worked in downtown Buenos Aires, my <a href="/blog/my-grandmother-herta-schlerff/">grandmother Herta</a> would greet me every day at her appartment in the 8th floor above Vicente López after school (back in those days I only had classes in the mornings) and prepare my lunch; she would then go for a nap or to watch some <em>telenovela</em>, while I did my homework in the dining room table.</p>]]></description><content:encoded><![CDATA[ <p>When I was a kid, while my mom worked in downtown Buenos Aires, my <a href="/blog/my-grandmother-herta-schlerff/">grandmother Herta</a> would greet me every day at her appartment in the 8th floor above Vicente López after school (back in those days I only had classes in the mornings) and prepare my lunch; she would then go for a nap or to watch some <em>telenovela</em>, while I did my homework in the dining room table.</p>
<p>That all changed after her passing in April 1985. All of a sudden I&rsquo;d come back to an empty home, and would have to learn to heat some leftovers or even sometimes cook something for myself from scratch.</p>
<p>Until one day I realized in the middle of my class day that I had forgotten my home keys, and hence there was no way to enter home.</p>
<p>I panicked, as the 11 year old I was still, and asked to call my mom at work to let her know. She called a friend of ours, and I ended up having lunch at the home of Graciela and &ldquo;Neno&rdquo; Grosso, the parents of my school friend Leonardo and his older sister Silvina (if you guys are reading this, hi!)</p>
<p>The panic I felt that day was kind of a shock, and it left a visible mark in my psyche and my Virgo maniac attitudes: the checklist. Without exception, every time I leave home since that fateful day 41 years ago, I have repeated in my head the same song in Spanish:</p>
<blockquote>
<p>&ldquo;Llaves, guita&rdquo;.</p>
</blockquote>
<p>Translated from <a href="https://en.wikipedia.org/wiki/Rioplatense_Spanish">Rioplatense Spanish</a> to English, that would read as &ldquo;keys, cash&rdquo;. And I would recite this poem in my head while reaching for those items in my pocket, just to make sure they were there.</p>
<p>Around 1986 my mom gifted me my first wristwatch, so I added a new item on my checklist:</p>
<blockquote>
<p>&ldquo;Llaves, guita, reloj&rdquo; (&ldquo;keys, money, watch.&rdquo;)</p>
</blockquote>
<p>That song stay fixed in my head as I moved to Switzerland <a href="/blog/thirty-years/">in 1991</a>, and then back to Argentina <a href="/blog/lucky-man/">in 1998</a>.</p>
<p>Precisely, in 1998 I bought my first car (a white Ford Ka dubbed &ldquo;Gutiérrez&rdquo;), so the song became:</p>
<blockquote>
<p>&ldquo;Llaves, guita, reloj, llaves del auto&rdquo; (&ldquo;keys, money, watch, car keys.&rdquo;)</p>
</blockquote>
<p>In 1999 I got my first cellphone, so the song changed accordingly:</p>
<blockquote>
<p>&ldquo;Llaves, guita, reloj, llaves del auto, celular&rdquo; (&ldquo;keys, money, watch, car keys, cellphone.&rdquo;)</p>
</blockquote>
<p>I sold my car in 2001, and after my <a href="/blog/cholila/">short stint in Patagonia</a> I moved back to Switzerland. No car, so the song went back to</p>
<blockquote>
<p>&ldquo;Llaves, guita, reloj, celular&rdquo; (&ldquo;keys, money, watch, cellphone.&rdquo;)</p>
</blockquote>
<p>In July 2008, almost at the same time, Claudia and I bought our current car (a lovely red Fiat 500) and we also got our first iPhones 3G, so that the song all of a sudden became again</p>
<blockquote>
<p>&ldquo;Llaves, guita, reloj, llaves del auto, iPhone&rdquo; (&ldquo;keys, money, watch, car keys, iPhone.&rdquo;)</p>
</blockquote>
<p>And finally, in 2011 I started using reading glasses, which means another item on the list:</p>
<blockquote>
<p>&ldquo;Llaves, guita, reloj, llaves del auto, iPhone, anteojos&rdquo; (&ldquo;keys, money, watch, car keys, iPhone, reading glasses.&rdquo;)</p>
</blockquote>
<p>So, there you have it. It&rsquo;s weird how one&rsquo;s mind gets used to such routines, and how I can&rsquo;t avoid going through the same list every time I leave a place (not only home, to be honest.) I have tried to instill that knowledge and practice to Claudia, but… she&rsquo;s not a Virgo, so it doesn&rsquo;t speak to her like it does to me.</p>
<p>And yet, despite such discipline… I still manage to forget things every so often, so it&rsquo;s not completely foolproof.</p>
]]></content:encoded></item><item><title>Shima Uta</title><link>https://akos.ma/blog/shima-uta/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/shima-uta/</guid><description><![CDATA[ <p>The year is 2000 or 2001. Argentine comedian <a href="https://en.wikipedia.org/wiki/Alfredo_Casero">Alfredo Casero</a>, known in the country for a quite revolutionary comedy show on TV called <a href="https://en.wikipedia.org/wiki/Cha_Cha_Cha_(TV_series)">&ldquo;Cha Cha Cha&rdquo;</a>, which aired in the early 90&rsquo;s, went to a Japanese restaurant to eat some sushi, a dish that had just arrived to the country and was the latest culinary hype.</p>]]></description><content:encoded><![CDATA[ <p>The year is 2000 or 2001. Argentine comedian <a href="https://en.wikipedia.org/wiki/Alfredo_Casero">Alfredo Casero</a>, known in the country for a quite revolutionary comedy show on TV called <a href="https://en.wikipedia.org/wiki/Cha_Cha_Cha_(TV_series)">&ldquo;Cha Cha Cha&rdquo;</a>, which aired in the early 90&rsquo;s, went to a Japanese restaurant to eat some sushi, a dish that had just arrived to the country and was the latest culinary hype.</p>
<p>In between maki and nigiri, he heard a song on the loudspeakers of the restaurant, called <a href="https://en.wikipedia.org/wiki/Shima_Uta_(The_Boom_song)">&ldquo;Shima Uta&rdquo;</a>, by a Japanese group named <a href="https://en.wikipedia.org/wiki/The_Boom">The Boom</a>. The <em>coup de coeur</em> was immediate.</p>
<p>He asked the waiter for the name of the song, and the next day he somehow found a copy of the CD in Buenos Aires, got obsessed with it, and ended up deciding to record a cover… in Japanese. Because why not.</p>
<p>Needless to say, Alfredo Casero speaks Japanese as well as I speak Klingon. Never mind, Japanese pronounciation is quite easy for Spanish speakers apparently, so he learned the lyrics phonetically, as one does, and recorded the song.</p>
<p>Lo and behold, the song topped the charts in Argentina, and against all odds, even became a hit in Japan.</p>
<p><a href="https://www.youtube.com/watch?v=N7PeM761nFI">The official video</a> of the song features a &ldquo;making of&rdquo; at the end, and it&rsquo;s hilarious.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/N7PeM761nFI?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<p>Not only that, but in 2002 the football world cup took place in Japan &amp; South Korea… and I kid you not, <a href="https://www.youtube.com/watch?v=9NmQ0x1l0Og">The Boom invited Casero</a> to sing the song with them, live, in a stadium in Japan.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/9NmQ0x1l0Og?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<p>There&rsquo;s something unusually Argentine about this whole story. Naive, bold, stupid, brilliant, funny.</p>
]]></content:encoded></item><item><title>30 Years on the Web</title><link>https://akos.ma/blog/30-years-on-the-web/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/30-years-on-the-web/</guid><description><![CDATA[ <p>On Friday, August 30th, 1996, I published a <a href="https://groups.google.com/g/soc.culture.argentina/c/hT3XJv048Z0/m/PDwak0P9qNEJ">message</a> on the &ldquo;soc.culture.argentina&rdquo; <a href="https://en.wikipedia.org/wiki/Usenet">Usenet</a> newsgroup, announcing the existence of a new page on this thing called &ldquo;the web&rdquo;: the URL was <code>http://sc2a.unige.ch/~kosmacze</code> and it was my first personal website.</p>]]></description><content:encoded><![CDATA[ <p>On Friday, August 30th, 1996, I published a <a href="https://groups.google.com/g/soc.culture.argentina/c/hT3XJv048Z0/m/PDwak0P9qNEJ">message</a> on the &ldquo;soc.culture.argentina&rdquo; <a href="https://en.wikipedia.org/wiki/Usenet">Usenet</a> newsgroup, announcing the existence of a new page on this thing called &ldquo;the web&rdquo;: the URL was <code>http://sc2a.unige.ch/~kosmacze</code> and it was my first personal website.</p>
<p>That URL does not exist anymore, and sadly the Internet Archive <a href="https://web.archive.org/web/20260000000000*/http://sc2a.unige.ch/~kosmacze">never archived it</a>. I do have some fragments here and there, in some very old CD-ROMs I burned at the turn of the millenium, but I haven&rsquo;t been able to find a proper, exhaustive backup of the whole thing. To give you an idea, this is what the <a href="https://web.archive.org/web/19961225173704/http://sc2a.unige.ch/">home page of sc2a.unige.ch looked like</a> in December of 1996. This was &ldquo;the web&rdquo;; a bunch of text formatted with Times New Roman, or whatever the default serif font was in your workstation.</p>
<p>In that message I also asked for help, since I was using a text-based operating system (a <a href="https://en.wikipedia.org/wiki/VAX">VAX</a> system running an old version of <a href="https://en.wikipedia.org/wiki/OpenVMS">VMS</a>) and I did not have a computer with Netscape available to test the page. Imagine that. How did I create that content? At home, using <a href="https://en.wikipedia.org/wiki/HoTMetaL">HoTMetaL Pro</a> and an HTML plugin for Microsoft Word 6.0 that could save documents as (horrendous, let&rsquo;s be honest) HTML. Years later I moved into <a href="/blog/editplus/">EditPlus</a>, FrontPage, <a href="/blog/javascript-animations/">Dreamweaver</a>… but not yet at that point. This was just me, most probably Notepad, and some late night HTML knowledge on my PC running Windows 3.1.</p>
<p>How did I get this knowledge? Well, through Elizabeth Castro&rsquo;s awesome <a href="https://www.amazon.com/HTML-World-Visual-QuickStart-Guide/dp/0201884488">HTML Visual Quickstart Guide 1st Edition</a>! The last edition I could find of that book was <a href="https://www.htmlcssvqs.com/">from 2018</a>.</p>
<p>Some of the older articles in this blog were initially published in that page, like for example my tongue-in-cheek <a href="/blog/manuel-pratique-de-lutilisateur-dinternet-et-du-vms-%C3%A0-sc2a.unige.ch-et-%C3%A0-uni2a.unige.ch/">manual</a> for users of the Internet at the sc2a.unige.ch server, or my first <a href="/blog/javascript-calculator/">JavaScript calculator</a>. I even published a journal of my <a href="/blog/1996/">1996</a> trip to Argentina… maybe one day I&rsquo;ll publish it again here.</p>
<p>That website single-handedly kickstarted my <a href="/blog/the-oldest-web-pages-ive-made-still-online/">career</a> as a professional web designer, programmer, and now, 30 years later, software architect. It all boils down to that moment in time, when I used <a href="https://en.wikipedia.org/wiki/File_Transfer_Protocol">FTP</a> to upload those humble HTML files into the VMS account that my university provided their students with.</p>
<p>Since then, web technology evolved in uncanny and extraordinary ways; from the wonder of AJAX, which <a href="/blog/ajax-before-time/">I first saw in action in 2002</a>, to <a href="/blog/macromedia-flash/">Flash movies</a>, to XML, to JSON, to CSS, to WebSockets, to the <code>&lt;canvas&gt;</code> tag, to the incredible <a href="/blog/the-new-clock-and-the-evolution-of-javascript/">evolution</a> of <a href="/blog/douglas-crockford/">JavaScript</a> (both on the <a href="/blog/gamma/">client</a> and <a href="/blog/server-side-javascript-in-1997/">server</a> sides), to <a href="/blog/java-applets-in-2023/">Java applets</a>, to <a href="/blog/conway-in-c89/">WebAssembly</a>, I&rsquo;ve used pretty much every single technology that browsers have made available to us.</p>
<p>It all started the moment I decided to click on the &ldquo;View Source&rdquo; menu on Netscape, and started to learn how websites were made.</p>
]]></content:encoded></item><item><title>Ghostty</title><link>https://akos.ma/blog/ghostty/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/ghostty/</guid><description> In a previous post I talked about WezTerm, a cross-platform terminal emulator application written in Rust that I liked. This time I&amp;rsquo;m going to talk about another one written in Zig called Ghostty, and I like this one even more.</description><content:encoded><![CDATA[ <p>In a previous post I talked <a href="/blog/adopting-wezterm/">about WezTerm</a>, a cross-platform terminal emulator application written in Rust that I liked. This time I&rsquo;m going to talk about another one written in Zig called Ghostty, and I like this one even more.</p>
<p><a href="https://ghostty.org/">Ghostty</a> is yet another brainchild of <a href="https://mitchellh.com/">Mitchell Hashimoto</a>, of <a href="https://www.hashicorp.com/en">HashiCorp</a> fame.</p>
<p>The installation on Fedora 44 requires a few steps, since it&rsquo;s not available on Flatpak at the moment, nor it is immediately available on standard Fedora repos:</p>
<div class="highlight"><pre tabindex="0" style="color:#757575;background-color:#000;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ sudo dnf copr <span style="color:#ec0000">enable</span> scottames/ghostty
</span></span><span style="display:flex;"><span>$ sudo dnf install ghostty
</span></span></code></pre></div><p>I then opened the configuration file <code>~/.config/ghostty/config.ghostty</code> using the <code>CTRL+,</code> (comma) sequence, and added these settings for my personal pleasure:</p>
<div class="highlight"><pre tabindex="0" style="color:#757575;background-color:#000;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-text-size-adjust:none;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#5f5fff">app-notifications</span> <span style="color:#ec0000">=</span> <span style="color:#008900">no-clipboard-copy</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">cursor-style</span> <span style="color:#ec0000">=</span> <span style="color:#008900">block</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">cursor-style-blink</span> <span style="color:#ec0000">=</span> <span style="color:#008900">true</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">font-family</span> <span style="color:#ec0000">=</span> <span style="color:#008900">&#34;BlexMono Nerd Font&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">font-size</span> <span style="color:#ec0000">=</span> <span style="color:#008900">16</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">keybind</span> <span style="color:#ec0000">=</span> <span style="color:#008900">F11=toggle_fullscreen</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">link-url</span> <span style="color:#ec0000">=</span> <span style="color:#008900">true</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">maximize</span> <span style="color:#ec0000">=</span> <span style="color:#008900">true</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">shell-integration-features</span> <span style="color:#ec0000">=</span> <span style="color:#008900">no-cursor</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">theme</span> <span style="color:#ec0000">=</span> <span style="color:#008900">light:iTerm2 Light Background,dark:iTerm2 Dark Background</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">window-theme</span> <span style="color:#ec0000">=</span> <span style="color:#008900">system</span>
</span></span><span style="display:flex;"><span><span style="color:#5f5fff">working-directory</span> <span style="color:#ec0000">=</span> <span style="color:#008900">window-inherit-working-directory</span>
</span></span></code></pre></div><p>And conveniently enough, a quick <code>CTRL+SHIFT+,</code> reloads the configuration live after editing the file.</p>
<p>I found Ghostty to be exactly the terminal application I wanted all along; it&rsquo;s fast, cross-platform, convenient, configurable, and it behaves perfectly well.</p>
<p><img src="ghostty.png" alt=""></p>
]]></content:encoded></item><item><title>How to Embed Images as Base64 Strings in Hugo</title><link>https://akos.ma/blog/how-to-embed-images-as-base64-strings-in-hugo/</link><pubDate>Fri, 14 Aug 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/how-to-embed-images-as-base64-strings-in-hugo/</guid><description> &lt;p>You can configure your Hugo website to automatically embed an image into a web page as a &lt;a href="https://en.wikipedia.org/wiki/Base64">Base64&lt;/a> string; this post shows you how.&lt;/p></description><content:encoded><![CDATA[ <p>You can configure your Hugo website to automatically embed an image into a web page as a <a href="https://en.wikipedia.org/wiki/Base64">Base64</a> string; this post shows you how.</p>
<p>Let&rsquo;s assume your Markdown posts have this structure:</p>
<div class="highlight"><pre tabindex="0" style="color:#757575;background-color:#000;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-text-size-adjust:none;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>title: &#39;Some Title&#39;
</span></span><span style="display:flex;"><span>author: &#39;Jane Smith&#39;
</span></span><span style="display:flex;"><span>excerpt: &#39;Blah blah…&#39;
</span></span><span style="display:flex;"><span>slug: some-title
</span></span><span style="display:flex;"><span>image: some-title.jpg
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>This is my article…
</span></span></code></pre></div><p>Then in your Hugo theme templates you can use code like this to read the image, transform it as Base64, and embed the result on the final HTML:</p>
<div class="highlight"><pre tabindex="0" style="color:#757575;background-color:#000;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-text-size-adjust:none;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>{{- $imgPath := $page.Params.image -}}
</span></span><span style="display:flex;"><span>{{- $image := $page.Resources.GetMatch $imgPath -}}
</span></span><span style="display:flex;"><span>{{- if $image -}}
</span></span><span style="display:flex;"><span>{{- $thumb := $image.Fit &#34;420x420&#34; -}} {{/* Obviously optional */}}
</span></span><span style="display:flex;"><span>{{- $base64 := $thumb.Content | base64Encode -}}
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ec0000">p</span>&gt;&lt;<span style="color:#ec0000">a</span> <span style="color:#5f5fff">href</span><span style="color:#ec0000">=</span><span style="color:#008900">&#34;{{ $page.Permalink }}&#34;</span>&gt;&lt;<span style="color:#ec0000">img</span> <span style="color:#5f5fff">class</span><span style="color:#ec0000">=</span><span style="color:#008900">&#34;thumbnail&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#5f5fff">src</span><span style="color:#ec0000">=</span><span style="color:#008900">&#34;data:{{ $image.MediaType.Type }};base64,{{ $base64 }}&#34;</span>&gt;&lt;/<span style="color:#ec0000">a</span>&gt;&lt;/<span style="color:#ec0000">p</span>&gt;
</span></span><span style="display:flex;"><span>{{- else -}}
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#ec0000">p</span>&gt;&lt;<span style="color:#ec0000">a</span> <span style="color:#5f5fff">href</span><span style="color:#ec0000">=</span><span style="color:#008900">&#34;{{ $page.Permalink }}&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    {{ partial &#34;gray-image-placeholder&#34; (dict &#34;className&#34; &#34;thumbnail&#34;) }}&lt;/<span style="color:#ec0000">a</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#ec0000">p</span>&gt;
</span></span><span style="display:flex;"><span>{{- end -}}
</span></span></code></pre></div><p>The <code>gray-image-placeholder</code> shown in the <code>else</code> clause is just a file located in the <code>layouts/partials/</code> folder of your theme, to be used in case the image your specified does not exist, called <code>gray-image-placeholder.html</code> and looking like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#757575;background-color:#000;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-text-size-adjust:none;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#ec0000">img</span> <span style="color:#5f5fff">class</span><span style="color:#ec0000">=</span><span style="color:#008900">&#34;{{ .className }}&#34;</span> <span style="color:#5f5fff">src</span><span style="color:#ec0000">=</span><span style="color:#008900">&#34;data:image/png;base64,
</span></span></span><span style="display:flex;"><span><span style="color:#008900">iVBORw0KGgoAAAANSUhEUgAABAAAAAMACAIAAAA12IJaAAAABGdBTUEAALGPC/
</span></span></span><span style="display:flex;"><span><span style="color:#008900">xhBQAAAAFzUkdCAdnJLH8AAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgA
</span></span></span><span style="display:flex;"><span><span style="color:#008900">ABdwnLpRPAAAAAlwSFlzAAALEwAACxMBAJqcGAAADS1JREFUeNrt10ENAAAIxDBA9cnHBg
</span></span></span><span style="display:flex;"><span><span style="color:#008900">mthP3WSQoAAPhhJAAAAAMAAAAYAAAAwAAAAAAGAAAAMAAAAIABAAAADAAAAGAAAAAAAwAA
</span></span></span><span style="display:flex;"><span><span style="color:#008900">ABgAAADAAAAAgAEAAAAMAAAAYAAAAAADAAAAGAAAAMAAAAAABg (… snip…)
</span></span></span><span style="display:flex;"><span><span style="color:#008900">AAAYAAAAMAAAAAABgAAADAAAACAAQAAAK5bhvYHaF3qNu4AAAAASUVORK5CYII=&#34;</span>&gt;
</span></span></code></pre></div><p>The <code>className</code> inserted will be the one passed in the <code>(dict)</code> used when calling the partial.</p>
]]></content:encoded></item><item><title>Playing With Admonitions</title><link>https://akos.ma/blog/playing-with-admonitions/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0200</pubDate><guid>https://akos.ma/blog/playing-with-admonitions/</guid><description><![CDATA[ <p>I&rsquo;ve added the possibility of generating <a href="https://docs.asciidoctor.org/asciidoc/latest/blocks/admonitions/">Asciidoctor-style admonitions</a> to this website, not only in the final HTML generated for this website, but also in the PDF and EPUB outputs, and you might have seen them in action in previous posts.</p>]]></description><content:encoded><![CDATA[ <p>I&rsquo;ve added the possibility of generating <a href="https://docs.asciidoctor.org/asciidoc/latest/blocks/admonitions/">Asciidoctor-style admonitions</a> to this website, not only in the final HTML generated for this website, but also in the PDF and EPUB outputs, and you might have seen them in action in previous posts.</p>
<p>In Asciidoctor and <a href="https://antora.org/">Antora</a> I liked to use such highlighted blocks, to showcase some particular information, so I wanted to have them on this website too. Although, as you might imagine, Markdown does not provide this capability <em>per se</em>.</p>
<p>The Markdown code I use looks like this, showing its corresponding output below.</p>
<h2 id="notes">Notes</h2>
<p>Great for extra information.</p>
<div class="highlight"><pre tabindex="0" style="color:#757575;background-color:#000;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-text-size-adjust:none;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span>::: note
</span></span><span style="display:flex;"><span>This is a note.
</span></span><span style="display:flex;"><span>:::
</span></span></code></pre></div><p>NOTE: This is a note.</p>
<h2 id="tips">Tips</h2>
<p>In green, for suggestions or shortcuts.</p>
<pre tabindex="0"><code>::: tip
This is a tip.
:::
</code></pre><p>TIP: This is a tip.</p>
<h2 id="important">Important</h2>
<p>Emphasis you must not miss.</p>
<pre tabindex="0"><code>::: important
This is important.
:::
</code></pre><p>IMPORTANT: This is important.</p>
<h2 id="caution">Caution</h2>
<p>Risk of confusion or bad outcome.</p>
<pre tabindex="0"><code>::: caution
This is a cautionary tale.
:::
</code></pre><p>CAUTION: This is a cautionary tale.</p>
<h2 id="warning">Warning</h2>
<p>To highlight hazard or serious consequences.</p>
<pre tabindex="0"><code>::: warning
This is a warning.
:::
</code></pre><p>WARNING: This is a warning.</p>
<h2 id="pdf-and-epub">PDF and EPUB</h2>
<p>This also works in the <a href="playing-with-admonitions.pdf">PDF</a> and <a href="playing-with-admonitions.epub">EPUB</a> outputs, too.</p>
<p><embed src="playing-with-admonitions.pdf"
width="100%" height="900px" ></p>
]]></content:encoded></item></channel></rss>