<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Théophile Roos - Personal projects</title>
    <subtitle>Théophile Roos is a France based engineer.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://theophileroos.xyz/projects/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://theophileroos.xyz/projects/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-03-15T00:00:00+00:00</updated>
    <id>https://theophileroos.xyz/projects/atom.xml</id>
    <entry xml:lang="en">
        <title>Creating the only website with all the helix themes</title>
        <published>2025-03-15T00:00:00+00:00</published>
        <updated>2025-03-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://theophileroos.xyz/projects/helix-themes-preview/"/>
        <id>https://theophileroos.xyz/projects/helix-themes-preview/</id>
        
        <content type="html" xml:base="https://theophileroos.xyz/projects/helix-themes-preview/">&lt;p&gt;A little while ago, I was searching for a way to choose my Helix theme. However, there are so many of them that it&#x27;s difficult to choose.&lt;&#x2F;p&gt;
&lt;p&gt;So I made this &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;slashformotion.github.io&#x2F;helix-themes-chooser&#x2F;&quot;&gt;https:&#x2F;&#x2F;slashformotion.github.io&#x2F;helix-themes-chooser&#x2F;&lt;&#x2F;a&gt; .&lt;&#x2F;p&gt;
&lt;p&gt;The code to generate this site is available here : &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;slashformotion&#x2F;helix-themes-chooser&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;slashformotion&#x2F;helix-themes-chooser&lt;&#x2F;a&gt; .&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;theophileroos.xyz&#x2F;projects&#x2F;helix-themes-preview&#x2F;.&#x2F;screenshot.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Glossarium</title>
        <published>2023-07-27T00:00:00+00:00</published>
        <updated>2023-07-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://theophileroos.xyz/projects/glossarium/"/>
        <id>https://theophileroos.xyz/projects/glossarium/</id>
        
        <content type="html" xml:base="https://theophileroos.xyz/projects/glossarium/">&lt;p&gt;TLDR: Glossarium originated from my personal need for a Typst glossary, back when the ecosystem was underdeveloped and existing implementations were inadequate. It has since established itself as the standard solution for glossaries in Typst.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;theophileroos.xyz&#x2F;projects&#x2F;glossarium&#x2F;.&#x2F;example.png&quot; alt=&quot;screenshot of the glossary&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;This project was born at the end of January 2023. After a year and a half of active development and participation in the Typst community, I transferred the project to the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;typst-community&quot;&gt;Typst Community&lt;&#x2F;a&gt; organization in June 2024, which now manages its development.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;At the end of 2023, while looking for an alternative to LaTeX for writing my final study report, I came across &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;typst.app&quot;&gt;Typst&lt;&#x2F;a&gt;.
I quickly realized that the project, despite many features still being under development, had great potential. At that time, to work around bugs, it was often necessary to retrieve the compiler code and recompile it yourself to have a working setup.&lt;&#x2F;p&gt;
&lt;p&gt;The feature I was missing was a glossary. The existing glossaries had very few features and were often abandoned. So I decided to start from the implementation of &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Dherse&quot;&gt;Sébastien d&#x27;Herbais de Thun&lt;&#x2F;a&gt;, a Belgian master&#x27;s student who had to code one for &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Dherse&#x2F;masterproef&quot;&gt;his thesis&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Based on his work, I turned his implementation into a robust library supporting the following features:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;automatic detection of the first reference for the long form.&lt;&#x2F;li&gt;
&lt;li&gt;optional plural management.&lt;&#x2F;li&gt;
&lt;li&gt;user-forced long or short values.&lt;&#x2F;li&gt;
&lt;li&gt;optional term grouping.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The project is now available here: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;typst-community&#x2F;glossarium&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;typst-community&#x2F;glossarium&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The package &lt;code&gt;glossarium&lt;&#x2F;code&gt; is available in the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;typst.app&#x2F;universe&#x2F;package&#x2F;glossarium&#x2F;&quot;&gt;Typst Universe&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Posgraph</title>
        <published>2023-04-28T00:00:00+00:00</published>
        <updated>2023-04-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://theophileroos.xyz/projects/posgraph/"/>
        <id>https://theophileroos.xyz/projects/posgraph/</id>
        
        <content type="html" xml:base="https://theophileroos.xyz/projects/posgraph/">&lt;blockquote&gt;
&lt;p&gt;Disclaimer: This is a little project i hacked around in a few hours to be able to generate cool graphs for the networkx library.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Posgraph is a little program that I built for my Optimisation course at the University of Ljubljana. Posgraph takes a image path as an argument and give you an interface to create points and name them.&lt;&#x2F;p&gt;
&lt;p&gt;Right click to position the point, and Enter to validate. Then enter the name of the point on the terminal. When you are done creating points, close the GUI window. The program will print a python code using matplotlib and the networkx library.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D8DEE9; background-color: #2E3440;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #88C0D0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A3BE8C;&quot;&gt; clone https:&#x2F;&#x2F;github.com&#x2F;slashformotion&#x2F;posgraph&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #88C0D0;&quot;&gt;go&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A3BE8C;&quot;&gt; get&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #88C0D0;&quot;&gt;go&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A3BE8C;&quot;&gt; build&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #88C0D0;&quot;&gt;.&#x2F;posgraph&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A3BE8C;&quot;&gt; france.jpg&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Please note that I used Ebiten as a graphic engine, thus the binary can&#x27;t be build statically.&lt;&#x2F;p&gt;
&lt;p&gt;You can find the project on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;slashformotion&#x2F;posgraph&quot;&gt;github&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Radioboat</title>
        <published>2022-07-27T00:00:00+00:00</published>
        <updated>2022-07-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://theophileroos.xyz/projects/radioboat/"/>
        <id>https://theophileroos.xyz/projects/radioboat/</id>
        
        <content type="html" xml:base="https://theophileroos.xyz/projects/radioboat/">&lt;h3 id=&quot;radioboat-is-a-terminal-web-radio-client-built-with-simplicity-in-mind&quot;&gt;&lt;strong&gt;Radioboat is a terminal web radio client, built with simplicity in mind.&lt;&#x2F;strong&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;slashformotion&#x2F;radioboat&#x2F;master&#x2F;.github&#x2F;assets&#x2F;screencast.gif&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Radioboat was born the day I searched for a lightweight radio client to listen to free music while working on a company project.
To my surprise, none really fit my requirements:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;the program had to be terminal based&lt;&#x2F;li&gt;
&lt;li&gt;the program must only list the radios I want, I am not interested on having a long list presented to me.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I created a few bash scripts to use mpv as a radioplayer and it was fine for a while.
After a few weeks, I had 36 differents shell scripts to listen to radio on the terminal. A sad situation really.&lt;&#x2F;p&gt;
&lt;p&gt;That when I decided to write some code to fix this issue. I picked golang as my language for this task since I was using it at work.&lt;&#x2F;p&gt;
&lt;p&gt;Radioboat was &lt;em&gt;(really)&lt;&#x2F;em&gt; born.&lt;&#x2F;p&gt;
&lt;p&gt;Radioboat is an &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Text-based_user_interface&quot;&gt;TUI&lt;&#x2F;a&gt; to play radios on the terminal. It is built using the excellent BubbleTea framework from &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;charm.sh&quot;&gt;charm.sh&lt;&#x2F;a&gt;. It make use of mpv as a backend to actually decode the audio stream. Thanks to it&#x27;s modular architecture, it could be adapted to other players such as VLC...&lt;&#x2F;p&gt;
&lt;p&gt;You can find the code of Radioboat on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;slashformotion&#x2F;radioboat&quot;&gt;GitHub:slashformotion&#x2F;radioboat&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;At the time of writing, we are currently on the version v0.2.2.&lt;&#x2F;p&gt;
&lt;p&gt;Radioboat is available on &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;aur.archlinux.org&#x2F;packages&#x2F;radioboat&quot;&gt;the AUR&lt;&#x2F;a&gt; and in &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;search.nixos.org&#x2F;packages?channel=unstable&amp;amp;show=radioboat&amp;amp;from=0&amp;amp;size=50&amp;amp;sort=relevance&amp;amp;type=packages&amp;amp;query=radioboat&quot;&gt;NixOS&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Portable Bit Map (pbm) encoder and decoder for Golang</title>
        <published>2022-01-22T00:00:00+00:00</published>
        <updated>2022-01-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://theophileroos.xyz/projects/pbm/"/>
        <id>https://theophileroos.xyz/projects/pbm/</id>
        
        <content type="html" xml:base="https://theophileroos.xyz/projects/pbm/">&lt;p&gt;The Portable Bit Map (PBM) format is a legacy image format known for its relatively simple encoding and decoding processes. This characteristic made it an effective choice for a school project where my professor aimed to teach us C. Developing a library to handle PBM images provided a good foundation in core programming skills.&lt;&#x2F;p&gt;
&lt;p&gt;When I began learning Golang, I decided to recreate this project as a way to further explore the concepts of readers and writers within the language. This project also served as an early opportunity to learn how to integrate and use external dependencies.&lt;&#x2F;p&gt;
&lt;p&gt;The result is a fully functional PBM encoder and decoder, accessible at this GitHub repository: https:&#x2F;&#x2F;github.com&#x2F;slashformotion&#x2F;pbm&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
