<rss version="2.0">
  <channel>
    <title>Drew DeVault&apos;s blog</title>
    <link>https://d302hfib-20260520.pages.dev</link>
    <description>Drew DeVault&apos;s blog - Blog</description>
    <generator>Zine -- https://zine-ssg.io</generator>
    <language>en-US</language>
    <lastBuildDate>Fri, 15 May 2026 05:57:17 +0000</lastBuildDate>
    
      <item>
        
        
          <title>Add an LLM policy for rust-lang/rust</title>
          <description>
            &lt;blockquote&gt;&lt;p&gt;No comment on this PR may mention the following topics:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Long-term social or economic impact of LLMs&lt;/li&gt;&lt;li&gt;The environmental impact of LLMs&lt;/li&gt;&lt;li&gt;Anything to do with the copyright status of LLM output&lt;/li&gt;&lt;li&gt;Moral judgements about people who use LLMs&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We have asked the moderation team to help us enforce these rules.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;– &lt;a href=&quot;https://github.com/rust-lang/rust-forge/pull/1040&quot; target=&quot;_blank&quot;&gt;Add an LLM policy for rust-lang/rust, GitHub&lt;/a&gt;&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/LLM-policy-for-Rust/</link>
        
        <pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/LLM-policy-for-Rust/</guid>
      </item>
    
      <item>
        
        
          <title>I can&apos;t cancel GitHub Copilot</title>
          <description>
            &lt;p&gt;Back when Copilot first came out, I immediately disliked it. But I decided to give it a fair shake and tried to evaulate it in good faith. I wasn’t interested in paying for it, but they had a form for FOSS community members to apply for a free subscription, so I filled it out and gave it a shot. Once approved I spent 15 minutes (successfully) convincing it to write a Python script that printed out the lyrics to “All Star” verbatim, and haven’t touched it since.&lt;/p&gt;&lt;p&gt;Since then, like clockwork I get an email every month informing me that my subscription has been automatically renewed.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Hi there,&lt;/p&gt;&lt;p&gt;Thank you for renewing your free access to GitHub Copilot. Your access to GitHub Copilot will be reviewed on 2026-05-31. GitHub Copilot checks eligibility monthly per our policy. No steps are needed on your end.&lt;/p&gt;&lt;p&gt;We hope you enjoy using GitHub Copilot and participating in the developer community.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I’m not being charged for it and so it’s a matter of principle more than anything, but I ought to be able to turn this off. But I cannot find anything in the GitHub settings which would allow me to cancel this free “subscription”.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/copilot-settings.png&quot; alt=&quot;A screenshot of GitHub&apos;s copilot settings. Everything which can be disabled is disabled, but may features cannot be disabled. There is no obvious way to cancel the subscription.&quot;&gt;&lt;/p&gt;&lt;p&gt;GitHub support has been less than helpful:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/copilot-support.png&quot; alt=&quot;A screenshot of a support ticket opened on March 26th asking for assistance in cancelling my Copilot subscription. I asked for an update on April 21st. There is no response from GitHub.&quot;&gt;&lt;/p&gt;&lt;p&gt;How do I get rid of this thing!&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/I-cant-cancel-Copilot/</link>
        
        <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/I-cant-cancel-Copilot/</guid>
      </item>
    
      <item>
        
        
          <title>Addressing the harassment</title>
          <description>
            &lt;blockquote&gt;&lt;p&gt;Kiwi Farms is a web forum that facilitates the discussion and harassment of online figures and communities. Their targets are often subject to organized group trolling and stalking, as well as doxing and real-life harassment. Kiwi Farms has been tied to the suicides of three people who were victims of harassment by the website.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;– &lt;a href=&quot;https://en.wikipedia.org/w/index.php?title=Kiwi_Farms&amp;oldid=1348820184&quot; target=&quot;_blank&quot;&gt;Wikipedia: Kiwi Farms&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;About three years ago, a thread on Kiwi Farms was opened about me. In the years since, it has grown to about 1,200 posts full of bigots responding to anything and everything I do online with scorn, slurs, and overt bigotry. The thread is full of resources to facilitate harassment, including, among other things, all of my social media profiles, past and present, a history of my residential addresses, my phone numbers, details about my family members, a list of my usernames and password hashes from every leaked database of websites I have accounts on, and so on. Most of my articles or social media posts are archived on Kiwi Farms and then subjected to the most bigoted rebuttals you can imagine. Honestly, it’s mostly just… pathetic. But it’s a problem when it escapes containment, and it’s designed to.&lt;/p&gt;&lt;p&gt;Kiwi Farms is the most organized corner of the harassment which comes my way, but it comes in many forms. On Mastodon, for example, before I deleted my account I would often receive death threats, or graphic images and videos of violence against minorities. I have received a lot of hate and death threats over email, too, several of which I confess that I took some pleasure in forwarding to the sender’s employer.&lt;/p&gt;&lt;p&gt;One of the motivations for this harassment is to “milk” me for “drama”. The idea is to get my hackles up, make me fearful for my safety, and alienate me from my communities, with the hope that it will trigger an entertaining meltdown. Maybe people respond poorly to this kind of harassment – that’s the idea, really – and it often makes the situation worse. Responding to it can legitimize the abuse, elevate it into the discourse, draw more attention to it, and stoke the flames. It can make the victim look bad when they respond emotionally to harassment designed to evoke negative emotions. I have left it unaddressed for a long time in order to subvert this goal, and address it now with a cool head in a relatively quiet period in the harassment campaign.&lt;/p&gt;&lt;p&gt;The harassment waxes and wanes over time, usually picking up whenever I write a progressive blog post that gets some reach. It really took off after a series of incidents in which I called for the Hyprland community and its maintainers to be held to account for the bigotry and harassment on their Discord server (&lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/Hyprland-toxicity/&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/FDO-conduct-enforcement/&quot;&gt;2&lt;/a&gt;) and when I spoke out against Richard Stallman’s prolific and problematic public statements regarding the sexual abuse of minors (&lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/RMS-on-sex/&quot;&gt;3&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;The abuse crescendoed in October of 2024, when I was involved in editing &lt;a href=&quot;https://stallman-report.org/&quot; target=&quot;_blank&quot;&gt;The Stallman Report&lt;/a&gt;. The report is a comprehensive analysis of Richard Stallman’s problematic political discourse regarding sexual harassment, sexual assault, and the sexual abuse of minors, and it depends almost entirely on primary sources – quotes from Stallman’s website which remain online and have not been retracted to this day. The purpose of the report was to make a clear and unassailable case for Stallman’s removal from positions of power, make specific recommendations to address the underlying problems, and to stimulate a period of reflection and reform in the FOSS community. It didn’t achieve much, in the end: the retaliation from Stallman’s defenders was fiercer and more devoted than the support from those who saw the report’s sense.&lt;/p&gt;&lt;p&gt;Myself and the other authors asserted our &lt;a href=&quot;https://en.wikipedia.org/wiki/Moral_rights&quot; target=&quot;_blank&quot;&gt;moral rights&lt;/a&gt; to publish anonymously, motivated by our wish to reduce our exposure to the exact sort of harassment I’ve been subjected to over the years. However, I was careless in my opsec during the editing process, and it was possible to plausibly link me to the report as a result, leading to a sharp increase in harassment.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;This brings me to a retaliatory, defamatory “report” published about me in the style of the Stallman Report.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; This report is, essentially, a distillation of the Kiwi Farms thread on me, sanitized of overt bigotry and presented in a readily linkable form in order to stalk me around the internet and enable harassment. It’s used to discredit anything I do online and push for my exclusion from online communities, by dropping the link on Hacker News, Reddit, GitHub or Codeberg issues, etc, anywhere myself or my work is mentioned, or used to discredit the Stallman Report by discrediting one of its unmasked authors.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-2&quot; id=&quot;fn-2-ref-1&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;The report is pretty obviously written in bad faith and relies on a lot of poor arguments to make the case that I’m a misogynist and a pedophile, charges I deny. It also accuses me of being a hypocrite, which I acknowledge in general terms, because, well, who isn’t. The key thing I want people who encounter this report to keep in mind is that this is the “polite” face of an organized harassment campaign.&lt;/p&gt;&lt;p&gt;Most reasonable readers easily dismiss the report because it is rather transparent in its bad faith. However, someone who reads it in good faith, just trying to do their due diligence, might come away from it with some reasonable concerns. Consider the following quote from my long-deleted Reddit account, /u/sircmpwn:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I’m of the opinion that 14 year old girls should be required to have an IUD installed. Ten years of contraception that requires a visit to the doctor to remove prematurely.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;This comment was written 13 years ago, and I don’t stand by what I wrote. I was 19 at the time, and I was a moron. My mother had me when she was 23 years old, and the abuse I suffered at her hands during my childhood was severe, and I generalized this experience to all women. When I wrote this comment, I was one year removed from the abuse, living alone and in poverty, and early in a life-long process of coming to terms with the abuse and figuring out how to be a well-adjusted adult after 18 long years of abuse and isolation.&lt;/p&gt;&lt;p&gt;But an explanation is not an excuse. This comment was reprehensible, as were many of the awful ideas I held at the time. Many years later, I can recognize that this comment is misogynistic, denies the agency of children and women over their own bodies, disparages the many, many mothers who do a wonderful job raising children in difficult circumstances, and is based in argumentation which can reasonably be related to eugenics. This comment was just awful – there’s a reason this was deleted. I apologize to anyone who read it at the time, or comes across it now, and is justifiably insulted.&lt;/p&gt;&lt;p&gt;I don’t feel that it’s necessary to rebuke most of the report. But, there is a grain of truth in the report, the grain of truth that led me to retract my shitty Reddit comments and reflect on myself, and that grain of truth is this: in early adulthood, I was a huge asshole.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;I have had more than my fair share of harmful ignorance, bad takes, sexism and misogyny, transphobic and homophobic beliefs, and worse. Moreover, I have verbally abused many people and made many of my own arguments in bad faith to support bad conclusions. Some of the people who read this will recall having found themselves at the wrong end of my verbal abuse and harassment.&lt;/p&gt;&lt;p&gt;It’s important for me to take responsibility for this period of my life, and in dismissing bad faith criticisms of myself to carefully avoid dismissing good faith criticisms in the same fell swoop.&lt;/p&gt;&lt;p&gt;I’m not really sure how to deal with this part of my life appropriately.  I have apologized to a few people individually, but it’s not a scalable solution and with many people I have no business re-opening wounds to salve my own conscience. I can offer a general apology, and I will. I’ve never found the right moment to say it, but now will do: I apologise, sincerely, to everyone who I have harmed with verbal abuse and with hateful and problematic rhetoric. If you have had a bad experience or experiences with me, and there’s anything you want from me that can help you heal from that experience – a personal apology, for example – please reach out to me and ask.&lt;/p&gt;&lt;p&gt;That said, apologies alone aren’t enough. I believe in restorative justice, in growing and mending wounds and repairing harm done, and I set myself seriously to this task over many years. I have gone to therapy, spoken with close friends about it, and taken structural action as well: I have founded support groups and worked one-on-one with many of the people whose politics and behavior I object to. I want an amicable end to bigotry and bullying, for bigots and bullies like my former self to look forward to, to provide a path that doesn’t require them to double down. It’s not easy, and not everyone manages, but I have to look at myself and see the path I’ve taken and imagine that it’s possible, because what’s left for the likes of me if not?&lt;/p&gt;&lt;p&gt;This part of my past brings me a great deal of shame, and that shame motivates me to grow as a person. In a certain sense, it is an ironic, cruel privilege to have had so much cause to reflect on myself, to drive me to question myself and my ideas, and become a much better person with much more defensible ideas. It has driven me to study feminism, social justice, racial justice, intersectionality, LGBTQ theory, antifascism, and to find the intersections in my own life and strive to act out of a more legitimate sense of justice.&lt;/p&gt;&lt;p&gt;I’m often still a firebrand, but I’ve chosen much better hills to die on. My passion is invested in making a more just world, building safe and healthy communities, elevating my peers, and calling for justice and a just society. I have taken the lessons I have learned and tried to share them with other people, and to stand up for what I can now say I &lt;em&gt;know&lt;/em&gt; is right, both online and in real life. Through a process of learning, reflection, and humility, I acknowledge that I have done a lot harm in my youth. To repair this harm, I have committed myself to doing more than enough good now to make sure that the world is a better place when all is said and done. That’s what justice means to me when I turn my principles inwards and hold myself accountable.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;So where do we go from here?&lt;/p&gt;&lt;p&gt;The response to my progressive beliefs and activism is reactionary backlash, doxing, harassment, and death threats targeting me and my family, all of which is likely to escalate in response to this post, and none of which is defensible. On the other hand, I understand that the consequences for my own reactionary past is, in some cases, alienation – and, honestly, fair enough.&lt;/p&gt;&lt;p&gt;But I don’t want you to confuse my honest faults with the defamation and harassment I endure for standing up for my honest strengths. If you feel generous and optimistic about who I am today, and you recognize my growth, and wish for an ally in the fight for what’s right, your good faith and solidarity mean the world to me. I would appreciate it if you would express your support and rebuke harassment when you see it, and help keep me honest as I continue a life-long process of learning and growth.&lt;/p&gt;&lt;p&gt;If I’ve hurt you, and you want to seek reconciliation, I make myself available to you for that purpose. If I’ve hurt you, and you simply don’t care to be hurt again, I’m sorry – I understand where you’re coming from, and have made my peace with it.&lt;/p&gt;&lt;p&gt;Please send words of support and/or death threats to &lt;a href=&quot;mailto:drew@ddevault.org&quot; target=&quot;_blank&quot;&gt;drew@ddevault.org&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Thank you.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Addressing-harassment/</link>
        
        <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Addressing-harassment/</guid>
      </item>
    
      <item>
        
        
          <title>Rewrote my blog with Zine</title>
          <description>
            &lt;p&gt;15 years ago, on December 11th, 2010, at the bold age of 17, I wrote &lt;a href=&quot;https://web.archive.org/web/20120305160351/http://sircmpwn.blogspot.com/2010/12/everything-you-want-out-of-wp7.html&quot; target=&quot;_blank&quot;&gt;my first blog post&lt;/a&gt; on the wonders of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Windows_Phone_7&quot; target=&quot;_blank&quot;&gt;Windows Phone 7&lt;/a&gt; on Blogspot. I started blogging as a kid at the behest of a family friend at Microsoft, who promised she’d make sure I would become the youngest &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft_Most_Valuable_Professional&quot; target=&quot;_blank&quot;&gt;Microsoft MVP&lt;/a&gt; if I started blogging. That never came to pass, though, because as I entered adulthood and started to grow independent of my Microsoft-friendly family I quickly began down the path to the free and open source software community.&lt;/p&gt;&lt;p&gt;Early blog posts covered intriguing topics such as complaining about my parent’s internet filter, a horrible hack to “replace” the battery of a dead gameboy game, announcing my friend’s Minecraft guild had a new website (in PHP), and so on. After Blogspot, I moved to &lt;a href=&quot;https://jekyllrb.com/&quot; target=&quot;_blank&quot;&gt;Jekyll&lt;/a&gt; on GitHub pages, publishing &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/You-dont-need-jQuery/&quot;&gt;You don’t need jQuery&lt;/a&gt; in 2013. For a long time this was the oldest post on the site.&lt;/p&gt;&lt;p&gt;I’m pretty proud of my writing skills and have a solid grasp on who I am today, but the further back you go the worse my writing, ideas, values, and politics all get. I was growing up in front of the world on this blog, you know? It’s pretty embarassing to keep all of this old stuff around. But, I decided a long time ago to keep all of it up, so that people can understand where I’ve come from, and that everyone has to start somewhere.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;At some point – I’m not sure when – I switched from Jekyll to &lt;a href=&quot;https://gohugo.io/&quot; target=&quot;_blank&quot;&gt;Hugo&lt;/a&gt;, and I’ve stuck with it since. But lately I’ve been frustrated with it. I’d like my blog engine to remain relatively stable and simple, but Hugo is quite complex and over the past few years I’ve been bitten by a number of annoying and backwards-incompatible changes. And, as part of my efforts to remove vibe-coded software from my stack, I was disappointed to learn that &lt;a href=&quot;https://github.com/gohugoio/hugo/blob/842d8f105256c5656e7895ee61fa5b2dfe90a9e3/AGENTS.md&quot; target=&quot;_blank&quot;&gt;Hugo is being vibe coded now&lt;/a&gt;, and so rewriting my blog went onto the todo list.&lt;/p&gt;&lt;p&gt;Choosing the right static site generator (SSG) was a bit of a frustrating process. Other leading candidates, like Pelican or Zola, are also built from slop now. But a few months ago I found &lt;a href=&quot;https://zine-ssg.io/&quot; target=&quot;_blank&quot;&gt;Zine&lt;/a&gt;, and after further study I found it to be a pretty promising approach. Over the past few days I have rewritten my templates and ported in nearly 400 (jeesh) blog posts from my archives.&lt;/p&gt;&lt;p&gt;There’s a lot to like about Zine. I’m pretty intrigued by SuperHTML as a templating engine design – the templates are all valid HTML5 and use an interesting approach to conditions, loops, and interpolation. SuperMD has some interesting ideas, but I’m less sold on it. The Scripty language used for interpolation and logic is a bit iffy in terms of design – feels half baked. And the designers had some fun ideas, like &lt;a href=&quot;https://zine-ssg.io/log/&quot; target=&quot;_blank&quot;&gt;devlogs&lt;/a&gt;, which I feel are kind of interesting but tend to have an outsized influence on the design, more polished where the polish might have been better spent elsewhere. The development web server tends to hang fairly often and I’ve gotten it to crash with esoteric error messages every now and then.&lt;/p&gt;&lt;p&gt;But what can I say, it’s alpha software – I hope it will improve, and I’m betting that it will by migrating my blog. There’s no official LLM policy (&lt;a href=&quot;https://github.com/kristoff-it/zine/issues/200&quot; target=&quot;_blank&quot;&gt;yet&lt;/a&gt;) and I hope they will end up &lt;a href=&quot;https://github.com/kristoff-it/zine/issues/199&quot; target=&quot;_blank&quot;&gt;migrating to Codeberg&lt;/a&gt;, and using Discord for project communication is &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/Dont-use-Discord-for-FOSS/&quot;&gt;not something I appreciate&lt;/a&gt;, but maybe they’ll change their tune eventually.&lt;/p&gt;&lt;p&gt;In the meantime, I took the opportunity to clean up the code a bit. The canonical links have gone through several rounds of convention and backwards compatibility, and I have replaced them with a consistent theme and set up redirects. I probably broke everyone’s feed readers when rolling these changes out, and I apologise for that. I have gone through the backlog and updated a number of posts as best as I can to account for bitrot, but there are still a lot of broken videos and links when you get far enough back – hopefully I can restore some of that given enough time.&lt;/p&gt;&lt;p&gt;I’ve also gone ahead and imported the &lt;em&gt;really old&lt;/em&gt; stuff from Blogspot. The whole lot is garbage, but if you’re curious to see where I started out, these old posts are more accessible now.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Rewrite-with-zine/</link>
        
        <pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Rewrite-with-zine/</guid>
      </item>
    
      <item>
        
          <title>🚀 Signal boost: The Future of Everything is Lies, I Guess</title>
          <description>
            <p>🚀 Signal boost: someone else's article that I think you should read</p>
            <p>
              <a href="https://aphyr.com/posts/411-the-future-of-everything-is-lies-i-guess">The Future of Everything is Lies, I Guess</a>
            </p>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Future-of-everything-is-lies/</link>
        
        
        <pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Future-of-everything-is-lies/</guid>
      </item>
    
      <item>
        
        
          <title>tar: a slop-free alternative to rsync</title>
          <description>
            &lt;p&gt;So apparently &lt;a href=&quot;https://codeberg.org/small-hack/open-slopware&quot; target=&quot;_blank&quot;&gt;rsync is slop&lt;/a&gt; now. When I heard, I wanted to drop a quick note on my blog to give an alternative: tar. It doesn’t do everything that rsync does, in particular identifying and skipping up-to-date files, but tar + ssh can definitely accomodate the use case of “transmit all of these files over an SSH connection to another host”.&lt;/p&gt;&lt;p&gt;Consider the following:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;tar -cz public | ssh example.org tar -C /var/www -xz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will transfer the contents of &lt;code&gt;./public/&lt;/code&gt; to &lt;code&gt;example.org:/var/www/public/&lt;/code&gt;, preserving file ownership and permissions and so on, with gzip compression. This is roughly the equivalent of:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;rsync -a public example.org:/var/www/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here’s the same thing with a lightweight progress display thanks to &lt;a href=&quot;https://ivarch.com/programs/pv.shtml&quot; target=&quot;_blank&quot;&gt;pv&lt;/a&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;tar -cz public | pv | ssh example.org tar -C /var/www -xz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I know tar is infamously difficult to remember how to use. Honestly, I kind of feel that way about rsync, too. But, here’s a refresher on the most important options for this use-case. To use tar, pick one of the following modes with the command line flags:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;-c&lt;/code&gt;: create an archive&lt;/li&gt;&lt;li&gt;&lt;code&gt;-x&lt;/code&gt;: extract an archive&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Use &lt;code&gt;-f &amp;lt;filename&amp;gt;&lt;/code&gt; to read from or write to a file. Without this option, tar uses stdin and stdout, which is what the pipelines above rely on. Use &lt;code&gt;-C &amp;lt;path&amp;gt;&lt;/code&gt; to change directories before archiving or extracting files. Use &lt;code&gt;-z&lt;/code&gt; to compress or decompress the tarball with gzip. That’s basically everything you need to know about tar to use it for this purpose (and for most purposes, really).&lt;/p&gt;&lt;p&gt;With rsync, to control where the files end up you have to memorize some rules about things like whether or not each path has a trailing slash. With tar, the rules are, in my opinion, a bit easier to reason about. The paths which appear on the command line of &lt;code&gt;tar -c&lt;/code&gt; are the paths that &lt;code&gt;tar -x&lt;/code&gt; will open to create those files. So if you run this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;tar -c public/index.html public/index.css
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You get a tarball which has &lt;code&gt;public/index.html&lt;/code&gt; and &lt;code&gt;public/index.css&lt;/code&gt; in it.&lt;/p&gt;&lt;p&gt;When &lt;code&gt;tar -x&lt;/code&gt; opens this tarball, it will call &lt;code&gt;fopen(&amp;quot;public/index.html&amp;quot;, &amp;quot;w&amp;quot;)&lt;/code&gt;. So, whatever tar’s working directory is, it will extract this file into &lt;code&gt;./public/index.html&lt;/code&gt;. You can change the working directory before tar does this, on either end, by passing &lt;code&gt;tar -C &amp;lt;path&amp;gt;&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;Of course, you could just use scp, but this fits into my brain better.&lt;/p&gt;&lt;p&gt;I hope that’s useful to you!&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: As a fun little challenge I wrapped up this concept in a small program that makes it easier to use:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://git.sr.ht/~sircmpwn/xtar&quot; target=&quot;_blank&quot;&gt;https://git.sr.ht/~sircmpwn/xtar&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;xtar -R /var/www me@example.org public/*
&lt;/code&gt;&lt;/pre&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/rsync-without-rsync/</link>
        
        <pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/rsync-without-rsync/</guid>
      </item>
    
      <item>
        
        
          <title>A eulogy for Vim</title>
          <description>
            &lt;p&gt;Vim is important to me. I’m using it to write the words you’re reading right now. In fact, almost every word I have ever committed to posterity, through this blog, in my code, all of the docs I’ve written, emails I’ve sent, and more, almost all of it has passed through Vim.&lt;/p&gt;&lt;p&gt;My relationship with the software is intimate, almost as if it were an extra limb. I don’t think about what I’m doing when I use it. All of Vim’s modes and keybindings are deeply ingrained in my muscle memory. Using it just feels like my thoughts flowing from my head, into my fingers, into a Vim-shaped extension of my body, and out into the world. The unique and profound nature of my relationship with this software is not lost on me.&lt;/p&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://redacted.moe/f/66af7169.jpg&quot;&gt;
&lt;figcaption&gt;A picture of my right hand, with the letters “hjkl” tattooed on the wrist&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p&gt;I didn’t know Bram Moolenaar. We never met, nor exchanged correspondence. But, after I moved to the Netherlands, Bram’s home country, in a strange way I felt a little bit closer to him. He passed away a couple of years after I moved here, and his funeral was held not far from where I lived at the time. When that happened, I experienced an odd kind of mourning. He was still young, and he had affected my own life profoundly. He was a stranger, and I never got to thank him.&lt;/p&gt;&lt;p&gt;The people he entrusted Vim to were not strangers, they knew Bram and worked with him often, and he trusted them. It’s not my place to judge their work as disrespectful to his memory, or out of line with what he would have wanted. Even knowing Bram only through Vim, I know he and I disagreed often. However, the most personal thing I know about Bram, and that many people remember about him, was his altruistic commitment to a single cause: providing education and healthcare to Ugandan children in need. So, at the very least, I know that he cared.&lt;/p&gt;&lt;p&gt;I won’t speculate on how he would have felt about generative AI, but I can say that GenAI is something I care about. It causes a lot of problems for a lot of people. It drives rising energy prices in poor communities, disrupts wildlife and fresh water supplies, increases pollution, and stresses global supply chains. It re-enforces the horrible, dangerous working conditions that miners in many African countries are enduring to supply rare metals like Cobalt for the billions of new chips that this boom demands. And at a moment when the climate demands immediate action to reduce our footprint on this planet, the AI boom is driving data centers to consume a full 1.5% of the world’s total energy production in order to eliminate jobs and replace them with a robot that lies.&lt;/p&gt;&lt;p&gt;Meanwhile, this whole circus is enabling the rising tide of fascism around the world, not only by supercharging propaganda but also by directly financially supporting fascist policies and policymakers.  All this to enrich the few, centralize power, reduce competition, and underwrite an enormous bubble that, once it bursts, will ruin the lives of millions of the world’s poor and marginalized classes.&lt;/p&gt;&lt;p&gt;I don’t think it’s &lt;em&gt;cute&lt;/em&gt; that someone &lt;a href=&quot;https://www.vim.org/vim-9.2-released.php#:~:text=The%20maturity,Copilot&quot; target=&quot;_blank&quot;&gt;vibe coded “battleship” in VimScript&lt;/a&gt;. I think it’s more important that we stop collectively pretending that we don’t understand how awful all of this is. I don’t want to use software which has slop in it. I do what I can to avoid it, and sadly even Vim now comes under scrutiny in that effort as both &lt;a href=&quot;https://github.com/vim/vim/issues/18800#issuecomment-3568099543&quot; target=&quot;_blank&quot;&gt;Vim&lt;/a&gt; and &lt;a href=&quot;https://github.com/neovim/neovim/pulls?q=label%3A%22AI%20assisted%20%F0%9F%A4%96%22&quot; target=&quot;_blank&quot;&gt;NeoVim&lt;/a&gt; are relying on LLMs to develop the software.&lt;/p&gt;&lt;p&gt;So this is how, a few years after Bram’s passing, I find myself in another unusual moment of mourning: mourning Vim itself. What an odd feeling.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;To keep my conscience clear, and continue to enjoy the relationship I have with this amazing piece of software, I have forked Vim. You can find my fork here: &lt;a href=&quot;https://sr.ht/~sircmpwn/vim-classic/&quot; target=&quot;_blank&quot;&gt;Vim Classic&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The choice of which version to use as the basis for a fork was a bit difficult. The last version of Vim released during Bram’s lifetime was Vim 9.0. To me, that seems like a good starting point. But, in the end, I chose to base my fork on Vim 8.2.0148 instead. Patch 148 was the patch immediately prior to the introduction of Vim9 Script, Vim 9.0’s flagship feature.&lt;/p&gt;&lt;p&gt;I’m sure Bram worked hard on Vim9 script, and I want to honor that. At the same time, it was still very new when he passed away, and the job of fully realizing its potential was handed down to the current maintainers. Its absence from Vim Classic is an honest assessment that I don’t have the time or energy to try to sort out all of the work on Vim9 which followed in Bram’s footsteps, and decide what stays and what goes. It seems like a useful line to draw in the sand: Vim Classic is compatible with legacy plugins, but not the newfangled stuff.&lt;/p&gt;&lt;p&gt;Since forking from this base, I have backported a handful of patches, most of which address CVEs discovered after this release, but others which address minor bug fixes. I also penned a handful of original patches which bring the codebase from this time up to snuff for building it on newer toolchains. My old vimrc &lt;a href=&quot;https://paste.sr.ht/~sircmpwn/bf58300e4b11542b17eeece9a3671656172f86c8&quot; target=&quot;_blank&quot;&gt;needed very few changes&lt;/a&gt; to work on this version of Vim, and all of my plugins work &lt;del&gt;with the exception of fzf.vim, which I would like to fix at some point (or maybe a sympathetic reader is willing to work on backporting the necessary changes)&lt;/del&gt;. &lt;em&gt;Thanks, dzwdz, for figuring out the issues with fzf.vim!&lt;/em&gt;&lt;/p&gt;&lt;p&gt;I plan to use this for a little while, look for sore points and rough edges, collect feedback from other users, and then tag a little release soon. Going forward, maintenance will be slow and quiet. I welcome your patches, particularly to help with maintaining the runtime scripts, stuff like making sure new language features end up in the syntax files. I’ll also gladly accept new bug fixes, and maybe even a few new features if a good case can be made for including them. Backporting small patches from Vim upstream will be considered, with extra scrutiny.&lt;/p&gt;&lt;p&gt;In short, I invite you to use Vim Classic, if you feel the same way as me, and to maintain it with me, contributing the patches you need to support your own use cases.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Forking-vim/</link>
        
        <pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Forking-vim/</guid>
      </item>
    
      <item>
        
        
          <title>The cults of TDD and GenAI</title>
          <description>
            &lt;p&gt;I’ve gotten a lot of flack throughout my career over my disdain towards test-driven development (TDD). I have met a lot of people who swear by it! And, I have also met a lot of people who insisted that I adopt it, too, often with the implied threat of appealing to my boss if appealing to me didn’t work.&lt;/p&gt;&lt;p&gt;The basic premise of TDD, for those unaware, is that one &lt;em&gt;first&lt;/em&gt; writes a unit test that verifies the expected behavior for some code they want to write, observes the new test fail, and &lt;em&gt;then&lt;/em&gt; one writes the implementation, iterating on it until the test passes. The advantage of this approach is, first, to ensure that your codebase is adequately covered by testing, and, second, to provide you a rapid feedback loop to assist in your work.&lt;/p&gt;&lt;p&gt;I have often found elements of TDD to be quite useful. Using a unit test or something similar to provide an efficient rapid feedback loop is a technique which I have employed many times. However, I am and have always been skeptical of the cult which arises around automated software testing and in particular TDD. A lot of people adopt an unquestioning loyalty to TDD, building tools and practices and &lt;span class=&quot;rainbow&quot;&gt;vibes&lt;/span&gt; around the idea. It’s often too much.&lt;/p&gt;&lt;style&gt;
.rainbow {
  font-weight: bold;
  background-image: linear-gradient(to left, violet, indigo, blue, green, yellow, orange, red);
  background-clip: text;
  background-size: 800% 800%;
  animation: rainbow 8s ease infinite;
  -webkit-text-fill-color: transparent;
}

@keyframes rainbow { 
    0%{background-position:0% 50%}
    50%{background-position:100% 25%}
    100%{background-position:0% 50%}
}
&lt;/style&gt;
&lt;p&gt;The flaw with TDD is that, while it ensures that you have a test for every function you write, it also exerts an influence on the tested codebase, shaping the code to be as “testable” as possible, which only sometimes leads to better code. Moreover, TDD has no means of ensuring that the behavior that your tests verify is the &lt;em&gt;right&lt;/em&gt; behavior for your software to have. Software with a thousand passing tests and 100% test coverage could be doing whatever the user or the business or whatever needs it to, but it could just as easily not meet the requirements in spite of those comprehensive tests – and in any case it gives you confidence in your work, which may or may not be misplaced.&lt;/p&gt;&lt;p&gt;The cult of TDD exploits the fact that TDD is very good at making you feel like a good, diligent programmer. That rapid feedback loop not only assists in your work but also enables a powerful dopamine cycle. Add into that a culture of aiming for 100% coverage and you get the bonus hit from watching a number go up. Buy into the whole cult and you get a slew of new README badges to keep green, and lots of cool charts and numbers, hundreds of blinkenlights on your test suite, a bunch of fun Slack messages from Jenkins, and a cute cardboard cut-out of the CTO to keep in the cubicle of whoever last broke the build.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; All of this pomp and circumstance is &lt;em&gt;fun&lt;/em&gt; and it feels &lt;em&gt;good&lt;/em&gt; and because it’s all in the name of testing (which is good, right?) it makes you feel like a &lt;em&gt;good programmer&lt;/em&gt; even if none of it necessarily contributes to the results your team is supposed to achieve.&lt;/p&gt;&lt;p&gt;All of these flashy traits allow one to adopt the aesthetics of good, diligent software engineering work regardless of how good the work actually is. It’s an intoxicating way to work, especially for someone who struggles with software engineering. It makes you feel like a good programmer and gives you data to “back it up”, stuff you can cite at your performance review. But, software development is really hard, and TDD doesn’t go that far to making it easier. All of the really hard problems are not solved by TDD.&lt;/p&gt;&lt;p&gt;I suspect that coding agents are tapping into the same emotional and psychological reflexes that the cult of TDD gives us an early example of. Software development is still hard, but using an agent allows someone who’s just “so-so” at programming to feel the rush of being great at programming, a rush they might have been chasing for their entire career, and I bet the rush is so much sweeter than watching the lights on your test suite runs tick over to green.&lt;/p&gt;&lt;p&gt;A coding agent permits one to feel as if they have the raw productive power a great programmer can tap into. One may feel like the “10× programmers” they’ve sat next to in the open office for ten years, whose skills they never quite achieved themselves. It scales up the raw output by a factor of ten, and lets one assemble apparently great works in a fraction of the time, solo-coding great cathedrals in the time it used to take them to build, with great difficulty, a homely shack.&lt;/p&gt;&lt;p&gt;But, if it seems too good to be true…&lt;/p&gt;&lt;p&gt;Those cathedrals are not the great works they appear to be. The construction is shoddy and the architecture nonsensical and a great programmer hand-writing code will still outperform any mediocre programmer once the gleam wears off of their respective works and the bugs and problems start showing up. The project has 99.9% coverage on a thousand beautiful green tests, and, inside, the foundations are still rotten.&lt;/p&gt;&lt;p&gt;God, though, I understand why so many people are chasing that dragon, even though it’s going to ruin their careers, and maybe even their lives. I get why people fall for this, in spite of the externalities that they must know of by now. In spite of the colossal waste, the loss of fresh water resources, the fact that AI datacenters are the fastest growing source of carbon emissions, the people suffering sky-rocketing power bill and rolling outages near these new datacenters, the reams and reams of fascist propaganda these machines are producing to tear our society apart, the corruption, the market manipulation, the plain and simple fact that the ultimate purpose of these tools is to put their users &lt;em&gt;out of a job entirely&lt;/em&gt;… well, once you finally get a taste of what it feels like to be &lt;em&gt;great&lt;/em&gt;… I suppose all of those problems seem so far away.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Cult-of-TDD-and-LLMs/</link>
        
        <pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Cult-of-TDD-and-LLMs/</guid>
      </item>
    
      <item>
        
        
          <title>Redesigning my microkernel from the ground up</title>
          <description>
            &lt;p&gt;&lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/helios/&quot;&gt;As you may recall&lt;/a&gt;, circa 2022-2023 I was working on a microkernel written in Hare named Helios. Helios was largely inspired by and modelled after the design of &lt;a href=&quot;https://sel4.systems/&quot; target=&quot;_blank&quot;&gt;seL4&lt;/a&gt; and was my first major foray into modern OS development that was serious enough to get to a somewhat useful state of functionality, with drives for some real hardware, filesystems, and an environment for running user programs of a reasonable level of sophistication.&lt;/p&gt;&lt;p&gt;Helios development went strong for a while but eventually it slowed and eventually halted in a state of design hell. Since Helios was my first major OS project at this scale and with this much ambition, the design and implementation ended up with a lot of poor assumptions that made it a pretty weak foundation for building a complete OS upon. In late 2023 I more or less gave up on it and moved my OS development work out of the realm of writing code and back into the realm of thinking really hard about how to design operating systems.&lt;/p&gt;&lt;p&gt;What followed was a couple of years of design thinking, developing small scale design experiments, and doing deeper research into prior art – reading papers and studying existing kernels. It was also during this period that I wrote &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/Bunnix/&quot;&gt;Bunnix&lt;/a&gt;, a working Unix clone, motivated in part by a desire to gain some first-hand experience working in the design and implementation of Unix-style operating systems – a fertile environment for learning a lot of the nuts and bolts of OS implementations by working against a complete and proven design.&lt;/p&gt;&lt;p&gt;In August I was finally prepared to have another go. I decided to start over from scratch, importing and adapting and rewriting code from Helios and Bunnix on an as-needed basis to speed things up, and writing from scratch anything where the lessons learned in hindsight outweighed the benefits of adapting existing code.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;The result is &lt;a href=&quot;https://git.sr.ht/~sircmpwn/hermes&quot; target=&quot;_blank&quot;&gt;Hermes&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Hermes has not yet reached feature parity with Helios, lacking some IPC features and an aarch64 port, but already it’s significantly more robust and thoughtfully designed than Helios.&lt;/p&gt;&lt;p&gt;The big glitzy feature that most obviously distinguishes Hermes from Helios is that Hermes supports symmetric multiprocessing (SMP), which is to say, running on multiple CPU cores. This time around, I finally listened to the advice I’d been hearing in osdev circles for years and implemented SMP as early as possible to avoid dealing with tons of problems adding multiprocessing to an otherwise mature kernel.&lt;/p&gt;&lt;p&gt;The multicore scheduler at the heart of Hermes is surprisingly simple, actually. It uses relatively ordinary per-CPU run queues. Each new task, once scheduleable, is scheduled, in order of preference, on (1) the CPU matching its affinity, (2) any currently idle CPU, or (3) a random CPU. If a CPU would idle, it first tries to &lt;a href=&quot;https://en.wikipedia.org/wiki/Work_stealing&quot; target=&quot;_blank&quot;&gt;steal&lt;/a&gt; a pending task from another CPU. The most important parts of the scheduler are less than 200 lines of code (&lt;a href=&quot;https://git.sr.ht/~sircmpwn/hermes/tree/main/item/sched/sched.ha&quot; target=&quot;_blank&quot;&gt;[1]&lt;/a&gt;, &lt;a href=&quot;https://git.sr.ht/~sircmpwn/hermes/tree/main/item/sched/runq.ha&quot; target=&quot;_blank&quot;&gt;[2]&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;The less obviously impressive improvements from Helios to Hermes are numerous. The syscall and IPC ABIs were rethought from the ground up – one of the major goals of the redesign. I also moved from an seL4-style capability derivation graph – which is quite complex to implement and reason about – to reference counting to manage the lifetimes of kernel resources. Resource management in general is much simpler and should improve the performance of the kernel substantially.&lt;/p&gt;&lt;p&gt;I’ve also taken a much different approach to organizing the code, to allow the kernel and many of the things around it – its bootloaders and the userspace that runs the kernel test suite – share a lot more code than was possible in Helios, making a lot of the non-kernel code a lot easier to write and maintain.&lt;/p&gt;&lt;p&gt;The userspace is also a substantial upgrade in design from Helios, or at least I hope it will be when more of it takes shape. Rather than developing a specialized Hare standard library, independent of the upstream Hare standard library, for writing drivers and low-level services, I have started with a port of the upstream Hare standard library and built low-level driver and service support libraries around it. The userspace is streamlined considerably by doing so, giving these low-level components access to a more comfortable and featureful programming environment and reducing the complexity of the system by making various components more uniform in their design.&lt;/p&gt;&lt;p&gt;Finally, I’ve taken a much more serious approach to testing Hermes and making it as robust and complete as possible in real-world use-cases. I borrowed the EFI bootloader from Bunnix and repurposed it for Hermes, opening up a lot of newer hardware, and I have written a more comprehensive test suite and run and verified it on much more real-world hardware. I have about ten devices which all (consistently!) pass the Hermes test suite. Feel free to &lt;a href=&quot;https://redacted.moe/dl/69a8581c.iso&quot; target=&quot;_blank&quot;&gt;try it out on yours&lt;/a&gt; as well and let me know how it goes!&lt;/p&gt;&lt;p&gt;That’s all there is to say for now, but I hope to keep you in the loop as I continue working on this for a while. The userspace is starting to take shape and soon(™) I hope to start building out block device drivers, some filesystems, and enough support code to run a shell and a handful of useful programs. In the meantime, feel free to poke around the code and play around with it. There is also some &lt;a href=&quot;https://hermes.ares-os.org/&quot; target=&quot;_blank&quot;&gt;early documentation&lt;/a&gt; available for you to read if you wish. I’m hanging out in #ares on Libera Chat if you have any questions.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Hermes-from-the-ground-up/</link>
        
        <pubDate>Mon, 12 Jan 2026 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Hermes-from-the-ground-up/</guid>
      </item>
    
      <item>
        
        
          <title>OpenAI employees… are you okay?</title>
          <description>
            &lt;p&gt;You might have seen &lt;a href=&quot;https://edition.cnn.com/2025/11/06/us/openai-chatgpt-suicide-lawsuit-invs-vis&quot; target=&quot;_blank&quot;&gt;an article&lt;/a&gt; making the rounds this week, about a young man who ended his life after ChatGPT encouraged him to do so. The chat logs are really upsetting.&lt;/p&gt;&lt;p&gt;Someone two degrees removed from me took their life a few weeks ago. A close friend related the story to me, about how this person had approached their neighbor one evening to catch up, make small talk, and casually discussed their suicidal ideation at some length. At the end of the conversation, they asked to borrow a rope, and their neighbor agreed without giving the request any critical thought. The neighbor found them the next morning.&lt;/p&gt;&lt;p&gt;I didn’t know the deceased, nor their neighbor, but I’m close friends with someone who knew both. I found their story deeply chilling – ice runs through my veins when I imagine how the neighbor must have felt. I had a similar feeling upon reading this article, wondering how the people behind ChatGPT and tools like it are feeling right now.&lt;/p&gt;&lt;p&gt;Two years ago, someone I knew personally took their life as well. I was not friendly with this person – in fact, we were on very poor terms. I remember at the time, I had called a crisis hotline just to ask an expert for advice on how to break this news to other people in my life, many of whom were also on poor terms with a person whose struggles to cope with their mental health issues caused a lot of harm to others.&lt;/p&gt;&lt;p&gt;None of us had to come to terms with any decisions with the same gravity as what that unfortunate neighbor had to face. None of us were ultimately responsible for this person’s troubles or were the impetus for what happened. Nonetheless, the uncomfortable and confronting feelings I experienced in the wake of that event perhaps give me some basis for empathy and understanding towards the neighbor, or for OpenAI employees, and others who find themselves in similar situations.&lt;/p&gt;&lt;p&gt;If you work on LLMs, well… listen, I’ve made my position as an opponent of this technology clear. I feel that these tools are being developed and deployed recklessly, and I believe tragedy is the inevitable result of that recklessness. If you confide in me, I’m not going to validate your career choice. But maybe that’s not necessarily a bad quality to have in a confidant? I still feel empathy towards you and I recognize your humanity and our need to acknowledge each other as people.&lt;/p&gt;&lt;p&gt;If you feel that I can help, I encourage you to reach out. I will keep our conversation in confidence, and you can reach out anonymously if that makes you feel safer. I’m a good listener and I want to know how you’re doing. &lt;a href=&quot;mailto:drew@ddevault.org&quot; target=&quot;_blank&quot;&gt;Email me&lt;/a&gt;.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;If you’re experiencing a crisis, &lt;a href=&quot;https://findahelpline.com/&quot; target=&quot;_blank&quot;&gt;24-hour support is available&lt;/a&gt; from real people who are experts in getting you the help you need. Please consider reaching out. All you need to do is follow the link.&lt;/em&gt;&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/OpenAI-employees-are-you-okay/</link>
        
        <pubDate>Sat, 08 Nov 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/OpenAI-employees-are-you-okay/</guid>
      </item>
    
      <item>
        
        
          <title>What&apos;s up with FUTO?</title>
          <description>
            &lt;p&gt;Some time ago, I noticed some new organization called &lt;a href=&quot;https://futo.org/&quot; target=&quot;_blank&quot;&gt;FUTO&lt;/a&gt; popping up here and there. I’m always interested in seeing new organizations that fund open source popping up, and seeing as they claim several notable projects on their roster, I explored their website with interest and gratitude. I was first confused, and then annoyed by what I found. Confused, because their website is littered with &lt;a href=&quot;https://futo.org/about/what-is-futo/&quot; target=&quot;_blank&quot;&gt;bizzare manifestos&lt;/a&gt;,&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; and ultimately annoyed because they were playing fast and loose with the term “open source”, using it to describe commercial source-available software.&lt;/p&gt;&lt;p&gt;FUTO eventually clarified their stance on “open source”, first through &lt;a href=&quot;https://futo.org/open-source-definition/&quot; target=&quot;_blank&quot;&gt;satire&lt;/a&gt; and then &lt;a href=&quot;https://futo.org/about/futo-statement-on-opensource/&quot; target=&quot;_blank&quot;&gt;somewhat more soberly&lt;/a&gt;, perpetuating the &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2022/09/16/Open-source-matters.html&quot; target=&quot;_blank&quot;&gt;self-serving myth&lt;/a&gt; that &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2021/01/20/FOSS-is-to-surrender-your-monopoly.html&quot; target=&quot;_blank&quot;&gt;“open source” software can privilege one party over anyone else&lt;/a&gt; and &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2022/03/01/Open-source-is-defined-by-the-OSD.html&quot; target=&quot;_blank&quot;&gt;still be called open source&lt;/a&gt;. I mentally categorized them as problematic but hoped that their donations or grants for genuinely open source projects would do more good than the harm done by this nonsense.&lt;/p&gt;&lt;p&gt;By now I’ve learned better. &lt;strong&gt;tl;dr&lt;/strong&gt;: FUTO is not being honest about their “grant program”, they don’t have permission to pass off these logos or project names as endorsements, and they collaborate with and promote mask-off, self-proclaimed fascists.&lt;/p&gt;&lt;p&gt;An early sign that something is off with FUTO is in that “sober” explanation of their “disdain for OSI approved licenses”, where they make a point of criticizing the Open Source Initiative for banning Eric S. Raymond (aka ESR) from their mailing lists, citing right-wing reactionary conspiracy theorist Bryan Lunduke’s blog post on the incident. Raymond is, as you may know, one of the founders of OSI and a bigoted asshole. He was banned from the mailing lists, not because he’s a bigoted asshole, but because &lt;a href=&quot;https://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2020-February/021328.html&quot; target=&quot;_blank&quot;&gt;he was being a toxic jerk&lt;/a&gt; &lt;em&gt;on the mailing list in question&lt;/em&gt;. Healthy institutions outgrow their founders. That said, FUTO’s citation and perspective on the ESR incident could be generously explained as a simple mistake, and we should probably match generosity with generosity given their prolific portfolio of open source grants.&lt;/p&gt;&lt;p&gt;I visited FUTO again quite recently as part of my research on &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2025/09/24/2025-09-24-Cloudflare-and-fascists.html&quot; target=&quot;_blank&quot;&gt;Cloudflare’s donations to fascists&lt;/a&gt;, and was pleased to discover that this portfolio of grants had grown immensely since my last visit, and included a number of respectable projects that I admire and depend on (and some projects I don’t especially admire, hence arriving there during my research on FOSS projects run by fascists). But something felt fishy about this list – surely I would have heard about it if someone was going around giving big grants to projects like ffmpeg, VLC, musl libc, Tor, Managarm, Blender, NeoVim – these projects have a lot of overlap with my social group and I hadn’t heard a peep about it.&lt;/p&gt;&lt;p&gt;So I asked Rich Felker, the maintainer of &lt;a href=&quot;https://musl.libc.org/&quot; target=&quot;_blank&quot;&gt;musl libc&lt;/a&gt;, about the FUTO grant, and &lt;strong&gt;he didn’t know anything about it&lt;/strong&gt;. Rich and I spoke about this for a while and eventually Rich uncovered a transaction in his &lt;a href=&quot;https://github.com/sponsors/richfelker&quot; target=&quot;_blank&quot;&gt;GitHub sponsors&lt;/a&gt; account from FUTO: a one-time donation of $1,000. This payment circumvents musl’s established process for donations from institutional sponsors. The donation page that FUTO used includes this explanation: “This offer is for individuals, and may be available to small organizations on request. Commercial entities wishing to be listed as sponsors should inquire by email.” It’s pretty clear that there are special instructions for institutional donors who wish to receive musl’s endorsement as thanks for their contribution.&lt;/p&gt;&lt;p&gt;The extent of the FUTO “grant program”, at least in the case of musl libc, involved ignoring musl’s established process for institutional sponsors, quietly sending a modest one-time donation to one maintainer, and then plastering the logo of a well-respected open source project on a list of “grant recipients” on their home page. Rich eventually &lt;a href=&quot;https://hachyderm.io/@dalias/115259232020176340&quot; target=&quot;_blank&quot;&gt;posted on Mastodon&lt;/a&gt; to clarify that the use of the musl name and logo here was unauthorized.&lt;/p&gt;&lt;p&gt;I also asked someone I know on the ffmpeg project about the grant that they had received from FUTO and she didn’t know anything about it, either. Here’s what she said:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I’m sure we did not get a grant from them, since we tear each other to pieces over everything, and that would be enough to start a flame war. Unless some dev independently got money from them to do something, but I’m sure that we as a project got nothing. The only grant we’ve received is from the &lt;a href=&quot;https://www.sovereign.tech/&quot; target=&quot;_blank&quot;&gt;STF&lt;/a&gt; last year.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Neovim is another project FUTO lists as a grant recipient, and they also have a &lt;a href=&quot;https://neovim.io/sponsors/&quot; target=&quot;_blank&quot;&gt;separate process for institutional sponsors&lt;/a&gt;. I didn’t reach out to anyone to confirm, but FUTO does not appear on the sponsor list so presumably the M.O. is the same. This is also the case for &lt;a href=&quot;https://www.wireshark.org/members&quot; target=&quot;_blank&quot;&gt;Wireshark&lt;/a&gt;, &lt;a href=&quot;https://conduit.rs/#donate&quot; target=&quot;_blank&quot;&gt;Conduit&lt;/a&gt;, and &lt;a href=&quot;https://www.kicad.org/sponsors/sponsors/&quot; target=&quot;_blank&quot;&gt;KiCad&lt;/a&gt;. GrapheneOS is listed prominently as well, but &lt;a href=&quot;https://grapheneos.social/@GrapheneOS/113443396794247106&quot; target=&quot;_blank&quot;&gt;that doesn’t seem to have worked out very well for them&lt;/a&gt;. Presumably ffmpeg received a similar quiet donation from FUTO, rather than something more easily recognizable as a grant.&lt;/p&gt;&lt;p&gt;So, it seems like FUTO is doing some shady stuff and putting a bunch of notable FOSS projects on their home page without good reason to justify their endorsement. Who’s behind all of this?&lt;/p&gt;&lt;p&gt;As far as I can tell, the important figures are Eron Wolf&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-2&quot; id=&quot;fn-2-ref-1&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; and Louis Rossmann.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-3&quot; id=&quot;fn-3-ref-1&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; Wolf is the founder of FUTO – a bunch of money fell into his lap from founding Yahoo Games before the bottom fell out of Yahoo, and he made some smart investments to grow his wealth, which he presumably used to fund FUTO. Rossmann is a notable figure in the right to repair movement, with a large following on YouTube, who joined FUTO a year later and ultimately moved to Austin to work more closely with them. His established audience and reputation provides a marketable face for FUTO. I had heard of Rossmann prior to learning about FUTO and held him in generally good regard, despite little specific knowledge of his work, simply because we have a common cause in right to repair.&lt;/p&gt;&lt;p&gt;I hadn’t heard of Wolf before looking into FUTO. However, in the course of my research, several people tipped me off to his association with Curtis Yarvin (aka moldbug), and in particular to the use of FUTO’s platform and the credentials of Wolf and Rossman to platform and promote Yarvin. Curtis Yarvin is a full-blown, mask-off, self-proclaimed fascist. A negligible amount of due diligence is required to verify this, but here’s one source from Politico in January 2025:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I’ve interacted with Vance once since the election. I bumped into him at a party. He said, “Yarvin, you reactionary fascist.” I was like, “Thank you, Mr. Vice President, and I’m glad I didn’t stop you from getting elected.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;– &lt;a href=&quot;https://www.politico.com/news/magazine/2025/01/30/curtis-yarvins-ideas-00201552&quot; target=&quot;_blank&quot;&gt;Ian Ward for Politico&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Vice President Vance and numerous other figures in the American right have cited Yarvin as a friend and source of inspiration in shaping policy.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-4&quot; id=&quot;fn-4-ref-1&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; Among his many political positions, Yarvin has proclaimed that black people are genetically predisposed to a lower IQ than white people, and moreover suggests that black people are inherently suitable for enslavement.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-5&quot; id=&quot;fn-5-ref-1&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;Yarvin has appeared on FUTO’s social media channels, in particular in an interview published on &lt;a href=&quot;https://peertube.futo.org/w/eSzKtjupL928QzxPXC5k2R&quot; target=&quot;_blank&quot;&gt;PeerTube&lt;/a&gt; and &lt;a href=&quot;https://odysee.com/@FUTO:e/curtisyarvin:2&quot; target=&quot;_blank&quot;&gt;Odysee&lt;/a&gt;, the latter a platform controversial for its role in spreading hate speech and misinformation.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-6&quot; id=&quot;fn-6-ref-1&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; Yarvin &lt;a href=&quot;https://www.youtube.com/watch?v=iFn5t4etqNg&quot; target=&quot;_blank&quot;&gt;also appeared on stage&lt;/a&gt; to “debate” Louis Rossmann in June 2022, in which Yarvin is permitted to speak at length with minimal interruptions or rebuttals to argue for an authoritarian techno-monarchy to replace democracy.&lt;/p&gt;&lt;p&gt;Rossmann caught some flack for this “debate” and gave a milquetoast response in &lt;a href=&quot;https://www.youtube.com/watch?v=iFn5t4etqNg&amp;lc=Ugx7ba2sI30CGEylY_R4AaABAg&quot; target=&quot;_blank&quot;&gt;a YouTube comment&lt;/a&gt; on this video, explaining that he agreed to this on very short notice as a favor to Eron, who had donated “a million” to Rossmann’s non-profit prior to bringing Rossmann into the fold at FUTO. Rossmann does rebuke Yarvin’s thesis, albeit buried in this YouTube comment rather than when he had the opportunity to do so on-stage during the debate. Don’t argue with fascists, Louis – they aren’t arguing with &lt;em&gt;you&lt;/em&gt;, they are pitching their ideas&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-7&quot; id=&quot;fn-7-ref-1&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; to &lt;em&gt;the audience&lt;/em&gt;. Smart fascists are experts at misdirection and bad-faith debate tactics and as a consequence Rossmann just becomes a vehicle for fascist propaganda – consult the YouTube comments to see who this video resonates with the most.&lt;/p&gt;&lt;p&gt;In the end, Rossmann seems to regret agreeing to this debate. I don’t think that Eron Wolf regrets it, though – based on his facilitation of this debate and his own interview with Yarvin on the FUTO channel a month later, I can only assume that Wolf considers Yarvin a close associate. No surprise given that Wolf is precisely the kind of insecure silicon valley techbro Yarvin’s rhetoric is designed to appeal to – moderately wealthy but unknown, and according to Yarvin, fit to be a king. Rossmann probably needs to reflect on why he associates with and lends his reputation to an organization that openly and unapologetically platforms its founder’s fascist friends.&lt;/p&gt;&lt;p&gt;In summary, FUTO is not just the product of some eccentric who founded a grant-making institution that funds open source at the cost of making us read his weird manifestos on free markets and oligopoly. It’s a private, for-profit company that associates with and uses their brand to promote fascists. They push an open-washing narrative and they portray themselves as a grant-making institution when, in truth, they’re passing off a handful of small donations as if they were endorsements from dozens of respectable, high-profile open source projects, in an attempt to legitimize themselves, and, indirectly, legitimize people they platform like Curtis Yarvin.&lt;/p&gt;&lt;p&gt;So, if you read this and discover that &lt;em&gt;your&lt;/em&gt; project’s name and logo is being proudly displayed &lt;a href=&quot;https://futo.org&quot; target=&quot;_blank&quot;&gt;on the front page&lt;/a&gt; of a fascist-adjacent, washed-up millionaire’s scummy vanity company, and you don’t like that, maybe you should ask them to knock it off? Eron, Louis – you know that a lot of these logos are trademarked, right?&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;Updated 2025-10-27&lt;/em&gt;:&lt;/p&gt;&lt;p&gt;The FUTO website has been updated to clarify the nature of grants versus donations (&lt;a href=&quot;https://web.archive.org/web/20251022223705/https://www.futo.org/&quot; target=&quot;_blank&quot;&gt;before&lt;/a&gt;, &lt;a href=&quot;https://futo.org&quot; target=&quot;_blank&quot;&gt;after&lt;/a&gt;) and to reduce the appearance of endorsements from the donation recipients – the site is much better after this change.&lt;/p&gt;&lt;p&gt;I spoke to a representative who spoke for the FUTO leadership, and shared positive feedback regarding the changes to the website. I also asked for a follow-up on the matter of platforming fascist activist Curtis Yarvin on their social media channels, and I was provided this official response:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;We prefer to spend our time building great software for people to use, funding interesting projects, and making FUTO better every day. We have no interest in engaging in politics as this is a distraction from our work. We’d like to move past this. We don’t have any further comment that that.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I understand the view that distancing oneself from politics can be a productive approach to your work, and the work FUTO does funding great software like Immich is indeed important work that should be conducted relatively free of distractions. However, FUTO is a fundamentally political organization and it does not distance itself from politics. Consider for example the &lt;a href=&quot;https://futo.org/about/futo-statement-on-opensource/&quot; target=&quot;_blank&quot;&gt;FUTO statement on Open Source&lt;/a&gt;, which takes several political positions:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Disapproval of the Open Source Initiative and their legitimacy as an authority&lt;/li&gt;&lt;li&gt;Disapproval of OSI’s proposed AI standards&lt;/li&gt;&lt;li&gt;Disapproval of the “tech oligopoly”&lt;/li&gt;&lt;li&gt;Advocacy for an “open source” which is inclusive of restrictions on commercial use&lt;/li&gt;&lt;li&gt;Support for Eric S. Raymond’s side in his conflict with OSI&lt;/li&gt;&lt;li&gt;Tacit support for Bryan Lunduke&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A truer “apolitical” approach would accept the mainstream definition of open source, would not take positions on conflicts with OSI or Eric Raymond, and would be careful not to cite (or &lt;a href=&quot;https://www.youtube.com/watch?v=6RU7FZpd_K0&quot; target=&quot;_blank&quot;&gt;platform&lt;/a&gt;) controversial figures such as Lunduke.&lt;/p&gt;&lt;p&gt;It is difficult for FUTO’s work to be apolitical at all. Importantly, there are biases in their grants and donations: their selections have a tendency to privilege projects focused on privacy, decentralization, multimedia, communication, and right to repair, all of which suggest the political priorities of FUTO. The choice to fund “source first” software in addition to open source, or not to fund outright closed source software, or not to vet projects based on their community moderation, are also political factors in their process of selecting funding recipients, or at least are seemingly apolitical decisions which ultimately have political consequences.&lt;/p&gt;&lt;p&gt;This brings us to the political nature of the choice to platform Curtis Yarvin. Yarvin is a self-proclaimed fascist who argues openly for fascist politics. Platforming Yarvin on the FUTO channels legitimizes Yarvin’s ideas and his work, and provides curious listeners a funnel that leads to Yarvin’s more radical ideas and into a far-right rabbit-hole. Platforming Yarvin advances the fascist political program.&lt;/p&gt;&lt;p&gt;It should go without saying that it is political to support fascism or fascists. There is an outrageous moral, intellectual, and political contradiction in claiming that it is apolitical to promote a person whose political program is to dismantle democracy and eject people he disagrees with from the political sphere entirely. FUTO should reflect on their values, acknowledge the political nature of their work, and consider the ways in which their work intersects with politics writ large, then make decisions that align their political actions with their political beliefs.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Whats-up-with-FUTO/</link>
        
        <pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Whats-up-with-FUTO/</guid>
      </item>
    
      <item>
        
        
          <title>Cloudflare bankrolls fascists</title>
          <description>
            &lt;p&gt;US politics has been pretty fascist lately. The state is filling up concentration camps, engaging in mass state violence against people on the basis of racialized traits, deporting them to random countries without any respect for habeas corpus, exerting state pressure on the free press to censor speech critical of the current administration, and Trump is openly floating the idea of an unconstitutional third term.&lt;/p&gt;&lt;p&gt;Fascism is clearly on the rise, and they’re winning more and more power. None of this is far removed from us in the FOSS community – there are a number of fascists working in FOSS, same as the rest of society. I don’t call them fascists baselessly – someone who speaks out in support of and expresses solidarity with fascists, or who uses fascists dog-whistles or promotes fascist ideology and talking points, or boosts fascist conspiracy theories – well, they’re a fascist.&lt;/p&gt;&lt;p&gt;If one consistently speaks in support of a certain political position and against the opponents of that position then it is correct to identify them with this political position. Facts, as it were, don’t care about feelings, namely the feelings that get hurt when someone is called a fascist. Fascists naturally do not want to be identified as such and will reject the label, but we shouldn’t take their word for it. People should be much more afraid of being called out as fascist than they are afraid of calling someone a fascist. If someone doesn’t want to be called a fascist, they shouldn’t act like one.&lt;/p&gt;&lt;p&gt;It’s in this disturbing political context that I saw an odd post from the Cloudflare blog pop up in my circles this week: &lt;a href=&quot;https://blog.cloudflare.com/supporting-the-future-of-the-open-web/&quot; target=&quot;_blank&quot;&gt;Supporting the future of the open web: Cloudflare is sponsoring Ladybird and Omarchy&lt;/a&gt;. Based on &lt;a href=&quot;https://ladybird.org/#faq&quot; target=&quot;_blank&quot;&gt;Ladybird’s sponsorship terms&lt;/a&gt; we can assume that these projects received on the order of $100,000 USD from Cloudflare. I find this odd for a few reasons, in particular because one thing that I know these two projects have in common is that they are both run by fascists.&lt;/p&gt;&lt;p&gt;Even at face value this is an unusual pair of projects to fund. I’m all for FOSS projects getting funded, of course, and I won’t complain about a project’s funding on the solitary basis that it’s an odd choice. I will point out that these are odd choices, though, especially Omarchy.&lt;/p&gt;&lt;p&gt;Ladybird makes some sense, given that it’s aligned in principle with Cloudflare’s stated objective to “support the open web”, though I remain bearish that new web browser engines are even &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2020/03/18/Reckless-limitless-scope.html&quot; target=&quot;_blank&quot;&gt;possible to make&lt;/a&gt;.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; Omarchy is a bizarre choice, though – do we really need another pre-customized Arch Linux distribution? And if we do, do we really need a big corporation like Cloudflare to bankroll it? Everyone on /r/unixporn manages to make Arch Linux look pretty for free.&lt;/p&gt;&lt;p&gt;Omarchy is a &lt;em&gt;very&lt;/em&gt; weird project to fund, come to think of it. Making an Arch Linux spin technically requires &lt;em&gt;some&lt;/em&gt; work, and work is work, I won’t deny it, but most of the work done here is from Arch Linux and Hyprland. Why not fund those, instead? Well, don’t fund Hyprland, since it’s also &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2023/09/17/Hyprland-toxicity.html&quot; target=&quot;_blank&quot;&gt;run by&lt;/a&gt; a &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2024/04/09/2024-04-09-FDO-conduct-enforcement.html&quot; target=&quot;_blank&quot;&gt;bunch of fascists&lt;/a&gt;, but you get my point.&lt;/p&gt;&lt;p&gt;Anyway, Omarchy and Ladybird are both run by fascists. Omarchy makes this pretty obvious from the outset – on &lt;a href=&quot;https://omarchy.org/&quot; target=&quot;_blank&quot;&gt;the home page&lt;/a&gt; the big YouTube poster image &lt;a href=&quot;https://redacted.moe/f/ba0d7a6b.png&quot; target=&quot;_blank&quot;&gt;prominently features&lt;/a&gt; SuperGrok, which is a pathetically transparent dog-whistle to signal alliance with Elon Musk’s fascist politics. Omarchy is the pet project of David Heinemeier Hansson, aka DHH, who is well known as a rich &lt;a href=&quot;https://davidcel.is/articles/rails-needs-new-governance&quot; target=&quot;_blank&quot;&gt;fascist&lt;/a&gt; &lt;a href=&quot;https://tekin.co.uk/2025/09/the-ruby-community-has-a-dhh-problem&quot; target=&quot;_blank&quot;&gt;weirdo&lt;/a&gt;.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-2&quot; id=&quot;fn-2-ref-1&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; One need only consult &lt;a href=&quot;https://world.hey.com/dhh&quot; target=&quot;_blank&quot;&gt;his blog&lt;/a&gt; to browse his &lt;a href=&quot;https://world.hey.com/dhh/as-i-remember-london-e7d38e64&quot; target=&quot;_blank&quot;&gt;weird, racist views on immigration&lt;/a&gt;, &lt;a href=&quot;https://world.hey.com/dhh/the-beauty-of-ideals-b3dccf72&quot; target=&quot;_blank&quot;&gt;fat-shaming objections to diverse representation&lt;/a&gt;, &lt;a href=&quot;https://world.hey.com/dhh/the-parental-dead-end-of-consent-morality-e4e8a8ee&quot; target=&quot;_blank&quot;&gt;vaguely anti-feminist/homophobic/rapey rants on consent&lt;/a&gt;, and, recently, &lt;a href=&quot;https://world.hey.com/dhh/words-are-not-violence-c751f14f&quot; target=&quot;_blank&quot;&gt;tone-policing antifascists&lt;/a&gt; who celebrate the death of notable fascist Charlie Kirk.&lt;/p&gt;&lt;p&gt;Speaking of tributes to Charlie Kirk, that brings us to Andreas Kling, the project lead for Ladybird, who tweeted on the occasion of his assassination:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;RIP Charlie Kirk&lt;/p&gt;&lt;p&gt;I hope many more debate nerds carry on his quest to engage young people with words, not fists.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;– &lt;a href=&quot;https://nitter.net/awesomekling/status/1966456391146606806&quot; target=&quot;_blank&quot;&gt;@awesomekling&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Kling has had a few things to say about Kirk on Twitter lately. &lt;a href=&quot;https://nitter.net/awesomekling/status/1967178708852097278&quot; target=&quot;_blank&quot;&gt;Here’s another one&lt;/a&gt; – give you three guesses as to which “[group]” he objects to punching. You may also recall that Kling achieved some notoriety for his obnoxious response as the maintainer of SerenityOS when someone proposed gender-neutral language for the documentation:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/SerenityOS/serenity/pull/6814&quot; target=&quot;_blank&quot;&gt;&lt;figure&gt;&lt;img src=&quot;https://redacted.moe/f/d57df43b.png&quot;&gt;
&lt;figcaption&gt;Screenshot of the interaction on GitHub. Kling responds “This project is not an appropriate arena to advertise your personal politics.”&lt;/figcaption&gt;&lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Replacing “he” with “they” in one sentence of the documentation is the kind of “ideologically motivated change” that Serenity’s &lt;a href=&quot;https://github.com/SerenityOS/serenity/blob/master/CONTRIBUTING.md#on-ideologically-motivated-changes&quot; target=&quot;_blank&quot;&gt;CONTRIBUTING.md&lt;/a&gt; apparently aims to prevent, a classic case of the sexist “identities that are not men are inherently political” nonsense. Ladybird has a &lt;a href=&quot;https://github.com/LadybirdBrowser/ladybird/blob/master/CONTRIBUTING.md#on-neutrality&quot; target=&quot;_blank&quot;&gt;similar, weirdly defensive policy&lt;/a&gt; on “neutrality”, and a milquetoast &lt;a href=&quot;https://github.com/LadybirdBrowser/ladybird/blob/master/CODE_OF_CONDUCT.md&quot; target=&quot;_blank&quot;&gt;code of conduct&lt;/a&gt;, which is based on the Ruby Community Conduct Guideline, which has been itself the subject of many controversies due to its inadequacy leading to real-world incidents of harassment and abuse.&lt;/p&gt;&lt;p&gt;Here’s another one – Kling endorsing white replacement theory in June:&lt;/p&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;p&gt;White males are actively discriminated against in tech.&lt;/p&gt;&lt;p&gt;It’s an open secret of Silicon Valley.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;One of the last meetings I attended before leaving Apple (in 2017) was management asking us to “keep the corporate diversity targets in mind” when interviewing potential new hires.&lt;/p&gt;&lt;p&gt;The phrasing was careful, but the implication was pretty clear.&lt;/p&gt;&lt;p&gt;I knew in my heart this wasn’t wholesome, but I was too scared to rock the boat at the time.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;– &lt;a href=&quot;https://nitter.net/awesomekling/status/1874518295350837401&quot; target=&quot;_blank&quot;&gt;@awesomekling&lt;/a&gt; replying to @danheld&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-3&quot; id=&quot;fn-3-ref-1&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;And in a moment of poetic irony, a few days ago Kling &lt;a href=&quot;https://nitter.net/awesomekling/status/1969350008538370216&quot; target=&quot;_blank&quot;&gt;spoke in solidarity&lt;/a&gt; with Hansson over his “persecution” for “banal, mainstream positions” on Twitter just a few days ago, in response to Hansson’s tweet signal-boosting another &lt;a href=&quot;https://www.youtube.com/watch?v=mhqeuO9RKKk&quot; target=&quot;_blank&quot;&gt;notable reactionary tech fascist&lt;/a&gt;, Bryan Lunduke.&lt;/p&gt;&lt;p&gt;So, to sum it up, Kling wears his mask a bit better than Hansson, but as far as I’m concerned it seems clear that both projects are run by fascists. If it walks like a fascist and quacks like a fascist… then why is Cloudflare giving them hundreds of thousands of dollars?&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Cloudflare-and-fascists/</link>
        
        <pubDate>Wed, 24 Sep 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Cloudflare-and-fascists/</guid>
      </item>
    
      <item>
        
        
          <title>A better future for JavaScript that won&apos;t happen</title>
          <description>
            &lt;p&gt;In the wake of &lt;a href=&quot;https://www.ox.security/blog/npm-2-0-hack-40-npm-packages-hit-in-major-supply-chain-attack/&quot; target=&quot;_blank&quot;&gt;the largest supply-chain attack in history&lt;/a&gt;, the JavaScript community could have a moment of reckoning and decide: never again. As the panic and shame subsides, after compromised developers finish re-provisioning their workstations and rotating their keys, the ecosystem might re-orient itself towards solving the fundamental flaws that allowed this to happen.&lt;/p&gt;&lt;p&gt;After all, people have been sounding the alarm &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2019/12/09/Developers-shouldnt-distribute.html&quot; target=&quot;_blank&quot;&gt;for years&lt;/a&gt; that this approach to dependency management is &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2021/09/27/Let-distros-do-their-job.html&quot; target=&quot;_blank&quot;&gt;reckless&lt;/a&gt; and &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2022/05/12/Supply-chain-when-will-we-learn.html&quot; target=&quot;_blank&quot;&gt;dangerous&lt;/a&gt; and broken by design. Maybe this is the moment when the JavaScript ecosystem begins to understand the importance and urgency of this problem, and begins its course correction. It could leave behind its sprawling dependency trees full of micro-libraries, establish software distribution based on relationships of trust, and incorporate the decades of research and innovation established by more serious dependency management systems.&lt;/p&gt;&lt;p&gt;Perhaps Google and Mozilla, leaders in JavaScript standards and implementations, will start developing a real standard library for JavaScript, which makes micro-dependencies like left-pad a thing of the past. This could be combined with a consolidation of efforts, merging micro-libraries into larger packages with a more coherent and holistic scope and purpose, which prune their own dependency trees in turn.&lt;/p&gt;&lt;p&gt;This could be the moment where npm comes to terms with its broken design, and with a well-funded effort (recall that, ultimately, npm is GitHub is Microsoft, market cap $3 trillion USD), will develop and roll out the next generation of package management for JavaScript. It could incorporate the practices developed and proven in Linux distributions, which rarely suffer from these sorts of attacks, by de-coupling development from packaging and distribution, establishing package maintainers who assemble and distribute curated collections of software libraries. By introducing universal signatures for packages of executable code, smaller channels and webs of trust, reproducible builds, and the many other straightforward, obvious techniques used by responsible package managers.&lt;/p&gt;&lt;p&gt;Maybe other languages that depend on this broken dependency management model, like Cargo, PyPI, RubyGems, and many more, are watching this incident and know that the very same crisis looms in their future. Maybe they will change course, too, before the inevitable.&lt;/p&gt;&lt;p&gt;Imagine if other large corporations who depend on and profit from this massive pile of recklessly organized software committed their money and resources to it, through putting their engineers to the task of fixing these problems, through coming together to establish and implement new standards, through direct funding of their dependencies and by distributing money through institutions like NLNet, ushering in an era of responsible, sustainable, and secure software development.&lt;/p&gt;&lt;p&gt;This would be a good future, but it’s not the future that lies in wait for us. The future will be more of the same. Expect symbolic gestures – mandatory 2FA will be rolled out in more places, certainly, and the big players will write off meager donations in the name of “OSS security and resilience” in their marketing budgets.&lt;/p&gt;&lt;p&gt;No one will learn their lesson. This has been happening for decades and no one has learned anything from it yet. This is the defining hubris of this generation of software development.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/An-impossible-future-for-JS/</link>
        
        <pubDate>Wed, 17 Sep 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/An-impossible-future-for-JS/</guid>
      </item>
    
      <item>
        
        
          <title>Embedding Wren in Hare</title>
          <description>
            &lt;p&gt;I’ve been on the lookout for a scripting language which can be neatly embedded into Hare programs. Perhaps the obvious candidate is &lt;a href=&quot;https://www.lua.org/&quot; target=&quot;_blank&quot;&gt;Lua&lt;/a&gt; – but I’m not particularly enthusiastic about it. When I was evaluating the landscape of tools which are “like Lua, but not Lua”, I found an interesting contender: &lt;a href=&quot;https://wren.io/&quot; target=&quot;_blank&quot;&gt;Wren&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I found that Wren punches far above its weight for such a simple language. It’s object oriented, which, you know, take it or leave it depending on your use-case, but it’s very straightforwardly interesting for what it is. I found a few things to complain about, of course – its scope rules are silly, the C API has some odd limitations here and there, and in my opinion the “standard library” provided by wren CLI is poorly designed. But, surprisingly, my list of complaints more or less ends there, and I was excited to build a nice interface to it from Hare.&lt;/p&gt;&lt;p&gt;The result is &lt;a href=&quot;https://wren.builtwithhare.org&quot; target=&quot;_blank&quot;&gt;hare-wren&lt;/a&gt;. Check it out!&lt;/p&gt;&lt;p&gt;The basic Wren C API is relatively straightforwardly exposed to Hare via the wren module, though I elected to mold it into a more idiomatic Hare interface rather than expose the C API directly to Hare. You can use it something like this:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;hare&quot;&gt;&lt;span class=&quot;include&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;keyword_function&quot;&gt;fn&lt;/span&gt; &lt;span class=&quot;constructor constant variable function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;type_builtin type&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;type_qualifier&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;vm&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type variable&quot;&gt;stdio_config&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;keyword_return&quot;&gt;defer&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;destroy&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;interpret&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;main&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;`
		System.print(&amp;quot;Hello world!&amp;quot;)
	`&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;&lt;pre&gt;&lt;code&gt;$ hare run -lc main.ha
Hello world!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Calling Hare from Wren and vice-versa is also possible with hare-wren, of course. Here’s another example:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;hare&quot;&gt;&lt;span class=&quot;include&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;fmt&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;include&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;keyword&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;keyword_function&quot;&gt;fn&lt;/span&gt; &lt;span class=&quot;constructor constant variable function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;type_builtin type&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;keyword&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;config&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type variable&quot;&gt;stdio_config&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;constant variable&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant field variable&quot;&gt;bind_foreign_method&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;bind_foreign_method&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;

	&lt;span class=&quot;type_qualifier&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;vm&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;keyword_return&quot;&gt;defer&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;destroy&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;

	&lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;interpret&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;main&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;`
	class Example {
		foreign static greet(user)
	}

	System.print(Example.greet(&amp;quot;Harriet&amp;quot;))
	`&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;keyword_function&quot;&gt;fn&lt;/span&gt; &lt;span class=&quot;constructor constant variable function&quot;&gt;bind_foreign_method&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;parameter constant variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;punctuation_special type operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;constant type variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter type&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;parameter constant variable&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;type_builtin type&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;parameter constant variable&quot;&gt;class_name&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;type_builtin type&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;parameter constant variable&quot;&gt;is_static&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;type_builtin type&quot;&gt;bool&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;parameter constant variable&quot;&gt;signature&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;type_builtin type&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;type_qualifier type&quot;&gt;nullable&lt;/span&gt;&lt;span class=&quot;type&quot;&gt; &lt;/span&gt;&lt;span class=&quot;punctuation_special type operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;constant type variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter type&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type variable&quot;&gt;foreign_method_fn&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;type_qualifier&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;is_valid&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;class_name&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;Example&amp;quot;&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
		&lt;span class=&quot;constant variable&quot;&gt;signature&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;greet(_)&amp;quot;&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;is_static&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;conditional&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;is_valid&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;keyword_return&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;constant_builtin&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;keyword_return&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;greet_user&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;keyword_function&quot;&gt;fn&lt;/span&gt; &lt;span class=&quot;constructor constant variable function&quot;&gt;greet_user&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;parameter constant variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;punctuation_special type operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;constant type variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter type&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;type_builtin type&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;type_qualifier&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;get_string&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;type_qualifier&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;greeting&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant variable namespace&quot;&gt;fmt&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;asprintf&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;Hello, {}!&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;keyword_return&quot;&gt;defer&lt;/span&gt; &lt;span class=&quot;constructor function_builtin constant function_call variable&quot;&gt;free&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;greeting&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;constant variable namespace&quot;&gt;wren&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant type method_call variable&quot;&gt;set_string&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant variable&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;constant variable&quot;&gt;greeting&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;&lt;pre&gt;&lt;code&gt;$ hare run -lc main.ha
Hello, Harriet!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In addition to exposing the basic Wren virtual machine to Hare, hare-wren has an optional submodule, wren::api, which implements a simple async runtime based on &lt;a href=&quot;https://sr.ht/~sircmpwn/hare-ev&quot; target=&quot;_blank&quot;&gt;hare-ev&lt;/a&gt; and a modest “standard” library, much like &lt;a href=&quot;https://wren.io/cli/&quot; target=&quot;_blank&quot;&gt;Wren CLI&lt;/a&gt;. I felt that the Wren CLI libraries had a lot of room for improvement, so I made the call to implement a standard library which is only somewhat compatible with Wren CLI.&lt;/p&gt;&lt;p&gt;On top of the async runtime, Hare’s wren::api runtime provides some basic features for reading and writing files, querying the process arguments and environment, etc. It’s not much but it is, perhaps, an interesting place to begin building out something a bit more interesting. A simple module loader is also included, which introduces some conventions for installing third-party Wren modules that may be of use for future projects to add new libraries and such.&lt;/p&gt;&lt;p&gt;Much like wren-cli, hare-wren also provides the &lt;code&gt;hwren&lt;/code&gt; command, which makes this runtime, standard library, and module loader conveniently available from the command line. It does not, however, support a REPL at the moment.&lt;/p&gt;&lt;p&gt;I hope you find it interesting! I have a few projects down the line which might take advantage of hare-wren, and it would be nice to expand the wren::api library a bit more as well. If you have a Hare project which would benefit from embedding Wren, please let me know – and consider sending some patches to improve it!&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Hare-and-Wren/</link>
        
        <pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Hare-and-Wren/</guid>
      </item>
    
      <item>
        
        
          <title>What&apos;s new with Himitsu 0.9?</title>
          <description>
            &lt;p&gt;Last week, Armin and I worked together on the latest release of &lt;a href=&quot;https://himitsustore.org/&quot; target=&quot;_blank&quot;&gt;Himitsu&lt;/a&gt;, a “secret storage manager” for Linux. I haven’t blogged about Himitsu since I announced it &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/Himitsu/&quot;&gt;three years ago&lt;/a&gt;, and I thought it would be nice to give you a closer look at the latest release, both for users eager to see the latest features and for those who haven’t been following along.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;A brief introduction: Himitsu is like a password manager, but more general: it stores any kind of secret in its database, including passwords but also SSH keys, credit card numbers, your full disk encryption key, answers to those annoying “security questions” your bank obliged you to fill in, and so on. It can also enrich your secrets with arbitrary metadata, so instead of just storing, say, your IMAP password, it can also store the host, port, TLS configuration, and username, storing the complete information necessary to establish an IMAP session.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Another important detail: Himitsu is written in Hare and depends on Hare’s native implementations of cryptographic primitives – neither Himitsu nor the cryptography implementation it depends on have been independently audited.&lt;/em&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;So, what new and exciting features does Himitsu 0.9 bring to the table? Let me summarize the highlights for you.&lt;/p&gt;&lt;h2&gt;A new prompter&lt;/h2&gt;&lt;p&gt;The face of Himitsu is the prompter. The core Himitsu daemon has no user interface and only communicates with the outside world through its IPC protocols. One of those protocols is the “prompter”, which Himitsu uses to communicate with the user, to ask you for consent to use your secret keys, to enter the master password, and so on. The prompter is decoupled from the daemon so that it is easy to substitute with different versions which accommodate different use-cases, for example by integrating the prompter more deeply into a desktop environment or to build one that fits better on a touch screen UI like a phone.&lt;/p&gt;&lt;p&gt;But, in practice, given Himitsu’s still-narrow adoption, most people use the GTK+ prompter developed upstream. Until recently, the prompter was written in Python for GTK+ 3, and it was a bit janky and stale. The new &lt;a href=&quot;https://git.sr.ht/~sircmpwn/hiprompt-gtk&quot; target=&quot;_blank&quot;&gt;hiprompt-gtk&lt;/a&gt; changes that, replacing it with a new GTK4 prompter implemented in Hare.&lt;/p&gt;&lt;p&gt;&lt;video src=&quot;https://redacted.moe/f/176df4cc.webm&quot; autoplay muted controls loop&gt;&lt;/video&gt;&lt;/p&gt;&lt;p&gt;I’m excited to share this one with you – it was personally my main contribution to this release. The prompter is based on Alexey Yerin’s &lt;a href=&quot;https://git.sr.ht/~yerinalexey/hare-gi&quot; target=&quot;_blank&quot;&gt;hare-gi&lt;/a&gt;, which is a (currently only prototype-quality) code generator which processes GObject Introspection documents into Hare modules that bind to libraries like GTK+. The prompter uses &lt;a href=&quot;https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/&quot; target=&quot;_blank&quot;&gt;Adwaita&lt;/a&gt; for its aesthetic and controls and &lt;a href=&quot;https://github.com/wmww/gtk4-layer-shell&quot; target=&quot;_blank&quot;&gt;GTK layer shell&lt;/a&gt; for smoother integration on supported Wayland compositors like Sway.&lt;/p&gt;&lt;h2&gt;Secret service integration&lt;/h2&gt;&lt;p&gt;Armin has been hard at work on a new package, &lt;a href=&quot;https://git.sr.ht/~apreiml/himitsu-secret-service&quot; target=&quot;_blank&quot;&gt;himitsu-secret-service&lt;/a&gt;, which provides the long-awaited support for integrating Himitsu with the dbus Secret Service API used by many Linux applications to manage secret keys. This makes it possible for Himitsu to be used as a secure replacement for, say, gnome-keyring.&lt;/p&gt;&lt;h2&gt;Editing secret keys&lt;/h2&gt;&lt;p&gt;Prior to this release, the only way to edit a secret key was to remove it and re-add it with the desired edits applied manually. This was a tedious and error-prone process, especially when bulk-editing keys. This release includes some work from Armin to improve the process, by adding a “change” request to the IPC protocol and implementing it in the command line hiq client.&lt;/p&gt;&lt;p&gt;For example, if you changed your email address, you could update all of your logins like so:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ hiq -c email=newemail@example.org email=oldemail@example.org
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Don’t worry about typos or mistakes – the new prompter will give you a summary of the changes for your approval before the changes are applied.&lt;/p&gt;&lt;p&gt;You can also do more complex edits with the -e flag – check out the hiq(1) man page for details.&lt;/p&gt;&lt;h2&gt;Secret reuse notifications&lt;/h2&gt;&lt;p&gt;Since version 0.8, Himitsu has supported “remembering” your choice, for supported clients, to consent to the use of your secrets. This allows you, for example, to remember that you agreed for the &lt;a href=&quot;https://git.sr.ht/~sircmpwn/himitsu-ssh&quot; target=&quot;_blank&quot;&gt;SSH agent&lt;/a&gt; to use your SSH keys for an hour, or for the duration or your login session, etc. Version 0.9 adds a minor improvement to this feature – you can add a command to himitsu.ini, such as notify-send, which will be executed whenever a client takes advantage of this “remembered” consent, so that you can be notified whenever your secrets are used again, ensuring that any unexpected use of your secrets will get your attention.&lt;/p&gt;&lt;h2&gt;himitsu-firefox improvements&lt;/h2&gt;&lt;p&gt;There are also some minor improvements landed for &lt;a href=&quot;https://git.sr.ht/~sircmpwn/himitsu-firefox&quot; target=&quot;_blank&quot;&gt;himitsu-firefox&lt;/a&gt; that I’d like to note. tiosgz sent us a nice patch which makes the identification of login fields in forms more reliable – thanks! And I’ve added a couple of useful programs, himitsu-firefox-import and himitsu-firefox-export, which will help you move logins between Himitsu and Firefox’s native password manager, should that be useful to you.&lt;/p&gt;&lt;h2&gt;And the rest&lt;/h2&gt;&lt;p&gt;Check out the &lt;a href=&quot;https://git.sr.ht/~sircmpwn/himitsu/refs/0.9&quot; target=&quot;_blank&quot;&gt;changelog&lt;/a&gt; for the rest of the improvements. Enjoy!&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Whats-new-with-himitsu/</link>
        
        <pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Whats-new-with-himitsu/</guid>
      </item>
    
      <item>
        
        
          <title>Just speak the truth</title>
          <description>
            &lt;p&gt;Today, we’re looking at two case studies in how to respond when reactionaries appear in your free software community.&lt;/p&gt;&lt;h2&gt;Exhibit A&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;It is a technical decision.&lt;/p&gt;&lt;p&gt;The technical reason is that the security team does not have the bandwidth to provide lifecycle maintenance for multiple X server implementations. Part of the reason for moving X from main to community was to reduce the burden on the security team for long-term maintenance of X. Additionally, nobody so far on the security team has expressed any interest in collaborating with &lt;span class=&quot;redacted &quot;&gt;xxxxxx&lt;/span&gt; on security concerns.&lt;/p&gt;&lt;p&gt;We have a working relationship with Freedesktop already, while we would have to start from the beginning with &lt;span class=&quot;redacted &quot;&gt;xxxxxx&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;Why does nobody on the security team have any interest in collaboration with &lt;span class=&quot;redacted &quot;&gt;xxxxxx&lt;/span&gt;? Well, speaking for myself only here – when I looked at their official chat linked in their README, I was immediately greeted with alt-right propaganda rather than tactically useful information about &lt;span class=&quot;redacted &quot;&gt;xxxxxx&lt;/span&gt; development. At least for me, I don’t have any interest in filtering through hyperbolic political discussions to find out about CVEs and other relevant data for managing the security lifecycle of X.&lt;/p&gt;&lt;p&gt;Without relevant security data products from &lt;span class=&quot;redacted &quot;&gt;xxxxxx&lt;/span&gt;, as well as a professionally-behaving security contact, it is unlikely for &lt;span class=&quot;redacted &quot;&gt;xxxxxx&lt;/span&gt; to gain traction in any serious distribution, because X is literally one of the more complex stacks of software for a security team to manage already.&lt;/p&gt;&lt;p&gt;At the same time, I sympathize with the need to keep X alive and in good shape, and agree that there hasn’t been much movement from freedesktop in maintaining X in the past few years. There are many desktop environments which will never get ported to Wayland and we do need a viable solution to keep those desktop environments working.&lt;/p&gt;&lt;/blockquote&gt;&lt;style&gt;
.redacted {
  color: black;
  background: black;
}
&lt;/style&gt;
&lt;p&gt;I know the person who wrote this, and I know that she’s a smart cookie, and therefore I know that she probably understood at a glance that the community behind this “project” literally wants to lynch her. In response, she takes the high road, avoids confronting the truth directly, and gives the trolls a bunch of talking points to latch on for counter-arguments. Leaves plenty of room for them to bog everyone down in concern trolling and provides ample material to fuel their attention-driven hate machine.&lt;/p&gt;&lt;p&gt;There’s room for improvement here.&lt;/p&gt;&lt;h2&gt;Exhibit B&lt;/h2&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://redacted.moe/f/d9dd3368.png&quot;&gt;
&lt;figcaption&gt;Screenshot of a post by Chimera Linux which reads “any effort to put (redacted) in chimera will be rejected on the technical basis of the maintainers being reactionary dipshits”&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p&gt;Concise, speaks the truth, answers ridiculous proposals with ridicule, does not afford the aforementioned reactionary dipshits an opportunity to propose a counter-argument. A+.&lt;/p&gt;&lt;p&gt;Extra credit for the follow-up:&lt;/p&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://redacted.moe/f/965aa15b.png&quot;&gt;
&lt;figcaption&gt;Screenshot of a follow-up post that reads “just to be clear, given the coverage of the most recent post, we don’t want to be subject to any conspiracy theories arising from that. so i’ll just use this opportunity to declare that we are definitely here to further woke agenda by turning free software gay”&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;The requirement for a passing grade in this class is a polite but summary dismissal, but additional credit is awarded for anyone who does not indulge far-right agitators as if they were equal partners in maintaining a sense of professional decorum.&lt;/p&gt;&lt;p&gt;If you are a community leader in FOSS, you are not obligated to waste your time coming up with a long-winded technical answer to keep nazis out of your community. They want you to argue with them and give them attention and feed them material for their reactionary blog or whatever. Don’t fall into their trap. Do not answer bad faith with good faith. This is a skill you need to learn in order to be an effective community leader.&lt;/p&gt;&lt;p&gt;If you see nazis 👏👏 you ban nazis 👏👏 — it’s as simple as that.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;The name of the project is censored not because it’s particularly hard for you to find, but because all they really want is attention, and you and me are going to do each other a solid by not giving them any of that directly.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;To preclude the sorts of reply guys who are going to insist on name-dropping the project and having a thread about the underlying drama in the comments, the short introduction is as follows:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;For a few years now, a handful of reactionary trolls have been stoking division in the community by driving a wedge between X11 and Wayland users, pushing a conspiracy theory that paints RedHat as the DEI boogeyman of FOSS and assigning reactionary values to X11 and woke (pejorative) values to Wayland. Recently, reactionary opportunists “forked” Xorg, replaced all of the literature with political manifestos and &lt;abbr title=&quot;Coded language that signals in-group status between reactionaries and hate groups while appearing benign to outsiders who don&apos;t recognize their dialect. &apos;DEI&apos; is an example of a dog-whistle: it appears overtly benign, but reactionaries use it when they want to say the N-word in polite company.&quot;&gt;dog-whistles&lt;/abbr&gt;, then used it as a platform to start shit with downstream Linux distros by petitioning for inclusion and sending &lt;abbr title=&quot;People who argue in bad faith to disrupt discussions by tactically dwelling on tone, rhetoric, philosophy, or procedural issues. Often they have no prior affiliation with the community and show up just to cause trouble, taking advantage of the better nature of hapless moderators and bystanders to further the aim of helping trolls fly under the radar and shifting the Overton window of a community to the right.&quot;&gt;concern trolls&lt;/abbr&gt; to waste everyone’s time.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;The project itself is of little consequence; they serve our purposes today by providing us with case-studies in dealing with reactionary idiots starting shit in your community.&lt;/em&gt;&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Speak-the-truth/</link>
        
        <pubDate>Mon, 30 Jun 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Speak-the-truth/</guid>
      </item>
    
      <item>
        
        
          <title>Unionize or die</title>
          <description>
            &lt;p&gt;Tech workers have long resisted the suggestion that we should be organized into unions. The topic is consistently met with a cold reception by tech workers when it is raised, and no big tech workforce is meaningfully organized. This is a fatal mistake – and I don’t mean “fatal” in the figurative sense. Tech workers, it’s time for you to unionize, and strike, or you and your loved ones are literally going to die.&lt;/p&gt;&lt;p&gt;In this article I will justify this statement and show that it is clearly not hyperbolic. I will explain exactly what you need to do, and how organized labor can and will save your life.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Hey – if you want to get involved in labor organizing in the tech sector you should consider joining the new &lt;a href=&quot;https://unitelabor.dev&quot; target=&quot;_blank&quot;&gt;unitelabor.dev&lt;/a&gt; forum. Adding a head’s up here in case you don’t make it to the end of this very long blog post.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;The imperative to organize is your economic self-interest&lt;/h2&gt;&lt;p&gt;Before I talk about the threats to your life and liberty that you must confront through organized labor, let me re-iterate the economic position for unionizing your workplace. It is important to revisit this now, because the power politics of the tech sector has been rapidly changing over the past few years, and those changes are not in your favor.&lt;/p&gt;&lt;p&gt;The tech industry bourgeoisie has been waging a prolonged war on labor for at least a decade. Far from mounting any kind of resistance, most of tech labor doesn’t even understand that this is happening to them. Your boss is obsessed with making you powerless and replaceable. You may not realize how much leverage you have over your boss, but your boss certainly does – and has been doing everything in their power to undermine you before you wizen up. Don’t let yourself believe you’re a part of their club – if your income depends on your salary, you are part of the working class.&lt;/p&gt;&lt;p&gt;Payroll – that’s you – is the single biggest expense for every tech company. When tech capitalists look at their balance sheet and start thinking of strategies for increasing profits, they see an awful lot of pesky zeroes stacked up next to the line item for payroll and benefits. Long-term, what’s their best play?&lt;/p&gt;&lt;p&gt;It starts with funneling cash and influence into educating a bigger, cheaper generation of compsci graduates to flood the labor market – “everyone can code”. Think about strategic investments in cheap(ish), broadly available courses, online schools and coding “bootcamps” – dangling your high salary as the carrot in front of wannabe coders fleeing dwindling prospects in other industries, certain that the carrot won’t be nearly as big when they all eventually step into a crowded labor market.&lt;/p&gt;&lt;p&gt;The next step is rolling, industry-wide mass layoffs – often obscured under the guise of “stack ranking” or some similar nonsense. Big tech has been callously cutting jobs everywhere, leaving workers out in the cold in batches of thousands or tens of thousands. If you don’t count yourself among them yet, maybe you will soon. What are your prospects for re-hire going to look like if this looming recession materializes in the next few years?&lt;/p&gt;&lt;p&gt;Consider what’s happening now – why do you think tech is driving AI mandates down from the top? Have you been ordered to use an LLM assistant to “help” with your programming? Have you even thought about why the executives would push this crap on you? You’re “training” your replacement. Do you really think that, if LLMs really are going to change the way we code, they &lt;em&gt;aren’t&lt;/em&gt; going to change the way we’re paid for it? Do you think your boss doesn’t see AI as a chance to take $100M off of their payroll expenses?&lt;/p&gt;&lt;p&gt;Aren’t you worried you could get laid off and this junior compsci grad or an H1B takes your place for half your salary? You should be – it’s happening everywhere. What are you going to do about it? Resent the younger generation of programmers just entering the tech workforce? Or the immigrant whose family pooled their resources to send them abroad to study and work? Or maybe you weren’t laid off yet, and you fancy yourself better than the poor saps down the hall who were. Don’t be a sucker – your enemy isn’t in the cubicle next to you, or on the other side of the open office. Your enemy has an office with a door on it.&lt;/p&gt;&lt;p&gt;Listen: a tech union isn’t just about negotiating higher wages and benefits, although that’s definitely on the table. It’s about protecting yourself, and your colleagues, from the relentless campaign against labor that the tech leadership is waging against us. And more than that, it’s about seizing some of the awesome, society-bending power of the tech giants. Look around you and see what destructive ends this power is being applied to. You have your hands at the levers of this power if only you rise together with your peers and make demands.&lt;/p&gt;&lt;p&gt;And if you don’t, you are responsible for what’s going to happen next.&lt;/p&gt;&lt;h2&gt;The imperative to organize is existential&lt;/h2&gt;&lt;p&gt;If global warming is limited to 2°C, here’s what Palo Alto looks like in 2100:&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/palo-alto-1ft.png&quot;&gt;
&lt;figcaption&gt;Map of Palo Alto showing flooding near the coast&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p&gt;Limiting warming to 2° C requires us to cut global emissions &lt;em&gt;in half&lt;/em&gt; by 2030 – in 5 years – but emissions haven’t even peaked yet. Present-day climate policies are only expected to limit warming to 2.5° to 2.9° C by 2100.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-2&quot; id=&quot;fn-2-ref-1&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; Here’s Palo Alto in 75 years if we stay our current course:&lt;/p&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/palo-alto-3ft.png&quot;&gt;
&lt;figcaption&gt;Map of Palo Alto showing much more extreme flooding&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p&gt;Here’s the Gulf of Mexico in 75 years:&lt;/p&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/gulf-of-mexico.png&quot;&gt;
&lt;figcaption&gt;Gulf of Mexico showing&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p&gt;This is what will happen if things don’t improve. Things aren’t improving – they’re getting worse. The US elected an anti-science president who backed out of the Paris agreement, for a start. Your boss is pouring all of our freshwater into datacenters to train these fucking LLMs and &lt;em&gt;expanding&lt;/em&gt; into this exciting new market with millions of tons of emissions as the price of investment. Cryptocurrencies &lt;em&gt;still&lt;/em&gt; account for a full 1% of global emissions. Datacenters as a whole account for 2%. That’s on us – tech workers. That is our fucking responsibility.&lt;/p&gt;&lt;p&gt;Climate change is accelerating, and faster than we thought, and the rich and powerful are making it happen &lt;em&gt;faster&lt;/em&gt;. Climate catastrophe is not in the far future, it’s not our children or our children’s children, it’s &lt;em&gt;us&lt;/em&gt;, it’s &lt;em&gt;already happening&lt;/em&gt;. You and I will live to see dozens of global catastrophes playing out in our lifetimes, with horrifying results. Even if we started a revolution tomorrow and overthrew the ruling class and implemented aggressive climate policies right now we will still watch tens or hundreds of millions die.&lt;/p&gt;&lt;p&gt;Let’s say you are comfortably living outside of these blue areas, and you’ll be sitting pretty when Louisiana or Bruges or Fiji are flooded. Well, 13 million Americans are expected to have to migrate out of flooded areas – and 216 million globally&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-3&quot; id=&quot;fn-3-ref-1&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; – within 25 to 30 years. That’s just from the direct causes of climate change – as many as 1 billion could be displaced if we account for the ensuing global conflict and civil unrest.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-4&quot; id=&quot;fn-4-ref-1&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; What do you think will happen to non-coastal cities and states when 4% of the American population is forced to flee their homes? You think you won’t be affected by that? What happens when anywhere from 2.5% to 12% of the Earth’s population becomes refugees?&lt;/p&gt;&lt;p&gt;What are you going to eat? Climate change is going to impact fresh water supplies and reduce the world’s agriculturally productive land. Livestock is expected to be reduced by 7-10% in just 25 years.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-5&quot; id=&quot;fn-5-ref-1&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; Food prices will skyrocket and people will starve. 7% of all species on Earth may already be extinct because of human activities.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-6&quot; id=&quot;fn-6-ref-1&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; You think that’s not going to affect you?&lt;/p&gt;&lt;p&gt;The overwhelming majority of the population supports climate action.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-7&quot; id=&quot;fn-7-ref-1&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; The reason it’s not happening is because, under capitalism, capital is power, and the few have it and the many don’t. We live in a global plutocracy.&lt;/p&gt;&lt;p&gt;The plutocracy has an answer to climate change: fascism. When 12% of the world’s population is knocking at the doors of the global north, their answer will be concentration camps and mass murder. &lt;a href=&quot;https://en.wikipedia.org/wiki/U.S._Immigration_and_Customs_Enforcement#ERO_detention_centers&quot; target=&quot;_blank&quot;&gt;They are already working on it today&lt;/a&gt;. When the problem is capitalism, the capitalists will go to any lengths necessary to preserve the institutions that give them power – &lt;a href=&quot;https://www.youtube.com/watch?v=URABscYOjRE&quot; target=&quot;_blank&quot;&gt;they always have&lt;/a&gt;. They have no moral compass or reason besides profit, wealth, and power. The 1% will burn and pillage and murder the 99% without blinking.&lt;/p&gt;&lt;p&gt;They are &lt;em&gt;already&lt;/em&gt; murdering us. 1.2 million Americans are rationing their insulin.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-8&quot; id=&quot;fn-8-ref-1&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; The healthcare industry, organized around the profit motive, murders 68,000 Americans per year.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-9&quot; id=&quot;fn-9-ref-1&quot;&gt;9&lt;/a&gt;&lt;/sup&gt; To the Europeans among my readership, don’t get too comfortable, because I assure you that our leaders are working on destroying our healthcare systems, too.&lt;/p&gt;&lt;p&gt;Someone you love will be laid off, get sick, and die because they can’t afford healthcare. Someone you know, probably many people that you know, will be killed by climate change. It might be someone you love. It might be you.&lt;/p&gt;&lt;p&gt;When you do get laid off mid-recession, your employer replaces you and three of your peers with a fresh bootcamp “graduate” and a GitHub Copilot subscription, and all of the companies you might apply to have done the same… how long can you keep paying rent? What about your friends and family, those who don’t have a cushy tech job or tech worker prospects, what happens when they get laid off or automated away or just priced out of the cost of living? Homelessness is at an all time high and it’s only going to get higher. Being homeless takes 30 years off of your life expectancy.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-10&quot; id=&quot;fn-10-ref-1&quot;&gt;10&lt;/a&gt;&lt;/sup&gt; In the United States, there are 28 vacant homes for every homeless person.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-11&quot; id=&quot;fn-11-ref-1&quot;&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;Capitalism is going to murder the people you love. Capitalism is going to murder &lt;em&gt;you&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;We need a different answer to the crises that we face. Fortunately, the working class can offer a better solution – one with a long history of success.&lt;/p&gt;&lt;h2&gt;Organizing is the only answer and it will work&lt;/h2&gt;&lt;p&gt;The rich are literally going to kill you and everyone you know and love just because it will make them richer. Because it &lt;em&gt;is&lt;/em&gt; making them richer.&lt;/p&gt;&lt;p&gt;Do you want to do something about any of the real, urgent problems you face? Do you want to make meaningful, rapid progress on climate change, take the catastrophic consequences we are already guaranteed to face in stride, and keep your friends and family safe?&lt;/p&gt;&lt;p&gt;Well, tough shit – you can’t. Don’t tell me you’ll refuse the work, or that it’ll get done anyway without you, or that you can just find another job. They’ll replace you, you won’t find another job, and the world will still burn. You can’t vote your way to a solution, either: elections don’t matter, your vote doesn’t matter, and your voice is worthless to politicians.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-12&quot; id=&quot;fn-12-ref-1&quot;&gt;12&lt;/a&gt;&lt;/sup&gt; Martin Gilens and Benjamin Page demonstrated this most clearly in their 2014 study, “Testing Theories of American Politics: Elites, Interest Groups, and Average Citizens”.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-13&quot; id=&quot;fn-13-ref-1&quot;&gt;13&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;Gilens and Page plotted a line chart which shows us the relationship between the odds of a policy proposal being adopted (Y axis) charted against public support for the policy (X axis). If policy adoption was entirely driven by public opinion, we would expect a 45° line (Y=X), where broad public support guarantees adoption and broad public opposition prevents adoption. We could also substitute “public opinion” for the opinions of different subsets of the public to see their relative impact on policy. Here’s what they got:&lt;/p&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/policy-vs-opinion.png&quot;&gt;
&lt;figcaption&gt;Two graphs, the first labelled “Average Citizens’ Preferences” and the second “Economic Elites’ Preferences”, showing that the former has little to no correlation with the odds of a policy being adopted, and the latter has a significant impact&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p&gt;For most of us, we get a flat line: Y, policy adoption, is completely unrelated to X, public support. Our opinion has no influence whatsoever on policy adoption. Public condemnation or widespread support has the same effect on a policy proposal, i.e. none. But for the wealthy, it’s a different story entirely. I’ve never seen it stated so plainly and clearly: the only thing that matters is money, wealth, and capital. Money is power, and the rich have it and you don’t.&lt;/p&gt;&lt;p&gt;Nevertheless, &lt;strong&gt;you&lt;/strong&gt; must solve these problems. &lt;strong&gt;You&lt;/strong&gt; must participate in finding and implementing solutions. &lt;strong&gt;You&lt;/strong&gt; will be &lt;em&gt;fucked&lt;/em&gt; if you don’t. But it is an unassailable fact that you &lt;em&gt;can’t&lt;/em&gt; solve these problems, because you have no power – at least, not alone.&lt;/p&gt;&lt;p&gt;Together, we &lt;em&gt;do&lt;/em&gt; have power. In fact, we &lt;em&gt;can&lt;/em&gt; fuck with those bastards’ money and they &lt;em&gt;will&lt;/em&gt; step in line if, and only if, we organize. It is the only solution, and it will work.&lt;/p&gt;&lt;p&gt;The ultra-rich possess no morals or ideology or passion or reason. They align with fascists because the fascists promise what they want, namely tax cuts, subsidies, favorable regulation, and cracking the skulls of socialists against the pavement. The rich hoard and pillage and murder with abandon for one reason and one reason only: it’s profitable. The rich always do what makes them richer, and &lt;em&gt;only&lt;/em&gt; what makes them richer. Consequently, you need to make this a losing strategy. You need to make it more profitable to do what you want. To control the rich, you must threaten the only thing they care about.&lt;/p&gt;&lt;p&gt;Strikes are so costly for companies that they will do anything to prevent them – and if they fail to prevent them, then shareholders will pressure them to capitulate if only to stop the hemorrhaging of profit. This threat is so powerful that it doesn’t have to stop at negotiating your salary and benefits. You could demand your employer participate in boycotting Israel. You could demand that your employer stops anti-social lobbying efforts, or even adopts a pro-social lobbying program. You could demand that your CEO cannot support causes that threaten the lives and dignity of their queer or PoC employees. You could demand that they don’t bend the knee to fascists. If you get them where it hurts – their wallet – they will fall in line. They are more afraid of you than we are afraid of them. They are &lt;em&gt;terrified&lt;/em&gt; of us, and it’s time we used that to our advantage.&lt;/p&gt;&lt;p&gt;We know it works because it has always worked. In 2023, United Auto Workers went on strike and most workers won a 25% raise. In February, teachers in Los Angeles went on strike for just 8 days and secured a 19% raise. Nurses in Oregon won a 22% raise, better working schedules, and more this year – and Hawaiian nurses secured an agreement to improve worker/patient ratios in September. Tech workers could take a page out of the Writer’s Guild’s book – in 2023 they secured a prohibition against the use of their work to train AI models and the use of AI to suppress their wages.&lt;/p&gt;&lt;p&gt;Organized labor is powerful and consistently gets concessions from the rich and powerful in a way that no other strategy has ever been able to. It works, and we have a moral obligation to do it. Unions get results.&lt;/p&gt;&lt;h2&gt;How to organize step by step&lt;/h2&gt;&lt;p&gt;I will give you a step-by-step plan for exactly what you need to do to start moving the needle here. The process is as follows:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Building solidarity and community with your peers&lt;/li&gt;&lt;li&gt;Understanding your rights and how to organize safely&lt;/li&gt;&lt;li&gt;Establishing the consensus to unionize, and doing it&lt;/li&gt;&lt;li&gt;Promoting solidarity across tech workplaces and labor as a whole&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Remember that you will not have to do this alone – in fact, that’s the whole point. Step one is building community with your colleagues. Get to know them personally, establish new friendships and grow the friendships you already have. Learn about each other’s wants, needs, passions, and so on, and find ways to support each other. If someone takes a sick day, organize someone to check on them and make them dinner or pick up their kids from school. Organize a board game night at your home with your colleagues, outside of work hours. Make it a regular event!&lt;/p&gt;&lt;p&gt;Talk to your colleagues about work, and your workplace. Tell each other about your salaries and benefits. When you get a raise, don’t be shy, tell your colleagues how much you got and how you negotiated it. Speak positively about each other at performance reviews and save critical feedback for their ears only. Offer each other advice about how to approach their boss to get their needs met, and be each other’s advocate.&lt;/p&gt;&lt;p&gt;Talk about the power you have to work together to accomplish bigger things. Talk about the advantage of collective action. It can start small – perhaps your team collectively refuses to incorporate LLMs into your workflow. Soon enough you and your colleagues will be thinking about unionizing.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Disclaimer: Knowledge about specific processes and legal considerations in this article is US-specific. Your local laws are likely similar, but you should research the differences with your colleagues.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The process of organizing a union in the US is explained step-by-step at &lt;a href=&quot;https://www.workcenter.gov/step-by-step-guide/&quot; target=&quot;_blank&quot;&gt;workcenter.gov&lt;/a&gt;. More detailed resources, including access to union organizers in your neighborhood, are available from the &lt;a href=&quot;https://aflcio.org/formaunion&quot; target=&quot;_blank&quot;&gt;American Federation of Labor and Congress of Industrial Organizations (AFL-CIO)&lt;/a&gt;. But your biggest resources will be people already organizing in the tech sector: in particular you should consult &lt;a href=&quot;https://code-cwa.org/&quot; target=&quot;_blank&quot;&gt;CODE-CWA&lt;/a&gt;, which works with tech workers to provide mentoring and resources on organizing tech workplaces – and has already helped several tech workplaces organize their unions and start making a difference. They’ve got your back.&lt;/p&gt;&lt;p&gt;This is a good time to make sure that you and your colleagues &lt;a href=&quot;https://www.ufcw.org/union-101/know-your-rights/&quot; target=&quot;_blank&quot;&gt;understand your rights&lt;/a&gt;. First of all, you would be wise to pool your resources and hire the attention of a lawyer specializing in labor – consult your local bar association to find one (it’s easy, just google it and they’ll have a web thing). Definitely reach out to AFL-CIO and CODE-CWA to meet experienced union organizers who can help you.&lt;/p&gt;&lt;p&gt;You cannot be lawfully fired or punished for discussing unions, workplace conditions, or your compensation and benefits, with your colleagues. You cannot be punished for distributing literature in support of your cause, especially if you do it off-site (even just outside of the front door). Be careful not to make careless remarks about your boss’s appearance, complain about the quality of your company’s products, make disparaging comments about clients or customers, etc – don’t give them an easy excuse. Hold meetings and discussions outside of work if necessary, and perform your duties as you normally would while organizing.&lt;/p&gt;&lt;p&gt;Once you start getting serious about organizing, your boss will start to work against you, but know that they cannot stop you. Nevertheless, you and/or some of your colleagues may run the risk of unlawful retaliation or termination for organizing – this is why you should have a lawyer on retainer. This is also why it’s important to establish systems of mutual aid, so that if one of your colleagues gets into trouble you can lean on each other to keep supporting your families. And, importantly, remember that HR works for the company, not for you. HR are the front lines that are going to execute the unionbusting mandates from above.&lt;/p&gt;&lt;p&gt;Once you have a consensus among your colleagues to organize – which you will know because they will have signed union cards – you can approach your employer to ask them to voluntarily recognize the union. If they agree to opening an organized dialogue amicably, you do so. If not, you will reach out to the National Labor Relations Board (&lt;a href=&quot;https://www.nlrb.gov/&quot; target=&quot;_blank&quot;&gt;NLRB&lt;/a&gt;) to organize a vote to unionize. Only organize a vote that you know you will win. Once your workplace votes to unionize, your employer is obligated to negotiate with you in good faith. Start making collective decisions about what you want from your employer and bring them to the table.&lt;/p&gt;&lt;p&gt;In this process, you will have established a relationship with more experienced union organizers who will continue to help you with conducting your union’s affairs and start getting results. The next step is to make yourself available for this purpose to the next tech workplace that wants to unionize: to share what you’ve learned and support the rest of the industry in solidarity. Talk to your friends across the industry and build solidarity and power in mass.&lt;/p&gt;&lt;h3&gt;Prepare for the general strike on May 1st, 2028&lt;/h3&gt;&lt;p&gt;The call has gone out: on Labor Day, 2028 – just under three years from now – &lt;a href=&quot;https://www.thenation.com/article/activism/general-strike-2028-unions-labor-movement/&quot; target=&quot;_blank&quot;&gt;there will be a general strike&lt;/a&gt; in the United States. The United Auto Workers union, one of the largest in the United States, has arranged for their collective bargaining agreements to end on this date, and has called for other unions to do the same across all industries. The American Federation of Teachers and its 1.2 million members are on board, and other unions are sure to follow. Your new union should be among them.&lt;/p&gt;&lt;p&gt;This is how we collectively challenge not just our own employers, but our political institutions as a whole. This is how we turn this nightmare around.&lt;/p&gt;&lt;p&gt;A mass strike is a difficult thing to organize. It is certain to be met with large-scale, coordinated, and well-funded propaganda and retaliation from the business and political spheres. Moreover, a mass strike depends on careful planning and mass mutual aid. We need to be prepared to support each other to get it done, and to plan and organize seriously. When you and your colleagues get organized, discuss this strike amongst yourselves and be prepared to join in solidarity with the rest of the 99% around the country and the world at large.&lt;/p&gt;&lt;p&gt;To commit yourselves to participate or get involved in the planning of the grassroots movement, see &lt;a href=&quot;https://generalstrikeus.com/&quot; target=&quot;_blank&quot;&gt;generalstrikeus.com&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Join unitelabor.dev&lt;/h2&gt;&lt;p&gt;I’ve set up a &lt;a href=&quot;https://www.discourse.org/&quot; target=&quot;_blank&quot;&gt;Discourse&lt;/a&gt; instance for discussion, organizing, Q&amp;A, and solidarity among tech workers at &lt;a href=&quot;https://unitelabor.dev&quot; target=&quot;_blank&quot;&gt;unitelabor.dev&lt;/a&gt;. Please check it out!&lt;/p&gt;&lt;p&gt;If you have any questions or feedback on this article, please post about it there.&lt;/p&gt;&lt;h2&gt;Unionize or die&lt;/h2&gt;&lt;p&gt;You must organize, and you must start now, or the worst will come to pass. Fight like your life depends on it, beause it does. It has never been more urgent. The tech industry needs to stop fucking around and get organized.&lt;/p&gt;&lt;p&gt;We are powerful together. We can change things, and we must. Spread the word, in your workplace and with your friends and online. On the latter, be ready to fight just to speak – especially in our online spaces owned and controlled by the rich (&lt;em&gt;ahem&lt;/em&gt; – YCombinator, Reddit, Twitter – etc). But fight all the same, and don’t stop fighting until we’re done.&lt;/p&gt;&lt;p&gt;We can do it, together.&lt;/p&gt;&lt;h3&gt;Resources&lt;/h3&gt;&lt;p&gt;Tech-specific:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://unitelabor.dev&quot; target=&quot;_blank&quot;&gt;unitelabor.dev&lt;/a&gt; (new)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://techworkerscoalition.org/&quot; target=&quot;_blank&quot;&gt;Tech Workers Coalition&lt;/a&gt; (Global)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://code-cwa.org/&quot; target=&quot;_blank&quot;&gt;CODE-CWA&lt;/a&gt; (US)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://utaw.tech/&quot; target=&quot;_blank&quot;&gt;UTAW&lt;/a&gt; (UK)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://prospect.org.uk/tech-workers/&quot; target=&quot;_blank&quot;&gt;Prospect&lt;/a&gt; (UK)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.alphabetworkersunion.org/&quot; target=&quot;_blank&quot;&gt;Alphabet Workers Union&lt;/a&gt; (Google)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;General:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.iww.org/&quot; target=&quot;_blank&quot;&gt;Industrial Workers of the World&lt;/a&gt; (Global)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.iclcit.org/&quot; target=&quot;_blank&quot;&gt;International Confederation of Labor&lt;/a&gt; (Global)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://aflcio.org/formaunion&quot; target=&quot;_blank&quot;&gt;AFL-CIO&lt;/a&gt; (US)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.workcenter.gov/step-by-step-guide/&quot; target=&quot;_blank&quot;&gt;workcenter.gov&lt;/a&gt; (US)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://generalstrikeus.com/&quot; target=&quot;_blank&quot;&gt;generalstrikeus.com&lt;/a&gt; (US)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://workerorganizing.org/&quot; target=&quot;_blank&quot;&gt;Emergency Workplace Organizing Committee&lt;/a&gt; (US)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.labornotes.org/&quot; target=&quot;_blank&quot;&gt;Labor Notes&lt;/a&gt; (US)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.organisenow.org.uk/&quot; target=&quot;_blank&quot;&gt;Organize Now!&lt;/a&gt; (UK)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;mailto:drew@ddevault.org&quot; target=&quot;_blank&quot;&gt;Send me more&lt;/a&gt; resources to add here!&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Unionize-or-die/</link>
        
        <pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Unionize-or-die/</guid>
      </item>
    
      <item>
        
        
          <title>The British Airways position on various border disputes</title>
          <description>
            &lt;p&gt;My spouse and I are on vacation in Japan, spending half our time seeing the sights and the other half working remotely and enjoying the experience of living in a different place for a while. To get here, we flew on British Airways from London to Tokyo, and I entertained myself on the long flight by browsing the interactive flight map on the back of my neighbor’s seat and trying to figure out how the poor developer who implemented this map solved the thorny problems that displaying a world map implies.&lt;/p&gt;&lt;p&gt;I began my survey by poking through the whole interface of this little in-seat entertainment system&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; to see if I can find out anything about who made it or how it works – I was particularly curious to find a screen listing open source licenses that such such devices often disclose. To my dismay I found nothing at all – no information about who made it or what’s inside. I imagine that there &lt;em&gt;must&lt;/em&gt; be some open source software in that thing, but I didn’t find any licenses or copyright statements.&lt;/p&gt;&lt;p&gt;When I turned my attention to the map itself, I did find one copyright statement, the only one I could find in the whole UI. If you zoom in enough, it switches from a satellite view to a street view showing the OpenStreetMap copyright line:&lt;/p&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/ba-map-osm-copyright.jpg&quot; alt=&quot;Picture of the display showing &apos;Street Maps: (c) OpenStreetMap contributors&apos;&quot;&gt;
&lt;figcaption&gt;Note that all of the pictures in this article were taken by pointing my smartphone camera at the screen from an awkward angle and fine-tune your expectations accordingly. I don’t have pictures to support every border claim documented in this article, but I did take notes during the flight.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p&gt;Given that British Airways is the proud flag carrier of the United Kingdom I assume that this is indeed the only off-the-shelf copyrighted material included in this display, and everything else was developed in-house without relying on any open source software that might require a disclosure of license and copyright details. For similar reasons I am going to assume that all of the borders shown in this map are reflective of the official opinion of British Airways on various international disputes.&lt;/p&gt;&lt;p&gt;As I briefly mentioned a moment ago, this map has two views: satellite photography and a very basic street view. Your plane and its route are shown in real-time, and you can touch the screen to pan and zoom the map anywhere you like. You can also rotate the map and change the angle in “3D” if you have enough patience to use complex multitouch gestures on the cheapest touch panel they could find.&lt;/p&gt;&lt;p&gt;The street view is very sparse and only appears when you’re pretty far zoomed in, so it was mostly useless for this investigation. The satellite map, thankfully, includes labels: cities, country names, points of interest, and, importantly, national borders. The latter are very faint, however. Here’s an illustrative example:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/ba-borders-illustration.jpg&quot; alt=&quot;A picture of the screen showing the area near the Caucasus mountains with the plane overflying the Caspian sea&quot;&gt;&lt;/p&gt;&lt;p&gt;We also have our first peek at a border dispute here: look closely between the “Georgia” and “Caucasus Mountains” labels. This ever-so-faint dotted line shows what I believe is the Russian-occupied territory of South Ossetia in Georgia. Disputes implicating Russia are not universally denoted as such – I took a peek at the border with Ukraine and found that Ukraine is shown as whole and undisputed, with its (undotted) border showing Donetsk, Luhansk, and Crimea entirely within Ukraine’s borders.&lt;/p&gt;&lt;p&gt;Of course, I didn’t start at Russian border disputes when I went looking for trouble. I went directly to Palestine. Or rather, I went to Israel, because Palestine doesn’t exist on this map:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/ba-israel-palestine.jpg&quot; alt=&quot;Picture of the screen showing Israel&quot;&gt;&lt;/p&gt;&lt;p&gt;I squinted and looked very closely at the screen and I’m &lt;em&gt;fairly&lt;/em&gt; certain that both the West Bank and Gaza are outlined in these dotted lines using the borders defined by the 1949 armistice. If you zoom in a bit more to the street view, you can see labels like “West Bank” and the “Area A”, “Area B” labels of the Oslo Accords:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/ba-west-bank.jpg&quot; alt=&quot;Picture of the street map zoomed in on Ramallah&quot;&gt;&lt;/p&gt;&lt;p&gt;Given that this is British Airways, part of me was surprised not to see the whole area simply labelled Mandatory Palestine, but it is interesting to know that British Airways officially supports the Oslo Accords.&lt;/p&gt;&lt;p&gt;Heading south, let’s take a look at the situation in Sudan:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/ba-sudan.jpg&quot; alt=&quot;Picture of the satellite map over Sudan&quot;&gt;&lt;/p&gt;&lt;p&gt;This one is interesting – three areas within South Sudan’s claimed borders are disputed, and the map only shows two with these dotted lines. The border dispute with Sudan in the northeast is resolved in South Sudan’s favor. Another case where BA takes a stand is Guyana, which has an ongoing dispute with Venezuela – but the map &lt;em&gt;only&lt;/em&gt; shows Guyana’s claim, albeit with a dotted line, rather than the usual approach of drawing both claims with dotted lines.&lt;/p&gt;&lt;p&gt;Next, I turned my attention to Taiwan:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/ba-taiwan.jpg&quot; alt=&quot;Picture of the satellite map over eastern China and Taiwan&quot;&gt;&lt;/p&gt;&lt;p&gt;The cities of Taipei and Kaohsiung are labelled, but the island as a whole was not labelled “Taiwan”. I zoomed and panned and 3D-zoomed the map all over the place but was unable to get a “Taiwan” label to appear. I also zoomed into the OSM-provided street map and panned that around but couldn’t find “Taiwan” anywhere, either.&lt;/p&gt;&lt;p&gt;The last picture I took is of the Kashmir area:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/ba-kashmir.jpg&quot; alt=&quot;Picture of the satellite map showing the Kashmir region&quot;&gt;&lt;/p&gt;&lt;p&gt;I find these faint borders difficult to interpret and I admit to not being very familiar with this conflict, but perhaps someone in the know with the patience to look more closely will &lt;a href=&quot;mailto:drew@ddevault.org&quot; target=&quot;_blank&quot;&gt;email me&lt;/a&gt; their understanding of the official British Airways position on the Kashmir conflict (here’s the &lt;a href=&quot;https://redacted.moe/f/70bc3338.jpg&quot; target=&quot;_blank&quot;&gt;full sized picture&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Here are some other details I noted as I browsed the map:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The Hala’ib Triangle and Bir Tawil are shown with dotted lines&lt;/li&gt;&lt;li&gt;The Gulf of Mexico is labelled as such&lt;/li&gt;&lt;li&gt;Antarctica has no labelled borders or settlements&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;After this thrilling survey of the official political positions of British Airways, I spent the rest of the flight reading books or trying to sleep.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/BA-on-border-disputes/</link>
        
        <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/BA-on-border-disputes/</guid>
      </item>
    
      <item>
        
        
          <title>Resistance from the tech sector</title>
          <description>
            &lt;p&gt;As of late, most of us have been reading the news with a sense of anxious trepidation. At least, those of us who read from a position of relative comfort and privilege. Many more read the news with fear. Some of us are already no longer in a position to read the news at all, having become the unfortunate subjects of the news. Fascism is on the rise worldwide and in the United States the news is particularly alarming. The time has arrived to act.&lt;/p&gt;&lt;p&gt;The enemy wants you to be overwhelmed and depressed, to feel like the situation is out of your control. Propaganda is as effective on me as it is on you, and in my own home the despair and helplessness the enemy aims to engineer in us often prevails in my own life. &lt;a href=&quot;https://archive.org/details/0022_Dont_Be_a_Sucker_22_33_53_00&quot; target=&quot;_blank&quot;&gt;We mustn’t fall for this gambit&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;When it comes to resistance, I don’t have all of the answers, and I cannot present a holistic strategy for effective resistance.  Nevertheless, I have put some thought towards how someone in my position, or in my community, can effectively apply ourselves towards resistance.&lt;/p&gt;&lt;p&gt;The fact of the matter is that the tech sector is extraordinarily important in enabling and facilitating the destructive tide of contemporary fascism’s ascent to power. The United States is embracing a technocratic fascism at the hands of Elon Musk and his techno-fetishist “Department of Government Efficiency”. Using memes to mobilize the terminally online neo-right, and “digitizing” and “modernizing” government institutions with the dazzling miracles of modern technology, the strategy puts tech, in its mythologized form – prophesied, even, through the medium of science fiction – at the center of a revolution of authoritarian hate.&lt;/p&gt;&lt;p&gt;And still, this glitz and razzle dazzle act obscures the more profound and dangerous applications of tech hegemony to fascism. Allow me to introduce public enemy number one: Palantir. Under the direction of neo-fascist Peter Thiel and in collaboration with &lt;abbr title=&quot;Immigrations and Customs Enforcement&quot;&gt;ICE&lt;/abbr&gt;, Palantir is applying the innovations of the last few decades of surveillance capitalism to implementing a &lt;a href=&quot;https://www.404media.co/ice-plans-central-database-of-health-labor-housing-agency-data-to-find-targets/&quot; target=&quot;_blank&quot;&gt;database of undesirables&lt;/a&gt; the Nazis could have never dreamed of. Where DOGE is hilariously tragic, Palantir is nightmarishly effective.&lt;/p&gt;&lt;p&gt;It’s clear that the regime will be digital. The through line is tech – and the tech sector depends on tech workers. That’s us. This puts us in a position to act, and compels us to act. But then, what should we do?&lt;/p&gt;&lt;p&gt;If there’s one thing I want you to take away from this article, something to write on your mirror and repeat aloud to yourself every day, it’s this: there’s safety in numbers. It is of the utmost importance that we dispense with American individualism and join hands with our allies to resist as one. Find your people in your local community, and especially in your workplace, who you can trust and who believe in what’s right and that you can depend on for support. It’s easier if you’re not going it alone. Talk to your colleagues about your worries and lean on them to ease your fears, and allow them to lean on you in turn.&lt;/p&gt;&lt;p&gt;One of the most important actions you can take is to unionize your workplace. We are long overdue for a tech workers union. If tech workers unionize then we can compel our employers – this regime’s instruments of fascist power – to resist also. If you’re at the bottom looking up at your boss’s boss’s boss cozying up with fascists, know that with a union you can pull the foundations of his power out from beneath him.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.gutenberg.org/ebooks/26184&quot; target=&quot;_blank&quot;&gt;More direct means&lt;/a&gt; of resistance are also possible, especially for the privileged and highly paid employees of big tech. Maneuver yourself towards the levers of power. At your current job, find your way onto the teams implementing the technology that enables authoritarianism, and fuck it up. Drop the database by “mistake”. Overlook bugs. Be confidently wrong in code reviews and meetings. Apply for a job at Palantir, and be incompetent at it. Make yourself a single point of failure, then fail. Remember too that plausible deniability is key – make them work to figure out that &lt;em&gt;you&lt;/em&gt; are the problem.&lt;/p&gt;&lt;p&gt;This sort of action is scary and much riskier than you’re probably immediately comfortable with. Inaction carries risks also. Only you are able to decide what your tolerance for risk is, and what kind of action that calls for. If your appetite for risk doesn’t permit sabotage, you could simply refuse to work on projects that aren’t right. Supporting others is essential resistance, too – be there for your friends, especially those more vulnerable than yourself, and support the people who engage in direct resistance. You didn’t see nuffin, right? If your allies get fired for fucking up an important digital surveillance project – you’ll have a glowing reference for them when they apply for Palantir, right?&lt;/p&gt;&lt;p&gt;Big tech has become the problem, and it’s time for tech workers to be a part of the solution. If this scares you – and it should – I get it. I’m scared, too. It’s okay for it to be scary. It’s okay for you not to do anything about it right now. All you have to do right now is be there for your friends and loved ones, and answer this question: where will you draw the line?&lt;/p&gt;&lt;p&gt;Remember your answer, and if and when it comes to pass… you will know when to act. Don’t let them shift your private goalposts until the frog is well and truly boiled to death.&lt;/p&gt;&lt;p&gt;Hang in there.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Tech-sector-restistance/</link>
        
        <pubDate>Sun, 20 Apr 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Tech-sector-restistance/</guid>
      </item>
    
      <item>
        
        
          <title>A Firefox addon for putting prices into perspective</title>
          <description>
            &lt;p&gt;I had a fun idea for a small project this weekend, and so I quickly put it together over the couple of days. The result is &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/price-perspective/&quot; target=&quot;_blank&quot;&gt;Price Perspective&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Humor me: have you ever bought something, considered the price, and wondered how that price would look to someone else? Someone in the developing world, or a billionaire, or just your friend in Australia? In other words, can we develop an intuition for &lt;a href=&quot;https://en.wikipedia.org/wiki/Purchasing_power&quot; target=&quot;_blank&quot;&gt;purchasing power&lt;/a&gt;?&lt;/p&gt;&lt;p&gt;The Price Perspective add-on answers these questions. Let’s consider an example: my income is sufficient to buy myself a delivery pizza for dinner without a second thought. How much work does it take for someone in Afghanistan to buy the same pizza? I can fire up Price Perspective to check:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://redacted.moe/f/7e13a09b.png&quot;&gt;&lt;/p&gt;&lt;p&gt;The results are pretty shocking.&lt;/p&gt;&lt;p&gt;How about another example: say I’m looking to buy a house in the Netherlands. I fire up funda.nl and look at a few places in Amsterdam. After a few minutes wondering if I’ll ever be in an economic position to actually &lt;em&gt;afford&lt;/em&gt; any of these homes (and speculating on if that day will come before or after I have spent this much money on rent over my lifetime), I wonder what these prices look like from the other side. Let’s see what it’d take for the Zuck to buy this apartment I fancy:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://redacted.moe/f/37ddbe71.png&quot;&gt;&lt;/p&gt;&lt;p&gt;Well… that’s depressing. Let’s experiment with Price Perspective to see what it would take to make a dent in Zuck’s wallet. Let’s add some zeroes.&lt;/p&gt;&lt;p&gt;&lt;video src=&quot;https://redacted.moe/f/2752d5bc.webm&quot; autoplay loop muted controls&gt;&lt;/video&gt;&lt;/p&gt;&lt;p&gt;So, Zuckerberg over-bidding this apartment to the tune of €6.5B would cost him a proportion of his annual income which is comparable to me buying it for €5,000.&lt;/p&gt;&lt;p&gt;How about the reverse? How long would I have to work to buy, say, Jeff Bezos’s new mansion?&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://redacted.moe/f/608ace06.png&quot;&gt;&lt;/p&gt;&lt;p&gt;Yep. That level of wealth inequality is a sign of a totally normal, healthy, well-functioning society.&lt;/p&gt;&lt;p&gt;Curious to try it out for yourself? Get Price Perspective from &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/price-perspective/&quot; target=&quot;_blank&quot;&gt;addons.mozilla.org&lt;/a&gt;, tell it where you live and how much money you make in a year, and develop your own sense of perspective.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Price-perspective/</link>
        
        <pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Price-perspective/</guid>
      </item>
    
      <item>
        
        
          <title>Using linkhut to signal-boost my bookmarks</title>
          <description>
            &lt;hr&gt;&lt;p&gt;&lt;strong&gt;Notice&lt;/strong&gt;: linkhut has started to use generative AI tools upstream. Consequently, I have withdrawn my endorsement of the project.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;It must have been at least a year ago that I first noticed &lt;a href=&quot;https://linkhut.org/&quot; target=&quot;_blank&quot;&gt;linkhut&lt;/a&gt;, and its flagship instance at &lt;a href=&quot;https://ln.ht&quot; target=&quot;_blank&quot;&gt;ln.ht&lt;/a&gt;, appear on SourceHut, where it immediately caught my attention for its good taste in inspirations. Once upon a time, I had a &lt;a href=&quot;https://pinboard.in/&quot; target=&quot;_blank&quot;&gt;Pinboard&lt;/a&gt; account, which is a similar concept, but I never used it for anything in the end. When I saw linkhut I had a similar experience: I signed up and played with it for a few minutes before moving on.&lt;/p&gt;&lt;p&gt;I’ve been rethinking my relationship social media lately, as some may have inferred from my unannounced disappearance from Mastodon.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; While reflecting on this again recently, in a stroke of belated inspiration I suddenly appreciated the appeal of tools like linkhut, especially alongside RSS feeds – signal-boosting stuff I read and found interesting.&lt;/p&gt;&lt;p&gt;The appeal of this reminds me of one of the major appeals of SoundCloud to me, back when I used it circa… 2013? That is: I could listen to the music that artists I liked were listening to, and that was &lt;em&gt;amazing&lt;/em&gt; for discovering new music. Similarly, for those of you who enjoy my blog posts, and want to read the stuff I like reading, check out my &lt;a href=&quot;https://ln.ht/~ddevault&quot; target=&quot;_blank&quot;&gt;linkhut feed&lt;/a&gt;. You can even &lt;a href=&quot;https://ln.ht/_/feed/~ddevault&quot; target=&quot;_blank&quot;&gt;subscribe to its RSS feed&lt;/a&gt; if you like. There isn’t much there today, but I will be filling it up with interesting articles I see and projects I find online.&lt;/p&gt;&lt;p&gt;I want to read &lt;em&gt;your&lt;/em&gt; linkhut feed, too, but it’s pretty quiet there at the moment. If you find the idea interesting, sign up for an account or set up your own instance and start bookmarking stuff – and &lt;a href=&quot;mailto:drew@ddevault.org&quot; target=&quot;_blank&quot;&gt;email me&lt;/a&gt; your feed so I can find some good stuff to subscribe to in my own feed reader.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Using-linkhut/</link>
        
        <pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Using-linkhut/</guid>
      </item>
    
      <item>
        
        
          <title>Please stop externalizing your costs directly into my face</title>
          <description>
            &lt;p&gt;&lt;em&gt;This blog post is expressing personal experiences and opinions and doesn’t reflect any official policies of SourceHut.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Over the past few months, instead of working on our priorities at SourceHut, I have spent anywhere from 20-100% of my time in any given week mitigating hyper-aggressive LLM crawlers at scale. This isn’t the first time SourceHut has been at the wrong end of some malicious bullshit or paid someone else’s externalized costs – every couple of years someone invents a new way of ruining my day.&lt;/p&gt;&lt;p&gt;Four years ago, we decided to &lt;a href=&quot;https://man.sr.ht/ops/builds.sr.ht-migration.md&quot; target=&quot;_blank&quot;&gt;require payment to use our CI services&lt;/a&gt; because it was being abused to mine cryptocurrency. We alternated between periods of designing and deploying tools to curb this abuse and periods of near-complete outage when they adapted to our mitigations and saturated all of our compute with miners seeking a profit. It was bad enough having to beg my friends and family to avoid “investing” in the scam without having the scam break into my business and trash the place every day.&lt;/p&gt;&lt;p&gt;Two years ago, we threatened to &lt;a href=&quot;https://sourcehut.org/blog/2023-01-09-gomodulemirror/&quot; target=&quot;_blank&quot;&gt;blacklist the Go module mirror&lt;/a&gt; because for some reason the Go team thinks that running terabytes of git clones all day, every day for every Go project on git.sr.ht is cheaper than maintaining any state or using webhooks or coordinating the work between instances or even just designing a module system that doesn’t require Google to DoS git forges whose entire annual budgets are considerably smaller than a single Google engineer’s salary.&lt;/p&gt;&lt;p&gt;Now it’s LLMs. If you think these crawlers respect robots.txt then you are several assumptions of good faith removed from reality. These bots crawl everything they can find, robots.txt be damned, including expensive endpoints like git blame, every page of every git log, and every commit in every repo, and they do so using random User-Agents that overlap with end-users and come from tens of thousands of IP addresses – mostly residential, in unrelated subnets, each one making no more than one HTTP request over any time period we tried to measure – actively and maliciously adapting and blending in with end-user traffic and avoiding attempts to characterize their behavior or block their traffic.&lt;/p&gt;&lt;p&gt;We are experiencing dozens of brief outages per week, and I have to review our mitigations several times per day to keep that number from getting any higher. When I do have time to work on something else, often I have to drop it when all of our alarms go off because our current set of mitigations stopped working. Several high-priority tasks at SourceHut have been delayed weeks or even months because we keep being interrupted to deal with these bots, and many users have been negatively affected because our mitigations can’t always reliably distinguish users from bots.&lt;/p&gt;&lt;p&gt;All of my sysadmin friends are dealing with the same problems. I was asking one of them for feedback on a draft of this article and our discussion was interrupted to go deal with a new wave of LLM bots on their own server. Every time I sit down for beers or dinner or to socialize with my sysadmin friends it’s not long before we’re complaining about the bots and asking if the other has cracked the code to getting rid of them once and for all. The desperation in these conversations is palpable.&lt;/p&gt;&lt;p&gt;Whether it’s cryptocurrency scammers mining with FOSS compute resources or Google engineers too lazy to design their software properly or Silicon Valley ripping off all the data they can get their hands on at everyone else’s expense… I am sick and tired of having all of these costs externalized directly into my fucking face. Do something productive for society or get the hell away from my servers. Put all of those billions and billions of dollars towards the common good before sysadmins collectively start a revolution to do it for you.&lt;/p&gt;&lt;p&gt;Please stop legitimizing LLMs or AI image generators or GitHub Copilot or any of this garbage. I am begging you to stop using them, stop talking about them, stop making new ones, just &lt;em&gt;stop&lt;/em&gt;. If blasting CO&lt;sub&gt;2&lt;/sub&gt; into the air and ruining all of our freshwater and traumatizing cheap laborers and making every sysadmin you know miserable and ripping off code and books and art at scale and ruining our fucking democracy isn’t enough for you to leave this shit alone, what is?&lt;/p&gt;&lt;p&gt;If you personally work on developing LLMs et al, know this: I will never work with you again, and I will remember which side you picked when the bubble bursts.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Stop-externalizing-your-costs-on-me/</link>
        
        <pubDate>Mon, 17 Mar 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Stop-externalizing-your-costs-on-me/</guid>
      </item>
    
      <item>
        
        
          <title>A holistic perspective on intellectual property, part 1</title>
          <description>
            &lt;p&gt;I’d like to write about intellectual property in depth, in this first of a series of blog posts on the subject. I’m not a philosopher, but philosophy is the basis of reasonable politics so buckle up for a healthy Friday afternoon serving of it.&lt;/p&gt;&lt;p&gt;To understand intellectual property, we must first establish at least a shallow understanding of property generally. What is property?&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; An incomplete answer might state that a material object I have power over is my property. An apple I have held in my hand is mine, insofar as nothing prevents me from using it (and, in the process, destroying it), or giving it away, or planting it in the ground. However, you might not agree that this apple is necessarily &lt;em&gt;mine&lt;/em&gt; if I took it from a fruit stand without permission. This act is called “theft” — one of many possible transgressions upon property.&lt;/p&gt;&lt;p&gt;It is important to note that the very possibility that one could illicitly assume possession of an object is a strong indication that “property” is a social convention, rather than a law of nature; one cannot defy the law of gravity in the same way as one can defy property. And, given that, we could try to imagine other social conventions to govern the use of &lt;em&gt;things&lt;/em&gt; in a society. If we come up with an idea we like, and we’re in a radical mood, we could even challenge the notion of property in society at large and seek to implement a different social convention.&lt;/p&gt;&lt;p&gt;As it stands today, the social convention tells us property is a &lt;em&gt;thing&lt;/em&gt; which has an “owner”, or owners, to whom society confers certain rights with respect to the thing in question. That may include, for example, the right to use it, to destroy it, to exclude others from using it, to sell it, or give it away, and so on. Property is this special idea society uses to grant you the authority to use a bunch of verbs with respect to a thing. However, being a social convention, nothing prevents me from using any of these verbs on something society does not recognize as my property, e.g. by &lt;abbr title=&apos;&quot;I have a bridge to sell you&quot; is an English-language idiom that refers to selling something you do not own to a gullible person.&apos;&gt; selling you this bridge&lt;/abbr&gt;. This is why the social convention must be &lt;strong&gt;enforced&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;And how is it enforced? We could enforce property rights with shame: stealing can put a stain on one’s reputation, and this shame may pose an impediment to one’s social needs and desires, and as such theft is discouraged. We can also use guilt: if you steal something, but don’t get caught, you could end up remorseful without anyone to shame you for it, particularly with respect to the harm done to the person who suffered a loss of property as a result. Ultimately, in modern society the social convention of property is enforced with, well, force. If you steal something, society has appointed someone with a gun to track you down, restrain you, and eventually lock you up in a miserable room with bars on the windows.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;I’d like to take a moment here to acknowledge the hubris of property: we see the bounty of the natural world and impose upon it these imagined rights and privileges, divvy it up and hand it out and hoard it, and resort to cruelty if anyone steps out of line. Indeed this may be justifiable if the system of private property is sufficiently beneficial to society, and the notion of property is so deeply ingrained into our system that it feels normal and unremarkable. It’s worth remembering that it has trade-offs, that we made the whole thing up, and that we can make up something else with different trade-offs. That being said, I’m personally fond of most of my personal property and I’d like to keep enjoying most of my property rights as such, so take from that what you will.&lt;/em&gt;&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-2&quot; id=&quot;fn-2-ref-1&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;One way we can justify property rights is by using them as a tool for managing &lt;em&gt;scarcity&lt;/em&gt;. If demand for coffee exceeds the supply of coffee beans, a scarcity exists, meaning that not everyone who wants to have coffee gets to have some. But, we still want to enjoy scarce things. Perhaps someone who foregoes coffee will enjoy some other scarce resource, such as tea — then everyone can benefit in some part from some access to scarce resources. I suppose that the social convention of property can derive some natural legitimacy from the fact that some resources are scarce.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-3&quot; id=&quot;fn-3-ref-1&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; In this sense, private property relates to the problem of distribution.&lt;/p&gt;&lt;p&gt;But a naive solution to distribution has flaws. For example, what of hoarding? Are property rights legitimate when someone takes more than they need or intend to use? This behavior could be motivated by an antagonistic relationship with society at large, such as as a means of driving up prices for private profit; such behavior could be considered anti-social and thus a violation of the social convention as such.&lt;/p&gt;&lt;p&gt;Moreover, property which is destroyed by its use, such as coffee, is one matter, but further questions are raised when we consider durable goods, such as a screwdriver. The screwdriver in my shed spends the vast majority of its time out of use. Is it just for me to assert property rights over my screwdriver when I am not using it? To what extent is the scarcity of screwdrivers &lt;em&gt;necessary&lt;/em&gt;? Screwdrivers are not fundamentally scarce, given that the supply of idle screwdrivers far outpaces the demand for screwdriver use, but our modern conception of property has the unintended consequence of creating scarcity where there is none by denying the use of idle screwdrivers where they are needed.&lt;/p&gt;&lt;p&gt;Let’s try to generalize our understanding of property, working our way towards “intellectual property” one step at a time. To begin with, what happens if we expand our understanding of property to include immaterial things? Consider domain names as a kind of property. In theory, domain names are abundant, but some names are more desirable than others. We assert property rights over them, in particular the right to use a name and exclude others from using it, or to derive a profit from exclusive use of a desirable name.&lt;/p&gt;&lt;p&gt;But a domain name doesn’t really exist per-se: it’s just an entry in a ledger. The electric charge on the hard drives in your nearest DNS server’s database exist, but the domain name it represents doesn’t exist in quite the same sense as the electrons do: it’s immaterial. Is applying our conception of property to these immaterial things justifiable?&lt;/p&gt;&lt;p&gt;We can start answering this question by acknowledging that property rights are &lt;em&gt;useful&lt;/em&gt; for domain names, in that this gives domain names desirable properties that serve productive ends in society. For example, exclusive control over a domain name allows a sense of authenticity to emerge from its use, so that you understand that pointing your browser to d302hfib-20260520.pages.dev will return the content that the person, Drew DeVault, wrote for you. We should also acknowledge that there are negative side-effects of asserting property rights over domains, such as domain squatting, extortionate pricing for “premium” domain names, and the advantage one party has over another if they possess a desirable name by mere fact of that possession, irrespective of merit.&lt;/p&gt;&lt;p&gt;On the balance of things, if we concede the legitimacy of personal property&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-4&quot; id=&quot;fn-4-ref-1&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; I find it relatively easy to concede the legitimacy of this sort of property, too.&lt;/p&gt;&lt;p&gt;The next step is to consider if we can generalize property rights to govern immaterial, non-finite things, like a story. A book, its paper and bindings and ink, is a material, finite resource, and can be thought of in terms that apply to material property. But what of the words formed by the ink? They can be trivially copied with a pen and paper, or transformed into a new medium by reading it aloud to an audience, and these processes do not infringe on the material property rights associated with the book. This process cannot be thought of as stealing, as the person who possesses a copy of the book is not asserting property rights over the original. In our current intellectual property regime, this person is transgressing via use of the &lt;em&gt;idea&lt;/em&gt;, the &lt;em&gt;intellectual&lt;/em&gt; property — the &lt;em&gt;thing&lt;/em&gt; in the abstract space occupied by the story itself. Is that, too, a just extension of our notion of property?&lt;/p&gt;&lt;p&gt;Imagine with me the relationship one has with one’s property, independent of the social constructs around property. With respect to material property, a relationship of possession exists: I physically possess a thing, and I have the ability to make use of it through my possession of it. If someone else were to deny me access to this thing, they would have to resort to force, and I would have to resort to force should I resist their efforts.&lt;/p&gt;&lt;p&gt;Our relationship with intellectual property is much different. An idea cannot be withheld or seized by force. Instead, our relationship to intellectual property is defined by our &lt;em&gt;history&lt;/em&gt; with respect to an idea. In the case of material property, the ground truth is that I keep it locked in my home to deny others access to it, and the social construct formalizes this relationship. With respect to intellectual property, such as the story in a book, the ground truth is that, sometime in the past, I imagined it and wrote it down. The social construct of intellectual property invents an imagined relationship of possession, modelled after our relationship with material property.&lt;/p&gt;&lt;p&gt;Why?&lt;/p&gt;&lt;p&gt;The resource with the greatest and most fundamental scarcity is our time,&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-5&quot; id=&quot;fn-5-ref-1&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; and as a consequence the labor which goes into making something is of profound importance. Marx famously argued for a “labor theory of value”, which tells us that the value inherent in a good or service is in the labor which is required to provide it. I think he was on to something!&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-6&quot; id=&quot;fn-6-ref-1&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; Intellectual property is not scarce, nor can it be possessed, but it does have &lt;em&gt;value&lt;/em&gt;, and that value could ultimately be derived from the labor which produced it.&lt;/p&gt;&lt;p&gt;The social justification for intellectual property as a legal concept is rooted in the value of this labor. We recognize that intellectual labor is valuable, and produces an artifact — e.g. a story — which is valuable, but is not scarce. A capitalist society fundamentally depends on scarcity to function, and so through intellectual property norms we create an artificial scarcity to reward (and incentivize) intellectual labor without questioning our fundamental assumptions about capitalism and value.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-7&quot; id=&quot;fn-7-ref-1&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; But, I digress — let’s revisit the subject in part two.&lt;/p&gt;&lt;p&gt;In part two of this series on intellectual property, I will explain the modern intellectual property regime as I understand it, as well as its history and justification. So equipped with the philosophical and legal background, part three will constitute the bulk of my critique of intellectual property, and my ideals for reform. Part four will examine how these ideas altogether apply in practice to open source, as well as the hairy questions of intellectual property as applied to modern problems in this space, such as the use of LLMs to file the serial numbers off of open source software.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;If you want to dive deeper into the philosophy here, a great resource is the Stanford Encyclopedia of Philosophy. Check out their articles on &lt;a href=&quot;https://plato.stanford.edu/entries/property/&quot; target=&quot;_blank&quot;&gt;Property and Ownership&lt;/a&gt; and &lt;a href=&quot;https://plato.stanford.edu/entries/redistribution/&quot; target=&quot;_blank&quot;&gt;Redistribution&lt;/a&gt; for a start, which expand on some of the ideas I’ve drawn on here and possess a wealth of citations catalogued with a discipline I can never seem to muster for my blog posts. I am a programmer, not a philosopher, so if you want to learn more about this you should go read from the hundreds of years of philosophers who have worked on this with rigor and written down a bunch of interesting ideas.&lt;/em&gt;&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/On-intellectual-property/</link>
        
        <pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/On-intellectual-property/</guid>
      </item>
    
      <item>
        
        
          <title>Join us to discuss transparency and governance at FOSDEM &apos;25</title>
          <description>
            &lt;p&gt;Good news: it appears that Jack Dorsey’s FOSDEM talk has been cancelled!&lt;/p&gt;&lt;p&gt;&lt;em&gt;This is a follow up to two earlier posts, which you can read here: &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/No-Billionares-at-FOSDEM-please/&quot;&gt;one&lt;/a&gt; and &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/FOSDEM-protest/&quot;&gt;two&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;I say it “appears” so, because there has been no official statement from anyone to that effect. There has also been no communication from staff to the protest organizers, including to our email reaching out &lt;a href=&quot;https://fosdem.org/2025/news/2025-01-16-protests/&quot; target=&quot;_blank&quot;&gt;as requested&lt;/a&gt; to discuss fire safety and crowd control concerns with the staff. The situation is a bit unclear, but… we’ll extend FOSDEM the benefit of the doubt, and with it our gratitude. From all of the volunteers who have been organizing this protest action, we extend our heartfelt thanks to the staff for reconsidering the decision to platform Dorsey and Block, Inc. at FOSDEM. All of us – long-time FOSDEM volunteers, speakers, devroom organizers, and attendees – are relieved to know that FOSDEM stands for our community’s interests.&lt;/p&gt;&lt;p&gt;More importantly: what comes next?&lt;/p&gt;&lt;p&gt;The frustration the community felt at learning that Block was sponsoring FOSDEM and one of the keynote slots&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; had been given to Dorsey and his colleagues uncovered some deeper frustrations with the way FOSDEM is run these days. This year is FOSDEM’s 25th anniversary, and it seems sorely overdue for graduating from the “trust us, it’s crazy behind the scenes” governance model to something more aligned with the spirit of open source.&lt;/p&gt;&lt;p&gt;We trust the FOSDEM organizers — we can extend them the benefit of the doubt when they tell us that talk selection is independent of sponsorships. But it strains our presumption of good faith when the talk proposal was &lt;a href=&quot;https://chaos.social/@phoenix/113849512507355397&quot; target=&quot;_blank&quot;&gt;rejected by 3 of the 4&lt;/a&gt; independent reviewers and went through anyway. And it’s kind of weird that we have to take them at their word — that the talk selection process isn’t documented anywhere publicly, nor the conflict of interest policy, nor the sponsorship terms, nor almost anything at all about how FOSDEM operates or is governed internally. Who makes decisions? How? We don’t know, and that’s kind of weird for something so important in the open source space.&lt;/p&gt;&lt;p&gt;Esther Payne, a speaker at FOSDEM 2020, &lt;a href=&quot;https://www.onepict.com/20250122-mirror.html&quot; target=&quot;_blank&quot;&gt;summed up these concerns&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Why do we have so little information on the FOSDEM site about the budget and just how incorporated is FOSDEM as an organisation? How do the laws of Belgium affect the legalities of the organisation? How is the bank account administrated? How much money goes into the costs of this year, and how much of the budget goes into startup costs for the next year?&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Peter Zaitsev, a long-time devroom organizer and FOSDEM speaker for many years, &lt;a href=&quot;https://www.percona.com/blog/in-search-of-transparency-at-fosdem/&quot; target=&quot;_blank&quot;&gt;asked similar questions last year&lt;/a&gt;. I’ve spoken to the volunteers who signed up for the protest – we’re relieved that Dorsey’s talk has been cancelled, but we’re still left with big questions about transparency and governance at FOSDEM.&lt;/p&gt;&lt;p&gt;So, what’s next?&lt;/p&gt;&lt;p&gt;&lt;del&gt;Let’s do something useful with that now-empty time slot in Janson. Anyone who planned to attend the protest is encouraged to come anyway on Sunday at 12:00 PM, where we’re going to talk amongst ourselves and anyone else who shows up about what we want from FOSDEM in the future, and what a transparent and participatory model of governance would look like. We would be thrilled if anyone on the FOSDEM staff wants to join the conversation as well, assuming their busy schedule permits. We’ll prepare a summary of our discussion and our findings to submit to the staff and the FOSDEM community for consideration after the event.&lt;/del&gt;&lt;/p&gt;&lt;p&gt;Until then – I’ll see you there!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NOTICE&lt;/strong&gt;: The discussion session has been cancelled. After meeting with many of the protest volunteers and discussing the matter among the organizers, we have agreed that de-platforming Dorsey is mission success and improvising further action isn’t worth the trouble. We’ll be moving for reforms at FOSDEM after the event – I’ll keep you posted.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;P.S. It’s a shame we won’t end up handing out our pamphlets. The volunteers working on that came up with this amazing flyer and I think it doesn’t deserve to go unseen:&lt;/p&gt;&lt;style&gt;
.flyers {
  display: flex;
  justify-content: space-around;
}

.flyers a {
  max-width: 45%;
}
&lt;/style&gt;

&lt;div class=&quot;flyers&quot;&gt;
  &lt;a href=&quot;https://redacted.moe/f/abaeed07.pdf&quot;&gt;
    &lt;img
      alt=&quot;Front face of the flyer: &apos;No billionares at FOSDEM&apos; over a picture of Jack Dorsey with the &apos;X&apos; logo over his mouth.&quot;
      src=&quot;https://redacted.moe/f/261d03ea.jpeg&quot;&gt;
  &lt;/a&gt;
  &lt;a href=&quot;https://redacted.moe/f/abaeed07.pdf&quot;&gt;
    &lt;img
      alt=&quot;Reverse face of the flyer, detailing Dorsey and Block, Inc&apos;s numerous misdeeds&quot;
      src=&quot;https://redacted.moe/f/adab02ce.jpeg&quot;&gt;
    &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;We will be doing a modest print run for posterity — find one of us at FOSDEM if you want one.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Transparency-and-governance-FOSDEM/</link>
        
        <pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Transparency-and-governance-FOSDEM/</guid>
      </item>
    
      <item>
        
        
          <title>FOSDEM &apos;25 protest</title>
          <description>
            &lt;p&gt;&lt;em&gt;Update: Dorsey’s talk was cancelled! &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/Transparency-and-governance-FOSDEM/&quot;&gt;See the update here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/No-Billionares-at-FOSDEM-please/&quot;&gt;Last week&lt;/a&gt;, I wrote to object to Jack Dorsey and his company, Block, Inc., being accepted as main track speakers at FOSDEM, and proposed a protest action in response. &lt;a href=&quot;https://fosdem.org/2025/news/2025-01-16-protests/&quot; target=&quot;_blank&quot;&gt;FOSDEM issued a statement about our plans&lt;/a&gt; on Thursday.&lt;/p&gt;&lt;p&gt;Today, I have some updates for you regarding the planned action.&lt;/p&gt;&lt;p&gt;I would like to emphasize that we are not protesting FOSDEM or its organizers. We are protesting Jack Dorsey and his company, first and foremost, from promoting their business at FOSDEM. We are members of the FOSDEM community. We have variously been speakers, devroom organizers, volunteers, and attendees for years — in other words, we are not activism tourists. We have a deep appreciation for the organizers and all of the work that they have done over the years to make FOSDEM such a success.&lt;/p&gt;&lt;p&gt;That we are taking action demonstrates that we value FOSDEM, that we believe it represents our community, and that we want to defend its — our — ethos. Insofar as we have a message to the FOSDEM organizers, it is one of gratitude, and an appeal to build a more open and participatory process, in the spirit of open source, and especially to improve the transparency of the talk selection process, sponsorship terms, and conflict of interest policies, so protests like ours are not necessary in the future. To be clear, we do not object to the need for sponsors generally at FOSDEM — we understand that FOSDEM is a free, volunteer driven event, many of us having volunteered for years — but we do object specifically to Jack Dorsey and Block, Inc. being selected as sponsors and especially as speakers.&lt;/p&gt;&lt;p&gt;As for the planned action, I have some more information for anyone who wishes to participate. Our purpose is to peacefully disrupt Dorsey’s talk, and &lt;em&gt;only&lt;/em&gt; Dorsey’s talk, which is scheduled to take place between 12:00 and 12:30 on Sunday, February 2nd in Janson. If you intend to participate, we will be meeting outside of the &lt;em&gt;upper&lt;/em&gt; entrance to Janson at 11:45 AM. We will be occupying the stage for the duration of the scheduled time slot in order to prevent the talk from proceeding as planned.&lt;/p&gt;&lt;p&gt;To maintain the peaceful nature of our protest and minimize the disruption to FOSDEM generally, we ask participants to strictly adhere to the following instructions:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Do not touch anyone else, or anyone else’s property, for any reason.&lt;/li&gt;&lt;li&gt;Do not engage in intimidation.&lt;/li&gt;&lt;li&gt;Remain quiet and peaceful throughout the demonstration.&lt;/li&gt;&lt;li&gt;When the protest ends, disperse peacefully and in a timely manner.&lt;/li&gt;&lt;li&gt;Leave the room the way you found it.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Dorsey’s time slot is scheduled to end at 12:30, but we may end up staying as late as 14:00 to hand the room over to the next scheduled talk.&lt;/p&gt;&lt;p&gt;I’ve been pleased by the response from volunteers (some of whom helped with this update — thanks!), but we still need a few more! I have set up a mailing list for planning the action. If you plan to join, and especially if you’re willing and able to help with additional tasks that need to be organized, please &lt;a href=&quot;mailto:drew@ddevault.org&quot; target=&quot;_blank&quot;&gt;contact me directly&lt;/a&gt; to receive an invitation to the mailing list.&lt;/p&gt;&lt;p&gt;Finally, I have some corrections to issue regarding last week’s blog post.&lt;/p&gt;&lt;p&gt;In the days since I wrote my earlier blog post, Dorsey’s talk has been removed from the list of keynotes and moved to the main track, where it will occupy the same time slot in the same room but not necessarily be categorized as a “keynote”.&lt;/p&gt;&lt;p&gt;It has also been pointed out that Dorsey does not bear sole responsibility for Twitter’s sale. However, he is complicit and he profited handsomely from the sale and all of its harmful consequences. The sale left the platform at the disposal of the far right, causing a sharp rise in hate speech and harassment and the layoffs of 3,700 of the Twitter employees that made it worth so much in the first place.&lt;/p&gt;&lt;p&gt;His complicity, along with his present-day activities at Block, Inc. and the priorities of the company that he represents as CEO — its irresponsible climate policy, $120M in fines for enabling consumer fraud, and the layoffs of another 1,000 employees in 2024 despite posting record profits on $5B in revenue — are enough of a threat to our community and its ethos to raise alarm at his participation in FOSDEM. We find this compelling enough to take action to prevent him and his colleagues from using FOSDEM’s platform to present themselves as good actors in our community and sell us their new “AI agentic framework”.&lt;/p&gt;&lt;p&gt;The open source community and FOSDEM itself would not exist without collective action. Our protest to defend its principles is in that spirit. Together we can, and will, de-platform Jack Dorsey.&lt;/p&gt;&lt;p&gt;I’ll see you there!&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/FOSDEM-protest/</link>
        
        <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/FOSDEM-protest/</guid>
      </item>
    
      <item>
        
        
          <title>No billionaires at FOSDEM</title>
          <description>
            &lt;p&gt;&lt;em&gt;Update: Dorsey’s talk was cancelled! &lt;a href=&quot;https://d302hfib-20260520.pages.dev/blog/Transparency-and-governance-FOSDEM/&quot;&gt;See the update here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Jack Dorsey, former CEO of Twitter, ousted board member of BlueSky, and grifter extraordinaire to the tune of a $5.6B net worth, is &lt;a href=&quot;https://fosdem.org/2025/schedule/event/fosdem-2025-4507-infusing-open-source-culture-into-company-dna-a-conversation-with-jack-dorsey-and-manik-surtani-block-s-head-of-open-source/&quot; target=&quot;_blank&quot;&gt;giving a keynote at FOSDEM&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The FOSDEM keynote stage is one of the biggest platforms in the free software community. Janson is the biggest venue in the event – its huge auditorium can accommodate over 1,500 of FOSDEM’s 8,000 odd attendees, and it is live streamed to a worldwide audience as the face of one of the free and open source software community’s biggest events of the year. We’ve platformed Red Hat, the NLNet Foundation, NASA, numerous illustrious community leaders, and many smaller projects that embody our values and spirit at this location to talk about their work or important challenges our community faces.&lt;/p&gt;&lt;p&gt;Some of these challenges, as a matter of fact, are Jack Dorsey’s fault. In 2023 this stage &lt;a href=&quot;https://archive.fosdem.org/2023/schedule/event/hachyderm/&quot; target=&quot;_blank&quot;&gt;hosted Hachyderm’s Kris Nóva&lt;/a&gt; to discuss an exodus of Twitter refugees to the fediverse. After Dorsey sold Twitter to Elon Musk, selling the platform out to the far right for a crisp billion-with-a-“B” dollar payout, the FOSS community shouldered the burden – both with our labor and our wallets – of a massive exodus onto our volunteer-operated servers, especially from victims fleeing the hate speech and harassment left in the wake of the sale. Two years later one of the principal architects of, and beneficiaries of, that disaster will step onto the same stage. Even if our community hadn’t been directly harmed by Dorsey’s actions, I don’t think that we owe this honor to someone who took a billion dollars to ruin their project, ostracize their users, and destroy the livelihoods of almost everyone who worked on it.&lt;/p&gt;&lt;p&gt;Dorsey is presumably being platformed in Janson because his blockchain bullshit company is a &lt;a href=&quot;https://fosdem.org/2025/about/sponsors/&quot; target=&quot;_blank&quot;&gt;main sponsor of FOSDEM&lt;/a&gt; this year. Dorsey and his colleagues want to get us up to speed on what Block is working on these days. Allow me to give you a preview: in addition to posting $5B in revenue and a 21% increase in YoY profit in 2024, Jack Dorsey laid off 1,000 employees, ordering them not to publicly discuss board member Jay-Z’s contemporary sexual assault allegations on their way out, and announced a new bitcoin mining ASIC in collaboration with Core Scientific, who presumably installed them into &lt;a href=&quot;https://investors.corescientific.com/news-events/press-releases/detail/99/core-scientific-and-port-muskogee-break-ground-on-100-mw-hpc-data-center&quot; target=&quot;_blank&quot;&gt;their new 100MW Muskogee, OK bitcoin mining installation&lt;/a&gt;, proudly served by the &lt;a href=&quot;https://www.gem.wiki/Muskogee_Generating_Station&quot; target=&quot;_blank&quot;&gt;Muskogee Generating Station&lt;/a&gt; fossil fuel power plant and its &lt;a href=&quot;https://www.gem.wiki/Muskogee_Generating_Station#Emissions_Data&quot; target=&quot;_blank&quot;&gt;11 million tons&lt;/a&gt; of annual CO&lt;sub&gt;2&lt;/sub&gt; emissions and &lt;a href=&quot;https://www.gem.wiki/Muskogee_Generating_Station#Death_and_disease_attributable_to_fine_particle_pollution_from_Muskogee_Generating_Station&quot; target=&quot;_blank&quot;&gt;an estimated 62 excess deaths&lt;/a&gt; in the local area due to pollution associated with the power plant. Nice.&lt;/p&gt;&lt;p&gt;In my view, billionaires are not welcome at FOSDEM. If billionaires want to participate in FOSS, I’m going to ask them to refrain from using our platforms to talk about their AI/blockchain/bitcoin/climate-disaster-as-a-service grifty business ventures, and instead buy our respect by, say, donating 250 million dollars to &lt;a href=&quot;https://nlnet.nl/&quot; target=&quot;_blank&quot;&gt;NLNet&lt;/a&gt; or the &lt;a href=&quot;https://www.sovereign.tech/&quot; target=&quot;_blank&quot;&gt;Sovereign Tech Fund&lt;/a&gt;. That figure, as a percentage of Dorsey’s wealth, is proportional to the amount of money I donate to FOSS every year, by the way. That kind of money would keep the FOSS community running for decades.&lt;/p&gt;&lt;p&gt;I do not want to platform Jack Dorsey on this stage. To that end, I am organizing a sit-in, in which I and anyone who will join me are going to sit ourselves down on the Janson stage during his allocated time slot and peacefully prevent the talk from proceeding as scheduled. We will be meeting at 11:45 AM outside of Janson, 15 minutes prior to Dorsey’s scheduled time slot. Once the stage is free from the previous speaker, we will sit on the stage until 12:30 PM. Bring a good book. If you want to help organize this sit-in, or just let me know that you intend to participate, please contact me via &lt;a href=&quot;mailto:drew@ddevault.org&quot; target=&quot;_blank&quot;&gt;email&lt;/a&gt;; I’ll set up a mailing list if there’s enough interest in organizing things like printing out pamphlets to this effect, or even preparing an alternative talk to “schedule” in his slot.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;a href=&quot;https://d302hfib-20260520.pages.dev/2025/01/20/2025-01-20-FOSDEM-protest.html&quot; target=&quot;_blank&quot;&gt;Follow-up: FOSDEM ’25 protest&lt;/a&gt;&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/No-Billionares-at-FOSDEM-please/</link>
        
        <pubDate>Thu, 16 Jan 2025 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/No-Billionares-at-FOSDEM-please/</guid>
      </item>
    
      <item>
        
        
          <title>Neurodivergence and accountability in free software</title>
          <description>
            &lt;p&gt;In November of last year, I wrote &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2023/11/25/2023-11-26-RMS-on-sex.html&quot; target=&quot;_blank&quot;&gt;Richard Stallman’s political discourse on sex&lt;/a&gt;, which argues that Richard Stallman, the founder of and present-day voting member of the board of directors of the Free Software Foundation (FSF), endorses and advocates for a harmful political agenda which legitimizes adult attraction to minors, consistently defends adults accused of and convicted of sexual crimes with respect to minors, and more generally erodes norms of consent and manipulates language regarding sexual harassment and sexual assault in his broader political program.&lt;/p&gt;&lt;p&gt;In response to this article, and on many occasions when I have re-iterated my position on Stallman in other contexts, a common response is to assert that my calls to censure Stallman are ableist, on the basis that Stallman is neurodivergent (ND). This line of reasoning suggests that Stallman’s awkward and zealous views on sex are in line with his awkward and zealous positions on other matters (such as his insistence on “GNU/Linux” terminology rather than “Linux”), and that together this illustrates a pattern which suggests neurodivergence is at play. This argumentation is flawed, but I think it presents us with a good opportunity to talk about how neurodivergence and sexism presents in our community.&lt;/p&gt;&lt;p&gt;Neurodivergence (antonymous with “neurotypical”) is an umbrella term that encompasses a wide variety of human experiences, including autism, ADHD, personality disorders, bipolar disorder, and others. The particular claims I’ve heard about Stallman suggest that he is “obviously” autistic, or has &lt;a href=&quot;https://en.wikipedia.org/wiki/Asperger_syndrome&quot; target=&quot;_blank&quot;&gt;Asperger syndrome&lt;/a&gt;.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; The allegation of ableism in my criticisms of Stallman are rooted in this presumption of neurodivergence in Stallman: the argument goes that I am putting his awkwardness on display and mocking him for it, that calling for the expulsion of someone on the basis of being awkward is ableist, and that this has a chilling effect on our community, which is generally thought to have a high incidence of neurodivergence. I will respond to this defense of Stallman today.&lt;/p&gt;&lt;p&gt;A defense of problematic behavior that cites neurodivergence to not only explain, but excuse, said behavior, is ableist and harms neurodivergent people, rather than standing up for them as these arguments portray themselves as doing. To illustrate this, I opened a discussion on the Fediverse asking neurodivergent people to chime in and reached out directly to some ND friends in my social circle.&lt;/p&gt;&lt;hr&gt;&lt;h3&gt;Aside: Is Stallman neurodivergent?&lt;/h3&gt;&lt;p&gt;Stallman’s neurodivergence is an unsolicited armchair diagnosis with no supporting evidence besides “vibes”. &lt;a href=&quot;https://www.computerworld.com/article/1683286/asperger-s-oxymoron.html&quot; target=&quot;_blank&quot;&gt;This 2008 article&lt;/a&gt; summarizes his public statements on the subject:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“During a 2000 profile for the Toronto Star, Stallman described himself to an interviewer as ‘borderline autistic,’ a description that goes a long way toward explaining a lifelong tendency toward social and emotional isolation and the equally lifelong effort to overcome it,” Williams wrote.&lt;/p&gt;&lt;p&gt;When I cited that excerpt from the book during the interview, Stallman said that assessment was “exaggerated.”&lt;/p&gt;&lt;p&gt;“I wonder about it, but that’s as far as it goes,” he said. “Now, it’s clear I do not have [Asperger’s] — I don’t have most of the characteristics of that. For instance, one of those characteristics is having trouble with rhythm. I love the most complicated, fascinating rhythms.” But Stallman did acknowledge that he has “a few of the characteristics” and that he “might have what some people call a ‘shadow’ version of it.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The theory that Stallman is neurodivergent is usually cited to explain his various off-putting behaviors, but there is no tangible evidence to support the theory. This alone raises some alarms, in that off-putting behavior is sufficient evidence to presume neurodivergence. I agree that some of his behavior, off-putting or otherwise, appears consistent, to my untrained eye, with some of the symptoms of autism. Nevertheless I am not going to forward an armchair diagnosis in either direction. However, because a defense of Stallman on the basis of neurodivergence is contingent on him being neurodivergent, this rest of this article will presume that it is true for the purpose of rebuttal.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt;: we don’t know and the assumption that he is is ableist.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;This defense of Stallman is ableist because it infantalizes and denies agency to neurodivergent people. Consider what’s being said here: it only follows that Stallman’s repugnant behavior is excusable because he’s neurodivergent if neurodivergent people cannot help but be repugnant. An autistic person I spoke to, who wishes to remain anonymous, had the following to say:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;As an autistic person, I find these statements deeply offensive, because they build on and perpetuate damaging stereotypes.&lt;/p&gt;&lt;p&gt;Research has repeatedly proved that, on average, autistic folks have high empathy and a higher sense of values than the general population. We are not the emotionless robots that the popular imagination believes we are.&lt;/p&gt;&lt;p&gt;But we are not a monolith, and some autistic folks are absolute assholes who should be called out (and held accountable) for the harm that they cause. Autism is context, not an excuse: it can explain why someone might struggle in some situations and need additional support, but it should never be an excuse to harm others. We can all learn and improve.&lt;/p&gt;&lt;p&gt;I have witnessed people pulling the autism card to avoid consequences for CoC violations, then calling out the organization for “not supporting true diversity” when they’re shown the door. This is manipulative and insulting to the other neurodivergent members of the community, and should never be tolerated.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Bram Dingelstad, a neurodivergent person who participated in the discussion, had this to say:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Problematic behaviour is what it is: problematic.&lt;/p&gt;&lt;p&gt;There are a lot of neurodivergent people out there that are able to carry themselves in a way that doesn’t make anyone unsafe or harm victims of sexual assault by dismissing or downplaying their lived experience. In my opinion, using neurodivergence as an excuse for this behaviour only worsens the perception of neurodiversity.&lt;/p&gt;&lt;p&gt;Richard Stallman should be held accountable for his speech and his actions.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Another commenter put it more concisely, if not as eloquently:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;It’s fucking ableist to say neurodiversity disposes you towards problematic behaviors. It’s disgusting trying to hide behind it and really quite insulting.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I came away from these discussions with the following understanding: neurodivergence, in particular autism, causes people to struggle to understand unstated social norms and conventions, sometimes with embarrassing or harmful consequences, such as with respect to interpersonal relationships. The people I’ve spoken to call for empathy and understanding in the mistakes which can be made in light of this, but also call for accountability – to be shown what’s right (and, importantly, &lt;em&gt;why&lt;/em&gt; it’s so), and then to be expected to behave accordingly, no different from anyone else.&lt;/p&gt;&lt;p&gt;Being neurodivergent doesn’t make someone sexist, but it can make it harder for them to hide sexist views. To associate Stallman’s sexism with his perceived neurodivergence is ableist, and to hold Stallman accountable for his behavior is not. One commenter puts it this way:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I’ve said quite a few times is that sexism is not a symptom of autism. Writing this sort of behaviour off as “caused by” neurodivergence is itself ableist, I’m not a huge fan of the narrative that I have “the neurodevelopmental disorder that makes you a bigot”.&lt;/p&gt;&lt;p&gt;I fundamentally disagree with the idea that the pervasive sexism in tech is because of the high incidence of neurodiversity. It’s because tech has broadly operated as a boys club for decades, and those norms persist.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Using neurodivergence as a cover for sexism and problematic behavior in our communities is a toxic, ableist, and, of course, sexist attitude that serves to provide problematic men with space to be problematic. Note also how intersections between neurodiversity and identity play out: white men tend to be excused on the basis of neurodivergence, whereas for women, transgender people, people of color, etc – the excuse does not apply. Consider the differences in how bipolar disorder is perceived in women – “she’s crazy” – versus how men with autism are accommodated – “he can’t help it”.&lt;/p&gt;&lt;p&gt;So, I reject the notion that it is ableist to criticize problematic behavior that can be explained by neurodivergence. But, even if it were, an anonymous autistic commenter has this to say:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;If we accept the hypothesis that it is ableist to condemn behavior which can be explained by neurodivergence (and I don’t), my answer is: be ableist. I don’t like it, but it’s ridiculous to imagine any other option in the physical world, and it’s weird to treat the virtual world so differently.&lt;/p&gt;&lt;p&gt;Here’s an anecdote: when I was at school, a new person, Adam, joined the class. We didn’t want Adam to feel excluded, so we included him in our social events. Adam had narcissistic personality disorder, and likely in part because of this, he was also a serial harasser of women. So what did we do about it?&lt;/p&gt;&lt;p&gt;We stopped inviting Adam. I wish we didn’t have to stop inviting him, but our hands were tied. I’m not going to say it’s something only he could change, because maybe he truly couldn’t change that. Maybe it was ableist to exclude him. But the safety of my friends comes first. The hard part is distinguishing between this situation and a situation where someone is excluded when they are perceived as a threat just because they’re different.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Stallman’s rhetoric and behavior are harmful, and we need to address that harm. The refrain of “criticizing Stallman’s behavior is ableist and alienates neurodiverse individuals in our community” is itself ableist and isn’t doing any favors for our neurodiverse friends.&lt;/p&gt;&lt;p&gt;To conclude this article, I thought I’d take this opportunity to find out what our neurodiverse friends are actually struggling with and how we can better accommodate their needs in our community.&lt;/p&gt;&lt;p&gt;First of all, a recognition of individuals as being autonomous, independent people with agency and independent needs has to come first, with neurodiversity and with everything else. Listen to people when they explain their experiences and their needs as individuals, and don’t rely on romanticized and stereotypical understandings of particular neurodevelopmental conditions such as autism. These stereotypes are often deeply harmful: one person spoke of being accused of incompetence and lying about their neurodivergence in a ploy for sympathy. They experienced severe harassment, at the worst in the form of harassers engineering stressful situations and screenshoting their reactions to humiliate them and damage their reputation.&lt;/p&gt;&lt;p&gt;Standing up for your peers is important, in this as in all things. Not only against harassment, discrimination, and abuse on the basis of neurodivergence, but on any basis, from any person – which I was often reminded is especially important for neurodivergent people who are not cishet white men, as these challenges are amplified in light of these intersectional identities. Talk to people and understand their experiences, their needs, and their worldview. Be patient, but clear and open in your communication. The neurodivergent people I spoke to often found it difficult to learn social mores, moreso than most neurotypical experiences, but nevertheless the vast majority of them felt perfectly capable of it, and the expectation that they weren’t is demeaning and ableist.&lt;/p&gt;&lt;p&gt;I also heard some advice from the neurodivergent community that applies especially to free software community leaders. Clearly stated community norms and expectations, through codes of conducts and visible moderation, is often helpful for neurodivergent people. Many ND people struggle to intuit or “guess” social norms and prefer expectations to be stated unambiguously. Normalizing the use of tone indicators (e.g. “/s”), questions clarifying intent, and conflict de-escalation are also good tools to employ.&lt;/p&gt;&lt;p&gt;Another consideration of merit is accommodations for asynchronous participation in meaningful governance and decision-making processes. Some ND people find it difficult to participate in real-time discussions in chat rooms or in person, and mediums like emails and other long-form slow discussions are easier for them to engage with. Accommodations for sensory sensitivities at in-person events is another good strategy to include more ND folks in your event. Establishing quiet spaces to get away from the busier parts of the event, being considerate of lighting choices, flexible break times, and activities for smaller groups were all highlighted to me by ND people as making their experience more enjoyable.&lt;/p&gt;&lt;p&gt;These are the lessons I took away from speaking to dozens of neurodivergent people in researching this blog post. I encourage you to speak to, and listen to, people in your communities as well, particularly when dealing with an issue which cites their struggles or impacts them directly.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Neurodivergence-and-accountability-in-free-software/</link>
        
        <pubDate>Wed, 25 Sep 2024 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Neurodivergence-and-accountability-in-free-software/</guid>
      </item>
    
      <item>
        
        
          <title>Rust for Linux revisited</title>
          <description>
            &lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Ugh. Drew’s blogging about Rust again.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;– You&lt;/p&gt;&lt;p&gt;I promise to be nice.&lt;/p&gt;&lt;p&gt;Two years ago, seeing the Rust-for-Linux project starting to get the ball rolling, I wrote “&lt;a href=&quot;https://d302hfib-20260520.pages.dev/2022/10/03/Does-Rust-belong-in-Linux.html&quot; target=&quot;_blank&quot;&gt;Does Rust belong in the Linux kernel?&lt;/a&gt;”, penning a conclusion consistent with &lt;a href=&quot;https://en.wikipedia.org/wiki/Betteridge&apos;s_law_of_headlines&quot; target=&quot;_blank&quot;&gt;Betteridge’s law of headlines&lt;/a&gt;. Two years on we have a lot of experience to draw on to see how Rust-for-Linux is actually playing out, and I’d like to renew my thoughts with some hindsight – and more compassion. If you’re one of the Rust-for-Linux participants burned out or burning out on this project, I want to help. Burnout sucks – I’ve been there.&lt;/p&gt;&lt;p&gt;The people working on Rust-for-Linux are incredibly smart, talented, and passionate developers who have their eyes set on a goal and are tirelessly working towards it – and, as time has shown, with a great deal of patience. Though I’ve developed a mostly-well-earned reputation for being a fierce critic of Rust, I do believe it has its place and I have a lot of respect for the work these folks are doing. These developers are ambitious and motivated to make an impact, and Linux is undoubtedly the highest-impact software in the world, and in theory Linux is enthusiastically ready to accept motivated innovators into its fold to facilitate that impact.&lt;/p&gt;&lt;p&gt;At least in theory. In practice, the Linux community is the wild wild west, and sweeping changes are infamously difficult to achieve consensus on, and this is by far the broadest sweeping change ever proposed for the project. Every subsystem is a private fiefdom, subject to the whims of each one of Linux’s 1,700+ maintainers, almost all of whom have a dog in this race. It’s herding cats: introducing Rust effectively is one part coding work and ninety-nine parts political work – and it’s a lot of coding work. Every subsystem has its own unique culture and its own strongly held beliefs and values.&lt;/p&gt;&lt;p&gt;The consequences of these factors is that Rust-for-Linux has become a burnout machine. My heart goes out to the developers who have been burned in this project. It’s not fair. Free software is about putting in the work, it’s a classical do-ocracy… until it isn’t, and people get hurt. In spite of my critiques of the project, I recognize the talent and humanity of everyone involved, and wouldn’t have wished these outcomes on them. I also have sympathy for many of the established Linux developers who didn’t exactly want this on their plate… but that’s neither here nor there for the purpose of this post, and any of those developers and their fiefdoms who went out of their way to make life &lt;em&gt;difficult&lt;/em&gt; for the Rust developers above and beyond what was needed to ensure technical excellence are accountable for these shitty outcomes.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;So where do we go now?&lt;/p&gt;&lt;p&gt;Well, let me begin by re-iterating something from my last article on the subject: “I wish [Rust-for-Linux] the best of luck and hope to see them succeed”. Their path is theirs to choose, and though I might advise a moment to rest before diving headfirst into this political maelstrom once again, I support you in your endeavours if this is what you choose to do. Not my business. That said, allow me to humbly propose a different path for your consideration.&lt;/p&gt;&lt;p&gt;Here’s the pitch: a motivated group of talented Rust OS developers could build a Linux-compatible kernel, from scratch, very quickly, with no need to engage in LKML politics. You would be astonished by how quickly you can make meaningful gains in this kind of environment; I think if the amount of effort being put into Rust-for-Linux were applied to a new Linux-compatible OS we could have something production ready for some use-cases within a few years.&lt;/p&gt;&lt;p&gt;Novel OS design is hard: projects like &lt;a href=&quot;https://www.redox-os.org/&quot; target=&quot;_blank&quot;&gt;Redox&lt;/a&gt; are working on this, but it will take a long time to bear fruit and research operating systems often have to go back to the drawing board and make major revisions over and over again before something useful and robust emerges. This is important work – and near to my heart – but it’s not for everyone. However, making an OS which is based on a proven design like Linux is &lt;em&gt;much&lt;/em&gt; easier and can be done very quickly. I worked on my own novel OS design for a couple of years and it’s still stuck in design hell and badly in need of being rethought; on the other hand I wrote a passable Unix clone alone in less than 30 days.&lt;/p&gt;&lt;p&gt;Rust is a great fit for a large monolithic kernel design like Linux. Imagine having the opportunity to implement something like the dcache from scratch in Rust, without engaging with the politics – that’s something a small group of people, perhaps as few as one, could make substantial inroads on in a short period of time taking full advantage of what Rust has on offer. Working towards compatibility with an existing design can leverage a much larger talent pool than the very difficult problem of novel OS design, a lot of people can manage with a copy of the ISA manual and a missive to implement a single syscall in a Linux-compatible fashion over the weekend. A small and motivated group of contributors could take on the work of, say, building out io_uring compatibility and start finding wins fast – it’s a lot easier than designing io_uring from scratch. I might even jump in and build out a driver or two for fun myself, that sounds like a good opportunity for me to learn Rust properly with a fun project with a well-defined scope.&lt;/p&gt;&lt;p&gt;Attracting labor shouldn’t be too difficult with this project in mind, either. If there was &lt;em&gt;the&lt;/em&gt; Rust OS project, with a well-defined scope and design (i.e. aiming for Linux ABI compatibility), I’m sure there’s a lot of people who’d jump in to stake a claim on some piece of the puzzle and put it together, and the folks working on Rust-for-Linux have the benefit of a great deal of experience with the Linux kernel to apply to oversight on the broader design approach. Having a clear, well-proven goal in mind can also help to attract the same people who want to make an impact in a way that a speculative research project might not. Freeing yourselves of the LKML political battles would probably be a big win for the ambitions of bringing Rust into kernel space. Such an effort would also be a great way to mentor a new generation of kernel hackers who are comfortable with Rust in kernel space and ready to deploy their skillset to the research projects that will build a next-generation OS like Redox. The labor pool of serious OS developers badly needs a project like this to make that happen.&lt;/p&gt;&lt;p&gt;So my suggestion for the Rust-for-Linux project is: you’re burned out and that’s awful, I feel for you. It might be fun and rewarding to spend your recovery busting out a small prototype Unix kernel and start fleshing out bits and pieces of the Linux ABI with your friends. I can tell you from my own experience doing something very much like this that it was a very rewarding burnout recovery project for me. And who knows where it could go?&lt;/p&gt;&lt;p&gt;Once again wishing you the best and hoping for your success, wherever the path ahead leads.&lt;/p&gt;&lt;details class=&quot;block&quot;&gt;&lt;summary&gt;What about drivers?&lt;/summary&gt;&lt;p&gt;To pre-empt a response I expect to this article: there’s the annoying question of driver support, of course. This was an annoying line of argumentation back when Linux had poor driver support as well, and it will be a nuisance for a hypothetical Linux-compatible Rust kernel as well. Well, the same frustrated arguments I trotted out then are still ready at hand: you choose your use-cases carefully. General-purpose comes later. Building an OS which supports virtual machines, or a datacenter deployment, or a specific mobile device whose vendor is volunteering labor for drivers, and so on, will come first. You choose the hardware that supports the software, not the other way around, or build the drivers you need.&lt;/p&gt;&lt;p&gt;That said, a decent spread of drivers should be pretty easy to implement with the talent base you have at your disposal, so I wouldn’t worry about it.&lt;/p&gt;&lt;/details&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Rust-in-Linux-revisited/</link>
        
        <pubDate>Fri, 30 Aug 2024 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Rust-in-Linux-revisited/</guid>
      </item>
    
      <item>
        
        
          <title>So you want to compete with or replace open source</title>
          <description>
            &lt;p&gt;We are living through an interesting moment in source-available software.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; The open source movement has always had, and continues to have, a solid grounding in grassroots programmers building tools for themselves and forming communities around them. Some looming giants brought on large sums of money – Linux, Mozilla, Apache, and so on – and other giants made do without, like GNU, but for the most part if anyone thought about open source 15 years ago they were mostly thinking about grassroots communities who built software together for fun. With the rise of GitHub and in particular the explosion of web development as an open platform, commercial stakeholders in software caught on to the compelling economics of open source. The open source boom that followed caused open source software to have an enormous impact on everyone working in the software industry, and, in one way or another, on everyone living on planet Earth.&lt;/p&gt;&lt;p&gt;Over the past decade or so, a lot of businesses, particularly startups, saw these economics unfolding in front of them and wanted to get in on this boom. A lot of talented developers started working on open source software with an explicit aim towards capitalizing on it, founding businesses and securing capital investments to build their product – an open source product. A few years following the onset of these startups, the catch started to become apparent. While open source was proven to be incredibly profitable and profoundly useful for the software industry &lt;em&gt;as a whole&lt;/em&gt;, the economics of making open source work for &lt;em&gt;one business&lt;/em&gt; are much different.&lt;/p&gt;&lt;p&gt;It comes down to the fact that the free and open source software movements are built on collaboration, and all of our success is attributable to this foundation. The economics that drew commercial interest into the movement work specifically because of this collaboration – because the FOSS model allows businesses to share R&amp;D costs and bring together talent across corporate borders into a great melting pot of innovation. And, yes, there is no small amount of exploitation going on as well; businesses are pleased to take advantage of the work of Jane Doe in Ohio’s FOSS project to make themselves money without sharing any of it back. Nevertheless, the revolutionary economics of FOSS are &lt;em&gt;based on&lt;/em&gt; collaboration, and are &lt;em&gt;incompatible with&lt;/em&gt; competition.&lt;/p&gt;&lt;p&gt;The simple truth of open source is that if you design your business model with an eye towards competition, in which you are the only entity who can exclusively monetize the software product, you must eschew the collaborative aspects of open source – and thus its greatest strength. Collaboration in open source works because the collaborators, all representatives of different institutions, are incentivized to work together for mutual profit. No one is incentivized to work for you, for free, for your own exclusive profit.&lt;/p&gt;&lt;p&gt;More than a few of these open source startups were understandably put out when this reality started to set in. It turns out the market capitalization of a business that has an open source product was often smaller than the investments they had brought in. Under these conditions it’s difficult to give the investors the one and only thing they demand – a return on investment. The unbounded growth demanded by the tech boom is even less likely to be attainable in open source. There are, to be entirely clear, many business models which are compatible with open source. But there are also many which are not. There are many open source projects which can support a thriving business or even a thriving sub-industry, but there are some ideas which, when placed in an open source framing, simply cannot be capitalized on as effectively, or often at all.&lt;/p&gt;&lt;p&gt;Open source ate a lot of lunches. There are some kinds of software which you just can’t make in a classic silicon valley startup fashion anymore. Say you want to write a database server – a sector which has suffered a number of rug-pulls from startups previously committed to open source. If you make it closed source, you can’t easily sell it like you could 10 or 20 years ago, ala MSSQL. This probably won’t work. If you make it open source, no one will pay you for it and you’ll end up moaning about how the major cloud providers are “stealing” your work. The best way to fund the development of something like that is with a coalition of commercial stakeholders co-sponsoring or co-maintaining the project in their respective self-interests, which is how projects like &lt;a href=&quot;https://www.postgresql.org/about/contributing/&quot; target=&quot;_blank&quot;&gt;PostgreSQL&lt;/a&gt;, &lt;a href=&quot;https://mesa.freedesktop.org/developers/&quot; target=&quot;_blank&quot;&gt;Mesa&lt;/a&gt;, or the Linux kernel attract substantial paid development resources. But it doesn’t really work as a startup anymore.&lt;/p&gt;&lt;p&gt;Faced with these facts, there have been some challenges to the free and open source model coming up in the past few years, some of which are getting organized and starting to make serious moves. Bruce Perens, one of the founding figures of the Open Source Initiative, is working on the “post-open” project; “Fair Source” is another up-and-coming-effort, and there have been and will be others besides.&lt;/p&gt;&lt;p&gt;What these efforts generally have in common is a desire to change the commercial dynamic of source-available software. In other words, the movers and shakers in these movements want to get paid more, or more charitably, want to start a movement in which programmers that work on source-available software as a broader class get paid more. The other trait they have in common is a view that the open source definition and the four freedoms of free software do not sufficiently provide for this goal.&lt;/p&gt;&lt;p&gt;For my part, I don’t think that this will work. I think that the aim of sole or limited rights to monetization and the desire to foster a collaborative environment are irreconcilable. These movements want to have both, and I simply don’t think that’s possible.&lt;/p&gt;&lt;p&gt;This logic is rooted in a deeper notion of ownership over the software, which is both subtle and very important. This is a kind of &lt;a href=&quot;https://en.wikipedia.org/wiki/Auteur&quot; target=&quot;_blank&quot;&gt;auteur&lt;/a&gt; theory of software. The notion is that the software they build &lt;em&gt;belongs&lt;/em&gt; to them. They possess a sense of ownership over the software, which comes with a set of moral and perhaps legal rights to the software, which, importantly, are withheld from any entity other than themselves. The “developers” enjoy this special relationship with the project – the “developers” being the special class of person entitled to this sense of ownership and the class to whom the up-and-coming source-available movements make an appeal, in the sense of “pay the developers” – and third-party entities who work on the source code are merely “contributors”, though they apply the same skills and labor to the project as the “developers” do. The very distinction between “first-party” and “third-party” developers is contingent on this “auteur” worldview.&lt;/p&gt;&lt;p&gt;This is quite different from how most open source projects have found their wins. If Linux can be said to belong to anyone, it belongs to everyone. It is for this reason that it is in everyone’s interests to collaborate on the project. If it belonged to someone or some entity alone, especially if that sense of ownership is rooted in justifying that entity’s sole right to effectively capitalize on the software, the dynamic breaks down and the incentive for the “third-party” class to participate is gone. It doesn’t work.&lt;/p&gt;&lt;p&gt;That said, clearly the proponents of these new source-available movements feel otherwise. And, to be clear, I wish them well. I respect the right for authors of software to distribute it under whatever terms they wish.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-2&quot; id=&quot;fn-2-ref-1&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; And, for my part, I do believe that source-available is a clear improvement over proprietary software, even though these models fall short of what I perceive as the advantages of open source. However, for these movements to have a shot at success, they need to deeply understand these dynamics and the philosophical and practical underpinnings of the free and open source movements.&lt;/p&gt;&lt;p&gt;However, it is very important to me that we do not muddy the landscape of open source by trying to reform, redefine, or expand our understanding of open source to include movements which contradict this philosophy. My well-wishes are contingent on any movements which aim to compete with open source stopping short of &lt;em&gt;calling themselves&lt;/em&gt; open source. This is something I appreciate about the fair source and post-open movements – both movements explicitly disavow the label of open source. If you want to build something new, be clear that it is something new – this is the ground rule.&lt;/p&gt;&lt;p&gt;So you want to compete with open source, or even replace it with something new. Again, I wish you good luck. But this question will be at the heart of your challenge: will you be able to assume the mantle of the auteur and capitalize on this software while still retaining the advantages that made open source successful? Will you be able to appeal to the public in the same way open source does while holding onto these commercial advantages for yourself? Finding a way to answer this question with a “yes” is the task laid before you. It will be difficult; in the end, you will have to give something to the public to get something in return. Simply saying that the software itself is a gift equal to the labor you ask of the public is probably not going to work, especially when this “gift” comes with monetary strings attached.&lt;/p&gt;&lt;p&gt;As for me, I still believe in open source, and even in the commercial potential of open source. It requires creativity and a clever business acumen to identify and exploit market opportunities within this collaborative framework. To win in open source you must embrace this collaboration and embrace the fact that you will share the commercial market for the software with other entities. If you’re up to that challenge, then let’s keep beating the open source drum together. If not, these new movements may be a home for you – but know that a lot of hard work still lies ahead of you in that path.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/So-you-want-to-compete-with-FOSS/</link>
        
        <pubDate>Tue, 16 Jul 2024 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/So-you-want-to-compete-with-FOSS/</guid>
      </item>
    
      <item>
        
        
          <title>Writing a Unix clone in about a month</title>
          <description>
            &lt;p&gt;I needed a bit of a break from “real work” recently, so I started a new programming project that was low-stakes and purely recreational. On April 21st, I set out to see how much of a Unix-like operating system for x86_64 targets that I could put together in about a month. The result is &lt;a href=&quot;https://git.sr.ht/~sircmpwn/bunnix&quot; target=&quot;_blank&quot;&gt;Bunnix&lt;/a&gt;. Not including days I didn’t work on Bunnix for one reason or another, I spent 27 days on this project.&lt;/p&gt;&lt;p&gt;You can try it for yourself if you like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://cyanide.ayaya.dev/bunnix.iso&quot; target=&quot;_blank&quot;&gt;Bunnix 0.0.0 iso&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To boot this ISO with qemu:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;qemu-system-x86_64 -cdrom bunnix.iso -display sdl -serial stdio
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can also write the iso to a USB stick and boot it on real hardware. It will probably work on most AMD64 machines – I have tested it on a ThinkPad X220 and a Starlabs Starbook Mk IV. Legacy boot and EFI are both supported. There are some limitations to keep in mind, in particular that there is no USB support, so a PS/2 keyboard (or PS/2 emulation via the BIOS) is required. Most laptops rig up the keyboard via PS/2, and &lt;abbr title=&quot;your milage may vary&quot;&gt;YMMV&lt;/abbr&gt; with USB keyboards via PS/2 emulation.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Tip: the DOOM keybindings are weird. WASD to move, right shift to shoot, and space to open doors. Exiting the game doesn’t work so just reboot when you’re done playing. I confess I didn’t spend much time on that port.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;What’s there?&lt;/h2&gt;&lt;p&gt;The Bunnix kernel is (mostly) written in &lt;a href=&quot;https://harelang.org&quot; target=&quot;_blank&quot;&gt;Hare&lt;/a&gt;, plus some C components, namely lwext4 for ext4 filesystem support and libvterm for the kernel video terminal.&lt;/p&gt;&lt;p&gt;The kernel supports the following drivers:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;PCI (legacy)&lt;/li&gt;&lt;li&gt;AHCI block devices&lt;/li&gt;&lt;li&gt;GPT and MBR partition tables&lt;/li&gt;&lt;li&gt;PS/2 keyboards&lt;/li&gt;&lt;li&gt;Platform serial ports&lt;/li&gt;&lt;li&gt;CMOS clocks&lt;/li&gt;&lt;li&gt;Framebuffers (configured by the bootloaders)&lt;/li&gt;&lt;li&gt;ext4 and memfs filesystems&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There are numerous supported kernel features as well:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A virtual filesystem&lt;/li&gt;&lt;li&gt;A /dev populated with block devices, null, zero, and full psuedo-devices, /dev/kbd and /dev/fb0, serial and video TTYs, and the /dev/tty controlling terminal.&lt;/li&gt;&lt;li&gt;Reasonably complete terminal emulator and somewhat passable termios support&lt;/li&gt;&lt;li&gt;Some 40 syscalls, including for example clock_gettime, poll, openat et al, fork, exec, pipe, dup, dup2, ioctl, etc&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Bunnix is a single-user system and does not currently attempt to enforce Unix file modes and ownership, though it could be made multi-user relatively easily with a few more days of work.&lt;/p&gt;&lt;p&gt;Included are two bootloaders, one for legacy boot which is multiboot-compatible and written in Hare, and another for EFI which is written in C. Both of them load the kernel as an ELF file plus an initramfs, if required. The EFI bootloader includes zlib to decompress the initramfs; multiboot-compatible bootloaders handle this decompression for us.&lt;/p&gt;&lt;p&gt;The userspace is largely assembled from third-party sources. The following third-party software is included:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Colossal Cave Adventure (advent)&lt;/li&gt;&lt;li&gt;dash (/bin/sh)&lt;/li&gt;&lt;li&gt;Doom&lt;/li&gt;&lt;li&gt;gzip&lt;/li&gt;&lt;li&gt;less (pager)&lt;/li&gt;&lt;li&gt;lok (/bin/awk)&lt;/li&gt;&lt;li&gt;lolcat&lt;/li&gt;&lt;li&gt;mandoc (man pages)&lt;/li&gt;&lt;li&gt;sbase (core utils)&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&lt;li&gt;tcc (C compiler)&lt;/li&gt;&lt;li&gt;Vim 5.7&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The libc is derived from musl libc and contains numerous modifications to suit Bunnix’s needs. The curses library is based on netbsd-curses.&lt;/p&gt;&lt;p&gt;The system works but it’s pretty buggy and some parts of it are quite slapdash: your milage will vary. Be prepared for it to crash!&lt;/p&gt;&lt;h2&gt;How Bunnix came together&lt;/h2&gt;&lt;p&gt;I started documenting the process on Mastodon on day 3 – check out &lt;a href=&quot;https://fosstodon.org/@drewdevault/112319697309218275&quot; target=&quot;_blank&quot;&gt;the Mastodon thread&lt;/a&gt; for the full story. Here’s what it looked like on day 3:&lt;/p&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://d302hfib-20260520.pages.dev/bunnix.jpg&quot;&gt;
&lt;figcaption&gt;Screenshot of an early Bunnix build, which boots up, sets up available memory, and exercises an early in-memory filesystem&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&lt;p&gt;Here’s some thoughts after the fact.&lt;/p&gt;&lt;p&gt;Some of Bunnix’s code stems from an earlier project, &lt;a href=&quot;https://sr.ht/~sircmpwn/helios&quot; target=&quot;_blank&quot;&gt;Helios&lt;/a&gt;. This includes portions of the kernel which are responsible for some relatively generic CPU setup (GDT, IDT, etc), and some drivers like AHCI were adapted for the Bunnix system. I admit that it would probably not have been possible to build Bunnix so quickly without prior experience through Helios.&lt;/p&gt;&lt;p&gt;Two of the more challenging aspects were ext4 support and the virtual terminal, for which I brought in two external dependencies, lwext4 and libvterm. Both proved to be challenging integrations. I had to rewrite my filesystem layer a few times, and it’s still buggy today, but getting a proper Unix filesystem design (including openat and good handling of inodes) requires digging into lwext4 internals a bit more than I’d have liked. I also learned a lot about mixing source languages into a Hare project, since the kernel links together Hare, assembly, and C sources – it works remarkably well but there are some pain points I noticed, particularly with respect to building the ABI integration riggings. It’d be nice to automate conversion of C headers into Hare forward declaration modules. Some of this work already exists in hare-c, but has a ways to go. If I were to start again, I would probably be more careful in my design of the filesystem layer.&lt;/p&gt;&lt;p&gt;Getting the terminal right was difficult as well. I wasn’t sure that I was going to add one at all, but I eventually decided that I wanted to port vim and that was that. libvterm is a great terminal state machine library, but it’s poorly documented and required a lot of fine-tuning to integrate just right. I also ended up spending a lot of time on performance to make sure that the terminal worked smoothly.&lt;/p&gt;&lt;p&gt;Another difficult part to get right was the scheduler. Helios has a simpler scheduler than Bunnix, and while I initially based the Bunnix scheduler on Helios I had to throw out and rewrite quite a lot of it. Both Helios and Bunnix are single-CPU systems, but unlike Helios, Bunnix allows context switching within the kernel – in fact, even preemptive task switching enters and exits via the kernel. This necessitates multiple kernel stacks and a different approach to task switching. However, the advantages are numerous, one of which being that implementing blocking operations like disk reads and pipe(2) are much simpler with wait queues. With a robust enough scheduler, the rest of the kernel and its drivers come together pretty easily.&lt;/p&gt;&lt;p&gt;Another source of frustration was signals, of course. Helios does not attempt to be a Unix and gets away without these, but to build a Unix, I needed to implement signals, big messy hack though they may be. The signal implementation which ended up in Bunnix is pretty bare-bones: I mostly made sure that SIGCHLD worked correctly so that I could port dash.&lt;/p&gt;&lt;p&gt;Porting third-party software was relatively easy thanks to basing my libc on musl libc. I imported large swaths of musl into my own libc and adapted it to run on Bunnix, which gave me a pretty comprehensive and reliable C library pretty fast. With this in place, porting third-party software was a breeze, and most of the software that’s included was built with minimal patching.&lt;/p&gt;&lt;h2&gt;What I learned&lt;/h2&gt;&lt;p&gt;Bunnix was an interesting project to work on. My other project, Helios, is a microkernel design that’s Not Unix, while Bunnix is a monolithic kernel that is much, much closer to Unix.&lt;/p&gt;&lt;p&gt;One thing I was surprised to learn a lot about is filesystems. Helios, as a microkernel, spreads the filesystem implementation across many drivers running in many separate processes. This works well enough, but one thing I discovered is that it’s quite important to have caching in the filesystem layer, even if only to track living objects. When I revisit Helios, I will have a lot of work to do refactoring (or even rewriting) the filesystem code to this end.&lt;/p&gt;&lt;p&gt;The approach to drivers is also, naturally, much simpler in a monolithic kernel design, though I’m not entirely pleased with all of the stuff I heaped into ring 0. There might be room for an improved Helios scheduler design that incorporates some of the desirable control flow elements from the monolithic design into a microkernel system.&lt;/p&gt;&lt;p&gt;I also finally learned how signals work from top to bottom, and boy is it ugly. I’ve always felt that this was one of the weakest points in the design of Unix and this project did nothing to disabuse me of that notion.&lt;/p&gt;&lt;p&gt;I had also tried to avoid using a bitmap allocator in Helios, and generally memory management in Helios is a bit fussy altogether – one of the biggest pain points with the system right now. However, Bunnix uses a simple bitmap allocator for all conventional pages on the system and I found that it works really, really well and does not have nearly as much overhead as I had feared it would. I will almost certainly take those lessons back to Helios.&lt;/p&gt;&lt;p&gt;Finally, I’m quite sure that putting together Bunnix in just 30 days is a feat which would not have been possible with a microkernel design. At the end of the day, monolithic kernels are just much simpler to implement. The advantages of a microkernel design are compelling, however – perhaps a better answer lies in a hybrid kernel.&lt;/p&gt;&lt;h2&gt;What’s next&lt;/h2&gt;&lt;p&gt;Bunnix was (note the past tense) a project that I wrote for the purpose of recreational programming, so it’s purpose is to be fun to work on. And I’ve had my fun! At this point I don’t feel the need to invest more time and energy into it, though it would definitely benefit from some. In the future I may spend a few days on it here and there, and I would be happy to integrate improvements from the community – send patches to my &lt;a href=&quot;https://lists.sr.ht/~sircmpwn/public-inbox&quot; target=&quot;_blank&quot;&gt;public inbox&lt;/a&gt;. But for the most part it is an art project which is now more-or-less complete.&lt;/p&gt;&lt;p&gt;My next steps in OS development will be a return to Helios with a lot of lessons learned and some major redesigns in the pipeline. But I still think that Bunnix is a fun and interesting OS in its own right, in no small part due to its demonstration of Hare as a great language for kernel hacking. Some of the priorities for improvements include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A directory cache for the filesystem and better caching generally&lt;/li&gt;&lt;li&gt;Ironing out ext4 bugs&lt;/li&gt;&lt;li&gt;procfs and top&lt;/li&gt;&lt;li&gt;mmaping files&lt;/li&gt;&lt;li&gt;More signals (e.g. SIGSEGV)&lt;/li&gt;&lt;li&gt;Multi-user support&lt;/li&gt;&lt;li&gt;NVMe block devices&lt;/li&gt;&lt;li&gt;IDE block devices&lt;/li&gt;&lt;li&gt;ATAPI and ISO 9660 support&lt;/li&gt;&lt;li&gt;Intel HD audio support&lt;/li&gt;&lt;li&gt;Network stack&lt;/li&gt;&lt;li&gt;Hare toolchain in the base system&lt;/li&gt;&lt;li&gt;Self hosting&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Whether or not it’s me or one of you readers who will work on these first remains to be seen.&lt;/p&gt;&lt;p&gt;In any case, have fun playing with Bunnix!&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Bunnix/</link>
        
        <pubDate>Fri, 24 May 2024 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Bunnix/</guid>
      </item>
    
      <item>
        
        
          <title>Copyleft licenses are not “restrictive”</title>
          <description>
            &lt;p&gt;One may observe an axis, or a “spectrum”, along which free and open source software licenses can be organized, where one end is “permissive” and the other end is “copyleft”. It is important to acknowledge, however, that though copyleft can be found at the opposite end of an axis with respect to permissive, it is not synonymous with the linguistic antonym of permissive – that is, copyleft licenses are not “restrictive” by comparison with permissive licenses.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Aside: Free software is not synonymous with copyleft and open source is not synonymous with permissive, though this is a common misconception. Permissive licenses are generally free software and copyleft licenses are generally open source; the distinction between permissive and copyleft is orthogonal to the distinction between free software and open source.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;It is a common misunderstanding to construe copyleft licenses as more “restrictive” or “less free” than permissive licenses. This view is predicated on a shallow understanding of freedom, a sort of passive freedom that presents as the absence of obligations. Copyleft is predicated on a deeper understanding of freedom in which freedom is a &lt;em&gt;positive guarantee of rights&lt;/em&gt;.&lt;sup&gt;&lt;a
href=&quot;https://plato.stanford.edu/entries/liberty-positive-negative/&quot;&gt;[source]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;Let’s consider the matter of freedom, obligation, rights, and restrictions in depth.&lt;/p&gt;&lt;p&gt;Both forms of licenses include obligations, which are not the same thing as restrictions. An example of an obligation can be found in the permissive MIT license:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Permission is hereby granted […] to deal in the Software without restriction […] subject to the following conditions:&lt;/p&gt;&lt;p&gt;The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;This obliges the user, when distributing copies of the software, to include the copyright notice. However, it does not &lt;em&gt;restrict&lt;/em&gt; the use of the software under any conditions. An example of a restriction comes from the infamous JSON license, which adds the following clause to a stock MIT license:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The Software shall be used for Good, not Evil.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;IBM famously petitioned Douglas Crockford for, and received, a license to do evil with JSON.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; This kind of clause is broadly referred to in the free software jargon as “discrimination against field of endeavour”, and such restrictions contravene both the free software and open source definitions. To quote the &lt;a href=&quot;https://opensource.org/osd&quot; target=&quot;_blank&quot;&gt;Open Source Definition&lt;/a&gt;, clause 6:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;No such restrictions are found in free or open source software licenses, be they permissive or copyleft – all FOSS licenses permit the use of the software for any purpose without restriction. You can sell both permissive and copyleft software, use it as part of a commercial cloud service,&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-2&quot; id=&quot;fn-2-ref-1&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; use the software as part of a nuclear weapons program,&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-3&quot; id=&quot;fn-3-ref-1&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; or do whatever else you want with it. There are no restrictions on how free software is used, regardless of if it is permissive or copyleft.&lt;/p&gt;&lt;p&gt;Copyleft does not impose restrictions, but it does impose obligations. The obligations exist to guarantee rights to the users of the software – in other words, to ensure freedoms. In this respect copyleft licenses are &lt;em&gt;more free&lt;/em&gt; than permissive licenses.&lt;/p&gt;&lt;p&gt;Freedom is a political concept, and in order to understand this, we must consider it in political terms, which is to say as an exercise in power dynamics. Freedom without obligation is a contradiction. Freedom &lt;em&gt;emerges&lt;/em&gt; from obligations, specifically obligations imposed on power.&lt;/p&gt;&lt;p&gt;Where does freedom come from?&lt;/p&gt;&lt;p&gt;Consider the United States as an example, a society which sets forth freedom as a core political value.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-4&quot; id=&quot;fn-4-ref-1&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; Freedoms in the US are ultimately grounded in the US constitution and its bill of rights. These tools create freedoms by guaranteeing rights to US citizens through the imposition of &lt;em&gt;obligations&lt;/em&gt; on the government. For instance, you have a right to an attorney when accused of a crime in the United States, and as such the government is &lt;em&gt;obliged&lt;/em&gt; to provide you with one. It is from obligations such as these that freedom emerges. Freedom of assembly, another example, is guaranteed such that the police are prevented from breaking up peaceful protests – this freedom emerges from a &lt;em&gt;constraint&lt;/em&gt; (or restriction, if you must) on power (the government) as a means of guaranteeing the rights and freedom of those with less power by comparison (its citizens).&lt;/p&gt;&lt;p&gt;Who holds the power in the context of software?&lt;/p&gt;&lt;p&gt;Consider non-free software by contrast: software is written by corporations and sold on to users with substantial restrictions on its use. Corporations hold more power than individuals: they have more resources (e.g. money), more influence, and, in a sense more fundamental to the software itself, they retain in private the tools to understand the software, or to modify its behavior, and they dictate the conditions under which it may be used (e.g. only if your license key has not expired, or only for certain purposes). This is true of anyone who retains the source code in private and uses copyright law to enforce their will upon the software – in this way they possess, and exercise, power over the user.&lt;/p&gt;&lt;p&gt;Permissive licenses do not provide any checks on this power; generally they preserve &lt;a href=&quot;https://en.wikipedia.org/wiki/Moral_rights&quot; target=&quot;_blank&quot;&gt;moral rights&lt;/a&gt; and little else. Permissive licenses provide for relatively few and narrow freedoms, and are not particularly “free” as such. Copyleft licenses constrain these powers through additional obligations, and from these obligations greater freedoms emerge. Specifically, they oblige reciprocity. They are distinguished from permissive licenses in this manner, but where permissive licenses &lt;em&gt;permit&lt;/em&gt;, copyleft does not &lt;em&gt;restrict&lt;/em&gt; per-se – better terms might be “reciprocal” and “non-reciprocal”, but perhaps that ship has sailed. “You may use this software &lt;em&gt;if&lt;/em&gt; …” is a statement made both by permissive and copyleft licenses, with different &lt;em&gt;if&lt;/em&gt;s. Neither form of license says “you cannot use this software &lt;em&gt;if&lt;/em&gt; …”; licenses which do so are non-free.&lt;/p&gt;&lt;p&gt;Permissive licenses and copyleft licenses are both free software, but only the latter provides a guarantee of rights, and while both might be free only the latter provides &lt;em&gt;freedom&lt;/em&gt;.&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/Copyleft-is-not-restrictive/</link>
        
        <pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/Copyleft-is-not-restrictive/</guid>
      </item>
    
      <item>
        
        
          <title>FDO&apos;s conduct enforcement actions regarding Vaxry</title>
          <description>
            &lt;p&gt;freedesktop(.org), aka FDO, recently banned Hyprland maintainer Vaxry from the FDO community, and in response Vaxry has taken his case to the court of public opinion, publishing their email exchanges and writing about it on his blog.&lt;/p&gt;&lt;p&gt;It saddens me to bear witness to these events today. I wrote &lt;a href=&quot;https://d302hfib-20260520.pages.dev/2023/09/17/Hyprland-toxicity.html&quot; target=&quot;_blank&quot;&gt;in September of last year&lt;/a&gt; about problems with toxicity in the Hyprland community. I initially reached out to Vaxry to discuss these problems in private in February of last year. I failed to get through to him, leading to that blog post in September. I spent some time in the following weeks talking with Vaxry on his behavior and his community’s social norms, again in private, but again, I was unable to get through to him. Unfortunately, we find ourselves again leaving the private sphere and discussing Vaxry’s behavior and the problem posed by the Hyprland community once again.&lt;/p&gt;&lt;p&gt;The fact of the matter is that Hyprland remains a toxic community, enabled and encouraged by its toxic leadership, namely Vaxry. FDO’s decision to ban Vaxry is ultimately a consequence of Vaxry’s behavior, and because he has elected to appeal his case in public, I am compelled to address his behavior in public. I hereby rise firmly in defense of FDO’s decision.&lt;/p&gt;&lt;p&gt;I invite you to start by reading the two email threads, &lt;a href=&quot;https://web.archive.org/web/20250306212807/https://blog.vaxry.net/resource/articleFDO/RHMails.pdf&quot; target=&quot;_blank&quot;&gt;one&lt;/a&gt;, and &lt;a href=&quot;https://web.archive.org/web/20240412194128/https://blog.vaxry.net/resource/articleFDO/lyudeReply.pdf&quot; target=&quot;_blank&quot;&gt;two&lt;/a&gt;, which Vaxry has published for your consideration, as well as Vaxry’s follow-ups on his blog, &lt;a href=&quot;https://blog.vaxry.net/articles/2024-fdo-and-redhat&quot; target=&quot;_blank&quot;&gt;one&lt;/a&gt;, and &lt;a href=&quot;https://blog.vaxry.net/articles/2024-fdo-and-redhat2&quot; target=&quot;_blank&quot;&gt;two&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Here’s my read on the situation.&lt;/p&gt;&lt;p&gt;The FDO officer that reached out to Vaxry did it after Vaxry’s problematic behavior was brought to her attention by members of the FDO community, and was acting on her mandate within the FDO conduct enforcement board by investigating complaints submitted to her by this community. It is not a stretch to suggest a close relationship between these communities exists: FDO is the steward of both the Wayland protocol and implementation and the wlroots library, essential dependencies of Hyprland and sources for collaboration between Hyprland and FDO. Vaxry and other members of the Hyprland community had already participated extensively in these projects (mainly in discussions on IRC and GitLab issues) at the time of the email exchange, in spaces where the code of conduct applies.&lt;/p&gt;&lt;p&gt;The FDO officer duly investigated the complaints she had received and found, in collaboration with the other members of the FDO conduct enforcement team, that they were credible, and worrying. There are numerous examples of behavior from Vaxry that contravenes the FDO code of conduct in several different respects, and any number of them would be grounds for an immediate ban. Since these behaviors are concerning, but did not take place in the FDO community, the conduct board decided to issue a warning in private, stating that if this sort of behavior was seen in the FDO community that it would result in enforcement action from the conduct team.&lt;/p&gt;&lt;p&gt;All of the actions from the FDO conduct team are reasonable and show considerable restraint. Vaxry could have taken it in stride with no consequences to himself. Instead, he immediately escalated the situation. He construes the FDO officer’s polite and well-reasoned warning as threats and intimidation. He minimizes examples of his own hate speech by shrugging them off as a joke. He belittles the FDO officer and builds a straw man wherein her email is an official statement on behalf of RedHat, and cites a conspiracy theory about &lt;abbr title=&quot;diversity, equity, and inclusion&quot;&gt;DEI&lt;/abbr&gt; programs at RedHat as justification for calling the FDO officer a hypocrite. He is insulted on my behalf that my name was cited in the FDO officer’s email in lowercase, “drew”, and feels the need to address this.&lt;/p&gt;&lt;p&gt;The FDO officer responds to Vaxry’s unhinged rant with a sarcastic quip clarifying that it was indeed within the FDO conduct team’s remit to ban Vaxry from their GitLab instance – I confess that in my view this was somewhat unprofessional, though I can easily sympathize with the FDO officer given the context. Following this, Vaxry states that Hyprland will cease all communication with FDO’s conduct team and &lt;em&gt;ignore&lt;/em&gt; (emphasis his) any future emails from them. Finally, he threatens legal action (on what basis is unclear) and signs the email.&lt;/p&gt;&lt;p&gt;Regardless of how you feel about the conduct team issuing a private warning to Vaxry on the basis of activities outside of FDO community spaces, the email thread that ensues most certainly is within the scope of the FDO code of conduct, and Vaxry’s behavior therein is sufficient justification for a ban from the FDO community as far as I’m concerned. The conduct team cites Vaxry’s stated intention to ignore any future conduct interventions as the ultimate reason for the ban, which I find entirely reasonable on FDO’s part. I have banned people for far less than this, and I stand by it.&lt;/p&gt;&lt;p&gt;Vaxry’s follow-up blog posts only serve to underscore this point. First of all, he immediately opens with a dog-whistle calling for the reader to harass the FDO officer in question: “I don’t condone harassing this person, but here is their full name, employer and contact details”:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I do not condone any hateful messages sent towards any of the parties mentioned.&lt;/p&gt;&lt;p&gt;Recently I have received an email filled with threats to my inbox, from a member of the X.org board, Freedesktop.org, and a Red Hat employee. Their name is [redacted].&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Moreover, Vaxry claims to have apologised for his past conduct, which is not true. In lieu of an apology, Vaxry has spent the “1.5 years” since the last incident posting angry rants on his blog calling out minority representation and “social justice warriors” in light of his perceived persecution. Meanwhile the Hyprland community remains a toxic place, welcoming hate, bullying, and harassment, but now prohibiting all “political” speech, which in practice means any discussion of LGBTQ topics, though this is largely unenforced. In the end, the Hyprland community’s fundamental problem is that they’re all “just having fun”, and it seems that they can’t have “fun” unless it’s at someone else’s expense.&lt;/p&gt;&lt;p&gt;The FDO team is right that Hyprland’s community reflects poorly on the Linux desktop community as a whole. Vaxry has created a foothold for hate, transphobia, homophobia, bullying, and harassment in the Linux desktop community. We are right to take action to correct this problem.&lt;/p&gt;&lt;p&gt;Every option other than banning Vaxry has been exhausted over the past year and a half. I personally spent several weeks following my last blog post on the matter discussing Vaxry’s behavior in confidence and helping him understand how to improve, and at my suggestion he joined a private community of positive male role models to discuss these issues in a private and empathetic space. After a few weeks of these private discussions, the last thing he said to me was “I do believe there could be arguments to sway my opinion towards genocide”.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;#fn-1&quot; id=&quot;fn-1-ref-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;There’s nothing left to do but to build a fence around Hyprland and protect the rest of the community from them. I know that there’s a lot of good people who use and contribute to Hyprland, and I’m sorry for those of you who are affected by this problem. But, in the end, actions have consequences. The rest of the community has no choice but to sanction Vaxry.&lt;/p&gt;&lt;p&gt;And, to Vaxry – I know you’re reading this – there are going to continue to be consequences for your actions, but it’s still not too late to change. I know it’s humiliating to be called out like this, and I really would rather not have had to do so. FDO is probably not the last time you’re going to be banned if you don’t change course, and it would reflect better on you if you took it on the chin and didn’t post inflammatory rants on your blog – trust me, you don’t look like the good guy here. You are trapped in an echo chamber of hate, anger, and bigotry. I hope that you find a way out, and that someday you can build a community which is as great as your software is.&lt;/p&gt;&lt;p&gt;And, to the FDO officer in question: I’m so sorry that you’re at the ass end of all of this hate and abuse. You don’t deserve any of it. You did a good job, and I’m proud of you and the rest of the FDO conduct team. If you need any support, someone to talk to, don’t hesitate to reach out and ask, on IRC, Matrix, email, whatever. Don’t read the comments.&lt;/p&gt;&lt;p&gt;And on that note, I condemn in the harshest terms the response from communities like /r/linux on the subject. The vile harassment and hate directed at the FDO officer in question is obscene and completely unjustifiable. I don’t care what window manager or desktop environment you use – this kind of behavior is completely uncalled for. I expect better.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;P.S. The Hyprland community has already descended on me before even publishing this post, after I called Vaxry out on Mastodon a few hours ago. My notifications are not full of reasonable objections to my complaints, but instead the response is slurs and death threats. This only serves to prove my characterization of the Hyprland community as deeply toxic.&lt;/em&gt;&lt;/p&gt;
            <div class="footnotes" role="doc-endnotes"></div>
          </description>
          <link>https://d302hfib-20260520.pages.dev/blog/FDO-conduct-enforcement/</link>
        
        <pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate>
        <guid>https://d302hfib-20260520.pages.dev/blog/FDO-conduct-enforcement/</guid>
      </item>
    
  </channel>
</rss>
