<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Vyroda</title>
    <link>http://blog.vyroda.com/</link>
    <description>Vyroda game engine</description>
    <pubDate>Tue, 08 Sep 2026 15:29:13 +0200</pubDate>
    <item>
      <title>Farewell BSD</title>
      <link>http://blog.vyroda.com/farewell-bsd</link>
      <description>&lt;![CDATA[I was testing a BSD for a few months, I think it is time to say: farewell and thanks for the fishes. No regrets.&#xA;&#xA;!--more-- &#xA;&#xA;I like to test some distributions from time to time; to see if the grass is greener elsewhere. &#xA;&#xA;It&#39;s not. At all.&#xA;&#xA;BSD seems to be good for servers, but as a desktop usage... Horrible. Lots of things are not working out of the box (wifi, bluetooth, etc.), at least on my simple laptop. I thought I would be willing to dig and try to install everything by myself, but the sheer amount of time for a few drivers to work has driven me insane.&#xA;&#xA;So, back to Fedora; which I am using since Fedora 12. For once I decided to give KDE plasma a go. Gnome is too simple out of the box, stupid addons for some windows basic options. After BSD I wanted to have as little as configuration as possible...&#xA;&#xA;I was afraid to use KDE, the last time I tried it, it was on an old Mandriva (getting old he?), it was slow and not good looking at all. I must say that it has changed a lot, it is also a very simple and light version installed by Fedora. It is only a few hours that I am using it, but everything is already working: wifi, bluetooth, repos, steam (Quake is working well), etc. Without any addons like on Gnome. &#xA;&#xA;So far so good for KDE plasma!&#xA;&#xA;---&#xA;Come discuss&#xA;mastodon&#xA;Contact me]]&gt;</description>
      <content:encoded><![CDATA[<p>I was testing a BSD for a few months, I think it is time to say: farewell and thanks for the fishes. No regrets.</p>

 

<p>I like to test some distributions from time to time; to see if the grass is greener elsewhere.</p>

<p><strong>It&#39;s not. At all.</strong></p>

<p>BSD seems to be good for servers, but as a desktop usage... Horrible. Lots of things are not working out of the box (wifi, bluetooth, etc.), at least on my simple laptop. I thought I would be willing to dig and try to install everything by myself, but the sheer amount of time for a few drivers to work has driven me insane.</p>

<p>So, back to Fedora; which I am using since Fedora 12. For once I decided to give KDE plasma a go. Gnome is too simple out of the box, stupid addons for some windows basic options. After BSD I wanted to have as little as configuration as possible...</p>

<p>I was afraid to use KDE, the last time I tried it, it was on an old Mandriva (getting old he?), it was slow and not good looking at all. I must say that it has changed a lot, it is also a very simple and light version installed by Fedora. It is only a few hours that I am using it, but everything is already working: wifi, bluetooth, repos, steam (Quake is working well), etc. Without any addons like on Gnome.</p>

<p>So far so good for KDE plasma!</p>

<hr>

<p><strong>Come discuss</strong>
<a href="https://mastodon.social/@vyroda">mastodon</a>
<a href="mailto:dev@vyroda.com">Contact me</a></p>
]]></content:encoded>
      <guid>http://blog.vyroda.com/farewell-bsd</guid>
      <pubDate>Wed, 26 Aug 2026 23:11:11 +0200</pubDate>
    </item>
    <item>
      <title>Digital minimalism</title>
      <link>http://blog.vyroda.com/digital-minimalism</link>
      <description>&lt;![CDATA[For a few months, years? I have been trying to limit my usage of some social networks, mainly YouTube and Reddit.&#xA;&#xA;I tried several methods; only one worked for me.&#xA;&#xA;!--more-- &#xA;&#xA;Going offline is trending a little bit, which is a good thing. Every generation is feeling something is wrong. Everyone is seeing people glued to their phones while at a restaurant or even during a discussion! We lose hours of our time in front of content that has the sole goal of making a few companies richer and richer by using your data. Everyone knows that now.&#xA;&#xA;Other negative aspects are more and more in the spotlight: lack of focus, brain fog, depression, anxiety, etc. Those are the reasons I started to limit my usage of social networks.&#xA;&#xA;I did try a few techniques:&#xA;&#xA;By willpower alone, I thought I could limit it by watching the time: big mistake. Those platforms are engineered to get you hooked. Willpower alone does not work.&#xA;&#xA;Disconnecting after each usage to add some friction. It worked for a few days, then I stopped disconnecting.&#xA;&#xA;Removing the Reddit app from my phone and then I was accessing Reddit via Firefox...&#xA;&#xA;A plugin to block those apps; removed it a few days later.&#xA;&#xA;Adding Unhook on YouTube to remove Shorts, comments, and suggestions. This is super useful to make YouTube less appealing and more focused on what you want to watch.&#xA;&#xA;It took me some time to admit that I was more hooked than I was willing to accept. Willpower is not enough; you can&#39;t beat a multibillion-dollar company as they are doing their best to get your attention.&#xA;&#xA;So, what is working for me? And probably for the majority of us?&#xA;&#xA;Delete everything.&#xA;&#xA;Apps from smartphones and accounts. But nature dislike the void; you have to fill it before recreating an account and falling back into your bad habits. The solution, for me at least, was to replace it with something more mindful and selected by me, not an algorithm or AI. When I started my math studies a month ago, I started journaling my progress; it&#39;s enjoyable, peaceful, and rewarding to see my small but consistent progress. So I decided to create two other notebooks.&#xA;&#xA;A small one, where I note all of my brain farts. The good and the ugly. For example today I wrote that I wanted to go to Reddit again out of habit, and that I even opened a tab before realizing what I was doing. It is scary to see how automatic it is to open a social network and scroll out of boredom. And of course the good stuff: listing my priorities, what I want to do today, and that I resisted Reddit of course.&#xA;&#xA;The second one is just an agenda. I am noting every important date in it instead of in Google Calendar. When I think about it, this is even easier to use than an electronic agenda. Just open the page and write. There is no password, no Wi-Fi to turn on, no bugs, no latency, no Google to spy on you.&#xA;&#xA;I am slowly feeling those habits disappear, and it feels great. I am freeing up so much time that was wasted. Do the math: how many hours you spend per week on those social networks; it is staggering.&#xA;&#xA;My new goal now is to do one thing at a time.&#xA;&#xA;If I want to code: I code. No music, no podcasts, no scrolling. I am allowing myself brown/white noise. You get the idea.&#xA;&#xA;One thing at a time and focus.&#xA;&#xA;---&#xA;Come discuss&#xA;mastodon&#xA;Contact me]]&gt;</description>
      <content:encoded><![CDATA[<p>For a few months, years? I have been trying to limit my usage of some social networks, mainly YouTube and Reddit.</p>

<p>I tried several methods; only one worked for me.</p>

 

<p>Going offline is trending a little bit, which is a good thing. Every generation is feeling something is wrong. Everyone is seeing people glued to their phones while at a restaurant or even during a discussion! We lose hours of our time in front of content that has the sole goal of making a few companies richer and richer by using your data. Everyone knows that now.</p>

<p>Other negative aspects are more and more in the spotlight: lack of focus, brain fog, depression, anxiety, etc. Those are the reasons I started to limit my usage of social networks.</p>

<p>I did try a few techniques:</p>
<ul><li><p>By willpower alone, I thought I could limit it by watching the time: big mistake. Those platforms are engineered to get you hooked. Willpower alone does not work.</p></li>

<li><p>Disconnecting after each usage to add some friction. It worked for a few days, then I stopped disconnecting.</p></li>

<li><p>Removing the Reddit app from my phone and then I was accessing Reddit via Firefox...</p></li>

<li><p>A plugin to block those apps; removed it a few days later.</p></li>

<li><p>Adding Unhook on YouTube to remove Shorts, comments, and suggestions. This is super useful to make YouTube less appealing and more focused on what you want to watch.</p></li></ul>

<p>It took me some time to admit that I was more hooked than I was willing to accept. Willpower is not enough; you can&#39;t beat a multibillion-dollar company as they are doing their best to get your attention.</p>

<p>So, what is working for me? And probably for the majority of us?</p>

<p><strong>Delete everything.</strong></p>

<p>Apps from smartphones and accounts. But nature dislike the void; you have to fill it before recreating an account and falling back into your bad habits. The solution, for me at least, was to replace it with something more mindful and selected by me, not an algorithm or AI. When I started my math studies a month ago, I started journaling my progress; it&#39;s enjoyable, peaceful, and rewarding to see my small but consistent progress. So I decided to create two other notebooks.</p>

<p>A small one, where I note all of my brain farts. The good and the ugly. For example today I wrote that I wanted to go to Reddit again out of habit, and that I even opened a tab before realizing what I was doing. It is scary to see how automatic it is to open a social network and scroll out of boredom. And of course the good stuff: listing my priorities, what I want to do today, and that I resisted Reddit of course.</p>

<p>The second one is just an agenda. I am noting every important date in it instead of in Google Calendar. When I think about it, this is even easier to use than an electronic agenda. Just open the page and write. There is no password, no Wi-Fi to turn on, no bugs, no latency, no Google to spy on you.</p>

<p>I am slowly feeling those habits disappear, and it feels great. I am freeing up so much time that was wasted. Do the math: how many hours you spend per week on those social networks; it is staggering.</p>

<p>My new goal now is to do one thing at a time.</p>

<p>If I want to code: I code. No music, no podcasts, no scrolling. I am allowing myself brown/white noise. You get the idea.</p>

<p>One thing at a time and focus.</p>

<hr>

<p><strong>Come discuss</strong>
<a href="https://mastodon.social/@vyroda">mastodon</a>
<a href="mailto:dev@vyroda.com">Contact me</a></p>
]]></content:encoded>
      <guid>http://blog.vyroda.com/digital-minimalism</guid>
      <pubDate>Fri, 31 Jul 2026 20:26:15 +0200</pubDate>
    </item>
    <item>
      <title>Maths as a hobby?</title>
      <link>http://blog.vyroda.com/maths-as-a-hobby</link>
      <description>&lt;![CDATA[As a programmer I need a minimum of Maths depending on what I am working on. Since a few weeks I started Musillium, a Winamp clone (Zig+Tcl/TK) from scratch. For decoding the music I need to get back to some Maths for the digital signal processing. That&#39;s why I started to read the DSP Guide, which is really great. &#xA;&#xA;And as I am starting to try a &#34;no screen sunday&#34; and as I am not a manual person (I tried bass guitar, wood working, etc.) I was looking for another non manual hobby... Now you see where I am going, right?&#xA;&#xA;Maths as a hobby, gasp&#xA;&#xA;!--more--&#xA;&#xA;Yes, Maths as a hobby, why not? It&#39;s challenging, I can work on it for more than I can imagine (there is no end to it), it&#39;s useful for my job, my side projects, my day to day life, etc..&#xA;&#xA;So where do I start? Interestingly I found a youtube channel where the dude is doing exactly that: mathematicaladventures.&#xA;&#xA;It gave me some ideas on how to organize myself, where to start, some books ideas (yes I am a book guy, surprised?). I have now a few notebooks, some nice pens, and a few Maths books (with no particular order):&#xA;&#xA;Book of proof&#xA;Calculus: Early Transcendentals&#xA;Discrete Mathematics with Applications&#xA;Linear Algebra Done Right&#xA;Visual Differential Geometry and Forms: A Mathematical Drama in Five Acts&#xA;Mathematical Notation: A Guide for Engineers and Scientists&#xA;Paul&#39;s online notes (not a book but very good resources)&#xA;&#xA;And some more later (like Calculus by Spivak, about numerical analysis, etc.). With all of this I think I already have a lot to study. I&#39;ll try to do at least 80% of the exercises of each book. So it will take some time! Maybe a few years just for a few books. &#xA;&#xA;I am starting with this schedule:&#xA;&#xA;1h to 1h30 per day from monday to friday&#xA;as much as I can on my no screen sunday&#xA;nothing on saturday, rest is important too&#xA;&#xA;Starting with the Book of Proof by Richard Hammack (with Mathematical notations as a Maths symbols appendix for my rusty memory).&#xA;&#xA;I did a small spreadsheet for the books and online courses I founded. The books are sorted in reading order: books spreadsheet&#xA;&#xA;Book of proof&#xA;&#xA;---&#xA;Come discuss&#xA;mastodon&#xA;Contact me]]&gt;</description>
      <content:encoded><![CDATA[<p>As a programmer I need a minimum of Maths depending on what I am working on. Since a few weeks I started <a href="https://codeberg.org/galliume/musillium">Musillium</a>, a Winamp clone (Zig+Tcl/TK) from scratch. For decoding the music I need to get back to some Maths for the digital signal processing. That&#39;s why I started to read the <a href="https://www.dspguide.com/">DSP Guide</a>, which is really great.</p>

<p>And as I am starting to try a “no screen sunday” and as I am not a manual person (I tried bass guitar, wood working, etc.) I was looking for another non manual hobby... Now you see where I am going, right?</p>

<p><strong>Maths as a hobby</strong>, <em>gasp</em></p>



<p>Yes, Maths as a hobby, why not? It&#39;s challenging, I can work on it for more than I can imagine (there is no end to it), it&#39;s useful for my job, my side projects, my day to day life, etc..</p>

<p>So where do I start? Interestingly I found a youtube channel where the dude is doing exactly that: <a href="https://www.youtube.com/@mathematicaladventures">mathematicaladventures</a>.</p>

<p>It gave me some ideas on how to organize myself, where to start, some books ideas (yes I am a book guy, surprised?). I have now a few notebooks, some nice pens, and a few Maths books (with no particular order):</p>
<ul><li><a href="https://richardhammack.github.io/BookOfProof/Main.pdf">Book of proof</a></li>
<li><a href="https://www.amazon.fr/dp/0357113519?ref=ppx_yo2ov_dt_b_fed_asin_title">Calculus: Early Transcendentals</a></li>
<li><a href="https://www.amazon.fr/dp/0357114086?ref=ppx_yo2ov_dt_b_fed_asin_title">Discrete Mathematics with Applications</a></li>
<li><a href="https://linear.axler.net/LADR4e.pdf">Linear Algebra Done Right</a></li>
<li><a href="https://www.amazon.fr/dp/0691203709?ref=ppx_yo2ov_dt_b_fed_asin_title">Visual Differential Geometry and Forms: A Mathematical Drama in Five Acts</a></li>
<li><a href="https://www.amazon.fr/dp/1466230525?ref=ppx_yo2ov_dt_b_fed_asin_title">Mathematical Notation: A Guide for Engineers and Scientists</a></li>
<li><a href="https://tutorial.math.lamar.edu/">Paul&#39;s online notes</a> (not a book but very good resources)</li></ul>

<p>And some more later (like Calculus by Spivak, about numerical analysis, etc.). With all of this I think I already have a lot to study. I&#39;ll try to do at least 80% of the exercises of each book. So it will take some time! Maybe a few years just for a few books.</p>

<p>I am starting with this schedule:</p>
<ul><li>1h to 1h30 per day from monday to friday</li>
<li>as much as I can on my no screen sunday</li>
<li>nothing on saturday, rest is important too</li></ul>

<p>Starting with the Book of Proof by Richard Hammack (with Mathematical notations as a Maths symbols appendix for my rusty memory).</p>

<p>I did a small spreadsheet for the books and online courses I founded. The books are sorted in reading order: <a href="https://docs.google.com/spreadsheets/d/1kO8PdwMOr2sdYTCaW71Wlz06ffFoKTZ5VDiUzXjr4Xs">books spreadsheet</a></p>

<p><img src="https://lh3.googleusercontent.com/pw/AP1GczM2lnLfCBQ22S0ZuoIUpG0XpGONk0id82DOahyNVioNUShkZ4nSKWm903vtWWbBx2y_LgfTeeVHSALtwt8ZADnjUgodmnJiMQBk1bXG51Q6r0l9NlDHfL6wSBNdtIK2kXI6R-_vHSjQH_MpYDZQ3e85=w651-h869-s-no-gm?authuser=0" alt="Book of proof"></p>

<hr>

<p><strong>Come discuss</strong>
<a href="https://mastodon.social/@vyroda">mastodon</a>
<a href="mailto:dev@vyroda.com">Contact me</a></p>
]]></content:encoded>
      <guid>http://blog.vyroda.com/maths-as-a-hobby</guid>
      <pubDate>Thu, 02 Jul 2026 10:54:20 +0200</pubDate>
    </item>
    <item>
      <title>Zig</title>
      <link>http://blog.vyroda.com/zig</link>
      <description>&lt;![CDATA[After watching an interview with Andrew Kelley, creator of Zig, I&#39;m finally going to try it out.&#xA;&#xA;To learn Zig, I have the ambitious unrealistic idea to try creating my own Winamp (feeling old maybe? or don&#39;t even know this old reference?).&#xA;&#xA;!--more--&#xA;&#xA;I have never worked with anything related to music, so it will be a very nice project to learn more about it and of course digital signal processing. Which I know very little about. I guess I can understand the very basics of the math and ideas behind it, but I don&#39;t even know where to start, which is really great! Or daunting, or both.&#xA;&#xA;So for the moment the roadmap is:&#xA;&#xA;learn the basics of Zig&#xA;learn the basics of DSP&#xA;&#xA;Oh boy, it shows that I don&#39;t know what I am doing right now huh?&#xA;&#xA;Let&#39;s start by reading a WAV file and using miniaudio for the speakers. (Which I would like to do myself later too).&#xA;&#xA;I am going to use these references: &#xA;&#xA;DSP guide&#xA;EarLevel Engineering&#xA;&#xA;P.S.: And of course, the idea is maybe to use this within my game engine. I don&#39;t know yet.&#xA;&#xA;---&#xA;Come discuss&#xA;mastodon&#xA;Contact me]]&gt;</description>
      <content:encoded><![CDATA[<p>After watching an interview with Andrew Kelley, creator of Zig, I&#39;m finally going to try it out.</p>

<p>To learn Zig, I have the <del>ambitious</del> unrealistic idea to try creating my own Winamp (feeling old maybe? or don&#39;t even know this old <a href="https://winamp.com">reference</a>?).</p>



<p>I have never worked with anything related to music, so it will be a very nice project to learn more about it and of course digital signal processing. Which I know very little about. I guess I can understand the very basics of the math and ideas behind it, but I don&#39;t even know where to start, which is really great! Or daunting, or both.</p>

<p>So for the moment the roadmap is:</p>
<ul><li>learn the basics of Zig</li>
<li>learn the basics of DSP</li></ul>

<p>Oh boy, it shows that I don&#39;t know what I am doing right now huh?</p>

<p>Let&#39;s start by reading a WAV file and using miniaudio for the speakers. (Which I would like to do myself later too).</p>

<p>I am going to use these references:</p>
<ul><li><a href="https://www.dspguide.com/">DSP guide</a></li>
<li><a href="https://www.earlevel.com/main/category/digital-audio/">EarLevel Engineering</a></li></ul>

<p>P.S.: And of course, the idea is maybe to use this within my game engine. I don&#39;t know yet.</p>

<hr>

<p><strong>Come discuss</strong>
<a href="https://mastodon.social/@vyroda">mastodon</a>
<a href="mailto:dev@vyroda.com">Contact me</a></p>
]]></content:encoded>
      <guid>http://blog.vyroda.com/zig</guid>
      <pubDate>Mon, 08 Jun 2026 17:42:22 +0200</pubDate>
    </item>
    <item>
      <title>Fork-Join with std::barrier</title>
      <link>http://blog.vyroda.com/fork-join-with-std-barrier</link>
      <description>&lt;![CDATA[To improve the performance of my game engine, I was looking for a simple and almost native solution (i.e no boilerplate or framework), to render many entities on different threads. And that&#39;s in fact fairly easy to do thanks to std::barrier!&#xA;&#xA;!--more--&#xA;&#xA;There is a few step to implement:&#xA;&#xA;a pool of threads&#xA;few structs to hold data&#xA;feed the workers with some jobs to do&#xA;&#xA;In ParallelManager.cppm:&#xA;&#xA;//as soon as better alternative are available, std::function will be removed&#xA;struct WorkerContext&#xA;{&#xA;  //std::functionrefvoid() task;&#xA;  //std::moveonlyfunctionvoid() task;&#xA;  std::functionvoid() task;&#xA;};&#xA;&#xA;//will be used for the pointer that will hold everything together&#xA;struct BarrierData;    &#xA;&#xA;export class ParallelManager&#xA;{&#xA;  public:&#xA;&#xA;   ParallelManager();&#xA;   ~ParallelManager();&#xA;&#xA;   std::sizet size() const { return workers.size(); }&#xA;   void execute(std::spanstd::function&lt;void()  tasks);&#xA;&#xA;  private:&#xA;    //number of thread available&#xA;    std::ptrdifft threadcount { staticcaststd::ptrdifft(std::thread::hardwareconcurrency()) };&#xA;&#xA;    //pointer to glue everything together&#xA;    std::uniqueptrBarrierData barrierdata;&#xA;&#xA;   //vector of workers context&#xA;   std::vectorWorkerContext workercontexts;&#xA;&#xA;  //threads pool&#xA;  std::vectorstd::jthread workers;&#xA;}&#xA;&#xA;Then in my ParallelManager.cpp:&#xA;&#xA;  //initialize the pool thread&#xA;  ParallelManager::ParallelManager()&#xA;  : barrierdata{ std::makeuniqueBarrierData() }&#xA;  {&#xA;    workercontexts.resize(staticcaststd::sizet(threadcount));&#xA;    workers.reserve(staticcaststd::sizet(threadcount));&#xA;&#xA;    for (std::sizet t { 0 }; t  staticcast&lt;std::sizet(threadcount); ++t) {&#xA;      workers.emplaceback(this, t {&#xA;        while (!stoken.stoprequested()) {&#xA;          barrierdata-  start.arriveandwait();&#xA;          if (stoken.stoprequested()) break;&#xA;          if (workercontexts[t].task) {&#xA;            workercontexts[t].task();&#xA;          }&#xA;          barrierdata-  done.arriveandwait();&#xA;        }&#xA;      });&#xA;    }&#xA;  }&#xA;&#xA;  //don&#39;t forget to clean up&#xA;  ParallelManager::~ParallelManager()&#xA;  {&#xA;    for(auto&amp; worker : workers) {&#xA;        worker.requeststop();&#xA;    }&#xA;    barrierdata-  start.arriveandwait();&#xA;  }&#xA;&#xA;//execute any task&#xA;  void ParallelManager::execute(std::spanstd::function&lt;void()  tasks)&#xA;  {&#xA;    for (std::sizet i {0}; i &lt; tasks.size(); i++) {&#xA;      workercontexts[i].task = std::move(tasks[i]);&#xA;    }&#xA;&#xA;    barrierdata-  start.arriveandwait();&#xA;    barrierdata-  done.arriveandwait();&#xA;&#xA;    for (std::sizet i {0}; i &lt; tasks.size(); i++) {&#xA;      workercontexts[i].task = nullptr;&#xA;    }&#xA;  }&#xA;}&#xA;&#xA;Now that the setup is done, we just need to give some work to the workers, so in the game loop when I want to render entities:&#xA;&#xA;   //getting the size of a chunk&#xA;    auto const count { ParallelManagerLocator::get()-  size() };&#xA;    auto const chunksize { allids.size() / count };&#xA;    auto const remainder  { allids.size() % count };&#xA;&#xA;    std::vectorstd::function&lt;void()  tasks;&#xA;    tasks.reserve(count);&#xA;&#xA;    std::sizet offset { 0 };&#xA;    for (std::sizet t { 0 }; t &lt; count; ++t) {&#xA;      auto const n { chunksize + (t &lt; remainder ? 1 : 0) };&#xA;      auto const ids { std::span{ allids.data() + offset, n } };&#xA;      tasks.emplaceback(ids, deltatime, cameraviewmatrix, this {&#xA;        for (auto const id : ids) {&#xA;          renderEntity(id, deltatime, cameraviewmatrix);&#xA;        }&#xA;      });&#xA;      offset += n;&#xA;    }&#xA;    ParallelManagerLocator::get()-  execute(tasks);&#xA;&#xA;The implementation is simple and quite efficient, just with this I gain more than 50 fps on a simple scene, it will probably be even better when std::function is replaced by std::moveonlyfunction or std::function_ref.&#xA;&#xA;I am expecting a great improvement in performance overall now that I can run simple tasks in parallel!&#xA;&#xA;---&#xA;Come discuss&#xA;Join the conversation on the Vyroda Forum.&#xA;Check out the latest engine features on Vyroda.com&#xA;mastodon&#xA;Contact me]]&gt;</description>
      <content:encoded><![CDATA[<p>To improve the performance of my game engine, I was looking for a simple and almost native solution (i.e no boilerplate or framework), to render many entities on different threads. And that&#39;s in fact fairly easy to do thanks to std::barrier!</p>



<p>There is a few step to implement:</p>
<ul><li>a pool of threads</li>
<li>few structs to hold data</li>
<li>feed the workers with some jobs to do</li></ul>

<p>In ParallelManager.cppm:</p>

<pre><code class="language-cpp">//as soon as better alternative are available, std::function will be removed
struct WorkerContext
{
  //std::function_ref&lt;void()&gt; task;
  //std::move_only_function&lt;void()&gt; task;
  std::function&lt;void()&gt; task;
};

//will be used for the pointer that will hold everything together
struct BarrierData;    

export class ParallelManager
{
  public:

   ParallelManager();
   ~ParallelManager();

   std::size_t size() const { return _workers.size(); }
   void execute(std::span&lt;std::function&lt;void()&gt;&gt; tasks);

  private:
    //number of thread available
    std::ptrdiff_t _thread_count { static_cast&lt;std::ptrdiff_t&gt;(std::thread::hardware_concurrency()) };

    //pointer to glue everything together
    std::unique_ptr&lt;BarrierData&gt; _barrier_data;

   //vector of workers context
   std::vector&lt;WorkerContext&gt; _worker_contexts;

  //threads pool
  std::vector&lt;std::jthread&gt; _workers;
}
</code></pre>

<p>Then in my ParallelManager.cpp:</p>

<pre><code class="language-cpp">  //initialize the pool thread
  ParallelManager::ParallelManager()
  : _barrier_data{ std::make_unique&lt;BarrierData&gt;() }
  {
    _worker_contexts.resize(static_cast&lt;std::size_t&gt;(_thread_count));
    _workers.reserve(static_cast&lt;std::size_t&gt;(_thread_count));

    for (std::size_t t { 0 }; t &lt; static_cast&lt;std::size_t&gt;(_thread_count); ++t) {
      _workers.emplace_back([this, t](std::stop_token stoken) {
        while (!stoken.stop_requested()) {
          _barrier_data-&gt;start.arrive_and_wait();
          if (stoken.stop_requested()) break;
          if (_worker_contexts[t].task) {
            _worker_contexts[t].task();
          }
          _barrier_data-&gt;done.arrive_and_wait();
        }
      });
    }
  }

  //don&#39;t forget to clean up
  ParallelManager::~ParallelManager()
  {
    for(auto&amp; worker : _workers) {
        worker.request_stop();
    }
    _barrier_data-&gt;start.arrive_and_wait();
  }

//execute any task
  void ParallelManager::execute(std::span&lt;std::function&lt;void()&gt;&gt; tasks)
  {
    for (std::size_t i {0}; i &lt; tasks.size(); i++) {
      _worker_contexts[i].task = std::move(tasks[i]);
    }

    _barrier_data-&gt;start.arrive_and_wait();
    _barrier_data-&gt;done.arrive_and_wait();

    for (std::size_t i {0}; i &lt; tasks.size(); i++) {
      _worker_contexts[i].task = nullptr;
    }
  }
}
</code></pre>

<p>Now that the setup is done, we just need to give some work to the workers, so in the game loop when I want to render entities:</p>

<pre><code class="language-cpp">   //getting the size of a chunk
    auto const count { ParallelManagerLocator::get()-&gt;size() };
    auto const chunk_size { _all_ids.size() / count };
    auto const remainder  { _all_ids.size() % count };

    std::vector&lt;std::function&lt;void()&gt;&gt; tasks;
    tasks.reserve(count);

    std::size_t offset { 0 };
    for (std::size_t t { 0 }; t &lt; count; ++t) {
      auto const n { chunk_size + (t &lt; remainder ? 1 : 0) };
      auto const ids { std::span{ _all_ids.data() + offset, n } };
      tasks.emplace_back([ids, delta_time, camera_view_matrix, this]() {
        for (auto const id : ids) {
          renderEntity(id, delta_time, camera_view_matrix);
        }
      });
      offset += n;
    }
    ParallelManagerLocator::get()-&gt;execute(tasks);
</code></pre>

<p>The implementation is simple and quite efficient, just with this I gain more than 50 fps on a simple scene, it will probably be even better when std::function is replaced by std::move<em>only</em>function or std::function_ref.</p>

<p>I am expecting a great improvement in performance overall now that I can run simple tasks in parallel!</p>

<hr>

<p><strong>Come discuss</strong>
Join the conversation on the <a href="https://forum.vyroda.com/d/3-fork-join-with-stdbarrier">Vyroda Forum</a>.
Check out the latest engine features on <a href="https://vyroda.com">Vyroda.com</a>
<a href="https://mastodon.social/@vyroda">mastodon</a>
<a href="mailto:dev@vyroda.com">Contact me</a></p>
]]></content:encoded>
      <guid>http://blog.vyroda.com/fork-join-with-std-barrier</guid>
      <pubDate>Thu, 16 Apr 2026 17:42:29 +0200</pubDate>
    </item>
    <item>
      <title>To-read list of 2026</title>
      <link>http://blog.vyroda.com/to-read-list-of-2026</link>
      <description>&lt;![CDATA[This page is mostly for me, but if you have any suggestion about a good book send me your idea dev at vyroda dot com or share your ideas on the forum&#xA;&#xA;!--more--&#xA;&#xA;This year it&#39;s a mix of low level and abstraction level theme for me. And fictions! Of all sorts.&#xA;&#xA;Non fiction:&#xA;OSTEP (done)&#xA;Code, Charles Petzold (done)&#xA;A philosophy of software design (DNF 75%)&#xA;SICP (reading, but taking a pause, it&#39;s a very dense book, maybe I&#39;ll try clojure instead of racket-lang when I&#39;ll pick it up again)&#xA;TCP/IP illustrated volume 1&#xA;Maths books: cf this article&#xA;The artist way, Julia Cameron (DNF, I definitely can&#39;t do the exercices right now, maybe later)&#xA;The red book, Carl Jung&#xA;&#xA;Fiction:&#xA;Shogun 1, James Clavell (done)&#xA;Shogun 2 (paused at 75%, I&#39;ll pick it up later)&#xA;Carrion Comfort, Dan Simmons (reading)&#xA;The ongoing re release of TMNT (yes...)&#xA;Ghost in the shell 1 (done)&#xA;Ghost in the shell 1.5 (done)&#xA;Ghost in the shell 2&#xA;Berserk 43 (done)&#xA;Druillet Lovecraft&#xA;The reality dysfunction, Hamilton&#xA;&#xA;---&#xA;Come discuss&#xA;Join the conversation on the Vyroda Forum.&#xA;Check out the latest engine features on Vyroda.com&#xA;mastodon&#xA;Contact me]]&gt;</description>
      <content:encoded><![CDATA[<p>This page is mostly for me, but if you have any suggestion about a good book send me your idea dev at vyroda dot com or share your ideas on the forum</p>



<p>This year it&#39;s a mix of low level and abstraction level theme for me. And fictions! Of all sorts.</p>

<p>Non fiction:
* <del>OSTEP</del> (done)
* <del>Code, Charles Petzold</del> (done)
* <del>A philosophy of software design</del> (DNF 75%)
* SICP (reading, but taking a pause, it&#39;s a very dense book, maybe I&#39;ll try clojure instead of racket-lang when I&#39;ll pick it up again)
* TCP/IP illustrated volume 1
* Maths books: cf <a href="https://blog.vyroda.com/maths-as-a-hobby">this article</a>
* <del>The artist way, Julia Cameron</del> (DNF, I definitely can&#39;t do the exercices right now, maybe later)
* The red book, Carl Jung</p>

<p>Fiction:
* <del>Shogun 1, James Clavell</del> (done)
* Shogun 2 (paused at 75%, I&#39;ll pick it up later)
* Carrion Comfort, Dan Simmons (reading)
* <del>The ongoing re release of TMNT</del> (yes...)
* <del>Ghost in the shell 1</del> (done)
* <del>Ghost in the shell 1.5</del> (done)
* Ghost in the shell 2
* <del>Berserk 43</del> (done)
* Druillet Lovecraft
* The reality dysfunction, Hamilton</p>

<hr>

<p><strong>Come discuss</strong>
Join the conversation on the <a href="https://forum.vyroda.com/d/2-to-read-list-of-2026">Vyroda Forum</a>.
Check out the latest engine features on <a href="https://vyroda.com">Vyroda.com</a>
<a href="https://mastodon.social/@vyroda">mastodon</a>
<a href="mailto:dev@vyroda.com">Contact me</a></p>
]]></content:encoded>
      <guid>http://blog.vyroda.com/to-read-list-of-2026</guid>
      <pubDate>Thu, 16 Apr 2026 17:40:51 +0200</pubDate>
    </item>
    <item>
      <title>Running away from the big tech ecosystem</title>
      <link>http://blog.vyroda.com/running-away-from-the-big-tech-ecosystem</link>
      <description>&lt;![CDATA[As I am starting to really dislike the current big tech industry (Microsoft / Amazon / Google, etc.) I am trying to escape from this non privacy hell and enshittification.&#xA;Here are my 2 cents about some new indie tools that I am testing. Let&#39;s see if we can do it with EU first tools...&#xA;&#xA;!--more--&#xA;&#xA;Zig project explains it better than me zig explanation&#xA;&#xA;Started to migrate at the beginning of February 2026.&#xA;&#xA;Let&#39;s share some non big tech software on the forum&#xA;&#xA;Codeberg&#xA;First step is to migrate the project from GitHub, which is becoming more and more, enshitified? So let&#39;s try Codeberg !&#xA;Non profit, located in Germany, some known project are moving there (like Zig and Wayland project) so, I&#39;m following the move.&#xA;&#xA;24/02/2026 : Migration is in progress :&#xA;&#xA;10/03/2026 : Migration almost done :&#xA;&#xA;Vampyropoda-Studio&#xA;&#xA;Vyroda-Engine&#xA;&#xA;Vyroda-Engine-Doc&#xA;&#xA;Ninja &amp; LLVM/clang&#xA;This one is a no brainer, don&#39;t use Microsoft tooling.&#xA;I&#39;ve done it since a long time and not going back.&#xA;Just Do It.&#xA;&#xA;I am considering adding back GCC to my toolchain, maybe.&#xA;&#xA;Code editor&#xA;This is where it&#39;s gonna be a bit trickier, should I go back to vim + tmux or should I finally really try emacs? (So far it&#39;s emacs)&#xA;And yes VS Code is free, but it&#39;s Microsoft. It sounds fanatical I know, but it&#39;s an exercise so let&#39;s do it correctly.&#xA;&#xA;10/03/2026 :&#xA;&#xA;I am starting to like emacs for real, keyboard shortcuts feels more natural now and with a config it&#39;s pretty complete.&#xA;&#xA;I am saving my config here: config&#xA;&#xA;Debugger&#xA;To debug I am using LLDB-DAP with VsCode, and it&#39;s not as stable and fast as I would like.&#xA;&#xA;So it&#39;s time to really try that rad debugger and see if it can replace it.&#xA;RAD Debugger is using PDB files, so again proprietary format and tied to Windows... Big no.&#xA;&#xA;Let&#39;s try LLDB-DAP + Emacs, I hope it will be faster than LLDB-DAP + VsCode.&#xA;&#xA;10/03/2026 :&#xA;&#xA;For LLDB, I am learning to use it from the command line. After learning the main command it&#39;s really faster and snappier to use. This is night and day compared to debugging via a GUI in VsCode or VS. And there is even more options available.&#xA;&#xA;OS&#xA;With the announcement of Windows 12, I think it&#39;s time to abandon this ship too. But for gaming is it really doable?&#xA;I am currently testing FreeBSD on my spare laptop. I am using Fedora since ages (and recommend it), even if I am happy with it I wanted to try something else while I am reading the OSTEP book (FreeBSD seems natural in this context)&#xA;&#xA;Web Hosting and blogging&#xA;I started using substack for blog posting, but the idea to add a button to force readers to subscribe in the hope of turning them into paying readers was not for me.&#xA;Everyone knows now that a substack blog will one day be a paywall blog, that&#39;s the goal of going to substack. Substack is not part of the big tech per se,&#xA;but it&#39;s still a part of the web that I dislike: money for everything and for most of the time questionable opinions (you have mine for free!). Stats everywhere for everything, to sell to everybody without telling you. By the way I&#39;m not adding stats on my website, there is the basic stats which gives only the amount of views per day / month (completely biased with the number of bots...). So no tracking here, not as I am aware of at least and no &#34;subscribe buttons&#34;.&#xA;&#xA;This is a very simple blog setup, webmail and hosting at Gandi.net. A French web hosting company (yes France / EU first, remember? And I&#39;m French so Gandi it is, it could have been OVH though)&#xA;&#xA;10/03/2026 :&#xA;&#xA;I am late to the party and learned that Gandi has been bought. I chose Gandi by default, I used to have an account here a long time ago. Big mistake.&#xA;&#xA;Yay, just started the blog and I have to move already. I guess it will be toward Alwaysdata.&#xA;&#xA;11/03/2026 :&#xA;&#xA;I moved to AlwaysData and simplified the domain name to this new one vyroda. There is a lot more options here than on Gandi it&#39;s pretty neat. And less expensive.&#xA;&#xA;AI&#xA;Like it or not AI is here, mostly at the office where I&#39;m learning to use it so managers will be happy. Ok, I admit, used with an orchestrator and agents and MCP Server, with claude opus because chatgpt is so so bad now, it&#39;s starting to be impressive.&#xA;&#xA;But it&#39;s expensive and I am stingy for my own usage, I have~  had a cheap pro account for Gemini, I cancelled it, 30€ / months is not worthy for my usage.&#xA;&#xA;Maybe I&#39;ll try LLM360?&#xA;&#xA;Even if I think AI has more negative than positive effects (issues about the environment, learning, cognitive, etc.) I am still learning it as it is just a tool and companies are expecting us to learn it. So here I am learning it, and this is so simple to learn that I am at so-called &#34;stage 6&#34;. It took me an afternoon to understand how all of this work, now I just need to refine how to write my specs and I am afraid of what it means.&#xA;&#xA;Very easy to use, powerfull but not 100% perfect (yet?), almost no need for hard learned skills that bring values. My guess is that there will be so much of anything done with it that everything will have absolutely no value at all anymore.&#xA;&#xA;Wait &amp; See...&#xA;&#xA;16/04/2025&#xA;I feel I am losing any joy in programming on my side projects, so I am not using AI anymore. It is not worth the human and environmental issues, I prefer to try by myself even if it takes more time, it is way more enjoyable and fullfiling. I can&#39;t stomach  anymore its sycophancy: &#xA;&#xA;  &#34;Oh wow that is an incredible question Galliume!&#34; &#xA;&#xA;Everything&#39;s always incredible, rare insight and all. Fuck off.&#xA;&#xA;Email&#xA;Is it really possible to find something remotely good enough compared to GMail ?...&#xA;&#xA;Smartphone OS&#xA;I want to try GrapheneOS but I have to learn more about it.&#xA;&#xA;Notes&#xA;OneNote is one of the best Microsoft software (for me at least), finding a replacement is not easy.&#xA;I am currently trying Joplin. I am saving my notes locally, but if you use their cloud it will be safer than OneNote as it is based in France, so running under EU laws.&#xA;&#xA;What&#39;s next?&#xA;&#xA;Switching and testing all those tools takes quite some time, but I think being free from licenses, Cloud Acts, etc. is worth it as an individual, but is it realistic in a professional context? Hard to say, there is not really a lot of EU competitors up to the task, but if nobody moves there never will be. Maybe it will start from individuals doing the search and funding the small companies that are trying to keep up. Naïve isn&#39;t it?&#xA;&#xA;It&#39;s not only a question about money, it&#39;s a mindset that I am starting to really understand, better late than never I guess. So the next step after all this change will be maybe to try to participate in some open source project if they are not killed before by the AIpocalypse.&#xA;&#xA;---&#xA;Come discuss&#xA;Join the conversation on the Vyroda Forum.&#xA;Check out the latest engine features on Vyroda.com&#xA;mastodon&#xA;Contact me]]&gt;</description>
      <content:encoded><![CDATA[<p>As I am starting to really dislike the current big tech industry (Microsoft / Amazon / Google, etc.) I am trying to escape from this non privacy hell and enshittification.
Here are my 2 cents about some new indie tools that I am testing. Let&#39;s see if we can do it with EU first tools...</p>



<p>Zig project explains it better than me <a href="https://ziglang.org/news/migrating-from-github-to-codeberg">zig explanation</a></p>

<p>Started to migrate at the beginning of February 2026.</p>

<p>Let&#39;s share some non big tech software on the forum</p>

<h3 id="codeberg">Codeberg</h3>

<p>First step is to migrate the project from GitHub, which is becoming more and more, enshitified? So let&#39;s try Codeberg !
Non profit, located in Germany, some known project are moving there (like Zig and Wayland project) so, I&#39;m following the move.</p>

<p><del>24/02/2026 : Migration is in progress :</del></p>

<p>10/03/2026 : Migration almost done :</p>

<p>Vampyropoda-Studio</p>

<p>Vyroda-Engine</p>

<p>Vyroda-Engine-Doc</p>

<h3 id="ninja-llvm-clang">Ninja &amp; LLVM/clang</h3>

<p>This one is a no brainer, don&#39;t use Microsoft tooling.
I&#39;ve done it since a long time and not going back.
Just Do It.</p>

<p>I am considering adding back GCC to my toolchain, maybe.</p>

<h3 id="code-editor">Code editor</h3>

<p>This is where it&#39;s gonna be a bit trickier, should I go back to vim + tmux or should I finally really try emacs? (So far it&#39;s emacs)
And yes VS Code is free, but it&#39;s Microsoft. It sounds fanatical I know, but it&#39;s an exercise so let&#39;s do it correctly.</p>

<p>10/03/2026 :</p>

<p>I am starting to like emacs for real, keyboard shortcuts feels more natural now and with a config it&#39;s pretty complete.</p>

<p>I am saving my config here: config</p>

<h3 id="debugger">Debugger</h3>

<p>To debug I am using LLDB-DAP with VsCode, and it&#39;s not as stable and fast as I would like.</p>

<p><del>So it&#39;s time to really try that rad debugger and see if it can replace it.</del>
RAD Debugger is using PDB files, so again proprietary format and tied to Windows... Big no.</p>

<p><del>Let&#39;s try LLDB-DAP + Emacs, I hope it will be faster than LLDB-DAP + VsCode.</del></p>

<p>10/03/2026 :</p>

<p>For LLDB, I am learning to use it from the command line. After learning the main command it&#39;s really faster and snappier to use. This is night and day compared to debugging via a GUI in VsCode or VS. And there is even more options available.</p>

<h3 id="os">OS</h3>

<p>With the announcement of Windows 12, I think it&#39;s time to abandon this ship too. But for gaming is it really doable?
I am currently testing FreeBSD on my spare laptop. I am using Fedora since ages (and recommend it), even if I am happy with it I wanted to try something else while I am reading the OSTEP book (FreeBSD seems natural in this context)</p>

<h3 id="web-hosting-and-blogging">Web Hosting and blogging</h3>

<p>I started using substack for blog posting, but the idea to add a button to force readers to subscribe in the hope of turning them into paying readers was not for me.
Everyone knows now that a substack blog will one day be a paywall blog, that&#39;s the goal of going to substack. Substack is not part of the big tech per se,
but it&#39;s still a part of the web that I dislike: money for everything and for most of the time questionable opinions (you have mine for free!). Stats everywhere for everything, to sell to everybody without telling you. By the way I&#39;m not adding stats on my website, there is the basic stats which gives only the amount of views per day / month (completely biased with the number of bots...). So no tracking here, not as I am aware of at least and no “subscribe buttons”.</p>

<p><del>This is a very simple blog setup, webmail and hosting at Gandi.net. A French web hosting company (yes France / EU first, remember? And I&#39;m French so Gandi it is, it could have been OVH though)</del></p>

<p>10/03/2026 :</p>

<p>I am late to the party and learned that Gandi has been bought. I chose Gandi by default, I used to have an account here a long time ago. Big mistake.</p>

<p>Yay, just started the blog and I have to move already. I guess it will be toward Alwaysdata.</p>

<p>11/03/2026 :</p>

<p>I moved to AlwaysData and simplified the domain name to this new one vyroda. There is a lot more options here than on Gandi it&#39;s pretty neat. And less expensive.</p>

<h3 id="ai">AI</h3>

<p>Like it or not AI is here, mostly at the office where I&#39;m learning to use it so managers will be happy. Ok, I admit, used with an orchestrator and agents and MCP Server, with claude opus because chatgpt is so so bad now, it&#39;s starting to be impressive.</p>

<p>But it&#39;s expensive and I am stingy for my own usage, I ~~have~  had a cheap pro account for Gemini, I cancelled it, 30€ / months is not worthy for my usage.</p>

<p>Maybe I&#39;ll try LLM360?</p>

<p>Even if I think AI has more negative than positive effects (issues about the environment, learning, cognitive, etc.) I am still learning it as it is just a tool and companies are expecting us to learn it. So here I am learning it, and this is so simple to learn that I am at so-called “stage 6”. It took me an afternoon to understand how all of this work, now I just need to refine how to write my specs and I am afraid of what it means.</p>

<p>Very easy to use, powerfull but not 100% perfect (yet?), almost no need for hard learned skills that bring values. My guess is that there will be so much of anything done with it that everything will have absolutely no value at all anymore.</p>

<p>Wait &amp; See...</p>

<p>16/04/2025
I feel I am losing any joy in programming on my side projects, so I am not using AI anymore. It is not worth the human and environmental issues, I prefer to try by myself even if it takes more time, it is way more enjoyable and fullfiling. I can&#39;t stomach  anymore its sycophancy:</p>

<blockquote><p>“Oh wow that is an incredible question Galliume!”</p></blockquote>

<p>Everything&#39;s always incredible, rare insight and all. Fuck off.</p>

<h3 id="email">Email</h3>

<p>Is it really possible to find something remotely good enough compared to GMail ?...</p>

<h3 id="smartphone-os">Smartphone OS</h3>

<p>I want to try GrapheneOS but I have to learn more about it.</p>

<h3 id="notes">Notes</h3>

<p>OneNote is one of the best Microsoft software (for me at least), finding a replacement is not easy.
I am currently trying <a href="https://joplinapp.org/">Joplin</a>. I am saving my notes locally, but if you use their cloud it will be safer than OneNote as it is based in France, so running under EU laws.</p>

<h3 id="what-s-next">What&#39;s next?</h3>

<p>Switching and testing all those tools takes quite some time, but I think being free from licenses, Cloud Acts, etc. is worth it as an individual, but is it realistic in a professional context? Hard to say, there is not really a lot of EU competitors up to the task, but if nobody moves there never will be. Maybe it will start from individuals doing the search and funding the small companies that are trying to keep up. Naïve isn&#39;t it?</p>

<p>It&#39;s not only a question about money, it&#39;s a mindset that I am starting to really understand, better late than never I guess. So the next step after all this change will be maybe to try to participate in some open source project if they are not killed before by the AIpocalypse.</p>

<hr>

<p><strong>Come discuss</strong>
Join the conversation on the <a href="https://forum.vyroda.com/d/1-running-away-from-the-big-tech-ecosystem">Vyroda Forum</a>.
Check out the latest engine features on <a href="https://vyroda.com">Vyroda.com</a>
<a href="https://mastodon.social/@vyroda">mastodon</a>
<a href="mailto:dev@vyroda.com">Contact me</a></p>
]]></content:encoded>
      <guid>http://blog.vyroda.com/running-away-from-the-big-tech-ecosystem</guid>
      <pubDate>Thu, 16 Apr 2026 17:35:30 +0200</pubDate>
    </item>
    <item>
      <title>Wifi on FreeBSD</title>
      <link>http://blog.vyroda.com/wifi-on-freebsd</link>
      <description>&lt;![CDATA[For those who are using WifiBox if you get this error :&#xA;&#xA;  &#34;WARNING: PPT device pci0:3:0:0 could not be destroyed&#34;&#xA;&#xA;!--more--&#xA;&#xA;The solution, if you are using an AMD, is to add in /boot/loader.conf :&#xA;&#xA;  hw.vmm.amdvi.enable=1&#xA;&#xA;passthru will then be allowed.&#xA;&#xA;This is working with a Qualcomm Atheros QCA9377 (not the best supported natively yet)&#xA;&#xA;Here my config for /etc/rc.conf&#xA;&#xA;wifiboxenable=&#34;YES&#34;&#xA;ifconfigwifibox0=&#34;SYNCDHCP&#34;&#xA;backgrounddhclientwifibox0=&#34;YES&#34;&#xA;defaultroutedelay=&#34;0&#34;&#xA;And in /boot/loader.conf&#xA;&#xA;vmmload=&#34;YES&#34;&#xA;pptload=&#34;YES&#34;&#xA;iftapload=&#34;YES&#34;&#xA;hw.vmm.pptdevs=&#34;3/0/0&#34;&#xA;pptdevs=&#34;3/0/0&#34;&#xA;hw.vmm.amdvi.enable=1&#xA;&#xA;---&#xA;Come discuss&#xA;Join the conversation on the Vyroda Forum.&#xA;Check out the latest engine features on Vyroda.com&#xA;mastodon&#xA;Contact me]]&gt;</description>
      <content:encoded><![CDATA[<p>For those who are using WifiBox if you get this error :</p>

<blockquote><p>“WARNING: PPT device pci0:3:0:0 could not be destroyed”</p></blockquote>



<p>The solution, if you are using an AMD, is to add in /boot/loader.conf :</p>

<blockquote><p>hw.vmm.amdvi.enable=1</p></blockquote>

<p>passthru will then be allowed.</p>

<p>This is working with a Qualcomm Atheros QCA9377 (not the best supported natively yet)</p>

<p>Here my config for /etc/rc.conf</p>

<pre><code>wifibox_enable=&#34;YES&#34;
ifconfig_wifibox0=&#34;SYNCDHCP&#34;
background_dhclient_wifibox0=&#34;YES&#34;
defaultroute_delay=&#34;0&#34;
And in /boot/loader.conf

vmm_load=&#34;YES&#34;
ppt_load=&#34;YES&#34;
if_tap_load=&#34;YES&#34;
hw.vmm.ppt_devs=&#34;3/0/0&#34;
pptdevs=&#34;3/0/0&#34;
hw.vmm.amdvi.enable=1
</code></pre>

<hr>

<p><strong>Come discuss</strong>
Join the conversation on the <a href="https://forum.vyroda.com">Vyroda Forum</a>.
Check out the latest engine features on <a href="https://vyroda.com">Vyroda.com</a>
<a href="https://mastodon.social/@vyroda">mastodon</a>
<a href="mailto:dev@vyroda.com">Contact me</a></p>
]]></content:encoded>
      <guid>http://blog.vyroda.com/wifi-on-freebsd</guid>
      <pubDate>Thu, 16 Apr 2026 17:28:17 +0200</pubDate>
    </item>
  </channel>
</rss>