<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title></title>
    <link rel="self" type="application/atom+xml" href="https://preview.hugoarnal.com/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://preview.hugoarnal.com"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-09-28T00:00:00+00:00</updated>
    <id>https://preview.hugoarnal.com/atom.xml</id>
    <entry xml:lang="en">
        <title>Rickrolling with a Pharmacy cross</title>
        <published>2026-09-28T00:00:00+00:00</published>
        <updated>2026-09-28T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://preview.hugoarnal.com/blog/rickroll-pharmacy-cross/"/>
        <id>https://preview.hugoarnal.com/blog/rickroll-pharmacy-cross/</id>
        
        <content type="html" xml:base="https://preview.hugoarnal.com/blog/rickroll-pharmacy-cross/">&lt;h2 id=&quot;a-little-bit-of-history&quot;&gt;A little bit of history&lt;/h2&gt;
&lt;p&gt;If you have ever visited France, you might have seen one of these green crosses, bolted onto the building, with bright flashing colors.
It is a symbol commonly used to indicate that there is a pharmacy nearby (&lt;a rel=&quot;external&quot; href=&quot;https://en.wikipedia.org/wiki/Pharmacy#Symbols&quot;&gt;symbols might vary on a country basis&lt;/a&gt;). At this point, it has become a national symbol.&lt;/p&gt;
&lt;p&gt;The pharmacy crosses can be a true business for some companies, where they make (&lt;em&gt;or resell&lt;/em&gt;) crosses and implement their own control software.
However, &lt;a rel=&quot;external&quot; href=&quot;https://soundcloud.com/c0ncernn/nothing-lasts-forever&quot;&gt;nothing lasts forever&lt;/a&gt;, and turns out that&#39;s true for pharmacies too! People retire, quit the business and whatnot.
Question is: what happens to these crosses?&lt;/p&gt;
&lt;p&gt;Most of them can cost anywhere from 200 to 2000€ depending on the brand, so it&#39;s not unusual that these crosses eventually find themselves on the e-commerce market (ebay, leboncoin...).&lt;/p&gt;
&lt;p&gt;About two years ago, a strong interest was given to these crosses due to a very well-produced and popular video&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; by French youtuber Sylvqin. In this video, he explains the history behind these crosses, goes to buy one and then reverse engineers it.&lt;/p&gt;
&lt;h2 id=&quot;pre-tinkering&quot;&gt;Pre-tinkering&lt;/h2&gt;
&lt;p&gt;At the start of 2026, a couple of older students at my school decided to challenge themselves too. So they bought one and completely reversed engineered it, which took them weeks. After they were successful, they organized a hackathon where we could play with the cross!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unfortunately, I didn&#39;t participate in the reversing process, so I cannot comment on how the cross works or any of it. If there&#39;s an article about it, let me know and I will link it here!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They gave us a &lt;a rel=&quot;external&quot; href=&quot;https://github.com/cannellegrdt/Pharmalgo-projects/tree/main/Lib_Croix&quot;&gt;C++ library, called Lib_Croix&lt;/a&gt;, to directly interact with it. It simplified a lot of reading &amp;amp; writing to the cross.&lt;/p&gt;
&lt;p&gt;There were a couple of submissions such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A working &lt;a rel=&quot;external&quot; href=&quot;https://github.com/cannellegrdt/Pharmalgo-projects/tree/main/Tetris&quot;&gt;Tetris&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A &lt;a rel=&quot;external&quot; href=&quot;https://github.com/cannellegrdt/Pharmalgo-projects/tree/main/RealTimeEditor&quot;&gt;real-time editor&lt;/a&gt; using a Python server&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/cannellegrdt/Pharmalgo-projects/tree/main/GameOfLife&quot;&gt;Game Of Life&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And the submission from my group of friends and me, a &quot;video&quot; player.&lt;/p&gt;
&lt;p&gt;As you might know, a video is essentially just a collection of images put together.
So first, to display a video, we need to try and just display an image.&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-warning&quot;&gt;
&lt;p&gt;Warning: The following code was made in less than 24 hours which means it is of mediocre quality.
If I had more time (and more energy), I would&#39;ve done it probably way differently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;displaying-a-simple-image&quot;&gt;Displaying a simple image&lt;/h2&gt;
&lt;p&gt;We need some information about our local cross, let&#39;s get those:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only taking the biggest points (middle horizontal axis X, and middle vertical axis Y), the cross is 24 LEDs wide and 24 LEDs high.&lt;/li&gt;
&lt;li&gt;It only supports two colors (on (green) or off)&lt;/li&gt;
&lt;li&gt;It has two sides (front and back)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For simplicity sake, we will convert our image from X by Y to 24 by 24 and make it monochrome. Of course, we&#39;re going to use imagemagick for that:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #ABB2BF); background-color: light-dark(#EFF1F5, #282C34);&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;convert&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; image.png&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt;resize&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; 24x24&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt;monochrome&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; image.converted&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&#39;s pretty simple already, but since I don&#39;t really want to bother with C++ image handling, let&#39;s make it even simpler.
I created a python script (using &lt;a rel=&quot;external&quot; href=&quot;https://pypi.org/project/pillow/&quot;&gt;Pillow&lt;/a&gt;) to take all the pixels on the image and then create a text file with an &lt;code&gt;x&lt;/code&gt; for white pixels and &lt;code&gt;.&lt;/code&gt; for black pixels:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #ABB2BF); background-color: light-dark(#EFF1F5, #282C34);&quot; &gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;im&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt; =&lt;/span&gt;&lt;span&gt; Image&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;rgb_im&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt; =&lt;/span&gt;&lt;span&gt; im&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);&quot;&gt;convert&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;RGB&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;width&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span&gt; height&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt; =&lt;/span&gt;&lt;span&gt; rgb_im&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt; Yes, the &amp;quot;format&amp;quot; is called .pharma&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #56B6C2);font-style: italic;&quot;&gt; open&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);&quot;&gt;replace&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;.converted&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;.pharma&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;w+&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; as&lt;/span&gt;&lt;span&gt; f&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;    for&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #56B6C2);font-style: italic;&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span&gt;height&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;        for&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #56B6C2);font-style: italic;&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span&gt;width&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            r&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span&gt; g&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span&gt; b&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt; =&lt;/span&gt;&lt;span&gt; rgb_im&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);&quot;&gt;getpixel&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;            if&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; and&lt;/span&gt;&lt;span&gt; g&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; and&lt;/span&gt;&lt;span&gt; b&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                f&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;            else&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                f&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        f&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#EA76CB, #56B6C2);&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;Future self note: you maybe could&#39;ve just used &lt;a rel=&quot;external&quot; href=&quot;https://netpbm.sourceforge.net/doc/ppm.html&quot;&gt;PPM&lt;/a&gt; instead of dealing with all of that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Last but not least, the C++ &lt;code&gt;displayImage&lt;/code&gt; function (simplified for the example):&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #ABB2BF); background-color: light-dark(#EFF1F5, #282C34);&quot; &gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt; displayImage&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt;    //&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt; Before all of this, the lines vector has been filled with all of the lines of the image.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt;    //&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt; Reset the bitmap, put it all at 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;    memset&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;bitmap&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; sizeof&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;bitmap&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt;std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;size_t&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; y&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; y&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt; lines&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; y&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;        for&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt;std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;size_t&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt; lines&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt;            //&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt; That&amp;#39;s a white pixel, lit it!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;lines&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; &amp;#39;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;                bitmap&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt;    //&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt; Write the bitmap to the cross&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;    cross&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;writeBitmap&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;bitmap&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Woo! We displayed an image of the cross! (forgot to take a picture, but it was &lt;a href=&quot;/blog/rickroll-pharmacy-cross/freaky-family.png&quot;&gt;our GitHub organization&#39;s logo&lt;/a&gt;, a remix of the &lt;a rel=&quot;external&quot; href=&quot;https://www.sudo.ws/&quot;&gt;sudo sandwich logo&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Now, let&#39;s do it for a video.&lt;/p&gt;
&lt;h2 id=&quot;displaying-a-video&quot;&gt;Displaying a video&lt;/h2&gt;
&lt;p&gt;Okay so, &lt;code&gt;videos == lots of images&lt;/code&gt;, but how can we extract lots of images?
Thankfully, &lt;a rel=&quot;external&quot; href=&quot;https://xkcd.com/2347/&quot;&gt;a small software that powers a significant part of the Internet&lt;/a&gt; can help us with that (&lt;a rel=&quot;external&quot; href=&quot;https://ffmpeg.org/&quot;&gt;FFmpeg&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Let&#39;s write a quick bash script for that:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #ABB2BF); background-color: light-dark(#EFF1F5, #282C34);&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;VIDEO&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#E64553, #E06C75);font-style: italic;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: light-dark(#E64553, #E06C75);font-style: italic;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;convert_bw_image&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;    convert&lt;/span&gt;&lt;span style=&quot;color: light-dark(#E64553, #E06C75);font-style: italic;&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color: light-dark(#E64553, #E06C75);font-style: italic;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt;resize&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; 24x24&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt;monochrome&lt;/span&gt;&lt;span style=&quot;color: light-dark(#E64553, #E06C75);font-style: italic;&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color: light-dark(#E64553, #E06C75);font-style: italic;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;.converted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;convert_all_bw_images&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;    FILES&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #56B6C2);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;u&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;u&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;n&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;g&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;FILES&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; do&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;        convert_bw_image&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;    done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;rm&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt;rf&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; output/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;mkdir&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; output/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;ffmpeg&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;VIDEO&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #D19A66);&quot;&gt;vf&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; fps=&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; output/out%d.png&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;convert_all_bw_images&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It will create a folder &lt;code&gt;output&lt;/code&gt; where all of our &lt;code&gt;.converted&lt;/code&gt; monochrome files reside.
Our python script, which has been modified to include loops, will then transform those files into &lt;code&gt;.pharma&lt;/code&gt; files.&lt;/p&gt;
&lt;p&gt;Now some file sorting machinery for our C++ files collection:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #ABB2BF); background-color: light-dark(#EFF1F5, #282C34);&quot; &gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt; getAllPharmaFiles&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #E5C07B);font-style: italic;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; path&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;output/&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; auto&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;filesystem&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;directory_iterator&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;hasEnding&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;.pharma&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;            pharmaFiles&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;push_back&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;entry&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt;    //&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt; In a previous version, I actually forgot to sort the files&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt;    //&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #7F848E);font-style: italic;&quot;&gt; It would cause all of the frames to actually be in the wrong order!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;    auto&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; compare&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #E5C07B);font-style: italic;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#E64553, #E06C75);font-style: italic;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt; const&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #E5C07B);font-style: italic;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; &amp;amp;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#E64553, #E06C75);font-style: italic;&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt;        std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #E5C07B);font-style: italic;&quot;&gt;regex&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt; rgx&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;[0-9]+&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt;        std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #E5C07B);font-style: italic;&quot;&gt;smatch&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; match_a&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt;        std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #E5C07B);font-style: italic;&quot;&gt;smatch&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; match_b&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt;        std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #E5C07B);font-style: italic;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; a_nb&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; b_nb&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;regex_search&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;begin&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; match_a&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; rgx&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;            a_nb&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt; match_a&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;regex_search&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;begin&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; match_b&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; rgx&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;            b_nb&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt; match_b&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;stoi&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;a_nb&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#179299, #C678DD);&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt; std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;stoi&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt;b_nb&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;    }&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #ABB2BF);&quot;&gt;    std&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;sort&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt;pharmaFiles&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;begin&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E5C07B);&quot;&gt; pharmaFiles&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: light-dark(#4C4F69, #E06C75);&quot;&gt; compare&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then voila!&lt;/p&gt;
&lt;div style=&quot;display: flex; justify-content: center&quot;&gt;
    &lt;video controls width=&quot;256&quot;&gt;
        &lt;source src=&quot;/blog/rickroll-pharmacy-cross/rickroll.mp4&quot; type=&quot;video/mp4&quot; /&gt;
    &lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;The final version was worth it :)&lt;/p&gt;
&lt;p&gt;You can see if you ever come to Epitech Lyon, you should come by to see the cross as it now lives as a permanent display item in the Hub, displaying &quot;&lt;strong&gt;HUB LYON X EPITECH&lt;/strong&gt;&quot;.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/cannellegrdt/Pharmalgo-projects/tree/main/VideoPlayer&quot;&gt;Click here to see the final version of the code&lt;/a&gt; (warning: very scuffed)&lt;/p&gt;
&lt;hr /&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;/sup&gt;
&lt;p&gt;I highly recommend &lt;a rel=&quot;external&quot; href=&quot;https://sylvq.in&quot;&gt;Sylvqin&#39;s channel&lt;/a&gt; (mostly in French, might have French or English subtitles), I took a lot of inspiration from &lt;a rel=&quot;external&quot; href=&quot;https://www.youtube.com/watch?v=ghh-28ln-z4&quot;&gt;his video&lt;/a&gt; to write the history part of this article.&lt;/p&gt;
&lt;/div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Looking for a 4 month full-time internship</title>
        <published>2026-09-26T00:00:00+00:00</published>
        <updated>2026-09-26T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://preview.hugoarnal.com/blog/internship-2027/"/>
        <id>https://preview.hugoarnal.com/blog/internship-2027/</id>
        
        <content type="html" xml:base="https://preview.hugoarnal.com/blog/internship-2027/">&lt;p&gt;I&#39;m currently looking for a &lt;strong&gt;full-time&lt;/strong&gt; internship starting &lt;strong&gt;&lt;u&gt;March 29th 2027&lt;/u&gt;&lt;/strong&gt; and spanning at least 4 months (ending on &lt;strong&gt;July 31st 2027&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;On the buttons below you can find my resume:&lt;/p&gt;
&lt;a class=&quot;styled-button&quot; href=&quot;/resume/CV-Hugo-ARNAL-en.pdf&quot;&gt;
        &lt;button class=&quot;styled-button hover-bg-white&quot;&gt;
            Resume (PDF, English)
        &lt;/button&gt;
    &lt;/a&gt;
&lt;a class=&quot;styled-button&quot; href=&quot;/resume/CV-Hugo-ARNAL-fr.pdf&quot;&gt;
        &lt;button class=&quot;styled-button hover-bg-white&quot;&gt;
            Resume (PDF, French)
        &lt;/button&gt;
    &lt;/a&gt;
&lt;p&gt;I have been studying at Epitech for the past 3 years, which uses a project-based approach of learning. This led to me gaining skills such as teamwork, organization, management and leadership of teams.&lt;/p&gt;
&lt;p&gt;I have been practicing, and am most interested in &lt;strong&gt;low-level / systems programming, DevOps and network programming&lt;/strong&gt;. I also have skills in &lt;strong&gt;web development, object oriented programming (OOP), concurrent programming&lt;/strong&gt;...&lt;/p&gt;
&lt;p&gt;Through my experience as a Teaching Assistant at Epitech, I was able to assist students in different ways, such as the creation of &lt;a href=&quot;/talks&quot;&gt;(publically available) workshops &amp;amp; talks&lt;/a&gt;, mentoring of students from various programs (PGE, Bachelor), supervision during exams, organization of the famous &lt;a rel=&quot;external&quot; href=&quot;https://international.epitech.eu/2023/10/18/dive-into-the-world-of-coding-with-epitechs-c-pool/&quot;&gt;&quot;Piscine&quot; (C Pool)&lt;/a&gt; and much more...&lt;/p&gt;
&lt;p&gt;I am based in Lyon (France), open to on-site or remote work. I speak French (natively) and English at a very fluent level.&lt;/p&gt;
&lt;p&gt;If you wish to contact me, you can send me an email at &lt;a href=&quot;mailto:hugo@hugoarnal.com&quot;&gt;hugo@hugoarnal.com&lt;/a&gt; or contact me on &lt;a rel=&quot;external&quot; href=&quot;https://linkedin.com/in/hugo-arnal-0x&quot;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here are a few projects related to these skills:&lt;/p&gt;
&lt;h3 id=&quot;cartridge-github&quot;&gt;Cartridge &lt;a rel=&quot;external&quot; href=&quot;https://github.com/hugoschool/Cartridge&quot;&gt;(GitHub)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Recreation of a kernel for the Gameboy Advance. I wrote the drivers for the screen and the keypad.&lt;/p&gt;
&lt;p&gt;It was an introduction to Kernel programming.
I got to learn valuable skills such as using linker scripts, writing very simple assembly, how a kernel is structured.&lt;/p&gt;
&lt;p&gt;Here an image of the result:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/projects/images/cartridge/menu.png&quot; alt=&quot;Image of my GBA kernel&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;zappy-github&quot;&gt;Zappy &lt;a rel=&quot;external&quot; href=&quot;https://github.com/hugoschool/zappy&quot;&gt;(GitHub)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Creation of a game where bots battle each other.
It was my second year&#39;s end project (made with 6 other students).&lt;/p&gt;
&lt;p&gt;Project was separated in 3 parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Server&lt;/li&gt;
&lt;li&gt;GUI&lt;/li&gt;
&lt;li&gt;AI (bots)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I worked on the entire server, made entirely in C.&lt;/p&gt;
&lt;p&gt;Here&#39;s an image of the GUI, fully 3D camera, using Raylib:&lt;/p&gt;
&lt;!-- image is too big, use HTML tag instead of Markdown --&gt;
&lt;img alt=&quot;Image of the GUI of the Zappy&quot; src=&quot;/projects/images/zappy/screenshot.png&quot; width=&quot;400&quot; /&gt;
&lt;h3 id=&quot;my-ftp-github&quot;&gt;my_ftp &lt;a rel=&quot;external&quot; href=&quot;https://github.com/hugoschool/my_ftp&quot;&gt;(GitHub)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An implementation of a FTP (File Transfer Protocol) server using a subset of the RFC 959.&lt;/p&gt;
&lt;p&gt;Created a tester (WTFTP, screenshot below), and hosted it on a temporary VPS for my friends to test their projects.&lt;/p&gt;
&lt;div class=&quot;internship-2027-my_ftp-images&quot;&gt;
    &lt;img alt=&quot;Image of a terminal containing an example of my_ftp&quot; src=&quot;/projects/images/my_ftp/screenshot.png&quot; width=&quot;400&quot; /&gt;
    &lt;img alt=&quot;Image of a terminal containing an example of WTFTP&quot; src=&quot;/projects/images/my_ftp/wtftp.png&quot; width=&quot;400&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;See more projects over at the &lt;a href=&quot;/projects&quot;&gt;Projects&lt;/a&gt; page.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Hello world!</title>
        <published>2026-05-31T00:00:00+00:00</published>
        <updated>2026-08-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            Hugo ARNAL
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://preview.hugoarnal.com/blog/hello-world/"/>
        <id>https://preview.hugoarnal.com/blog/hello-world/</id>
        
        <content type="html" xml:base="https://preview.hugoarnal.com/blog/hello-world/">&lt;p&gt;Nothing much for now. Finishing this website first but very excited to write my first blog post!&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-warning&quot;&gt;
&lt;p&gt;This page might change much to test the blog portion of the site.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here&#39;s a &lt;code&gt;code snippet&lt;/code&gt; as useful as this blog post:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #ABB2BF); background-color: light-dark(#EFF1F5, #282C34);&quot; &gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #C678DD);&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: light-dark(#DF8E1D, #C678DD);&quot;&gt;include&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;    printf&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;Hello world!&lt;/span&gt;&lt;span style=&quot;color: light-dark(#EA76CB, #56B6C2);&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#1E66F5, #61AFEF);font-style: italic;&quot;&gt;    printf&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;Another hello world line but this one is like really long just to test out some overflowing capacities. There&amp;#39;s truely nothing there...................................................&lt;/span&gt;&lt;span style=&quot;color: light-dark(#EA76CB, #56B6C2);&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#8839EF, #C678DD);&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color: light-dark(#FE640B, #D19A66);&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#7C7F93, #ABB2BF);&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #ABB2BF); background-color: light-dark(#EFF1F5, #282C34);&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#D20F39, #56B6C2);font-style: italic;&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt; &amp;quot;&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;Follow up small code snippet&lt;/span&gt;&lt;span style=&quot;color: light-dark(#40A02B, #98C379);&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Completely normal note&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;This is a very unimportant note.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;markdown-alert-caution&quot;&gt;
&lt;p&gt;This is a very unimportant note.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>0001-workshop.patch</title>
        <published>2026-05-12T00:00:00+00:00</published>
        <updated>2026-05-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            Hugo ARNAL
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://preview.hugoarnal.com/talks/patches/"/>
        <id>https://preview.hugoarnal.com/talks/patches/</id>
        
        <content type="html" xml:base="https://preview.hugoarnal.com/talks/patches/">&lt;p&gt;Using git the &quot;good old way&quot;!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;/slides/Epitech/patches/assets/git-mercurochrome.webp&quot; alt=&quot;Mercurochrome logo with Git&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/slides/Epitech/patches/slides.pdf&quot;&gt;Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/slides/Epitech/patches/0001-ref-separate-Fruit-Pad-from-script.js.patch&quot;&gt;ctc patch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Rebase after base</title>
        <published>2026-05-07T00:00:00+00:00</published>
        <updated>2026-05-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            Hugo ARNAL
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://preview.hugoarnal.com/talks/rebase/"/>
        <id>https://preview.hugoarnal.com/talks/rebase/</id>
        
        <content type="html" xml:base="https://preview.hugoarnal.com/talks/rebase/">&lt;p&gt;Learn how to master &lt;code&gt;git rebase&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;/slides/Epitech/rebase/assets/gd-git.webp&quot; alt=&quot;GD logo with Git&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Workshop given about &lt;code&gt;git rebase&lt;/code&gt;, its utility and how to use them.&lt;/p&gt;
&lt;h2 id=&quot;planning&quot;&gt;Planning&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Showing the slides&lt;/li&gt;
&lt;li&gt;Doing the tutorial from https://git-rebase.io &lt;a rel=&quot;external&quot; href=&quot;https://git.sr.ht/~sircmpwn/git-rebase.io&quot;&gt;(source code)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/slides/Epitech/rebase/slides.pdf&quot;&gt;Slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>How to make good Makefiles</title>
        <published>2026-03-18T00:00:00+00:00</published>
        <updated>2026-03-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            Hugo ARNAL
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://preview.hugoarnal.com/talks/makefile/"/>
        <id>https://preview.hugoarnal.com/talks/makefile/</id>
        
        <content type="html" xml:base="https://preview.hugoarnal.com/talks/makefile/">&lt;p&gt;A guide on how to make good Makefiles, with little &quot;hidden&quot; secrets.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/hugoarnal/talks/tree/main/Epitech/Makefile&quot;&gt;GitHub link to the workshop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
</feed>
