<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title></title>
    <link href="https://dystroy.org/blog/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://dystroy.org/blog"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2023-11-17T00:00:00+00:00</updated>
    <id>https://dystroy.org/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>From Terminator To Wezterm</title>
        <published>2023-11-17T00:00:00+00:00</published>
        <updated>2023-11-17T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/from-terminator-to-wezterm/" type="text/html"/>
        <id>https://dystroy.org/blog/from-terminator-to-wezterm/</id>
        
        <summary type="html">&lt;p&gt;This post doesn&#x27;t compare Terminator and Wezterm. This is the help I would have loved to find when starting to try Wezterm coming from Terminator.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>A Kind Introduction</title>
        <published>2023-11-15T00:00:00+00:00</published>
        <updated>2023-11-15T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/a-kind-introduction/" type="text/html"/>
        <id>https://dystroy.org/blog/a-kind-introduction/</id>
        
        <summary type="html">&lt;p&gt;How to leverage the Rust compiler to prevent identifier misuse ?&lt;&#x2F;p&gt;
&lt;p&gt;How to go from &lt;code&gt;ec2ba151-7acf-43a9-bb98-6f5331992f42&lt;&#x2F;code&gt; in your database to &lt;code&gt;&amp;quot;Cust_ec2ba151-7acf-43a9-bb98-6f5331992f42&amp;quot;&lt;&#x2F;code&gt; in your REST&#x2F;JSON API ?&lt;&#x2F;p&gt;
&lt;p&gt;How to do it at zero runtime cost, with no boilerplate, with a derive macro ?&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Thinking in trees and lines, formatting Rust</title>
        <published>2023-09-29T00:00:00+00:00</published>
        <updated>2023-09-29T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/fmt-rust-trees-lines/" type="text/html"/>
        <id>https://dystroy.org/blog/fmt-rust-trees-lines/</id>
        
        <summary type="html">&lt;p&gt;I see my code projects in trees and lines, and it affects how I want it to be formatted.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>How to store secrets</title>
        <published>2023-06-06T00:00:00+00:00</published>
        <updated>2023-06-06T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/secret-storage/" type="text/html"/>
        <id>https://dystroy.org/blog/secret-storage/</id>
        
        <summary type="html">&lt;p&gt;My requirements and solution for a safe storage of personal secrets.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Contributing to my FOSS projects</title>
        <published>2023-06-02T00:00:00+00:00</published>
        <updated>2023-06-02T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/contributing/" type="text/html"/>
        <id>https://dystroy.org/blog/contributing/</id>
        
        <summary type="html">&lt;p&gt;As I maintain several FOSS projects, I figured it would be convenient to have in a central place some concise guidance on contributing.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Manage keybindings in a Rust terminal application</title>
        <published>2022-07-28T00:00:00+00:00</published>
        <updated>2022-07-28T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/keybindings/" type="text/html"/>
        <id>https://dystroy.org/blog/keybindings/</id>
        
        <summary type="html">&lt;p&gt;To deal with hardcoded or configurable key events in a cross-platform terminal application written in Rust, you&#x27;ll probably need to&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;determine what keybindings you can really use,&lt;&#x2F;li&gt;
&lt;li&gt;use convenient hardcoded keybindings,&lt;&#x2F;li&gt;
&lt;li&gt;and read keybindings from a configuration file&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Adjust your application for a light or dark terminal</title>
        <published>2022-07-16T00:00:00+00:00</published>
        <updated>2022-07-16T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/terminal-light/" type="text/html"/>
        <id>https://dystroy.org/blog/terminal-light/</id>
        
        <summary type="html">&lt;p&gt;So you want your unix application to select different sets of colors depending on whether the terminal is set to a light or dark theme ?&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s an how-to. It&#x27;s first targeted at Rust programmers but each step can be ported to other languages.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>How not to learn Rust</title>
        <published>2021-12-15T00:00:00+00:00</published>
        <updated>2021-12-15T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/how-not-to-learn-rust/" type="text/html"/>
        <id>https://dystroy.org/blog/how-not-to-learn-rust/</id>
        
        <summary type="html">&lt;p&gt;I&#x27;ve seen too many good programmers struggle learning Rust, or even give up.&lt;&#x2F;p&gt;
&lt;p&gt;Here are the mistakes I&#x27;ve seen which may make you fail at learning Rust.
I hope this list will help you avoid them.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Reclaim space on disk</title>
        <published>2021-11-02T00:00:00+00:00</published>
        <updated>2021-11-02T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/reclaim-space-on-disk/" type="text/html"/>
        <id>https://dystroy.org/blog/reclaim-space-on-disk/</id>
        
        <summary type="html">&lt;p&gt;As my disks tend to be quite messy with time, I had to devise ways to reclaim space, which means both spotting big directories and files, and to deal with the thousands of duplicates you can&#x27;t delete one per one.&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s my toolbox for cleaning my disks on linux in 3 major steps:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;dystroy.org&#x2F;blog&#x2F;reclaim-space-on-disk&#x2F;#lfs&quot;&gt;Confirm the problem with lfs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;dystroy.org&#x2F;blog&#x2F;reclaim-space-on-disk&#x2F;#broot&quot;&gt;Spot and delete big  files and directories with broot&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;dystroy.org&#x2F;blog&#x2F;reclaim-space-on-disk&#x2F;#backdown&quot;&gt;Delete thousands of duplicates with backdown&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Proper conversion from XLS to PDF in Java</title>
        <published>2021-06-30T00:00:00+00:00</published>
        <updated>2021-06-30T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/excel-to-pdf-java/" type="text/html"/>
        <id>https://dystroy.org/blog/excel-to-pdf-java/</id>
        
        <summary type="html">&lt;p&gt;Generating or modifying Excel files in Java is easy with &lt;a href=&quot;https:&#x2F;&#x2F;poi.apache.org&#x2F;&quot;&gt;Apache POI&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;But when you generate Excel reports, you always end up having to export them in PDF too.&lt;&#x2F;p&gt;
&lt;p&gt;If you look for a library for this conversion, you&#x27;ll find many ones, most of them expensive, and none of them giving acceptable results.&lt;&#x2F;p&gt;
&lt;p&gt;I explain here the efficient and reliable enough solution I&#x27;ve used in a Java application.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>A SQL database and an interactive grapher in a single HTML file</title>
        <published>2021-05-04T00:00:00+00:00</published>
        <updated>2021-05-04T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/sql-in-html/" type="text/html"/>
        <id>https://dystroy.org/blog/sql-in-html/</id>
        
        <summary type="html">&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Canop&#x2F;glassbench&quot;&gt;Glassbench&lt;&#x2F;a&gt; is a Rust micro-benchmark harness. It uses a SQLite database to store bench measurements.&lt;&#x2F;p&gt;
&lt;p&gt;I wanted to give it the option to open an interactive data viewer and grapher, with ability to search the history.&lt;&#x2F;p&gt;
&lt;p&gt;An usual web based solution for that is to run a simple web server.&lt;&#x2F;p&gt;
&lt;p&gt;But Glassbench is executed by cargo and immediately quits and I didn&#x27;t want it to leave behind anything to clean, especially not daemons.
Besides, when you open a single HTML local file, it can&#x27;t query additional resources, due to browser&#x27;s security protections.&lt;&#x2F;p&gt;
&lt;p&gt;So I decided to make it a single temporary html page opened in the user&#x27;s browser.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Why broot switched to Hjson for its configuration files</title>
        <published>2020-12-22T00:00:00+00:00</published>
        <updated>2020-12-22T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/hjson-in-broot/" type="text/html"/>
        <id>https://dystroy.org/blog/hjson-in-broot/</id>
        
        <summary type="html">&lt;p&gt;TOML was originally the only format for configuring broot.&lt;&#x2F;p&gt;
&lt;p&gt;Here I explain why Hjson is now the preferred one.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Why TUI applications ?</title>
        <published>2020-11-22T00:00:00+00:00</published>
        <updated>2020-11-22T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/terminal-appeal/" type="text/html"/>
        <id>https://dystroy.org/blog/terminal-appeal/</id>
        
        <summary type="html">&lt;p&gt;Twenty years ago, most of us thought TUI applications were going to disappear.
TUI were just a vestige of low capabilities computers.
There was no reason for TUI not to die with the rise of the personal computer.&lt;&#x2F;p&gt;
&lt;p&gt;This didn&#x27;t happen. We still love to use TUI applications.&lt;&#x2F;p&gt;
&lt;p&gt;Why can be kind of mysterious.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Broot 1.0</title>
        <published>2020-09-02T00:00:00+00:00</published>
        <updated>2020-09-02T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/broot-1-0/" type="text/html"/>
        <id>https://dystroy.org/blog/broot-1-0/</id>
        
        <summary type="html">&lt;p&gt;8 months ago, but it feels like years ago, somebody shared a link to broot &lt;a href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21998638&quot;&gt;on Hacker News&lt;&#x2F;a&gt;. There was some very kind messages and broot gained a few users. But I had more in my TODO list.&lt;&#x2F;p&gt;
&lt;p&gt;A lot was done since.&lt;&#x2F;p&gt;
&lt;p&gt;At first sight, &lt;a href=&quot;https:&#x2F;&#x2F;dystroy.org&#x2F;broot&quot;&gt;broot&lt;&#x2F;a&gt; didn&#x27;t change much:
It looks the same and what could be done then can still be done the same way, 500 commits and 60 releases later.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>For better prompts</title>
        <published>2020-07-29T00:00:00+00:00</published>
        <updated>2020-07-29T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/prompts/" type="text/html"/>
        <id>https://dystroy.org/blog/prompts/</id>
        
        <summary type="html">&lt;p&gt;Prompts I see everywhere are very bad in my opinion.&lt;&#x2F;p&gt;
&lt;p&gt;They&#x27;re sometimes fancy, full of bling which amazes coworkers, but usability nightmares.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Broot content search</title>
        <published>2020-07-26T00:00:00+00:00</published>
        <updated>2020-07-26T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/broot-c-search/" type="text/html"/>
        <id>https://dystroy.org/blog/broot-c-search/</id>
        
        <summary type="html">&lt;p&gt;An example of an efficient search workflow based on &lt;a href=&quot;https:&#x2F;&#x2F;dystroy.org&#x2F;broot&quot;&gt;broot&lt;&#x2F;a&gt;, a general purpose file manager.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Use broot and meld to diff before commit</title>
        <published>2020-07-05T00:00:00+00:00</published>
        <updated>2020-07-05T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/gg/" type="text/html"/>
        <id>https://dystroy.org/blog/gg/</id>
        
        <summary type="html">&lt;p&gt;Before every commit, I do a short review of what I wrote. And usually there&#x27;s a few last things to fix, mainly comments.&lt;&#x2F;p&gt;
</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>whoami</title>
        <published>2020-07-04T00:00:00+00:00</published>
        <updated>2020-07-04T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dystroy.org/blog/whoami/" type="text/html"/>
        <id>https://dystroy.org/blog/whoami/</id>
        
        <content type="html">&lt;p&gt;Here&#x27;s a short map of my main identities (the ones which are related to software making, at least):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;dystroy.org&quot;&gt;dystroy&lt;&#x2F;a&gt; is the umbrella covering all the me, and the brand of my freelance activity&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Canop&quot;&gt;Canop&lt;&#x2F;a&gt; is an open-source software writer&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;dystroy.org&#x2F;cv&quot;&gt;Denys Séguret&lt;&#x2F;a&gt; &lt;del&gt;writes industrial software juggling with sensor data, grading steel quality, trying to make insight emerge in web interfaces&lt;&#x2F;del&gt; writes Rust for fun and profit, mainly on the backend.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;You&#x27;ll get news from me and my software on Mastodon (&lt;a href=&quot;https:&#x2F;&#x2F;mastodon.dystroy.org&#x2F;@dystroy&quot;&gt;@dystroy@mastodon.dystroy.org&lt;&#x2F;a&gt;) and the best place to contact me is my &lt;a href=&quot;https:&#x2F;&#x2F;miaou.dystroy.org&#x2F;3&quot;&gt;Miaou chat&lt;&#x2F;a&gt; during West European day.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
