<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Eventuallymaking</title>
        <link>https://eventuallymaking.io</link>
        <description>Software Engineer with more than 20 years of experience. I love to share about technologies and startups</description>
        <lastBuildDate>Sat, 04 Apr 2026 04:25:25 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Writizzy</generator>
        <language>en</language>
        <image>
            <title>Eventuallymaking</title>
            <url>https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1763977836726-ljcigjg.webp</url>
            <link>https://eventuallymaking.io</link>
        </image>
        <copyright>All rights reserved 2026, Eventuallymaking</copyright>
        <item>
            <title><![CDATA[Coding 10x faster: what's the real benefit?]]></title>
            <link>https://eventuallymaking.io/p/coding-10x-faster-what-s-the-real-benefit</link>
            <guid>https://eventuallymaking.io/p/coding-10x-faster-what-s-the-real-benefit</guid>
            <pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Developers who save a ton of time thanks to AI: what do you do with it? Let's explore that.]]></description>
            <content:encoded><![CDATA[<p>I saw a Reddit post the other day: &quot;<a href="https://www.reddit.com/r/developpeurs/comments/1qcogyb/pour_les_devs_qui_gagnent_bcp_de_temps_gr%C3%A2ce_%C3%A0/">Developers who save a ton of time thanks to AI: what do you do with it?</a>&quot; (in french)</p>
<p>It got me thinking. I have an answer from my own experience, which I&#39;ll share with you. But I&#39;m well aware my situation is peculiar. So I decided to dig deeper, and I realized something: the real question isn&#39;t whether you&#39;re getting faster. It&#39;s: what does that actually change for you?</p>
<p>Do you work less? More? Differently?</p>
<p>What&#39;s the impact in a large corporation? What about freelancers?</p>
<p>Essentially: ++<strong>if</strong>++ someone gains time, what&#39;s it actually worth to them?</p>
<h2>Is That Time Gain Even Real?</h2>
<p>First, let me be thorough and put things in perspective. A <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">recent study from METR</a> (Model Evaluation &amp; Threat Research) shows that this time gain might not be as straightforward as we think.</p>
<p>The study found that experienced developers working on legacy codebases were actually 20% slower with AI, largely due to code review cycles.</p>
<p>Take it with a grain of salt—the sample size was only 16 people. And context matters: we&#39;re talking about expert developers working on large, complex codebases.</p>
<p>I won&#39;t dwell on this study because I can find others saying the opposite. But I thought it was intellectually honest to mention it, to balance the narrative and add some perspective.</p>
<p>The point isn&#39;t to assume that AI definitely makes us faster. I don&#39;t want to get into that debate. Instead, let&#39;s strip away the AI label entirely and just consider a hypothesis:</p>
<p><em>What if someone could produce code 20-30% faster? Or even 10x faster? What happens then? If software production becomes cheaper, what&#39;s the impact on the developer profession? What can you actually do with that gained time?</em></p>
<p>This isn&#39;t a silly hypothesis. The profession has changed radically since the days of physically wiring computers to program them. We&#39;ve constantly improved productivity. And our successors probably won&#39;t work the way we do.</p>
<h2>An Opportunity for Product Builders</h2>
<p>I&#39;m an outlier, so my answer doesn&#39;t apply to most people.</p>
<p>I work with one co-founder on a recently launched product. I have no productivity quotas, no salary pressure, no one to report to.</p>
<p>I control my own time. If I finish a task in an hour instead of a week, I can just stop working and do something else. I&#39;m not obligated to pad my hours or hit some end-of-day checkpoint.</p>
<p>Of course, I still have pressure—the product needs to be good and adopted. I track new users monthly, revenue growth, and customer feedback via email. But for my situation, extra time is genuinely useful.</p>
<p>I can spend more time responding to emails thoughtfully. I can do deeper analysis of my market and user feedback.</p>
<p>In short, I see it as an opportunity.</p>
<p>Before, as a &quot;technical founder,&quot; I spent all my time coding and lived heads-down, with no bandwidth to think strategically about the product long-term. Gaining time lets me rebalance.</p>
<p>I love coding. But coding was eating up brain cycles I needed for strategy.</p>
<p>That&#39;s no longer the case.</p>
<p>I can spend more time on the &quot;why&quot; instead of just the &quot;how.&quot;</p>
<h2>Time to Improve, Not Just Expand</h2>
<p>Time has always been scarce in software and startups. When I gain time, I spend it on other product work: improving user documentation, strengthening test infrastructure to prevent future problems.</p>
<p>I tackle bugs I see in the logs, or UI quirks I&#39;d noticed but pushed off indefinitely.</p>
<p>You know the feeling—that infinite Jira backlog filled with small improvement tickets. Those famous &quot;we&#39;ll do it later&quot; items that exist mostly to make us feel better, or to satisfy the support person who asked about them.</p>
<p>&quot;Look, it&#39;s on our TODO list. Yeah, it&#39;ll take 15 years to get to, but it&#39;s there…&quot;</p>
<p>That doesn&#39;t exist for me anymore. Small issues like that pile up by the dozens, and the product steadily improves.</p>
<p>Using the financial analogy of technical debt: once code costs less, you pay down the debt continuously, which reduces the interest burden.</p>
<h2>Time to Learn</h2>
<p>Since I spend less time coding, I&#39;ve had much more time to think deeply about problems. And I&#39;ve invested in education.</p>
<p>Before, time pressure forced shortcuts. Recently, I&#39;ve documented and written about <a href="https://eventuallymaking.io/p/is-platform-moderation-doomed-to-fail">content moderation on platforms</a>, dug into SSL certificate systems, explored proof-of-work captcha mechanisms, studied <a href="https://eventuallymaking.io/p/purchasing-power-parity-ppp">purchasing power parity</a>.</p>
<p>And here&#39;s the surprising part: I&#39;ve just stepped away from the keyboard.</p>
<p>Often in my typical day, I spend time away from the screen. I&#39;ve improved my broth technique for ramen. I&#39;ve done home repairs and started building furniture.</p>
<p>Paradoxically, that time helps me build better products.</p>
<p>Ever notice you solve complex problems in the shower?</p>
<p>Letting your mind wander is creative fuel.</p>
<p>It <a href="https://eventuallymaking.io/p/accepting-boredom">took me a while to accept it</a>, but giving your brain rest—letting it incubate ideas and wander while you do something else—is excellent for problem-solving.</p>
<p>Of course, I know my situation is specific. I can&#39;t imagine starting a woodworking session in the middle of an open office surrounded by developers. But for me, gaining time on code means a holistic rebalancing of my days and, paradoxically, better-quality output.</p>
<p>Because it was never just about coding—it was also about thinking long-term, which is easier when you have time for it.</p>
<p>Clearly, though, it&#39;s different in a more traditional context. So I did some research on what others are saying.</p>
<h2>Productivity and Burnout: The Real Cost</h2>
<p>One of the first insights comes from a <a href="https://hbr.org/2026/02/ai-doesnt-reduce-work-it-intensifies-it">Harvard Business Review study</a>. Increased productivity doesn&#39;t lead to reduced working hours—it leads to intensification.</p>
<p>Work becomes more intense for several reasons:</p>
<p><strong>AI removes cognitive breaks.</strong> Since AI makes it faster to start a task, you lose the natural pause that exists at the beginning of each project when you&#39;re figuring out the approach.</p>
<p><strong>AI blurs job boundaries.</strong> You feel capable of doing frontend, design, ops, backend, mobile. Your scope explodes for a single person.</p>
<p><strong>Frequent gratification drives endless continuation.</strong> If you complete 10 tickets a day and each is quick, why not one more? One quick prompt before closing the laptop?</p>
<p>But this intensification comes at a real cost: fatigue, burnout, mistakes (because tired people miss things).</p>
<p>I found <a href="https://steve-yegge.medium.com/the-ai-vampire-eda6e4f07163">an article that compares AI to a vampire</a> draining our energy.</p>
<p>The idea is simple: since AI handles all the simple, repetitive tasks that used to serve as cognitive breaks, we&#39;re left essentially doing high-level work and critical decisions.</p>
<p>But humans can&#39;t make critical decisions nonstop for 8 hours a day. It&#39;s exhausting.</p>
<p>That&#39;s why I personally either step away from my screen for part of the day or do more recreational activities at the computer: writing an article (which explains why I write more now), or learning something new. The article recommends finding a new balance.</p>
<p>I&#39;m not sure how sincere the article is, but this seems <a href="https://github.blog/ai-and-ml/generative-ai/how-developers-spend-the-time-they-save-thanks-to-ai-coding-tools/">to be GitHub's approach</a>. They used the time gain not to drastically increase output but for other kinds of work: collaboration, reflection.</p>
<h2>Doing More ≠ Doing Better</h2>
<p>There&#39;s a hard limit to how many new features users can absorb daily anyway.</p>
<p>Just because you can ship 10x more features doesn&#39;t mean it benefits users.</p>
<p>This is Tesler&#39;s Law, also known as the <a href="https://en.wikipedia.org/wiki/Law_of_conservation_of_complexity">Law of Conservation of Complexity</a>. Every system has an irreducible level of complexity. If you reduce it in one place—say, developers moving faster—it appears elsewhere: users now have to adapt to software that evolves too quickly.</p>
<p>You also risk &quot;feature fatigue,&quot; where software becomes bloated and overwhelming. Being forced to make choices is often healthy.</p>
<p>Essentially, speeding up benefits no one, and it&#39;s preferable that productivity gains show up as better-thought features or increased work on &quot;invisible&quot; quality.</p>
<h2>When Productivity Creates Boredom</h2>
<p>There&#39;s another scenario worth mentioning. Many people work at organizations where going faster changes absolutely nothing, because the company is fighting its own inertia more than any product challenge.</p>
<p>I worked at a large corporation once. I remember a project in 2003 where coding really wasn&#39;t the issue.</p>
<p>I&#39;d come from a more dynamic job. I was used to a certain pace. Here, I was given a program to write. I finished it in 2 days. I went back to my manager. He said we&#39;d discuss it again in 3 weeks. In a year, I shipped almost nothing. It was probably the worst year of my career.</p>
<p>Mornings brought people asking who wanted to attend meetings about various topics. I couldn&#39;t understand why everyone kept going.</p>
<p>But then I got it. It was to fill the day.</p>
<p>If I&#39;d spent 1 hour instead of 2 days on my work, I&#39;d just have been bored longer.</p>
<p>I knew burnout existed. But there I almost experienced burnout&#39;s opposite: complete stagnation. Eventually, I educated myself on the side in areas I cared about. I made that time count.</p>
<p>But I won&#39;t lie—I was incredibly relieved when that project ended.</p>
<p>The point: in some places, coding faster changes nothing. Coffee breaks just get longer.</p>
<h2>Freelancers: From Time to Value</h2>
<p>Now there&#39;s a population I have real questions about.</p>
<p>Let&#39;s say code costs collapse. What happens to people billing by the hour?</p>
<p>You could imagine a chunk of them won&#39;t exactly broadcast that they finished a job faster, since that means losing money.</p>
<p>Can that hold long-term, especially for a freelancer working on-site at the client, visible to everyone? In big companies, maybe. But it&#39;ll never work in an organization whose developers are also using the same tools to move faster.</p>
<p>That&#39;s where I wonder if fixed-price or outcome-based billing might become more attractive than hourly rates.</p>
<p>Usually, I advise against results-based contracts, especially for younger freelancers, because it&#39;s hard to contract properly, set boundaries, and accurately estimate work beforehand.</p>
<p>But if AI made development faster and more predictable, fixed-price work could regain appeal.</p>
<p>It wouldn&#39;t be about billing time. It would be about billing value.</p>
<p>I&#39;d have no problem charging a fixed amount for valuable work, even if it took only 1-2 days.</p>
<p>I&#39;ve worked 25 years to deliver that result in 2 days. Clients pay for your experience and your ability to use tools. Speed is irrelevant.</p>
<p>In a worst-case scenario, I might lower prices slightly, but the risk I take on also gets priced into a fixed contract.</p>
<p>That said, I&#39;m not sure this logic holds forever. Competitors as good as me might take on more clients to offset losses, driving per-contract prices down.</p>
<p><a href="https://2727coworking.com/articles/ai-impact-freelancers">I came across an article on this</a>. It concluded that expert freelancers will survive, but demand will shrink. Especially since their clients will also start coding if the cost drops low enough.</p>
<p>But one takeaway stuck with me: AI won&#39;t replace the freelancer. The freelancer using AI will replace the one who doesn&#39;t. That&#39;s probably the most important lesson.</p>
<h2>Conclusion</h2>
<p>Again, the question wasn&#39;t whether AI makes us faster. The real question I wanted to explore was: what do you do with the time you gain?</p>
<p>The answer depends on your context.</p>
<p>If you&#39;re at an organization paralyzed by inertia, moving faster changes nothing—you&#39;ll just get bored sooner. If you&#39;re product-focused with the freedom to manage your own time, it&#39;s an incredible opportunity to step back and think strategically. If you&#39;re a freelancer, maybe it&#39;s time to renegotiate.</p>
<p>But here&#39;s the critical constraint: productivity only matters if it creates value. Shipping 10x more features might actually hurt your users. Gaining time is great, but it&#39;s only valuable if you know what to do with it.</p>
<p>Bottom line: there&#39;s no one-size-fits-all answer. But you might just gain the time needed to figure out what your answer is.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dogfooding: Why I Migrated My Own Blog to Writizzy]]></title>
            <link>https://eventuallymaking.io/p/dogfooding-why-i-migrated-my-own-blog-to-writizzy</link>
            <guid>https://eventuallymaking.io/p/dogfooding-why-i-migrated-my-own-blog-to-writizzy</guid>
            <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Dogfooding: Why I migrated EventuallyCoding to Writizzy. Between the difficulty of open source and the agility of SaaS, here are some insights from my experience.]]></description>
            <content:encoded><![CDATA[<p>In 2022, I created an open-source static blog generator: <a href="https://bloggrify.com/">Bloggrify</a>.</p>
<p>It’s conceptually similar to <a href="https://gohugo.io/">Hugo</a>—it generates a static site (just a bunch of HTML files) that you can host for free on Cloudflare, GitHub Pages, or <a href="https://Bunny.net">Bunny.net</a>.</p>
<p>Before that, I had tried everything: WordPress, Joomla, Medium. I wanted to regain flexibility and customize my blog exactly how I wanted. But let’s be honest: I’m a developer, and I mainly wanted a new technical playground.</p>
<p>Fast forward to 2026, and I have to admit: <strong>using a static blog has become a major friction point for my writing.</strong> So, I decided to migrate again, this time to a managed platform: <strong>Writizzy</strong>, another product I’m building.</p>
<p>This move is a great opportunity to talk about several things:</p>
<ul>
<li><strong>Dogfooding:</strong> Why you absolutely must use your own products.</li>
<li><strong>The harsh reality of Open Source:</strong> Why it’s harder than it looks.</li>
<li><strong>Product Satisfaction:</strong> The joy of building something people actually use.</li>
<li><strong>The future of my projects:</strong> Bloggrify, Writizzy, and <a href="http://Hakanai.io">Hakanai.io</a>.</li>
</ul>
<hr>
<h2>Bloggrify: When my blog was a technical playground</h2>
<p>Bloggrify started as a love letter to the Nuxt ecosystem, specifically <code>nuxt-content</code>. Back when I migrated from WordPress, my criteria were simple:</p>
<ul>
<li>A simple templating language (Markdown).</li>
<li>Extensibility (RSS feeds, sitemaps, etc.).</li>
<li>Low cost.</li>
<li>Low carbon footprint (static sites are incredibly efficient).</li>
</ul>
<p>In 2022, it wasn&#39;t a &quot;product&quot; yet—just my personal blog code made public. It only became a full-fledged open-source project in 2024, with a dedicated site and a proper README to encourage contributions.</p>
<p>I wanted the product to be <strong>&quot;opinionated.&quot;</strong> Nuxt-content does 90% of the heavy lifting, but it’s a generic tool. For a real blog, you still need to build the RSS feed, sitemap, robots.txt, comments, table of contents, share buttons, newsletter integration, analytics, and SEO.</p>
<p>That’s what Bloggrify is: a &quot;starter pack&quot; that comes with everything pre-configured. Think of it as <a href="https://docus.dev/">Docus</a>, but for blogs instead of documentation.</p>
<hr>
<h2>The Reality Check: GitHub Stars vs. Actual Users</h2>
<p>I’m a numbers person. When I launch a project, I want to see usage. It might sound trivial, but considering the effort it takes to manage NPM releases (which is honestly a nightmare), handle versioning, and maintain themes, you expect a minimum return on investment.</p>
<p>Bloggrify reached <strong>164 stars on GitHub</strong> and sits somewhere in the middle of the pack on <a href="http://Jamstack.org">Jamstack.org</a>. That’s... okay, I guess.</p>
<p>But in reality, I have almost zero feedback on its actual usage. A few rare GitHub issues, one contributor who was active for a few weeks before vanishing, and then silence. I only know of one blog that used it before switching back to Hugo.</p>
<p>The experience has been bittersweet. Building in the dark is demotivating. However, it did lead me to launch two other side-products:</p>
<ul>
<li><strong><a href="https://broadcast.hakanai.io">broadcast.hakanai.io</a>:</strong> A newsletter system for static blogs based on RSS feeds.</li>
<li><strong><a href="https://pulse.hakanai.io">pulse.hakanai.io</a>:</strong> A specialized analytics tool for bloggers (not just generic web traffic).</li>
</ul>
<hr>
<h2>Transitioning to SaaS</h2>
<p>I launched Broadcast and Pulse in 2024 and 2025. They’re living a quiet life, but they aren&#39;t &quot;exploding.&quot; My target audience is static bloggers—mostly developers. And as we know, developers are the hardest group to convince to pay for a service!</p>
<p>Still, I’m satisfied. These products taught me how to build a SaaS, handle subscriptions, and find my ideal tech stack. My own newsletters were sent via Broadcast (reaching about 150 subscribers), and I used Pulse to track which articles were actually being read.</p>
<p>The reality? These two tools generate about <strong>€100 in Monthly Recurring Revenue (MRR)</strong>. Not enough to retire on, but a great learning experience.</p>
<p>And that brings us to Writizzy.</p>
<hr>
<h2>Enter Writizzy</h2>
<p>With Bloggrify, I realized my writing workflow had become painful. Between maintaining the framework, jumping between spell-checkers, writing in Markdown, spinning up a local server to check for broken links, and waiting for build/deployment times... I was losing hours.</p>
<p>For my last article, someone pointed out a few typos. It took me <strong>20 minutes</strong> between editing the file and seeing the fix live. Add to that the friction of managing images in an IDE and the recent Nuxt 4 / Nuxt-content updates which, while I love them, have made the dev experience slightly slower for simple blogging.</p>
<p>To be honest, I wasn&#39;t aware of that. I put up with these inconveniences and was still very happy to have “flexibility” in what I could do with my blog. I wasn&#39;t fully aware of this &quot;friction&quot; until I built <strong>Writizzy</strong>.</p>
<p>Writizzy is the synthesis of my blogging experience. It’s a mix of Substack, Ghost, and Medium, but built as a European alternative with four core pillars:</p>
<ol>
<li><strong><a href="https://eventuallymaking.io/p/what-if-your-favorite-platform-died-how-i-m-trying-to-build-software-that-lasts">Sustainability</a>:</strong> Focusing on reversibility and interoperability.</li>
<li><strong><a href="https://eventuallymaking.io/p/is-platform-moderation-doomed-to-fail">Discoverability.</a></strong></li>
<li><strong><a href="https://eventuallymaking.io/p/purchasing-power-parity-ppp">Economic accessibility</a>:</strong> Implementing Purchasing Power Parity (PPP).</li>
<li><strong>Transparency.</strong></li>
</ol>
<p>I moved my English blog to Writizzy first (this one), with no intention of moving the french one. But I soon noticed I was writing much faster on the English site. The workflow was just... better. Copy-pasting images directly into the editor, instant previews, no server to launch. It was a joy.</p>
<hr>
<h2>The Future of My Projects</h2>
<p>I hesitated for a long time before migrating <a href="https://eventuallycoding.com">eventuallycoding.com</a>. I knew that by doing so, I was taking the risk of killing Bloggrify. If even I don&#39;t use it anymore, the project enters a danger zone. When you don’t use your own product daily—when you’re no longer obsessed with the problem it solves—it’s almost impossible to stay attached to it.</p>
<p>This is a symptom I see in so many &quot;disposable&quot; projects across the internet: built by people who flutter from one idea to the next without any real skin in the game. So yes, moving away from Bloggrify is a risk.</p>
<p>But I’ve come to terms with it. Today, I have almost zero evidence that Bloggrify is being used. Meanwhile, Writizzy already has 314 blogs and 11 paying users (€135 MRR) in just four months. Why stubbornly cling to Bloggrify? Ultimately, I believe I’m solving the same problem with Writizzy, but in a much better way.</p>
<p>I receive feedback emails and feature requests every single week. I get constant positive reinforcement from people actually using it. The product isn’t perfect, but it improves every day. It improves because real users are pushing me to refine the site, fix what’s broken, and add the features that absolutely need to be there.</p>
<p>And it also improves because I use it constantly. This is the massive benefit of <strong>dogfooding</strong>. Every day, I am confronted with my own software, so I know exactly what needs to change.</p>
<p>So yes, Bloggrify is moving to maintenance mode. I’m taking this opportunity to turn all templates into Open Source. Two of them were &quot;premium,&quot; but it wouldn&#39;t make sense to keep them that way today. I tell myself I’ll still evolve it from time to time, but honestly, I wonder if I’m just lying to myself.</p>
<p>As for <strong><a href="http://Hakanai.io">Hakanai.io</a></strong>, I’m definitely continuing. The problem it solves still fascinates me. I get great feedback, especially on Broadcast. <strong>Pulse</strong>, however, suffers from being misunderstood. It’s a &quot;blog analytics&quot; product, and people don&#39;t really grasp what that entails—SEO advice, outlier detection, evergreen content tracking. I’m not great at marketing, so it mostly flies under the radar except for the readers of this blog who took the time to test it. But I’m motivated to keep them alive.</p>
<p>As for <strong>Writizzy</strong>, there is no doubt. The product is incredibly exciting to build. The stakes are high: building a platform for expression that exists outside the US-centric giants. The traction is there, and the numbers follow (+45% MoM user growth).</p>
<p>Welcome to this blog, now officially on Writizzy. As a reader, you can already test several things:</p>
<ul>
<li>The <strong>comments section</strong>.</li>
<li>The <strong>newsletter</strong> subscription (if you haven’t already).</li>
</ul>
<p>The <a href="https://writizzy.com/discover">Discover feed</a> to read other articles from Writizzy bloggers. We’ve handpicked a few to start with, and this feed will become even more customizable in the future.</p>
<p>Welcome home.</p>
]]></content:encoded>
            <category>writizzy</category>
            <category>bloggrify</category>
            <category>opensource</category>
            <category>blog</category>
        </item>
        <item>
            <title><![CDATA[The B2BigB Syndrome: How Large Corporations Quietly Kill Startups]]></title>
            <link>https://eventuallymaking.io/p/the-b2bigb-syndrome-how-large-corporations-quietly-kill-startups</link>
            <guid>https://eventuallymaking.io/p/the-b2bigb-syndrome-how-large-corporations-quietly-kill-startups</guid>
            <pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Selling to a large corporation seems like the ultimate validation for a startup. It's often the beginning of the end. Endless sales cycles, cash flow problems, product derailed from its roadmap: here's why B2BigB is a trap, and how to try to avoid it]]></description>
            <content:encoded><![CDATA[<p>In the late 2000s, I worked at a software publisher and one of my colleagues started a company. It was a kind of corporate <a href="https://secondlife.com/">Second Life</a>, where an avatar could move around and trigger discussions with other people.</p>
<p>I don&#39;t remember the details anymore, but with hindsight and probably lots of exaggeration, I&#39;d say it was like <a href="https://www.gather.town/">Gather</a> but 15 years ahead of its time.</p>
<p>The application seemed to work well and the company was lining up meetings with major corporations that seemed super interested in rolling it out across their enterprise. We&#39;re talking about big banks, major energy suppliers, really serious companies.</p>
<p>Except it dragged on. A month. A quarter. A year. Then two. And eventually the company died waiting for an actual signature and, incidentally, some cash.</p>
<p>My friend unfortunately ran into the infamous B2BigB syndrome, this curse (a French one?) that tends to kill a lot of companies every year.</p>
<p>So if you&#39;re starting a company today or thinking about it, I invite you to think twice before prioritizing this segment, and that&#39;s what we&#39;re going to talk about today.</p>
<h2>B2BigB</h2>
<p>First, I need to define this acronym. In the business world, we tend to segment companies based on the customers they target:</p>
<ul>
<li>B2C (Business to Consumer), that&#39;s the general public.</li>
<li>B2B (Business to Business), that&#39;s selling to companies.</li>
</ul>
<p>For example, Netflix is B2C and Jira is B2B.</p>
<p>Among all this you have plenty of nuances. Microsoft sells in both B2C and B2B, for example. You have C2C platforms (exchanges between individuals).</p>
<p>But let&#39;s keep it simple and just talk about B2C and B2B.</p>
<p>Except &quot;B&quot; is broad. Between a 5-person company and a 40,000-person conglomerate, the way you sell to the two is very different. And in this category, there&#39;s a category of death: large corporations.</p>
<p>It&#39;s hard to really say when a large corporation begins, but you recognize them easily. A large corporation starts when a decision requires a ton of meetings, a quarter, a steering committee and board approval or a purchasing department sign-off.</p>
<p>In practice, you can even have 500-person companies that behave this way, even if it&#39;s more common starting at 1,000. But in any case, it gets worse with size. A quarter can become a year, or even 2, or even 5 (and I swear I&#39;ve seen sales cycles that long).</p>
<p>Anyway, that&#39;s what I call the BigB (the big B&#39;s).</p>
<p>The big advantage of BigB&#39;s is, in theory, the ability to buy expensive because we&#39;re talking about deployment across an entire large corporation, so volumes that make most startups&#39; eyes light up.</p>
<p>Except that, it&#39;s often a mirage. The moment you start looking at costs and margins, not to mention all the associated risks.</p>
<h2>Gigantic Costs, Thin Margins</h2>
<p>Working with a large corporation is often synonymous with complexity, and that complexity is financed by specialists.</p>
<p>You have to respond to costly processes (a 200-page security questionnaire, legal questionnaires, framework contracts, ISO certification this and that) that often requires a lot of specialists (lawyers, security experts, finance people, etc.). And that&#39;s just to get through the first step of the sales cycle.</p>
<p>To sell to a large corporation, you need to be prepared to spend a fortune.</p>
<p>By the way, it&#39;s worth noting that this doesn&#39;t prevent these large corporations from regularly appearing on the monthly data breach list. Because no, churning out Excel questionnaires is not synonymous with security quality.</p>
<p>After that, you&#39;re quickly going to fall into the spiral of quarterly meetings with a bunch of people you&#39;ll only see once in your life, some of whom will take advantage of their temporary power to take out their frustrations and pet peeves on you. And since you&#39;ll be in a weak position, well...</p>
<p>This time is time not spent on the product. Of course it&#39;s normal to spend time on sales, but we&#39;re talking about quarterly meetings to prepare, with McKinsey-style PowerPoints (you sometimes even see scale-ups calling in consulting firms to fill out these documents) that will require weeks of preparation.</p>
<p>Again, to sell to a large corporation, you need to already be prepared to spend a fortune and wait ages.</p>
<p>But let&#39;s imagine you&#39;ve finally got the green light to deploy in a large corporation. The contract is signed. Now it&#39;s up to you to figure out adoption.</p>
<p>Actually, this is the beginning of a second nightmare.</p>
<p>A year has passed since the beginning of the sales cycle. All your previous contacts are gone. They might have been contractors who left the company. Or executives who got transferred to other branches of the group. And now you have to find the people capable of helping you deploy your software because without a doubt your revenue depends on how much the software is actually used. No deployment, no money.</p>
<p>So you&#39;re going to need a dedicated team of salespeople capable of navigating complex bureaucracy to find the right contacts, and maybe even a dedicated implementation team. Your costs are going to explode and you still won&#39;t have made anything at this stage.</p>
<p>With a bit of luck, and because you were smart enough to get a payment at signature, you&#39;ll eventually issue your first invoice. That will be paid 8 months later, <em>end of month</em>. The first 3 months having caused countless incidents because a purchase order needed to be signed and you had to go through 3 different departments for that. Bad luck, your cash flow is starting to choke.</p>
<p>You reach the end of the first year and then the purchasing department will come see you to renegotiate the contract, knowing full well that, in theory, they&#39;re your biggest client so it would be natural to do them a favor.</p>
<p>In short, 2 years later, you&#39;ve spent a fortune, your cash flow is negative, and your margin has melted like snow during a World Cup ski race in Saudi Arabia.</p>
<p>OK, let&#39;s say I&#39;m exaggerating and that despite everything, this contract allowed you to instead cross a threshold, to have an impressive signature to put forward and life continues for your startup/scaleup.</p>
<p>Actually, you don&#39;t know it yet, but you&#39;ve invited a Trojan horse into your company.</p>
<h2>The Loss of Innovation</h2>
<p>Working with a large corporation means accepting the complexity inherent to that business. If it took you 2 years to sign a contract with them, imagine that everything else takes the same time.</p>
<p>Your product has to evolve to fit their way of working. You&#39;ll be asked for 12-level approval workflows, software integrations with ERPs, broken enterprise SSO, integrations with legacy systems from the 90s. And every company has its own internal jargon that you&#39;ll be asked to force into your software. You&#39;ll invoice in units of work, have a &quot;purchasing&quot; role in your RBAC schemas (authorization systems), in short, in reality, you&#39;re going to develop an extension of your first client&#39;s IT infrastructure with all its constraints, its complexity, its slow onboarding, and its costs.</p>
<p>And when you have a client representing 80% of your revenue (and even from 20% onwards it really starts to matter), you can hardly say no. So your roadmap is regularly hijacked by salespeople dedicated to this client, and globally a product that drifts away from the mass market.</p>
<p>And that&#39;s normal, hey, I&#39;m not throwing stones at that team. If you&#39;ve dedicated people to a client, it&#39;s normal they try to influence how you build the product and even if the requests are absurd. Because that team doesn&#39;t have the perspective needed to judge.</p>
<p>And when the roadmap is regularly sidetracked, it&#39;s also a huge amount of customization debt that will end up slowing the entire product. This big client may have allowed you to double your headcount. But 3/4 of the company will end up working for them, and will develop their own software culture, less UX sense, less sensitivity to product performance (no point working on acquisition or conversion, for example).</p>
<p>All enterprise software has terrible UX, because first, that&#39;s not what drives sales, and second, because after burning money in the sales process, certification and onboarding, you have to make savings somewhere, often on the product which is no longer really central to the relationship with this client. They&#39;ll try to reassure you by saying no, it&#39;s important, but actually, the product at that point has become a cost center that needs to be optimized to not lose more margin. Margin eaten by the consulting firm that helped you determine your deployment strategy and pricing...</p>
<p>But even when you &quot;improve&quot; your product for this client, you&#39;re going to continuously degrade it for all the others you thought you&#39;d attract next by showcasing this win on your beautiful landing page. Because again, you&#39;re going to impose their complexity on all the other companies that could have been interested in your services.</p>
<p>I&#39;m obviously painting a dark picture. And there are companies that specialized FROM DAY 1 in large corporations, that tailored their commercial offering taking into account all the associated costs. Deployments are priced at 100k, contracts impose minimum usage, everything was framed from the start because the strategy was always to expand exclusively here.</p>
<p>But for all the companies that think &quot;just&quot; doing a BigB to get a validation badge, but who actually target the entire SMB market and are looking for volume. It&#39;s rarely a good plan.</p>
<h2>The Alternatives</h2>
<p>At the beginning I said: &quot;this curse (a French one?)&quot;. Why do I say it&#39;s a great French curse? Actually it&#39;s probably a magnifying glass effect and I&#39;d certainly see the same thing in every country.</p>
<p>But every year, I see companies that die after quarters of waiting for that famous contract with a large corporation (just yesterday I was talking to someone who told me the exact same story). So I think there&#39;s something a bit different about us. We like to be different.</p>
<p>Partly, I get the sense it&#39;s related to the size of our SMB market which is less important than in Germany (the German Mittelstand seems bigger). We go faster from SMB to large corporations.</p>
<p>Obviously, then, in terms of credibility, it&#39;s easier to sell a product once you have the logo of a large corporation than a bunch of logos of unknown companies.</p>
<p>What&#39;s certain is that culturally, there&#39;s the CAC 40 and everything else. The CAC 40 has been basically the same companies for 30 or 40 years. By contrast, look at the S&amp;P 500, in 1990 it was Exxon, GE, Philip Morris, IBM. They&#39;ve all given way to Apple, Nvidia, Amazon, Google.</p>
<p>In France, the large corporations in the CAC are structurally stable and dominant, which makes them all the more attractive as clients for startups. They have budgets, longevity, legitimacy. But these same large corporations aren&#39;t springboards to a global market — they&#39;re markets closed in on themselves.</p>
<p>And conversely the SMB market can work. If I look at Pennylane, Qonto, Indy, Payfit, Spendesk, Livestorm, it&#39;s precisely by targeting this market that they&#39;ve managed to go far.</p>
<p>By contrast, I have real questions about the strategy of a company like Mistral which seems to position itself only on large corporations (on-premise deployment, Azure partnerships, etc.) and seems to be neglecting the mass market.</p>
<p>I hope it won&#39;t be the future DailyMotion, which favored big media and telecom operators while missing the opportunity to become the B2C media platform that YouTube managed to become.</p>
<p>You&#39;ll have gathered, if you&#39;re starting a company today, I&#39;d tend to advise you to not see &quot;B2B&quot; as a single big playground. I&#39;d tend to tell you to avoid B2BigB which is often destructive for startups and often ends up leading to a dead end.</p>
<p>It&#39;s still possible, but you need to be armed for it. And if that&#39;s your choice, I&#39;ll only say one thing. Good luck :)</p>
<p>Targeting large corporations (and the public sector) obviously gives you access to larger markets. But I&#39;d tend to recommend tackling that step later, when the company is already solid.</p>
<p>When DJI (Chinese drones) attacked the professional market, they already had a huge foothold in the B2C market. They came with an expertise and know-how that allowed them to be sovereign over their decisions.</p>
<p>Now if you&#39;re tempted anyway, the recipe for having a chance is above all a question of seniority of leadership: you need to know how to say no firmly, you need to stop chasing every rabbit that passes by when you see a so-called &quot;low hanging fruit&quot;, the expression that has replaced &quot;quick win&quot; as one of my most hated expressions.</p>
<p>There&#39;s no such thing as effortless gain. Everything has a cost, even when it&#39;s hidden.</p>
<p>And you need a good financial and reputational foundation to impose these conditions, hence the advice to already have a good base on the other segments. It&#39;s easier to say no when a client represents 2% than when they represent 20%.</p>
<p>One strategy I&#39;ve seen work several times is to create software with great UX, get adopted by the teams, then go see the purchasing departments of the companies in question and put the usage figures under their nose: &quot;See, you already have 300 people using it, wouldn&#39;t you like to set up a framework contract and better understand usage at your company?&quot;</p>
<p>That&#39;s interesting because you&#39;ve created a product whose adoption happened from the teams, you didn&#39;t modify your roadmap, and you&#39;re in a strong position with procurement to improve your presence without being pressured on everything else. In short, make a good product, track usage, wait until you have enough footprint, and then go negotiate.</p>
<p>Anthropic (Claude Code) by first targeting individual developers (indie hackers, side projects) and small teams was pushed to constantly improve its product which became number 1 in its category (at the time of writing, this passage might age poorly :)). Today, they&#39;re selling enterprise licenses.</p>
<p>Good companies are able to do volume and then move up the chain, small companies then large companies. I&#39;ve rarely (never?) seen the reverse. When you do large corporations, you don&#39;t know how to come back to the rest of the segments.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I Tried to Ditch Windows for Linux... Spoiler: It Didn't Go Well]]></title>
            <link>https://eventuallymaking.io/p/i-tried-to-ditch-windows-for-linux-spoiler-it-didn-t-go-well</link>
            <guid>https://eventuallymaking.io/p/i-tried-to-ditch-windows-for-linux-spoiler-it-didn-t-go-well</guid>
            <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Security, geopolitics, planned obsolescence: the reasons to leave Windows have never been stronger. Here's my attempted migration to Linux]]></description>
            <content:encoded><![CDATA[<p>What if I just... quit Windows?</p>
<p>I think I&#39;ve asked myself this question three or four times over the past 25 years, but this is the first time the reasons pushing me to do it are this compelling, and the tools available are this mature.</p>
<p>So why not give it a shot?</p>
<p>But first, let&#39;s talk about the reasons. Why switch?</p>
<p>You probably haven&#39;t missed it, but the geopolitical situation is tense, and our tech dependence on the US is becoming genuinely dangerous. Windows is the ultimate Trojan horse, providing access to thousands (billions?) of PCs—both personal and professional—and it&#39;s getting harder to ignore.</p>
<p>Between the <a href="https://en.wikipedia.org/wiki/NSAKEY">backdoor suspicions in 1999 with the _NSAKEY affair</a>, <a href="https://en.wikipedia.org/wiki/DoublePulsar">renewed suspicions in 2017 with DoublePulsar</a>, and the <a href="https://www.forbes.com/sites/thomasbrewster/2026/01/22/microsoft-gave-fbi-keys-to-unlock-bitlocker-encrypted-data/">confirmed story about Bitlocker encryption keys being handed to the NSA</a>, it would be incredibly naive to think we&#39;re safe.</p>
<p>Beyond that, the Windows 11 migration has forced countless companies to replace hardware that was <a href="https://www.technewsworld.com/story/windows-10-end-of-life-could-flood-landfills-with-e-waste-179242.html">still working perfectly fine</a>.</p>
<p>Honestly, the first reason was enough. But since we&#39;re being thorough...</p>
<p>Now, how do I actually do this?</p>
<h2>My Constraints</h2>
<p>I want to switch, sure, but not at any cost—so let me give you some context.</p>
<p>Like anyone who works in tech, I regularly get asked to &quot;take a quick look&quot; at someone&#39;s printer that stopped working, a phone that won&#39;t boot, or some finicky word processor.</p>
<p>Here&#39;s a scoop: I don&#39;t know how to do that. It&#39;s not my job. I know, it&#39;s wild—I spend all day on a computer, but that doesn&#39;t mean I can fix it or anything that looks like an assembly of electronic components. Worse, I hate doing it.</p>
<p>Fine, maybe I&#39;m exaggerating. With enough effort and online documentation, I can sort of solve some problems. But again, I hate it.</p>
<p>The truth is, I don&#39;t want to spend time tinkering with everyday tools, any more than I want to take apart my fridge or my car.</p>
<p>Okay, the car example is probably bad—I genuinely know nothing about cars. And sure, when I was younger, I found it fun to mess with my autoexec.bat and config.sys to get games running in high memory. But those days are over. Gaming should be a hobby, not a technical challenge.</p>
<p>So you get it: I want to switch to something simple that doesn&#39;t require me to become an expert in obscure command lines just to make things work.</p>
<p>Second useful clarification: I&#39;ve been using Unix/Linux professionally since 1997. I&#39;d already installed Mandrake in &#39;99 as a dual boot, and I&#39;ve had work machines running Ubuntu and Debian. So I&#39;m not starting from zero, and I know that for professional use, I&#39;d have no trouble adapting to Linux.</p>
<p>But for personal use, I need to do video editing (I use Filmora) and I like playing video games—so that&#39;s going to factor in.</p>
<p>And apparently, Linux can now do all of that.</p>
<p>Apparently...</p>
<h2>Testing Without Breaking Everything (Almost)</h2>
<p>The idea wasn&#39;t to buy a new computer—that would be pretty dumb since my current PC is still great. I bought it in 2018; it has 32GB of RAM, an AMD Ryzen 7 processor, a GeForce GTX 1060, and runs games like Overwatch 2 or Baldur&#39;s Gate 3 without any issues.</p>
<p>The idea also wasn&#39;t to reinstall over Windows and risk being PC-less for days or weeks.</p>
<p>So I bought a new 1TB SSD to enable dual boot and test different OSes. Dual boot isn&#39;t a long-term solution since I want to get rid of Windows, and switching between systems is a pain anyway. But it&#39;s perfect for testing. Plus, going from 1TB to 2TB was becoming necessary because video editing eats up disk space fast.</p>
<p>Of course, since I have clumsy fingers and my eyesight is declining with age, I managed the impressive feat of stripping the screw thread that holds the NVMe drive to the motherboard. I really thought I&#39;d be giving up much sooner than planned. But after a quick chat with Gemini, I discovered that PCI-to-NVMe adapters exist, letting you plug SSD drives into a PCI slot.</p>
<p>So, another purchase, a few days, and €20 less later, I was finally able to plug in that damn drive.</p>
<h2>Choosing a Distribution</h2>
<p>The first step is picking a Linux distribution, downloading an ISO (~4GB), flashing a USB drive with BalenaEtcher, and running the installation.</p>
<p>Remember these steps—they&#39;ll come up several times...</p>
<p>My first choice was Bazzite, which is gaming-oriented, but I quickly soured on it when I saw that <a href="https://ba.antheas.dev/bazzite-postmortem.html">the co-founders were airing their dirty laundry on the internet</a>—never a great sign. We only allow that kind of drama for Linus Torvalds.</p>
<p>So I installed Pop!_OS next, which is supposed to be user-friendly and gaming-compatible.</p>
<p>Pretty quickly, the disappointments piled up. My video editing software, Filmora, isn&#39;t available on Linux. Neither is Proton Drive.</p>
<p>For Proton, there seems to be <a href="https://linuxvox.com/blog/proton-drive-linux/">a version in development</a>, so I can wait.</p>
<p>As for Filmora, it means I&#39;ll have to learn DaVinci Resolve. It&#39;s frustrating because I have my workflow down in Filmora, but I wouldn&#39;t be losing out by learning DaVinci—it&#39;s an excellent editing tool. Frustrating, but doable.</p>
<p>However, I also ran into a lot of issues with slowdowns and system freezes. I became very familiar with xkill (to force-close windows), especially while installing Lutris to run Overwatch.</p>
<p>Yes, I&#39;m using Overwatch as my benchmark for testing whether this migration is feasible. It&#39;s THE game I play the most. Don&#39;t judge me.</p>
<p>After a long stretch of frustration with Lutris that never worked, I eventually switched to Steam because Gemini told me Overwatch is now playable on Steam. Installing Steam had to be done via command line since the default installer didn&#39;t work (sigh). I then launched the Overwatch download (60GB...) and went to do something else. The computer went to sleep and wouldn&#39;t wake up afterward... Apparently, computers can have trouble waking up too. So I had to reboot—and lost the game download...</p>
<p>Thrilled (not) and fresh as a daisy (also not), I disabled automatic sleep mode and restarted the download. After several hours, I finally launched the game and... it didn&#39;t work. The game started, it seemed smooth, but my character kept staring at the ground as if my mouse wasn&#39;t being recognized.</p>
<p>We&#39;re talking hours of struggling, lots of terminal commands when I explicitly didn&#39;t want an OS that forces me to do that. I&#39;ll admit the urge to give up was really strong.</p>
<p>And then someone told me: &quot;Maybe you should try a less exotic distro.&quot;</p>
<p>Okay. Fair point. Can&#39;t give up that easily.</p>
<p>And besides, at this point, I should mention something. One of my motivations was to get away from US tech. But choosing a Linux distro—sure, it&#39;s open source, but there are companies behind these distributions. Both Bazzite and Pop!_OS are US-based, so I wasn&#39;t really meeting my goal anyway.</p>
<p>So the next day I went with Linux Mint (Ireland). Re-downloaded an ISO, re-flashed a USB drive, re-ran the installation. Joy.</p>
<p>Verdict: Mint seemed more stable—no freezes, no sleep/wake issues—but the interface felt dated, like Windows from the 2000s. Someone quickly suggested I try Zorin OS (also Ireland). No problem, I&#39;m getting good at flashing USB drives by now.</p>
<p>So I re-downloaded an ISO, re-flashed a USB drive, re-ran the installation.</p>
<p>And I have to admit, the result is pretty nice. The OS is pleasant to use, the interface stays close to Windows, so the learning curve is gentle. But this time I knew the main test was getting Overwatch to work to fully validate the migration.</p>
<p>So I installed Steam directly through the built-in app store. Launched the Overwatch download (still 60GB, hasn&#39;t changed) and waited.</p>
<p>After several hours, finally, I could start the game and... another failure. The game was completely choppy, pixelated everywhere, the menus barely responded. Time for xkill again...</p>
<p>But this time, I wasn&#39;t giving up.</p>
<p>So I called in reinforcements: Gemini.</p>
<p>First, we tried modifying the game&#39;s launch options to force Proton, but no luck. I&#39;m acting like I know what Proton is—I really don&#39;t. I discovered Proton, Wine, and Lutris all on the same day, and I&#39;m definitely not going to explain what each one does or why Proton over Wine. No idea, and I don&#39;t really care.</p>
<p>After several terminal commands, we concluded that the game wasn&#39;t using my Nvidia card even though it was correctly installed, because Flatpak was blocking it. Was this diagnosis correct? No clue. But I installed Flatseal to manage Steam&#39;s permissions.</p>
<p>Did it work? Not at all. Gemini then suggested reinstalling Steam not via Flathub, but using the native version directly (with a .deb file).</p>
<p>At this point, I wasn&#39;t going to balk at yet another installation—and I was pretty lost anyway. I didn&#39;t even know what Flathub was until last week.</p>
<p>So I reinstalled Steam, re-downloaded the game (yes, again), reinstalled Proton, changed the Proton version twice because the experimental version was incompatible with my setup, changed the launch options three times under Gemini&#39;s guidance, and after several hours, the game launched!</p>
<p>Well, almost. It started compiling Vulkan shaders.</p>
<p>Apparently, this precompiles them to avoid doing it during gameplay. I have very limited knowledge of what a shader is, and I don&#39;t know why this is necessary on Linux, but hey, for 10 more minutes, what&#39;s the difference at this point...</p>
<p>I quickly jumped into a practice match, tested a few characters, and had a weird feeling. The game wasn&#39;t smooth, and when I displayed the FPS counter, I saw I was capped at 60 FPS with occasional dips to 50. And trust me, you feel 60 FPS. There are little glitches here and there, a lack of fluidity. It&#39;s playable. You can live with it. But it&#39;s not at all pleasant, especially when you&#39;ve experienced the game at 175 FPS before, on the same machine.</p>
<p>And you know what Gemini suggested? Try Lutris.</p>
<p>So I installed Lutris, re-downloaded <a href="http://Battle.net">Battle.net</a> like I did on Pop!_OS, suffered through the same slowdowns and stuttering—which helped me realize it wasn&#39;t Pop!_OS&#39;s fault, but rather Lutris&#39;s—launched <a href="http://Battle.net">Battle.net</a> only to hit the exact same error I&#39;d had on Pop!_OS, and reached the same conclusion: Lutris is hell.</p>
<p>Gemini then said, &quot;If Lutris isn&#39;t cooperating, I recommend Bottles. It&#39;s an ultra-modern app available in the Zorin store that&#39;s become the go-to for installing <a href="http://Battle.net">Battle.net</a>.&quot;</p>
<p>But at that point, I&#39;ll be honest. I gave up...</p>
<p>Alright, time for a recap.</p>
<h2>Takeaways</h2>
<p>Well, I wouldn&#39;t call it a failure, but it didn&#39;t work, as they say.</p>
<p>Overall, the Linux experience for professional software development is excellent—but I already knew that; that&#39;s clearly not the barrier. Zorin OS does a great job for a Windows user like me; you find your way around quickly.</p>
<p>For other professions? Hard to say. The risk is always having one or two apps that aren&#39;t available on Linux. The OS itself is now truly capable, but if software vendors don&#39;t publish their apps for Linux, it&#39;ll always be a barrier. This is the case for CAD software (AutoCAD, Revit, SolidWorks), the Adobe suite for creatives, and several pro tools for video editors (Adobe Premiere, After Effects).</p>
<p>And that makes the option questionable for broader adoption. Again, Linux isn&#39;t the problem here—the software vendors are. If they don&#39;t see Linux as a mainstream platform, it&#39;ll never become mainstream.</p>
<p>And speaking of the mainstream, some of them are gamers—and I can&#39;t honestly say Linux is ready for them. I know some of you are going to push back on this. I have plenty of friends who&#39;ve guaranteed they can game on Linux, and I believe them. But it would be hypocritical of me to write that it&#39;s as easy as on Windows.</p>
<p>Obviously, I&#39;m exaggerating. For someone who just does basic office work at home, with a pre-configured computer, it should be fine. And it&#39;s true that all my peripherals were detected without any issues—printer, RØDE microphone, dual monitors, etc. So yes, I&#39;m being a bit unfair.</p>
<p>But as soon as gaming comes into the picture, I struggle to say it&#39;s okay. I spent hours typing obscure commands into a terminal. I tweaked launch options in Steam and Nvidia settings I&#39;d never seen in my life, and in the end, it still doesn&#39;t work.</p>
<p>You can absolutely tell me I&#39;m not skilled, that the problem is between the chair and the keyboard. I readily admit all of that. I didn&#39;t even know most of the software I dealt with these past few days (Flatpak, Wine, Proton, etc.). But I shouldn&#39;t need to be skilled to play games on a PC. And clearly, I&#39;m not the only one this happens to—I spent hours searching Reddit and saw plenty of people with similar issues.</p>
<p>I wanted to migrate. I spent hours on this. I read dozens of forum posts. Don&#39;t tell me I&#39;m being disingenuous. I&#39;m not patient, that&#39;s true, but I tried.</p>
<p>And the worst part is that I&#39;m frustrated. Because I really wanted to switch. I&#39;m willing to learn DaVinci to replace Filmora. I&#39;m willing to change my work habits, relearn a new OS. But damn, I want to be able to play games :)</p>
<p>So for now, I&#39;m keeping the dual boot, but it&#39;s not a solution. I&#39;m still somewhere between stage 3 (denial) and stage 4 (anger) of grief, hoping I don&#39;t reach acceptance and resignation too quickly...</p>
<p>I&#39;ll keep looking for solutions online, but clearly, this is becoming expert-level work, and it wasn&#39;t supposed to be. Things aren&#39;t looking good for this 2026 goal.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI's Impact on the State of the Art in Software Engineering in 2026]]></title>
            <link>https://eventuallymaking.io/p/ai-s-impact-on-the-state-of-the-art-in-software-engineering-in-2026</link>
            <guid>https://eventuallymaking.io/p/ai-s-impact-on-the-state-of-the-art-in-software-engineering-in-2026</guid>
            <pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How has AI transformed software engineering? From the end of ego-coding to 'Context Driven Engineering', discover feedback from Doctolib, Malt, Alan and Google on the industrialization of AI agents in 2026]]></description>
            <content:encoded><![CDATA[<p>2025 marked a major turning point in AI usage, far beyond simple individual use.</p>
<p>Since 2020, we&#39;ve moved from autocomplete to industrialization:</p>
<ul>
<li>2021 with Github Copilot: individual use, essentially focused on advanced autocomplete.</li>
<li>then browser-based use for more complex tasks, requiring multiple back-and-forths and copy-pasting</li>
<li>2025 with Claude Code, Windsurf and Cursor: use on the developer&#39;s workstation through code assistants</li>
</ul>
<p>Gradually moving from a few lines produced by autocomplete to applications coded over 90% by AI assistants, dev teams must face the obligation to industrialize this practice at the risk of major disappointments.</p>
<p>And more than that, as soon as the developer&#39;s job changes, it&#39;s actually the entire development team that must evolve with it.</p>
<p>It&#39;s no longer just a simple tooling issue, but an industrialization issue at the team scale, just as automated testing frameworks changed how software was created in the early 2000s.</p>
<p><em>(We obviously tested before the 2000s, but how we thought about automating these tests through xUnit frameworks, the advent of software factories (CI/CD), etc., is more recent)</em></p>
<p>In this article, we&#39;ll explore how dev teams have adapted through testimonials from several tech companies that participated in the writing by addressing:</p>
<ul>
<li><strong>Context Driven Engineering, the new paradigm</strong></li>
<li><strong>Spec/Plan/Act: the reference workflow</strong></li>
<li><strong>The AI Rules ecosystem</strong></li>
<li><strong>Governance and industrialization</strong></li>
<li><strong>Human challenges</strong></li>
</ul>
<h2>Context driven engineering</h2>
<p>While the term vibe coding became popular in early 2025, we now more readily speak of <a href="https://www.thoughtworks.com/insights/podcasts/technology-podcasts/talking-context-engineering">Context driven engineering</a> or <a href="https://addyosmani.com/blog/agentic-engineering/">agentic engineering</a>. The idea is no longer to give a prompt, but to provide complete context including the intention <strong>AND constraints</strong> (coding guidelines, etc.).</p>
<p>Context Driven Engineering aims to reduce the non-deterministic part of the process and ensure the quality of what is produced.</p>
<p>With Context Driven Engineering, while specs haven&#39;t always been well regarded, they become a first-class citizen again and become mandatory before code.</p>
<blockquote>
<p>Separate your process into two PRs:</p>
<ul>
<li>The PR with the plan.</li>
<li>The PR with the implementation. The main reason is that it mimics the classical research-design-implement loop. The first part (the plan) is the RFC. Your reviewers know where they can focus their attention at this stage: the architecture, the technical choices, and naturally their tradeoffs. It&#39;s easier to use an eraser on the drawing board, than a sledgehammer at the construction site</li>
</ul>
</blockquote>
<p>Source: <a href="https://www.dein.fr/posts/2026-01-08-write-and-checkout-the-plan">Charles-Axel Dein (ex CTO Octopize and ex VP Engineering at Gens de confiance)</a></p>
<p>We find this same logic here at Clever Cloud:</p>
<blockquote>
<p>Here is the paradox: when code becomes cheap, design becomes more valuable. Not less. You can now afford to spend time on architecture, discuss tradeoffs, commit to an approach before writing a single line of code. Specs are coming back, and the judgment to write good ones still requires years of building systems.</p>
</blockquote>
<p>Source: <a href="https://pierrezemb.fr/posts/llms-for-engineering/">Pierre Zemb (Staff Engineer at Clever Cloud)</a></p>
<p>or at Google</p>
<blockquote>
<p>One common mistake is diving straight into code generation with a vague prompt. In my workflow, and in many others&#39;, the first step is brainstorming a detailed specification with the AI, then outlining a step-by-step plan, before writing any actual code.</p>
</blockquote>
<p>Source: <a href="https://addyo.substack.com/p/my-llm-coding-workflow-going-into">Addy Osmani (Director on Google Cloud AI)</a></p>
<p>In short, we now find this method everywhere:</p>
<ul>
<li>spec</li>
<li>plan</li>
<li>act</li>
</ul>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1770387929666-1b0z44m.jpg" alt="spec / plan / act" /></p>
<h2>Spec/Plan/Act</h2>
<p><strong>Spec:</strong> The specification brings together use cases: the intentions expressed by the development team. It can be called RFC (request for change), ADR (architecture decision record), or PRD (Product requirement document) depending on contexts and companies.</p>
<p>This is the basic document to start development with an AI. The spec is usually reviewed by product experts, devs or not.</p>
<p>AI use is not uncommon at this stage either (see later in the article).</p>
<p>But context is not limited to that. To limit unfortunate AI initiatives, you also need to provide it with constraints, development standards, tools to use, docs to follow. We&#39;ll see this point later.</p>
<p><strong>Plan:</strong> The implementation plan lists all the steps to implement the specification. This list must be exhaustive, each step must be achievable by an agent autonomously with the necessary and sufficient context. This is usually reviewed by seniors (architect, staff, tech lead, etc., depending on companies).</p>
<p><strong>Act:</strong> This is the implementation step and can be distributed to agentic sessions.</p>
<p>In many teams, this session can be done according to two methods:</p>
<ul>
<li><strong>copilot</strong>/pair programming mode with validation of each modification one by one</li>
<li><strong>agent</strong> mode, where the developer gives the intention then verifies the result (we&#39;ll see how later)</li>
</ul>
<p>We of course find variations, such as at Ilek which details the Act part more:</p>
<blockquote>
<p>We are in the first phase of industrialization which is adoption. The goal is that by the end of the quarter all devs rely on this framework and that the use of prompts/agents is a reflex. So we&#39;re aiming for 100% adoption by the end of March. Our workflow starts from the need and breaks down into several steps that aim to challenge devs in the thinking phases until validation of the produced code. Here&#39;s the list of steps we follow: </p>
<p>1- elaborate (challenges the need and questions edge cases, technical choices, architecture, etc.) </p>
<p>2- plan (proposes a technical breakdown, this plan is provided as output in a Markdown file) </p>
<p>3- implement (Agents will carry out the plan steps) </p>
<p>4- assert (an agent will validate that the final result meets expectations, lint, test, guideline) </p>
<p>5- review (agents will do a technical and functional review) </p>
<p>6- learn (context update) </p>
<p>7- push (MR creation on gitlab) This whole process is done locally and piloted by a developer.</p>
</blockquote>
<p><em>Cédric Gérard (Ilek)</em></p>
<p>While this 3-phase method seems to be consensus, we see quite a few experiments to frame and strengthen these practices, particularly with two tools that come up regularly in discussions: <a href="https://github.com/bmad-code-org/BMAD-METHOD">Bmad</a> and <a href="https://github.com/github/spec-kit">SpeckKit</a>.</p>
<p>Having tested both, we can quite easily end up with somewhat verbose over-documentation and a slowdown in the dev cycle.</p>
<p>I have the intuition that we need to avoid digitally reproducing human processes that were already shaky. Do we really need all the roles proposed by BMAD for example? I felt like I was doing SaFe in solo mode and it wasn&#39;t a good experience :)</p>
<p>What is certain is that if the spec becomes queen again, the spec necessary for an AI must be simple, unambiguous. Verbosity can harm the effectiveness of code assistants.</p>
<h2>The AI Rules ecosystem</h2>
<p>While agentic mode seems to be taking over copilot mode, this comes with additional constraints to ensure quality. We absolutely want to ensure:</p>
<ul>
<li>that the implementation respects the spec</li>
<li>that the produced code respects the team&#39;s standards</li>
<li>that the code uses the right versions of the project&#39;s libraries</li>
</ul>
<p>To ensure the quality produced, teams provide the necessary context to inform the code assistant of the constraints to respect. Paradoxically, despite vibe coding&#39;s bad reputation and its use previously reserved for prototypes, Context Driven Engineering puts the usual good engineering practices (test harness, linters, etc.) back in the spotlight. Without them, it becomes impossible to ensure code and architecture quality.</p>
<p>In addition to all the classic good practices, most agent systems come with their own concepts: the general context file (<a href="https://agents.md">agents.md</a>), skills, MCP servers, agents.</p>
<h3><strong>agents.md</strong></h3>
<p>A code assistant will read several files in addition to the spec you provide it. Each code assistant offers its own file: <code>Claude.md</code> for Claude, <code>.cursorrules</code> for Cursor, <code>windsurfrules</code> for Windsurf, etc.</p>
<p>There is an attempt at harmonization via <a href="https://agents.md/">agents.md</a> but the idea is always broadly the same: a sort of README for AI. This README can be used hierarchically, we can indeed have a file at the root, then a file per directory where it&#39;s relevant.</p>
<pre><code class="language-markdown">| agents.md
| 
` application 1
  | 
  ` agents.md
</code></pre>
<p>This file contains instructions to follow systematically, example:</p>
<pre><code class="language-markdown">- the interface is in English mandatorily
- in the nuxt backend (`server/api/`), we ALWAYS use the generated OpenAPI client (`~~/server/utils/openapi`), never direct `$fetch`
</code></pre>
<p>and can reference other files.</p>
<pre><code class="language-markdown">If you have to work in kotlin, always load the rules/kotlin.md file
</code></pre>
<p>Having multiple files allows each agent to work with reduced context, which improves the efficiency of the agent in question (not to mention savings on costs).</p>
<h3>Skills, agents, MCP servers</h3>
<p>Depending on the tools used, we find several notions that each have different uses.</p>
<p>A skill explains to an AI agent how to perform a type of operation.</p>
<p>For example, we can give it the commands to use to call certain code generation or static verification tools.</p>
<p>An agent can be involved to take charge of a specific task. We can for example have an agent dedicated to external documentation with instructions regarding the tone to adopt, the desired organization, etc.</p>
<p>MCP servers allow enriching the AI agent&#39;s toolbox. This can be direct access to documentation (for example <a href="https://nuxt.com/docs/4.x/guide/ai/mcp">the Nuxt doc</a>), or even tools to consult test account info like <a href="https://docs.stripe.com/mcp">Stripe's MCP</a>.</p>
<p>It&#39;s still too early to say, but we could see the appearance of a notion of technical debt linked to the stacking of these tools and it&#39;s likely that we&#39;ll see refactoring and testing techniques emerge in the future.</p>
<h2>Governance and industrialization</h2>
<p>With the appearance of these new tools comes a question: how to standardize practice and benefit from everyone&#39;s good practices?</p>
<p>As Benjamin Levêque (Brevo) says:</p>
<blockquote>
<p>The idea is: instead of everyone struggling with their own prompts in their corner, we pool our discoveries so everyone benefits.</p>
</blockquote>
<h3>Corporate Marketplaces</h3>
<p>One of the first answers for pooling relies on the notion of corporate marketplace:</p>
<blockquote>
<p>At Brevo, we just launched an internal marketplace with skills and agents. It allows us to standardize code generated via AI (with Claude Code), while respecting standards defined by &quot;experts&quot; in each domain (language, tech, etc.). The 3 components in claude code: We transform our successes into Skills (reusable instructions), Subagents (specialized AIs) and Patterns (our best architectures). Don&#39;t reinvent the wheel: We move from &quot;feeling-based&quot; use to a systematic method.</p>
</blockquote>
<p>Benjamin Levêque and Maxence Bourquin (Brevo)</p>
<blockquote>
<p>At Manomano we also initiated a repository to transpose our guidelines and ADRs into a machine-friendly format. We then create agents and skills that we install in claude code / opencode. We have an internal machine bootstrap tool, we added this repo to it which means all the company&#39;s tech people are equipped. It&#39;s then up to each person to reference the rules or skills that are relevant depending on the services. We have integration-type skills (using our internal IaC to add X or Y), others that are practices (doing code review: how to do react at Manomano) and commands that cover more orchestrations (tech refinement, feature implementation with review). We also observe that it&#39;s difficult to standardize MCP installations for everyone, which is a shame when we see the impact of some on the quality of what we can produce (Serena was mentioned and I&#39;ll add sequential-thinking). We&#39;re at the point where we&#39;re wondering how to guarantee an iso env for all devs, or how to make it consistent for everyone</p>
</blockquote>
<p>Vincent AUBRUN (Manomano)</p>
<blockquote>
<p>At Malt, we also started pooling commands / skills / AGENTS.MD / CLAUDE.MD. Classically, the goal of initial versions is to share a certain amount of knowledge that allows the agent not to start from scratch. Proposals (via MR typically) are reviewed within guilds (backend / frontend / ai). Note that at the engineering scale we&#39;re still searching a lot. It&#39;s particularly complicated to know if a shared element is really useful to the greatest number.</p>
</blockquote>
<p>Guillaume Darmont (Malt)</p>
<p>Note that there are public marketplaces, we can mention:</p>
<ul>
<li><a href="https://claudemarketplaces.com/">the Claude marketplace</a></li>
<li><a href="https://skills.sh/">a marketplace by vercel</a></li>
</ul>
<p>Be careful however, it&#39;s mandatory to review everything you install…</p>
<p>Among deployment methods, many have favored custom tools, but François Descamps from Axa cites us another solution:</p>
<blockquote>
<p>For sharing primitives, we&#39;re exploring APM (<a href="https://github.com/danielmeppiel/apm">agent package manager</a>) by Daniel Meppiel. I really like how it works, it&#39;s quite easy to use and is used for the dependency management part like NPM.</p>
</blockquote>
<h3>CI/CD Integration</h3>
<p>Despite all the instructions provided, it regularly happens that some are ignored. It also happens that instructions are ambiguous and misinterpreted. This is where teams necessarily implement tools to frame AIs:</p>
<ul>
<li>linting</li>
<li>test harness</li>
<li>code reviews</li>
</ul>
<p>While the human eye remains mandatory for all participants questioned, these tools themselves can partially rely on AIs.<br>AIs can indeed write tests. The human then verifies the relevance of the proposed tests.<br>Several teams have also created agents specialized in review with very specific scopes: security, performance, etc.<br>Others use automated tools, some directly connected to CI (or to Github).</p>
<p>(I&#39;m not citing them but you can easily find them).</p>
<p>Related to this notion of CI/CD, a question that often comes up:</p>
<blockquote>
<p>It&#39;s also very difficult to know if an &quot;improvement&quot;, i.e. modification in the CLAUDE.MD file for example, really is one. Will the quality of responses really be better after the modification?</p>
</blockquote>
<p><em>Guillaume Darmont (Malt)</em></p>
<p>Can I evaluate a model? If I change my guidelines, does the AI still generate code that passes my security and performance criteria? Can we treat prompt/context like code (Unit testing of prompts).</p>
<p>To this Julien Tanay (Doctolib) tells us:</p>
<blockquote>
<p>About the question &quot;does this change on the skill make it better or worse&quot;, we&#39;re going to start looking at <code>promptfoo</code> and <code>brainstrust</code> (used in prod for product AI with us) to <a href="https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents">do eval</a> in CI.(...) For example with promptfoo, you&#39;ll verify, in a PR, that for the 10 variants of a prompt &quot;(...) setup my env&quot; the env-setup skill is indeed triggered, and that the output is correct. You can verify the skill call programmatically, and the output either via &quot;human as a judge&quot;, or rather &quot;LLM as a judge&quot; in the context of a CI</p>
</blockquote>
<p>All discussions seem to indicate that the subject is still in research, but that there are already work tracks.</p>
<h3>Costs</h3>
<blockquote>
<p>We had a main KPI which was to obtain 100% adoption for these tools in one quarter (...) At the beginning our main KPI was adoption, not cost.</p>
</blockquote>
<p><a href="https://www.youtube.com/watch?v=5mwoVArfkpc">Julien Tanay (Staff engineer at Doctolib)</a></p>
<p>Cost indeed often comes second. The classic pattern is adoption, then optimization.</p>
<p>To control costs, there&#39;s on one hand session optimization, which involves</p>
<ul>
<li>keeping session windows short, having broken down work into small independent steps.</li>
<li>using the /compact command to keep only the necessary context (or flushing this context into a file to start a new session)</li>
</ul>
<p>For example we find <a href="https://www.linkedin.com/posts/alexandrebalmes_speckit-cest-trop-bien-pour-lia-oui-maiiiiiissss-activity-7407473589609922560-d-D3/">these tips proposed by Alexandre Balmes on Linkedin</a>.</p>
<p>This cost control can be centralized with enterprise licenses.<br>This switch between individual key and enterprise key is sometimes part of the adoption procedure:</p>
<blockquote>
<p>We have a progressive strategy on costs. We provide an api key for newcomers, to track their usage and pay as close to consumption as possible. Beyond a threshold we switch them to Anthropic enterprise licenses as we estimate it&#39;s more interesting for daily usage.</p>
</blockquote>
<p><em>Vincent Aubrun (ManoMano)</em></p>
<p>On the monthly cost per developer, the various discussions allow us to identify 3 categories:</p>
<table>
<thead>
<tr>
<th>Teams in adoption process and teams with &quot;best effort&quot; usage</th>
<th>Strong adoption and usage pushed at all levels</th>
<th>Advanced usage, multi agents, AI integrated throughout CI</th>
</tr>
</thead>
<tbody><tr>
<td>about <strong>$20/month</strong></td>
<td>about <strong>$200/month</strong></td>
<td>from $200 to$<strong>1000/month</strong> <em>outliers observed well beyond</em></td>
</tr>
</tbody></table>
<p>The vast majority oscillates between category 1 and 2.</p>
<h3>Documentation, positive side effect of AI</h3>
<p>When we talk about governance, documentation having become the new programming language, it becomes a first-class citizen again.</p>
<p>We find it in markdown specs present on the project, ADRs/RFCs, etc. These docs are now maintained at the same time as code is produced.</p>
<blockquote>
<p>So we declared that markdown was the source of truth. Confluence in shambles :)</p>
</blockquote>
<p><em>Julien Tanay (Doctolib)</em></p>
<p>It&#39;s no longer a simple micro event in the product dev cycle, managed because it must be and put away in the closet. The most mature teams now evolve the doc <strong>to</strong> evolve the code, which avoids the famous syndrome of piles of obsolete company documents lying around on a shared drive.</p>
<p>This has many advantages, it can be used by specialized agents for writing user doc (end user doc), or be used in a RAG to serve as a knowledge base, for customer support, onboarding newcomers, etc.</p>
<blockquote>
<p>The integration of this framework impacts the way we manage incidents. It offers the possibility to debug our services with specialized agents that can rely on logs for example. It&#39;s possible to query the code and the memory bank which acts as living documentation.</p>
</blockquote>
<p><em>Cédric Gérard (Ilek)</em></p>
<h3>Intellectual Property</h3>
<p>One of the major subjects that comes up is obviously intellectual property. It&#39;s no longer about making simple copy-pastes in a browser with chosen context, but giving access to the entire codebase.</p>
<p>This is one of the great motivations for switching to enterprise licenses which contain contractual clauses like &quot;zero data training&quot;, or even &quot;<a href="https://privacy.claude.com/en/articles/8956058-i-have-a-zero-data-retention-agreement-with-anthropic-what-products-does-it-apply-to">zero data retention</a>&quot;.</p>
<p>In 2026 we should also see the appearance of the AI act and <a href="https://www.iso.org/fr/standard/42001">ISO 42001 certification</a> to audit how data is collected and processed.</p>
<p>In enterprise usage we also note setups via partnerships like the one between Google and Anthropic:</p>
<blockquote>
<p>On our side, we don&#39;t need to allocate an amount in advance, nor buy licenses, because we use Anthropic models deployed on Vertex AI from one of our GCP projects. Then you just need to point Claude Code to Vertex AI. This configuration also addresses intellectual property issues.</p>
</blockquote>
<p>On all these points, another track seems to be using local models. We can mention <strong>Mistral</strong> (via Pixtral or Codestral) which offers to run these models on private servers to guarantee that no data crosses the company firewall.</p>
<p>I imagine this would also be possible with Ollama.</p>
<p>However I only met one company working on this track during my discussions. But we can anticipate that the rise of local models will rather be a 2026 or 2027 topic.</p>
<h2>Human impacts</h2>
<h3>Recruitment</h3>
<p>While AI is now solidly established in many teams, its impacts now go beyond the framework of development alone.</p>
<p>We notably find reflections around <a href="https://medium.com/alan/stop-testing-engineers-like-its-2015-why-we-embraced-ai-in-our-interviews-a21adec28a4f">recruitment at Alan</a></p>
<blockquote>
<p>Picture this: You&#39;re hiring a software engineer in 2025, and during the technical interview, you ask them to solve a coding problem without using any AI tools. It&#39;s like asking a carpenter to build a house without power tools, or a designer to create graphics without Photoshop. You&#39;re essentially testing them on skills they&#39;ll never use in their actual job. This realization hit us hard at Alan. As we watched our engineering teams increasingly rely on AI tools for daily tasks — with over 90% of engineers using AI-powered coding assistants — we faced an uncomfortable truth: our technical interview was completely disconnected from how modern engineers actually work.</p>
</blockquote>
<p><em>Emma Goldblum (Engineering at Alan)</em></p>
<h3>Junior training</h3>
<p>One of the big subjects concerns junior training who can quickly be in danger with AI use. They are indeed less productive now, and don&#39;t always have the necessary experience to properly challenge the produced code, or properly write specifications. A large part of the tasks previously assigned to juniors is now monopolized by AIs (boiler plate code, form validation, repetitive tasks, etc.).</p>
<p>However, all teams recognize the necessity to onboard juniors to avoid creating an experience gap in the future.</p>
<p>Despite this awareness, I haven&#39;t seen specific initiatives on the subject that would aim to adapt junior training.</p>
<h3>Welcoming newcomers</h3>
<p>Finally, welcoming newcomers is disrupted by AI, particularly because it&#39;s now possible to accompany them to discover the product</p>
<blockquote>
<p>Some teams have an onboarding skill that helps to setup the env, takes a tour of the codebase, makes an example PR... People are creative*</p>
</blockquote>
<p><em>Julien Tanay (Doctolib)</em></p>
<p>As a side effect, this point is deemed facilitated by the changes induced by AI, particularly helped by the fact that documentation is updated more regularly and that all guidelines are very explicit.</p>
<h3>Support towards a career change</h3>
<p>One of the little-discussed elements remains supporting developers facing a mutation of their profession.</p>
<blockquote>
<p>We&#39;re moving the value of developers from code production to business mastery. This requires taking a lot of perspective. Code writing, practices like TDD are elements that participate in the pleasure we take in work. AI comes to disrupt that and some may not be able to thrive in this evolution of our profession</p>
</blockquote>
<p><em>Cédric Gérard (Ilek)</em></p>
<p>The question is not whether the developer profession is coming to an end, but rather to what extent it&#39;s evolving and what are the new skills to acquire.</p>
<p>We can compare these evolutions to what happened in the past during transitions between punch cards and interactive programming, or with the arrival of higher-level languages. With AI, development teams gain a level of abstraction, but keep the same challenges: identifying the right problems to solve, finding what are the adequate technological solutions, thinking in terms of security, performance, reliability and tradeoffs between all that.</p>
<p>Despite everything, this evolution is not necessarily well experienced by everyone and it becomes necessary in teams to support people to consider development from a different angle to find the interest of the profession again.</p>
<p>Cédric Gérard also warns us against other risks:</p>
<blockquote>
<p>There&#39;s a risk on the quality of productions that decreases. AI not being perfect, you have to be very attentive to the generated code. However reviewing code is not like producing code. Review is tedious and we can very quickly let ourselves go. To this is added a risk of skill loss. Reading is not writing and we can expect to develop an evaluation capacity, but losing little by little in creativity</p>
</blockquote>
<h2>Conclusion</h2>
<p>2025 saw the rise of agentic programming, 2026 will undoubtedly be a year of learning in companies around the industrialization of these tools.</p>
<p>There are points I&#39;m pleased about, it&#39;s the return in force of <strong>systems thinking</strong>. &quot;Context Driven Engineering&quot; forces us to become good architects and good product designers again. If you don&#39;t know how to explain what you want to do (the spec) and how you plan to do it (the plan), AI won&#39;t save you; it will just produce technical debt at industrial speed.</p>
<p>Another unexpected side effect could be the end of <strong>ego coding</strong>, the progressive disappearance of emotional attachment to produced code that sometimes created complicated discussions, for example during code reviews. Hoping this makes us more critical and less reluctant to throw away unused code and features.</p>
<p>In any case, the difference between an average team and an elite team has never been so much about &quot;old&quot; skills. Knowing how to challenge an architecture, set good development constraints, have good CI/CD, anticipate security flaws, and maintain living documentation will be all the more critical than before. And from experience this is not so acquired everywhere.</p>
<p>Now, there are questions, we&#39;ll have to learn to pilot a new ecosystem of agents while keeping control. Between sovereignty issues, questions around local models, the ability to test reproducibility and prompt quality, exploding costs and the mutation of the junior role, we&#39;re still in full learning phase.</p>
]]></content:encoded>
            <category>ai</category>
        </item>
        <item>
            <title><![CDATA[When Code Becomes a Commodity: The Rise of AI Native Companies]]></title>
            <link>https://eventuallymaking.io/p/when-code-becomes-a-commodity-the-rise-of-ai-native-companies</link>
            <guid>https://eventuallymaking.io/p/when-code-becomes-a-commodity-the-rise-of-ai-native-companies</guid>
            <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[From Cloud-Native to AI-Native: How AI is turning code into a commodity. Discover the new BBRV (Build, Buy, Run, or Vibe) framework and why the 'Product Engineer' is the only moat that matters in the era of liquid software]]></description>
            <content:encoded><![CDATA[<p>Back in 2003, I was doing an &quot;architect&quot; training and was taught that one of the main challenges I&#39;d face in my career—aside from <a href="https://martinfowler.com/bliki/TwoHardThings.html">naming things and cache invalidation</a>—would be answering the Build or Buy question.</p>
<p>And indeed, we constantly had to find the right balance between building software or buying it off the shelf. Open source existed, of course—I could mention MySQL or Apache—but there wasn&#39;t nearly as much complete open source software as there is today.</p>
<p>Over time, the rise of open source changed the game.</p>
<p>Today, for instance, I can run an application on a self-hosted open source PaaS (Coolify), use Metabase for data analysis, OpenPanel for web analytics, Listmonk for newsletters, and so on. I can choose to host and run many software solutions that were previously only available as proprietary products.</p>
<p>So it wasn&#39;t just Build or Buy anymore, but <strong>Build, Buy, or Run</strong>. Running your own software brings its own set of constraints and trade-offs.</p>
<p>But since last year, we&#39;re witnessing another shift, and the problem has become <strong>Build, Buy, Run, or Vibe</strong> (BBRV). </p>
<p><em>(Vibe refers to vibe coding, though today we&#39;re moving beyond simple vibe coding toward a true industrialization of AI usage.)</em></p>
<h2>The Illusion of Code Quantity as a MOAT</h2>
<p>A moat is a durable defensive advantage. When building software, we often try to create a moat—a competitive advantage. For a long time, that moat could simply be that rebuilding a piece of software would take too long, even if it wasn&#39;t critical to the business.</p>
<p>Take feature flag management software (Unleash or LaunchDarkly), for example. It&#39;s not inherently complex, but it&#39;s rarely core to a company&#39;s business. So in the classic Build or Buy dilemma, Buy was often the preferred choice. What would be the value of rebuilding it?</p>
<p>But now, many &quot;simple&quot; software products can be reproduced with AI-powered coding assistants.</p>
<p>Put differently, I now have to weigh taking an off-the-shelf product that might cost me €100 to €1,000 per month against having an engineer spend a day reproducing only the features I need—plus the cost of running it myself.</p>
<p>This is a massive challenge that every software creator, especially SaaS builders, needs to account for.</p>
<p><strong>The ability to produce code is no longer a competitive advantage.</strong></p>
<p>If code becomes a commodity, does that mean all SaaS products are doomed? Obviously not, but let me illustrate this point.</p>
<p>I recently came across two initiatives to recreate LinkedIn, both built with AI:</p>
<ul>
<li><a href="https://nolto.social/">https://nolto.social/</a> — very promising, based on ActivityPub, self-hostable, open source, and started with <a href="http://Lovable.dev">Lovable.dev</a> (an AI coding assistant)</li>
<li><a href="https://ponos-job.eu/">https://ponos-job.eu/</a> — simpler, also open source, also built with AI</li>
</ul>
<p>Both products look solid and demonstrate that one or two people can now build very complete software.</p>
<p>To borrow an analogy I&#39;ve seen several times online: if software production used to be like slowly and meticulously laying bricks one by one, today we can code entire walls at once. What limits a developer is their domain knowledge. But the more well-known and documented a piece of software is, the easier it is to reverse-engineer that knowledge when you have a good head on your shoulders and functional domain expertise.</p>
<p><strong>But here, the barrier to replacing LinkedIn isn&#39;t the code itself.</strong></p>
<p>With AI, we&#39;ve shifted from a scarcity economy of production (coding was hard and expensive) to a scarcity economy of trust and distribution. LinkedIn will keep that advantage over these two initiatives—for now.</p>
<p>And there are other barriers that remain effective:</p>
<ul>
<li><strong>Exclusive access to specific data</strong> (e.g., Palantir).</li>
<li><strong>Network effects</strong>: LinkedIn, WhatsApp, or X only have value because everyone else is there.</li>
<li><strong>Regulatory certifications</strong>: Accreditations that grant access to protected markets (Banking, GovTech, Defense).</li>
<li><strong>Ecosystem lock-in</strong>: Deep integration into existing workflows (Jira, Salesforce, Okta).</li>
<li><strong>Captive data</strong>: When your data is &quot;held hostage&quot; by a system&#39;s complexity, making switching costs prohibitive.</li>
<li><strong>Service guarantees</strong>: Some companies pay for a &quot;throat to choke&quot;—they don&#39;t want to be responsible for the &quot;Run.&quot;</li>
<li><strong>Physical infrastructure</strong>: Cloudflare or AWS own datacenters. Hardware cannot be replicated by an LLM.</li>
</ul>
<p>Several of these items are also directly tied to distribution capabilities. For example, I can create a Slack or Teams clone, but I don&#39;t have the distribution power (sales force and ecosystem integration) of Microsoft or Salesforce to spread it everywhere.</p>
<p>Those who have the data (whether they buy it or accumulate it) keep the advantage because they can also solve more use cases. And it&#39;s no surprise that access to this data is protected. Conversely, those who only manipulate and display data are in danger.</p>
<p>Beyond this, I believe we&#39;re witnessing a new generation of companies: AI Natives.</p>
<h2>From Cloud Natives to AI Natives</h2>
<p>I experienced the Cloud Native era when I founded Malt in 2012.</p>
<p>It meant we owned nothing—no servers, no offices. Everything was decentralized and distributed. It was a purely online company. Every building block of the business was an off-the-shelf SaaS.</p>
<p>With this extreme dematerialization, Cloud Native companies became liquid—easy to modify and evolve. Resource management became a rental model. I rented a service and could switch &quot;easily&quot; (modulo integration costs, of course) without having to manage internal teams, server reallocations, etc.</p>
<p>IT became a kind of giant Lego set.</p>
<p>And for someone who had experienced non-Cloud Native companies—who had gone to the server room to code directly on a failing machine, or suffered through air conditioning failures that brought down the entire infrastructure—the difference is striking. I went from an era where requesting a CI server could literally take three months, with endless network access forms, to a single click on an interface.</p>
<p>Being Cloud Native also naturally became a simple way to embrace modern security concepts, like <a href="https://en.wikipedia.org/wiki/Zero_trust_architecture">Zero Trust architecture</a>, which is by definition unavoidable in this context. You can&#39;t trust the network because your internal network <em>is</em> the Internet.</p>
<p>This became an advantage during the COVID crisis. I didn&#39;t experience, like some companies, having to rotate login times in the morning because the internal network and corporate VPN weren&#39;t sized for so much external access. I didn&#39;t have to go back to the office to pick up mail or revalidate my PC on the internal network.</p>
<p>And I can tell you I&#39;ve seen people join the company from traditional businesses who never managed to understand this culture—always questioning the number of services we used, unable to grasp the true nature of what we were.</p>
<p>I know it&#39;s still hard, even today, to make people realize that the Cloud was literally one of the major drivers of tech in the 2010s. Many see the cloud as a simple marketing gimmick—just moving your servers to someone else&#39;s premises, basic outsourcing. In 2026, there are still many companies that aren&#39;t Cloud Native. And that&#39;s normal. You don&#39;t switch from one world to another overnight, if it&#39;s even possible.</p>
<p>When I say it was a driver, you have to understand that it created flexibility and therefore speed—speed that was decisive for all post-2008 companies (in France: Blablacar, Doctolib, Malt, Back Market, etc.). This technological shift also created many opportunities to rebuild existing services, but as online building blocks (the famous SaaS products).</p>
<p>But today we&#39;re seeing AI Native companies emerge. Companies for which code production has become a commodity. Production capacity has dramatically increased.</p>
<p>If Cloud Native &quot;simplified&quot; infrastructure, AI is &quot;simplifying&quot; implementation.</p>
<p>(*And yes, I know &quot;simplify&quot; is probably the wrong word because running things in the cloud or producing quality code with AI isn&#39;t that simple.)</p>
<ul>
<li><strong>2010</strong>: We killed infrastructure complexity (hardware).</li>
<li><strong>2024+</strong>: We&#39;re killing implementation complexity (software).</li>
</ul>
<p>Consequence: The &quot;AI Native&quot; developer becomes an architect of intent rather than a code craftsman.</p>
<table>
<thead>
<tr>
<th>Era</th>
<th>Dominant Model</th>
<th>Technical Focus</th>
<th>Scarce Resource (The MOAT)</th>
</tr>
</thead>
<tbody><tr>
<td><strong>2000s</strong></td>
<td><strong>On-Premise</strong></td>
<td>Own the infrastructure (Servers, Racks, Cooling)</td>
<td>Capital (CAPEX) and Proprietary Licenses</td>
</tr>
<tr>
<td><strong>2010s</strong></td>
<td><strong>Cloud Native</strong></td>
<td>Assemble building blocks (APIs, SaaS, Giant Lego)</td>
<td>Developers</td>
</tr>
<tr>
<td><strong>2024+</strong></td>
<td><strong>AI Native</strong></td>
<td>Direct intent (BBRV, Code Generation)</td>
<td>Data, Network Effects, Trust, Distribution Capability</td>
</tr>
</tbody></table>
<h2>The Culture Shock</h2>
<p>Just like with the Cloud, AI will create many opportunities. I&#39;m willing to bet we&#39;ll see more and more initiatives (like the LinkedIn ones mentioned above) where existing software gets completely recreated by companies with 10x or even 100x fewer people—not to mention the many open source projects that will emerge to replace &quot;commodity&quot; software, like the feature flag management I mentioned earlier.</p>
<p>So that&#39;s the first shock. Expect to see many fast-moving competitors emerge in the coming years against well-established software.</p>
<p>But there&#39;s a corollary to this, because just as in 2026 we still have many companies that aren&#39;t Cloud Native and never will be, many companies won&#39;t become AI Native without friction.</p>
<p>Yes, some software will maintain its lead, but an AI Native company will be able to compete on price (with lower production costs) or make higher margins, meaning more investment.</p>
<p>As I said earlier, I can&#39;t see many &quot;non-AI Native&quot; companies becoming AI Native, because the social impacts within the company would be massive. It&#39;s a question of culture—culture being how you systematically respond to a given problem. An AI Native company isn&#39;t trying to reduce costs by 20%; it&#39;s trying to operate with a fundamentally different cost structure (10x or 100x fewer staff for the same output).</p>
<p>In short, it&#39;s not &quot;just&quot; AI companies that will represent the new generation of post-2020 startups, but probably also a whole bunch of very lean small businesses with few people that will hit many well-established businesses head-on.</p>
<p>And if there&#39;s one profile that should come out on top, it&#39;s the Product Engineer: the person who can understand the problems to solve and put themselves in the user&#39;s shoes.</p>
<p>And you, in your current roadmaps, what portion of your software has already become a &quot;commodity&quot; that AI could rebuild in a weekend? What&#39;s the real moat you&#39;ll have left tomorrow?</p>
]]></content:encoded>
            <category>ai</category>
        </item>
        <item>
            <title><![CDATA[Cloudflare vs Italy: A Wake-Up Call for Europe's Tech Dependency]]></title>
            <link>https://eventuallymaking.io/p/cloudflare-vs-italy-a-wake-up-call-for-europe-s-tech-dependency</link>
            <guid>https://eventuallymaking.io/p/cloudflare-vs-italy-a-wake-up-call-for-europe-s-tech-dependency</guid>
            <pubDate>Fri, 23 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Italy demands Cloudflare block pirate sites. Cloudflare refuses, invoking free speech. But behind this standoff lies a deeper issue: Europe's dependence on US tech infrastructure]]></description>
            <content:encoded><![CDATA[<p>On one side, an Italian regulator demanding pirate sites be blocked within 30 minutes, no judge required. On the other, an American CEO crying free speech while supporting an administration that banned the word &quot;woman&quot; from government websites.</p>
<p>This debate is far from trivial, and spoiler: there are no good guys in this story.</p>
<h2>DNS Blocking and Disagreements</h2>
<p>You may have missed this, but Italy just slapped <a href="https://www.lesnumeriques.com/societe-numerique/l-italie-attaque-cloudflare-14-millions-d-euros-d-amende-pour-avoir-protege-70-des-sites-pirates-n249593.html">a record fine of 1% of Cloudflare's global revenue</a> for failing to block pirate sites.</p>
<p>Cloudflare refused to comply.</p>
<p>To understand what&#39;s at stake, we need to talk about DNS. A DNS is essentially the internet&#39;s address book, a massive index that links domain names to IP addresses. Think of it like a phone directory connecting your name to your physical address.</p>
<p>DNS blocking is often criticized because it raises several issues.</p>
<p>First, there&#39;s performance. A DNS needs to be as efficient as possible, or it risks slowing down the entire internet. It&#39;s one of the lowest network layers, and you can&#39;t afford to add too much application logic. For instance, checking whether an address is on a blocklist, especially when you want to do it based on the visitor&#39;s country of origin.</p>
<p>And that&#39;s the thing: the visitor&#39;s origin matters. If Italy decides to ban a site, that decision shouldn&#39;t automatically apply in Australia or Japan. So in theory, to do this properly, the DNS response would need to vary based on the visitor&#39;s country.</p>
<p>Cloudflare handles 200 billion daily requests. If you start adding all sorts of rules at the DNS level, you could potentially slow down global traffic. At least, that&#39;s Cloudflare&#39;s argument.</p>
<p>Except this performance excuse is undermined by a simple fact: Cloudflare already does this. Their &quot;family&quot; DNS (1.1.1.3) filters adult content and malware. So technically, they have the know-how.</p>
<p>Beyond performance concerns, DNS blocking can be criticized for its lack of precision. If a user on a shared platform like YouTube got banned, the entire domain would be blocked. You can&#39;t just ban a single channel.</p>
<p>And finally, if we start implementing these kinds of rules at the DNS level, it&#39;s the first step toward network fragmentation. It starts looking like China&#39;s Great Firewall.</p>
<h2>This Isn&#39;t Just an Italian Problem</h2>
<p>DNS blocking isn&#39;t unique to Italy.</p>
<p>In France, <a href="https://www.webpronews.com/french-court-orders-google-to-block-19-pirate-domains-via-dns/">Canal+ has made the same demands to Google, Cloudflare, and Cisco</a> to fight sports streaming piracy. <a href="https://torrentfreak.com/opendns-quits-belgium-under-threat-of-piracy-blocks-or-fines-of-e100k-per-day-250416/">The same conflict exists in Belgium</a>.</p>
<p>Conversely, <a href="https://blog.cloudflare.com/latest-copyright-decision-in-germany-rejects-blocking-through-global-dns-resolvers/">Germany ruled DNS blocking disproportionate</a> and rejected such requests. Though that was only the Cologne court, and nothing says it couldn&#39;t change in the future.</p>
<h2>Alternatives to DNS Blocking</h2>
<p>So what are the alternatives if you actually want to block content? Are there options beyond going through DNS servers?</p>
<p><strong>Domain registrars</strong>: You can ask a registrar to suspend a domain. A registrar is the entity that assigns domain names, and they&#39;re localized. French .fr domains are assigned by a French legal entity, German .de by a German one. A judge can easily impose a decision on a French registrar. But it&#39;s harder to enforce on other registrars. And remember: .com, .org, etc. are managed in the US. In practice, you&#39;ll rarely, if ever, find pirate sites on a .fr or .it domain. That would make them far too easy to target.</p>
<p><strong>ISPs</strong>: In France, there&#39;s censorship at the Internet Service Provider level, since each ISP has its own DNS resolvers. It&#39;s less impactful than going after Cloudflare because an ISP is inherently national. There&#39;s less extraterritoriality involved. But it&#39;s also easier to circumvent, though you need to be a power user to change your DNS.</p>
<p><strong>Search engine delisting</strong>: Every search engine can remove URLs for a given territory. A judge can request that a site be delisted. It&#39;s effective, though it doesn&#39;t prevent someone from typing the URL directly.</p>
<p><strong>IP blocking</strong>: It&#39;s radical and can be done at the ISP level or at the country level through international exchange points. But it&#39;s generally a bad idea—it lacks any precision. That&#39;s how Italy managed to block Google Drive a few months ago.</p>
<p><strong>Cutting off revenue</strong>: The ultimate solution is going directly through Visa or Mastercard. This was done in the Wikileaks, Megaupload, and even Pornhub cases in 2020. But in practice, it&#39;s mostly an American prerogative since Visa and Mastercard are US companies, and it remains very exceptional.</p>
<p><strong>Reporting to the host</strong>: This works well for sites with a localized host. I mentioned YouTube earlier—you can report content that violates the platform&#39;s terms of service. You can also contact a hosting provider like OVH. But again, you may be limited by the jurisdiction the host falls under.</p>
<p>The takeaway is that no perfect solution exists, and it&#39;s often a mix of approaches used depending on what compromises can be made.</p>
<h2>Network Neutrality?</h2>
<p>When it comes to DNS, the real debate goes beyond mere technicalities.</p>
<p>Do we accept &quot;breaking&quot; pieces of &quot;neutral&quot; infrastructure for marginal gains against piracy, or do we consider it a red line?</p>
<p>Germany has largely said no. Italy and France say yes.</p>
<p>I struggle to have a clear-cut, absolute opinion, but I feel we&#39;re putting our finger in a dangerous mechanism.</p>
<p>Today, piracy serves as the pretext. Tomorrow, it might be political opposition sites, as in Russia or Turkey, or whistleblower sites like Wikileaks in the past.</p>
<p>Who gets to define what&#39;s acceptable? In theory, the answer is simple: the law and the courts.</p>
<p>And that&#39;s precisely where things go wrong in France and Italy. It&#39;s not the judiciary that decides, but an administrative authority. Italy&#39;s Piracy Shield requires blocking within 30 minutes with no judicial oversight. In France, it&#39;s the same: ARCOM can request ISPs to cut access without any court ruling.</p>
<p>This lack of oversight and appeal, this rush—we&#39;re talking 30 minutes to decide on a nationwide block—is exactly the kind of mechanism that can enable a total blackout like we&#39;ve seen recently in Iran.</p>
<p>But no need to go to Iran or Turkey: consider the TikTok ban in New Caledonia in 2024 during the protests. It was an administrative decision later deemed illegal by France&#39;s Council of State. But it took a year to reverse.</p>
<h2>Matthew Prince&#39;s Response</h2>
<p>Let&#39;s shift perspective and take time to read <a href="https://x.com/eastdakota/status/2009654937303896492?s=46">Matthew Prince's response, CEO and co-founder of Cloudflare, on Twitter</a>.</p>
<p>The beginning is what we&#39;ve already covered: a recap of the facts, with Italian (and broadly European) views opposed to Cloudflare&#39;s technical stance of not wanting to deal with this.</p>
<p>But the thread doesn&#39;t stop there. And this is where things go off the rails.</p>
<p>First, Cloudflare lists its immediate actions: no longer providing security for the upcoming Milan Olympics (debatable—it was provided for free, and when you get fined 1% of your global revenue, you&#39;re entitled to be upset), cutting free access for all Italian users (a bit disproportionate), removing all servers from Italy (you can feel the anger), and not opening an office there (this one made me laugh—&quot;we had planned to, but now we won&#39;t&quot;—that&#39;s not a real threat).</p>
<p>What&#39;s really worth noting is that we&#39;re talking about retaliation measures. This is a US company threatening a European state.</p>
<p>But it&#39;s the next paragraph that really gets me:</p>
<blockquote>
<p>I appreciate <a href="https://x.com/JDVance">@JDVance</a> taking a leadership role in recognizing this type of regulation is a fundamental unfair trade issue that also threatens democratic values. And in this case <a href="https://x.com/ElonMusk">@ElonMusk</a> is right: <a href="https://x.com/hashtag/FreeSpeech?src=hashtag_click">#FreeSpeech</a> is critical and under attack from an out-of-touch cabal of very disturbed European policy makers.</p>
</blockquote>
<p>And there, the debate shifts nature entirely. We&#39;re no longer discussing technical or legal questions. When Cloudflare&#39;s CEO invokes JD Vance and Elon Musk to talk about free speech, we&#39;ve entered different territory.</p>
<h2>Free Speech, Selectively Applied</h2>
<p>We need to dwell on the irony around free speech, because it&#39;s the go-to argument often used by the Trump administration.</p>
<p>Let me remind you that Musk <a href="https://www.radiofrance.fr/franceinter/podcasts/veille-sanitaire/veille-sanitaire-du-lundi-20-mai-2024-5470688">freely uses censorship on his own platform</a> and accepted without hesitation to censor opposition to Erdoğan in Turkey in 2025 because it served his own agenda.</p>
<p>I could also point out that the current administration of Vance and Musk—since he was part of it—<a href="https://pen.org/banned-words-list/">banned over 350 words from all official communications</a>, including &quot;woman,&quot; &quot;climate change,&quot; and &quot;disability.&quot;</p>
<p>Free speech in the US also means firing several public figures, <a href="https://www.lesechos.fr/tech-medias/medias/lanimateur-jimmy-kimmel-prive-dantenne-apres-des-propos-sur-charlie-kirk-2186886">particularly in media</a>, for disagreeing with the current government.</p>
<p>So free speech is applied rather selectively. It&#39;s hypocrisy.</p>
<p>And when you dig a little deeper, Cloudflare itself has engaged in censorship—in 2017 and 2019, of its own volition, with no external pressure—in the <a href="https://blog.cloudflare.com/why-we-terminated-daily-stormer/">Daily Stormer</a> and <a href="https://blog.cloudflare.com/terminating-service-for-8chan/">8chan</a> cases. So the principle isn&#39;t &quot;we never censor&quot;—it&#39;s &quot;we censor when we decide to.&quot;</p>
<p>You can dress up just about any topic in newspeak. But above all, free speech here is a commercial negotiation argument dressed up as a democratic principle.</p>
<p>And this raises a question we can no longer ignore: our dependence on US infrastructure is also a dependence on their political agendas.</p>
<h2>There Are No Good Guys</h2>
<p>In short, in this story, we can absolutely question the legitimacy of the method—blocking by administrative authority without judicial decision.</p>
<p>We can express reservations about the possible and probable abuses of these tools.</p>
<p>And yet, we can also acknowledge that it&#39;s not healthy to have such strong dependencies on American companies that can directly threaten European states to not comply with local law, whether well-crafted or not, AND while having their own agenda on what&#39;s acceptable.</p>
<p>There are no good guys or bad guys here. We have things to watch regarding the widespread use of digital control by our own states in Europe. But we also must not fall into the trap of letting other countries decide for us.</p>
<p>Let&#39;s not fool ourselves. No, technology is not neutral as Matthew Prince claims. And we can clearly see that those who control the pipes would also like to decide what flows through them. And that would be even worse than leaving the decision to an administrative authority, despite all the criticism I have for it.</p>
<p>For my part, I took the initiative, imagining that Cloudflare could have the same conflicts with France. So I deleted all my sites managed on Cloudflare and now use <a href="http://Bunny.net">Bunny.net</a> for the same services.</p>
]]></content:encoded>
            <category>bunny.net</category>
            <category>independance</category>
            <category>europe</category>
        </item>
        <item>
            <title><![CDATA[Using custom components with Nuxt-mdc to build a theming system]]></title>
            <link>https://eventuallymaking.io/p/using-custom-components-with-nuxt-mdc-to-build-a-theming-system</link>
            <guid>https://eventuallymaking.io/p/using-custom-components-with-nuxt-mdc-to-build-a-theming-system</guid>
            <pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to customize MDC components per theme in Nuxt with MDCRenderer]]></description>
            <content:encoded><![CDATA[<p>I&#39;m building a blogging platform (<a href="https://writizzy.com">Writizzy</a>), an alternative to Ghost or Substack. </p>
<p>Under the hood I use Nuxt, but I don&#39;t use nuxt-content to have more flexibility, so I use the <a href="https://nuxt.com/modules/mdc">Nuxt-Mdc</a> module directly. This module allows you to extend markdown to include custom components, such as image galleries, embedded YouTube players, and more.</p>
<p>However, Writizzy offers themes, and we want to easily customize components for each theme.</p>
<p>In this article, I&#39;ll show you how to use Nuxt-Mdc for this fairly common use case.</p>
<h2>Nuxt-mdc</h2>
<p>The nuxt-mdc module is used by nuxt content, but it can also be used directly to parse markdown content and render it as HTML. It&#39;s a core building block of Nuxt-Content, but fortunately it works as a standalone module.</p>
<p>Among Nuxt-mdc&#39;s features, you can use <a href="https://content.nuxt.com/docs/files/markdown#mdc-syntax">MDC components</a>.</p>
<p>An MDC component is essentially a markdown syntax that calls a Vue component for rendering.</p>
<p>For example, with this markup:</p>
<pre><code class="language-javascript">::card
The content of the card
::
</code></pre>
<p>We&#39;re telling Nuxt-mdc to use the Card component to render the block above.</p>
<p>This is also what Nuxt-mdc uses to render all <a href="https://github.com/nuxt-content/mdc?tab=readme-ov-file#prose-components">Prose components</a>, which are custom components for headings, links, blockquotes, etc., created after markdown parsing. Internally, each standard Markdown element is transformed into MDC components. For example:</p>
<p><code>## a title</code> is transformed into </p>
<pre><code class="language-markdown">::h2
a title
::
</code></pre>
<p>(This is a <strong>simplification</strong>. In reality, it&#39;s more of a substitution at the renderer level. The renderer reads the AST tree containing an h2 node and decides to use the h2 component to render it. But this is a good way to think about it.)</p>
<p>This feature allows Nuxt-Mdc users to customize the rendering of each MDC component, including Prose components.</p>
<p>To override a Prose component or create a custom component, you just need to place them in the <code>app/components/mdc</code> directory of your Nuxt application.</p>
<p>But what if you want these components to change based on the selected theme? That&#39;s exactly the question I faced with Writizzy.</p>
<h2>A theming system for components</h2>
<p>In Writizzy, I&#39;m developing a theming system. You can choose your blog&#39;s appearance from the themes <a href="https://writizzy.com/docs/your-blog/themes">listed here</a>. I partially reused what I had already built for <a href="https://bloggrify.com/recipes/theme-recipe">Bloggrify </a>(an open source project for creating static blogs).</p>
<p>But with Writizzy, I was quite unsatisfied with this solution, especially for custom components. Obviously, the appearance of custom components should change based on the theme.</p>
<p>It turns out there&#39;s an undocumented feature in Nuxt-Mdc that does exactly this.</p>
<p>By default, the documentation recommends using the MDC component to display markdown, for example:</p>
<pre><code class="language-javascript">&lt;script setup lang=&quot;ts&quot;&gt;

const md = `
::alert
Hello MDC
::
`
&lt;/script&gt;
&lt;template&gt;
  &lt;MDC :value=&quot;md&quot; tag=&quot;article&quot; /&gt;
&lt;/template&gt;
</code></pre>
<p>However, MDC uses **MDCRenderer **behind the scenes. And looking at <a href="https://github.com/nuxt-content/mdc/blob/main/src/runtime/components/MDCRenderer.vue#L104-109">MDCRenderer's source code</a>, we notice an interesting prop: <code>components</code></p>
<p>This prop allows you to pass the list of components to use.</p>
<p>By default, MDCRenderer will look in this list first, then fall back to <code>components/mdc</code>, so you can override only the components you want to modify:</p>
<pre><code class="language-javascript">&lt;script setup lang=&#39;ts&#39;&gt;

const mdcComponents = {
  callout: TerminalCallout,
  blockquote: TerminalBlockquote,
  pre: TerminalCode
}
&lt;/script&gt;
&lt;template&gt;
  &lt;MDCRenderer 
    :body=&quot;ast.body&quot; 
    :data=&quot;ast.data&quot;
    :components=&quot;mdcComponents&quot;
  /&gt;
&lt;/template&gt;
</code></pre>
<p>And that&#39;s it!</p>
<p>Now you can customize each component based on the theme.</p>
<p>This approach works well for Writizzy, and I plan to apply it to Bloggrify as well. If you&#39;re using Nuxt-MDC with a theming system, I think this is the cleanest solution—even though it deserves to be officially documented.</p>
<p>I&#39;ve opened <a href="https://github.com/nuxt-content/mdc/issues/439">an issue</a> to clarify its status. In the meantime, it&#39;s working in production on Writizzy without any issues.</p>
]]></content:encoded>
            <category>nuxt</category>
            <category>writizzy</category>
            <category>bloggrify</category>
        </item>
        <item>
            <title><![CDATA[Developers in the Age of AI Agents: Transformation, Industrialization, and the Future of the Profession]]></title>
            <link>https://eventuallymaking.io/p/developers-in-the-age-of-ai-agents-transformation-industrialization-and-the-future-of-the-profession</link>
            <guid>https://eventuallymaking.io/p/developers-in-the-age-of-ai-agents-transformation-industrialization-and-the-future-of-the-profession</guid>
            <pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[2025 was a turning point for many developers in their relationship with AI, with the emergence of agents — and that's probably what we'll remember most.]]></description>
            <content:encoded><![CDATA[<p>2025 was a turning point for many developers in their relationship with AI, with the emergence of agents — and that&#39;s probably what we&#39;ll remember most.</p>
<p>Of course, we&#39;ve been talking about AI to the point of exhaustion for 4 years now. I&#39;ve done a few posts and videos on the subject, but the evolution between early 2025 and early 2026 is now striking.</p>
<p>With this evolution comes a major question: what&#39;s the impact on our profession? How do we reinvent it?</p>
<p>Let me offer a press review to explore this question.</p>
<h2>The Age of Agents?</h2>
<p>In this article, <a href="https://simonwillison.net/2025/Dec/31/the-year-in-llms/">Simon Willison, co-creator of Django and Lanyrd, highlights the major shift of 2025</a>: <strong>the year of agents</strong>.</p>
<p>With the arrival of flows in Windsurf in late 2024 and Claude Code in February 2025, everything changed. For many of us, we went from simple copy-paste between the web browser and our IDE to complete delegation of code production.</p>
<p>2025 was also:</p>
<ul>
<li>The popularization of the term &quot;vibe coding,&quot; which continues to divide between misunderstanding and contempt</li>
<li>The normalization of $200/month subscriptions</li>
<li>Conversational image generation models like Nano Banana (previously, you didn&#39;t iterate — you had to find the right prompt on the first try)</li>
<li>The beginning of local code models, which I really hope to see develop further</li>
</ul>
<p>Go read Simon&#39;s article — it&#39;s much more comprehensive. But the key takeaway is that with these agents, the very nature of our profession has changed, and it&#39;s probably not going to stop anytime soon.</p>
<h2>A Profession in Transformation</h2>
<p>For those — and there are many — who continue not to use AI, or who only use basic autocomplete in their IDE, the wake-up call may be brutal. The profession is undergoing radical change.</p>
<p>I&#39;d recommend reading this article on the topic:  <a href="https://smaine-milianni.medium.com/the-inevitable-evolution-of-the-developer-role-fc5e97cb357d">"The Inevitable Evolution of the Developer Role" by Smaine Milianni</a> 🇫🇷</p>
<p>Smaine emphasizes the evolution of the role:</p>
<blockquote>
<ul>
<li>from execution to direction</li>
<li>from local optimizations to system-level thinking</li>
<li>from writing instructions to defining intent</li>
</ul>
</blockquote>
<p>And of course it&#39;s uncomfortable, because it seemingly diminishes the prestige traditionally associated with writing code.</p>
<blockquote>
<p>When an LLM can generate boilerplate, implement well-scoped features, refactor safely, review code tirelessly… Then the act of typing code stops being the core differentiator, and that&#39;s uncomfortable for many of us.</p>
</blockquote>
<p>I say &quot;seemingly,&quot; because while the job is changing, expertise and experience remain important differentiators. In the current workflow, I&#39;m still the one giving directives, correcting the architecture, defining the requirements, the problems to solve, and the expected behaviors.</p>
<p><a href="https://yoandev.co/bons-mauvais-devs">But as yoandev points out</a> 🇫🇷 <em>(translated from French)</em>:</p>
<blockquote>
<p>AI demands even greater architectural rigor. Why? Because AI is an amplifier. It magnifies what already exists. If I give it a spaghetti codebase, it will produce more spaghetti, faster. If I give it a clean architecture with clear responsibilities, it becomes a frighteningly efficient surgical assistant. The principle is simple: Garbage In, Garbage Out.</p>
</blockquote>
<p>Now, we need to understand that these new practices only emerged in 2025 — the term <a href="https://eventuallymaking.io">"vibe coding" itself appeared in a tweet in February</a>! So today, one of the key questions is: &quot;how are we going to industrialize these new practices and make them more compatible with reliable software production?&quot;</p>
<h2>The Time for Industrialization</h2>
<p>To simplify, my job is now to design and then write what I want to see appear in my application. It&#39;s a job of writing, then verification. I need to check that the architecture is correct, that security and performance have been considered, that the model is coherent.</p>
<p>An advanced feature takes me between 2 and 6 hours depending on complexity and my available credits (no, I don&#39;t pay $200/month). Some features would have taken me 1 to 2 weeks of work before.</p>
<p>For Chris Loy, <a href="https://chrisloy.dev/post/2025/12/30/the-rise-of-industrial-software">software is becoming a commodity</a>:</p>
<blockquote>
<p>Traditionally, software has been expensive to produce, with expense driven largely by the labour costs of a highly skilled and specialised workforce. This workforce has also constituted a bottleneck for the possible scale of production, making software a valuable commodity to produce effectively. Industrialisation of production, in any field, seeks to address both of these limitations at once, by using automation of processes to reduce the reliance on human labour, both lowering costs and also allowing greater scale and elasticity of production. Such changes relegate the human role to oversight, quality control, and optimisation of the industrial process.</p>
</blockquote>
<p>But we&#39;re only at the beginning, and many are wondering how to make what&#39;s produced by code assistants more reliable, which involves:</p>
<ul>
<li>Optimizing the number of tokens needed to reduce costs</li>
<li>Making the documentary sources used by AI more reliable</li>
<li>Ensuring overall coherence through the use of guidelines</li>
<li>Guaranteeing conformity between implementation and spec</li>
</ul>
<p>In short: <strong>industrializing</strong>.</p>
<p>A few approaches have already emerged, such as:</p>
<ul>
<li><a href="https://github.com/bmad-code-org/BMAD-METHOD">BMAD</a>, which offers a complete set of conversational agents to simulate a full team.</li>
<li><a href="https://github.com/github/spec-kit">SpecKit</a>, similar in spirit but much simpler.</li>
</ul>
<p>Having tried both, I didn&#39;t find what I was looking for. Sure, BMAD lets you simulate a complete team. But it reminded me of the pitfalls of large corporations. I quadrupled my design time, blew through my credit quota, and the produced specification was far too verbose and complex. I felt like I was doing SAFe with myself. And that&#39;s not an experience I&#39;d recommend...</p>
<p>SpecKit is much simpler, but still too verbose for my taste. For a simple feature, it created half a dozen files — PRDs, functional specs, technical specs, etc. That&#39;s probably what you want in a large industrial group. It&#39;s unsuitable in just about every other context. Too much documentation kills documentation.</p>
<p>It would be a shame to reinvent a profession only to immediately recreate robotized bullshit jobs...</p>
<p>Now, since we&#39;re talking about transformation, is this the end of developers or a renewal?</p>
<h2>End or Renewal?</h2>
<p>This question has come up so many times over the years that it&#39;s become a caricature. Until now, the conclusion has always been the same: no.</p>
<p>Because we&#39;ve had the famous rebound effect — by simplifying usage, we&#39;ve had more demand for developers.</p>
<p>I tend to moderate this conclusion, which has become too automatic today, and I&#39;m afraid we&#39;re settling into a sort of Pavlovian reflex. Yes, the answer has systematically been no, but I invite you to reflect on this article that reminds us of <a href="https://blog.ut0pia.org/le-developpeur-face-a-lia-sommes-nous-les-tisserands-de-1811">the parallel between developers and weavers of 1811 during the famous Luddite revolt</a> 🇫🇷 <em>(translated from French)</em>:</p>
<blockquote>
<p>Here&#39;s what we often forget: during the first industrial revolution in England, real wages stagnated for 40 years while productivity exploded. Forty years. Two generations of workers saw their standard of living decline while factory owners got richer.</p>
</blockquote>
<p>Yes, there can be a rebound effect, but it can take a long time and not necessarily benefit everyone:</p>
<blockquote>
<p>The World Economic Forum notes that every industrial revolution has created more jobs than it has destroyed. **But **(and this is a big but) the people who lose their jobs aren&#39;t necessarily the ones who find new ones.</p>
</blockquote>
<blockquote>
<p>Historical research shows that during the second industrial revolution, young workers adapted by switching careers to growing sectors. Older workers, on the other hand, were stuck in devalued jobs or shifted to unskilled positions.</p>
</blockquote>
<p>What&#39;s certain is that there now seems to be an inevitability to these changes, as <a href="https://antirez.com/news/158">Salvatore Sanfilippo, the creator of Redis</a>, reminds us:</p>
<blockquote>
<p>But, in general, it is now clear that for most projects, writing the code yourself is no longer sensible, if not to have fun. (...) you can&#39;t control it by refusing what is happening right now. Skipping AI is not going to help you or your career.</p>
</blockquote>
<p>Even for Linus Torvalds, <a href="https://github.com/torvalds/AudioNoise/commit/93a72563cba609a414297b558cb46ddd3ce9d6b5">the question is no longer up for debate</a>:</p>
<blockquote>
<p>Is this much better than I could do by hand? Sure is.</p>
</blockquote>
<p>We find the same observation from Jaana Dogan (Principal Engineer at Google):</p>
<blockquote>
<p>I&#39;m not joking and this isn&#39;t funny. We have been trying to build distributed agent orchestrators at Google since last year. There are various options, not everyone is aligned, etc. I gave Claude Code a description of the problem, it generated what we built last year in an hour.</p>
</blockquote>
<p>You can find this quote in a Pragmatic Engineer article on the same topic: <a href="https://newsletter.pragmaticengineer.com/p/when-ai-writes-almost-all-code-what">When AI writes almost all code, what happens to software engineering?</a>.</p>
<p>I could also <a href="https://www.linkedin.com/posts/waxzce_dont-fall-into-the-anti-ai-hype-activity-7416895133855440896-nur4/">quote Quentin Adam (CEO of Clever Cloud)</a> 🇫🇷:</p>
<blockquote>
<p>As developers, we should be careful not to turn healthy skepticism into outright rejection of innovation. History shows that many of the biggest leaps in our field came from tools or ideas that were initially dismissed as &quot;dangerous&quot;, &quot;lazy&quot;, or &quot;not real engineering&quot;.</p>
</blockquote>
<p>To end on a more optimistic note, I loved this article by Mattias Geniar: <a href="https://ma.ttias.be/web-development-is-fun-again/">Web development is fun again</a>:</p>
<blockquote>
<p>There&#39;s mental space for creativity in building software again.</p>
</blockquote>
<p>I relate quite a lot to this article. Building an application is hard, but I love building products. Now, I can go much further, and faster. I can focus on what really matters instead of redoing the same boilerplate over and over for 20 years. For me, it&#39;s an accelerator, and it completely changes the way I create software. I spend more time thinking, designing, considering the problems to solve — and less time struggling with implementation details. I produce better software, and yes, it&#39;s fun.</p>
<h2>What Now?</h2>
<p>It&#39;s hard to say what 2026 will bring when you see how fast everything accelerated in 2025 — especially since we can&#39;t really ignore what&#39;s happening in the real world and the potential impacts it could have on us. It seems unlikely that we&#39;ll voluntarily go back on AI usage, but external events could disrupt things in Europe — for example, if the US cut off our access to certain services, or used them for large-scale industrial espionage.</p>
<p>So perhaps this will be the year of optimization research — making it easier, cheaper, and less energy-intensive to run these agents on local machines. It may also be the year of industrializing LLM usage in companies, but with a clear separation between AI-native companies and the rest. I&#39;ll write a more detailed article on this specific topic in the future.</p>
<p>In any case, stay tuned. The profession is changing — fast.</p>
]]></content:encoded>
            <category>ai</category>
            <category>software engineering</category>
        </item>
        <item>
            <title><![CDATA[Tailwind and open source in the LLM era: when documentation no longer monetizes]]></title>
            <link>https://eventuallymaking.io/p/tailwind-and-open-source-in-the-llm-era-when-documentation-no-longer-monetizes</link>
            <guid>https://eventuallymaking.io/p/tailwind-and-open-source-in-the-llm-era-when-documentation-no-longer-monetizes</guid>
            <pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Tailwind’s refusal to add llms.txt highlights a deeper issue: how open source projects can survive in an era where LLMs replace documentation traffic and traditional monetization breaks down.]]></description>
            <content:encoded><![CDATA[<p>Over the past few days, <a href="https://eventuallymaking.io[https://github.com/tailwindlabs/tailwindcss.com/pull/2388](https://github.com/tailwindlabs/tailwindcss.com/pull/2388)">a discussion around Tailwind </a>has brought a fundamental question back to the table:  </p>
<p><strong>how do you fund an open source project?</strong></p>
<p>Okay, the question isn’t new, and you might be wondering what it has to do with the GitHub discussion above.  </p>
<p>Let’s talk about it.</p>
<p>The request was simple: add an <code>llms.txt</code> file, so the documentation could be more easily consumed by LLMs.  </p>
<p>The response was just as simple: <strong>no</strong>, for economic reasons.</p>
<p>But what’s the connection between the two?</p>
<h2>Less traffic = less money</h2>
<p>The reasoning is actually very simple, and it was explained by Adam Wathan (creator of Tailwind):</p>
<blockquote>
<p>Traffic to our docs is down about 40% from early 2023 despite Tailwind being more popular than ever. The docs are the only way people find out about our commercial products, and without customers we can&#39;t afford to maintain the framework.</p>
</blockquote>
<p>Today, documentation is <strong>the main marketing channel</strong> for Tailwind’s commercial products (sponsorships, Tailwind Plus, etc.).  </p>
<p>Yet since 2023, traffic to the docs has dropped significantly, even though Tailwind has never been more popular.</p>
<p>So the equation is simple:</p>
<ul>
<li>less traffic  </li>
<li>fewer conversions  </li>
<li>nearly 80% less revenue  </li>
<li>and very concretely, 75% of the team laid off</li>
</ul>
<p>In this context, <strong>making documentation easier for LLMs to consume means accelerating the loss of the only real revenue source</strong>.</p>
<p>From a purely economic standpoint, the decision makes sense.  </p>
<p>It’s not anti-AI — it’s simply an economic reality, as Adam points out:</p>
<blockquote>
<p>Right now there&#39;s just no correlation between making Tailwind easier to use and making development of the framework more sustainable. I need to fix that before making Tailwind easier to use benefits anyone, because if I can&#39;t fix that this project is going to become unmaintained abandonware when there is no one left employed to work on it. I appreciate the sentiment and agree in spirit, it&#39;s just more complicated than that in reality right now.</p>
</blockquote>
<h2>Slowing down LLM integration: solution or defensive strategy?</h2>
<p>The real question isn’t “is it justified?”, but rather:</p>
<blockquote>
<p><strong>Is it viable in the medium term?</strong></p>
</blockquote>
<p>In my opinion, probably not. Usage has changed: developers no longer systematically read docs. They ask ChatGPT, Copilot, Cursor, or Claude.  </p>
<p>Documentation is consumed <strong>indirectly</strong>.</p>
<p>Denying this reality comes with several risks:</p>
<ul>
<li>approximate implementations generated by LLMs  </li>
<li>more “AI-native” competitors being favored  </li>
<li>a gradual loss of relevance, despite apparent adoption</li>
</ul>
<p>In other words, protecting traffic today may cost relevance tomorrow.</p>
<h2>A problem larger than Tailwind</h2>
<p>This debate goes far beyond Tailwind.</p>
<p>I use Nuxt a lot, I really like this framework, and it seems to me that they faced similar issues with Nuxt UI or Nuxt Studio.  </p>
<p>I’m using Nuxt as an example, but the problem is clearly general.</p>
<p>Since the acquisition by Vercel, these projects eventually became fully open source, and something tells me that adoption of Nuxt UI has exploded.</p>
<p>In fact — and especially with AI — the traditional <em>build vs buy</em> dilemma is being completely reshaped. It’s easier to prototype quickly, so the perceived value of tools goes down, and monetization becomes more difficult.</p>
<p>I’m not saying that Nuxt, Tailwind Plus, or Nuxt UI are easily reproducible with AI. There is also the vision of their creators, which makes these tools unique. And it’s precisely because they are open source that feedback loops are stronger and these tools keep improving.</p>
<p>But many developers might be tempted not to buy the paid layer of an open source project, under the assumption that it’s now much more accessible to build something themselves.</p>
<p>In short, selling add-ons on top of open source projects is hard — and that’s not exactly breaking news, we already knew that.</p>
<p>In this context, Nuxt’s acquisition by Vercel can be seen as a way to get some breathing room and secure development. But it’s also an externalization of the problem, with an obvious cost: loss of control and a risk of under-investment in the long term.</p>
<p>It’s not a structural solution. It’s a compromise.</p>
<p>Coming back to the main topic, one hypothesis is becoming increasingly clear:  </p>
<p><strong>documentation will no longer be a human marketing channel.</strong></p>
<p>It will be read by machines, summarized, transformed, and injected into prompts.  </p>
<p>Refusing this evolution is a risk in itself.  </p>
<p>But accepting it without an economic model is another.</p>
<h2>What possible paths forward?</h2>
<p>I’ve been thinking about it, and I see several interesting directions.  </p>
<p>The question is no longer <strong>how do we bring developers to the website?</strong>, but rather <strong>how do we show up where they actually code?</strong></p>
<p>Let’s start with one option — the one that appeals to me the least:</p>
<h3>Docs consumable via API with a paywall</h3>
<p>We could imagine exposing <code>llms.txt</code> through a paid or semi-paid API:</p>
<ul>
<li>with rate limiting  </li>
<li>potentially restricted to customers or sponsors</li>
</ul>
<p>It’s technically feasible, but I can’t really imagine developers paying a subscription for every existing <code>llms.txt</code> file.</p>
<p>Now, a second direction seems more interesting to me: what if we moved marketing closer to users?  </p>
<p><strong>EDIT:</strong> Someone just pointed out to me the existence of a new protocol currently being tested by Cloudflare in beta: <em><a href="https://blog.cloudflare.com/introducing-pay-per-crawl/">pay-per-crawl</a></em>.</p>
<p>On paper, this could be interesting. The idea is to trigger an exchange between the crawler and Cloudflare in order to charge an AI a fee for crawling a given page.</p>
<p><strong>If</strong> this were to become a standard, and <strong>if</strong> the per-request cost were very low (for example, $0.00001 per call), and **if **AI agents were able to integrate this into their own pricing models for end users, then this could potentially work and provide a new source of funding for open source projects.</p>
<p>That’s a lot of “ifs”, but why not.</p>
<h3>Official MCP / AI server</h3>
<p>Imagine Tailwind offering its official MCP resource, but with instructions for AI agents to mention paid products at the right moment.</p>
<p>This could take the form of a banner displayed occasionally in the console to encourage visiting the site or to highlight paid products.  </p>
<p>It could also warn users when they’re reimplementing something that already exists in the paid offering, for example in Tailwind Plus.</p>
<p>The idea isn’t to create intrusive ads, but to show the right message, at the right time.</p>
<p><strong>EDIT</strong> : Alternatively, you can create a <strong>paid</strong> MCP server that is very useful for use with your product. That’s <a href="https://daisyui.com/blueprint">the approach of DaisyU</a>I. This MCP server includes various tools that go beyond simply knowing the documentation, with best practices, migration tools, and templates.</p>
<h2>Conclusion</h2>
<p>I believe the real shift to make is this: <strong>stop looking for monetization only in the browser</strong>, and instead <strong>in the tools developers actually work in</strong>.</p>
<p>Today, that’s the prompt.</p>
<p>And something tells me this problem is also generalizable to search engines, which are increasingly being bypassed as well — but that’s another story. What’s certain is that I wouldn’t be surprised to see product placement inside LLMs in the future.</p>
<p>In short, the problem isn’t AI. The problem is that the open source economic model was built for a world that no longer exists — and if usage has moved from the browser to the prompt, monetization will have to follow.</p>
]]></content:encoded>
            <category>nuxt</category>
            <category>tailwind</category>
            <category>opensource</category>
            <category>llm</category>
        </item>
        <item>
            <title><![CDATA[Europe's Tech Independence Movement Is No Longer Theoretical]]></title>
            <link>https://eventuallymaking.io/p/europe-s-tech-independence-movement-is-no-longer-theoretical</link>
            <guid>https://eventuallymaking.io/p/europe-s-tech-independence-movement-is-no-longer-theoretical</guid>
            <pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A former EU Commissioner banned from the US. Threats against European judges. In 2026, Europe's tech dependency is no longer a theoretical risk.]]></description>
            <content:encoded><![CDATA[<p>In late December 2024, the US State Department banned Thierry Breton—former EU Commissioner who architected much of Europe&#39;s tech regulation—from entering the United States. Secretary of State Marco Rubio framed it as retaliation against &quot;extraterritorial censorship,&quot; accusing European regulators of forcing American platforms to suppress American speech.</p>
<p>A few days later, Washington threatened European judges who might rule against far-right parties aligned with US interests. This follows a national security memo explicitly aimed at destabilizing European politics.</p>
<p>Read that again. Yes, really.</p>
<p>For years, Europe&#39;s tech dependency on the US has been discussed as a strategic vulnerability. In 2026, it&#39;s becoming an active political weapon.</p>
<h3>This has been building for a while</h3>
<p>I&#39;ve been writing about this topic throughout 2025:</p>
<ul>
<li><a href="https://eventuallymaking.io/p/2025-01-bye-twitter">Why I left Twitter and why you should consider it too</a> (January 2025)</li>
<li><a href="https://eventuallymaking.io/p/2025-03-tech-neutrality">The myth of neutrality: Why tech is political</a> (March 2025)</li>
<li><a href="https://eventuallymaking.io/p/2025-03-europe-vs-usa-tech-choices">Europe vs USA: Tech at a crossroads</a> (March 2025)</li>
<li><a href="https://eventuallymaking.io/p/2025-04-score-tech-dependency">Calculate your US tech dependency score</a> (April 2025)</li>
<li><a href="https://eventuallymaking.io/p/building-an-app-independent-from-us-tech-in-2025">Building an app independent from US tech in 2025</a> (December 2025)</li>
</ul>
<p>And the conversation has accelerated.</p>
<h3>The calls for action are getting louder</h3>
<p>The <a href="https://en.wikipedia.org/wiki/Chaos_Computer_Club">Chaos Computer Club</a>—Europe&#39;s largest and oldest hacker collective, founded in 1981—recently called for a monthly &quot;Digital Independence Day&quot; to migrate away from US platforms. Their statement emphasizes the extraterritorial legal risks that come with using American tech infrastructure.</p>
<p>Bert Hubert, founder of PowerDNS and a respected voice in European tech circles, published a pointed piece arguing that <a href="https://berthub.eu/articles/posts/you-can-no-longer-base-your-government-and-society-on-us-clouds/">governments can no longer build their digital infrastructure on US clouds</a>. His argument: the legal, political, and operational risks have become unacceptable.</p>
<p>In France, a <a href="https://petitions.assemblee-nationale.fr/initiatives/i-2610?locale=fr">petition to the National Assembly</a> is demanding that the government stop using X for official communications.</p>
<h3>People are actually migrating</h3>
<p>The subreddit <a href="https://www.reddit.com/r/BuyFromEU/">r/BuyFromEU </a>now draws 401k weekly visitors looking for European alternatives to US products and services.   </p>
<p>Practical migration guides are multiplying:</p>
<ul>
<li><a href="https://www.zeitgeistofbytes.com/p/bye-bye-big-tech-how-i-migrated-to">Migrating to Proton, European VPNs, and privacy-first tools</a></li>
<li><a href="https://n.gridem.fr/2025/02/09/moving-from-google-workspace-to-infomaniak-ksuite/">Moving from Google Workspace to Infomaniak</a></li>
<li><a href="https://n.gridem.fr/2025/02/19/moving-from-github-to-codeberg/">Switching from GitHub to Codeberg</a></li>
</ul>
<p>And here&#39;s a telling data point: according to Médiamétrie (France&#39;s official audience measurement body), X has dropped out of the top 50 most-visited websites in France—now ranking behind the postal service and a discount grocery chain.</p>
<h3>What&#39;s next</h3>
<p>This isn&#39;t about anti-Americanism. It&#39;s about reducing single points of failure—technical, legal, and political. The question is no longer <em>whether</em> Europe should reduce its tech dependency, but <em>how fast</em> it can actually move.</p>
<p>As for me, given what I write here, I probably won&#39;t pass the new US visa screening that now includes <a href="https://www.pbs.org/newshour/world/foreigners-allowed-to-travel-to-the-u-s-without-a-visa-could-soon-face-new-social-media-screening">social media background checks</a>. Not that I was planning to go anyway.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hosting a Nuxt static site on Bunny.net]]></title>
            <link>https://eventuallymaking.io/p/hosting-a-nuxt-static-site-on-bunny-net</link>
            <guid>https://eventuallymaking.io/p/hosting-a-nuxt-static-site-on-bunny-net</guid>
            <pubDate>Sun, 28 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Step-by-step guide to migrate from Netlify to Bunny.net for static Nuxt sites. Storage zone setup, automated deployment, and DDoS protection.]]></description>
            <content:encoded><![CDATA[<p>As I&#39;ve explained in several previous posts, <a href="https://eventuallymaking.io/p/building-an-app-independent-from-us-tech-in-2025">I'm trying to reduce my dependency on US Tech</a>. I&#39;ve been using Netlify for a few years now to host several sites:</p>
<ul>
<li><a href="https://eventuallycoding.com">eventuallycoding.com</a> (the french version of this blog)</li>
<li><a href="https://bloggrify.com">bloggrify.com</a> (an open source project)</li>
<li>all the demo sites for Bloggrify templates (<a href="https://minimalist.bloggrify.com">minimalist.bloggrify.com</a>, <a href="https://mistral.bloggrify.com">mistral.bloggrify.com</a>, etc.)</li>
</ul>
<p>While I do appreciate Netlify, there are European alternatives out there, so I wanted to give migration a shot.</p>
<h2>Netlify and its alternatives</h2>
<p>Before diving in, let&#39;s clarify what Netlify is and how its alternatives position themselves.</p>
<p>Netlify is a PaaS—a platform for running <a href="https://jamstack.org/">Jamstack </a>applications.</p>
<p>Jamstack is an architectural approach built on JavaScript, where the application runs mostly client-side with API calls when needed. Netlify is actually the main private company behind the Jamstack community and has been pushing this approach across the industry.</p>
<p>In short, it&#39;s a platform that handles builds, deployments, and extensions (auth, database, CMS, etc.).</p>
<p>If we&#39;re looking at plug-and-play alternatives in the same space, we could list:</p>
<ul>
<li>Vercel (which has faced controversy over its CEO&#39;s support for Trump and <a href="https://finance.yahoo.com/news/vercel-ceo-takes-selfie-israel-182930862.html">Netanyahu</a>)</li>
<li>Cloudflare Pages</li>
<li>Firebase</li>
</ul>
<p>But all of these platforms are US-based.</p>
<p>There are other, more general-purpose solutions where you can find European options: Scalingo or Clever Cloud.</p>
<p>But there&#39;s one solution that often gets overlooked: <a href="https://bunny.net/">Bunny.net</a>.</p>
<h2>Bunny.net</h2>
<p>Originally, Bunny.net isn&#39;t a direct Netlify competitor. Bunny.net is primarily a CDN and compares more closely to Cloudflare. But like Cloudflare, they&#39;ve evolved to offer advanced features that enable running simple Jamstack applications on their CDN.</p>
<p>Fair warning: it&#39;s less polished than Netlify or Cloudflare. You&#39;ll find fewer services and you need to assemble a &quot;storage zone&quot; and a &quot;pull zone&quot; yourself to set up your site. As we&#39;ll see, there are a few other limitations. But on the flip side, you get solid DDoS protection and consumption limits (to avoid those <a href="https://cybernews.com/news/ddos-attack-104k-bill-from-hosting-provider/">$100,000 Netlify bills</a>...), image optimization services, resource optimization, bot protection—basically everything I need for static blogs.</p>
<p>Now let&#39;s get practical and see how I migrated Bloggrify.</p>
<h2>Case study: Migrating Bloggrify</h2>
<p>Bloggrify is an open source project, kind of like <a href="https://docus.dev/en">Docus </a>but for blogs. And if you don&#39;t know Docus, that sentence probably made no sense :)</p>
<p>But no matter—the key point is that it&#39;s a <strong>static</strong> blog generator, and static means deployable on a CDN.</p>
<h3>Pull zone and storage zone</h3>
<p>First things first: we need to create a storage zone for the files:</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1767028079330-7cgp9su.png" alt="add a storage zone" /></p>
<p>Once the zone is created, you need to connect it to a &quot;pull zone&quot;. This pull zone is what will actually serve your website.</p>
<p>Now go to the storage zone settings, navigate to FTP &amp; API access, and grab the password needed to use the API.</p>
<h3>Setting up automated deployment with bunny-deploy</h3>
<p>One of my key requirements for migrating was not losing deployment automation. Fortunately, there&#39;s a GitHub Actions plugin for deploying to Bunny.</p>
<p>Add these steps to your workflow:</p>
<pre><code class="language-yaml">
    - name: Generate static site
      run: npm run generate

    - name: Deploy to Bunny
      uses: R-J-dev/bunny-deploy@v2.1.1
      with:
        access-key: ${{ secrets.BUNNY_ACCESS_KEY }}
        directory-to-upload: &quot;.output/public&quot;  # Nuxt 3
        storage-endpoint: &quot;[https://storage.bunnycdn.com](https://storage.bunnycdn.com)&quot;
        storage-zone-name: &quot;bloggrify&quot;
        storage-zone-password: ${{ secrets.BUNNY_STORAGE_ZONE_PASSWORD }}
        enable-delete-action: true
        enable-purge-pull-zone: true
        pull-zone-id: &quot;5063091&quot;
        concurrency: 50
        replication-timeout: &quot;15000&quot;
        request-timeout: &quot;5000&quot; # optional, defaults to 5000
        retry-limit: &quot;3&quot; # optional, defaults to 3
</code></pre>
<p>Make sure to add BUNNY_ACCESS_KEY and BUNNY_STORAGE_ZONE_PASSWORD to your repository secrets beforehand.</p>
<p>Obviously, storage-zone-name should match the zone name you defined in Bunny—in my case, &quot;bloggrify&quot;.</p>
<h3>Configuring your custom domain</h3>
<p>At this point, your site is probably live on a Bunny URL like bloggrify-mistral.b-cdn.net. However, you can add a custom hostname:</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1767028150083-65ldi9p.png" alt="add a custom hostname" /></p>
<p>This will require you to configure your DNS by adding an ALIAS or CNAME record.</p>
<h3>Avoiding outrageous bills</h3>
<p>Bunny lets you cap consumption and protect against DDoS attacks. To do this, select your pull zone, go to Network limits, and create a &quot;monthly bandwidth limit&quot;. I set mine to 1GB since Bloggrify doesn&#39;t get excessive traffic.</p>
<p>On top of that, you can go to Shield, choose the free plan, and enable DDoS protection. Adjust the sensitivity based on what feels right for your use case.</p>
<h3>Nitro configuration</h3>
<p>In the specific case of Nuxt—especially Docus—you might run into an issue. The generated site contains directories without an index.html file.</p>
<p>For example:</p>
<ul>
<li>introduction/configuration (containing page resources)</li>
<li>introduction/configuration.html</li>
</ul>
<p>But if you navigate to <a href="https://bloggrify.com/introduction/configuration">https://bloggrify.com/introduction/configuration</a>, you&#39;ll get a 404 by default because nothing rewrites the URL to the HTML file. So you need to explicitly tell Nitro to change how it generates files:</p>
<pre><code class="language-javascript">export default defineNuxtConfig({
  nitro: {
    prerender: {
      autoSubfolderIndex: true
    }
  }
})
</code></pre>
<p>With this setting, you&#39;ll now get:</p>
<ul>
<li>introduction/configuration/index.html—and it works.</li>
</ul>
<p>This workaround isn&#39;t needed on Netlify, which handles this gracefully, but Bunny needs a little help.</p>
<p>And... that&#39;s it.</p>
<p>Sure, the setup is a bit more involved than Netlify, but <a href="http://bloggrify.com">bloggrify.com </a>is now running on Bunny and I&#39;m gradually migrating my other sites. Mission accomplished—I might post a follow-up in a few months.</p>
]]></content:encoded>
            <category>bunny.net</category>
            <category>nuxt</category>
        </item>
        <item>
            <title><![CDATA[Is Platform Moderation Doomed to Fail?]]></title>
            <link>https://eventuallymaking.io/p/is-platform-moderation-doomed-to-fail</link>
            <guid>https://eventuallymaking.io/p/is-platform-moderation-doomed-to-fail</guid>
            <pubDate>Mon, 22 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Blogs, algorithms, moderation: how do we balance discoverability with user control?]]></description>
            <content:encoded><![CDATA[<p>I&#39;ve recently been building a blogging platform, <a href="http://writizzy.com">writizzy.com</a>, with the ambition of offering a European alternative to US platforms like Medium, Substack, Hashnode, and others.</p>
<p>Now you might be thinking, &quot;Aren&#39;t blogs kind of dead since YouTube, TikTok, Instagram came along?&quot; I don&#39;t think so, but I&#39;ll get back to that.</p>
<p>However, blogs do have one major weakness compared to all those platforms: discoverability. What makes these platforms successful is... their content recommendation algorithms.</p>
<p>Yes, I know—that&#39;s also what we criticize them for. But without algorithms, nobody would ever discover Mike&#39;s video about his passion for ant-keeping. And that might be a shame.</p>
<p>The thing is, recommendation comes with platform responsibility for suggested content, which means moderation. And so far, no platform has nailed this. Between YouTube&#39;s puritanical overzealousness, X&#39;s normalization of conspiracy theories, and Shein selling questionable products, it&#39;s clear this problem is far from solved.</p>
<p>So what do we do? Is it doomed to fail?</p>
<p>In this post, I&#39;ll cover the health of blogs, why discoverability matters, different approaches to discovery, content recommendation platforms, and moderation. Fair warning: I don&#39;t have all the answers—I&#39;m actively working through this myself. But that&#39;s exactly why I&#39;d love to discuss it.</p>
<h2>Blogs Are Doing Just Fine</h2>
<p>Surprise: blogs are actually thriving. According to <a href="https://optinmonster.com/blogging-statistics/">OptinMonster, there are over 600 million blogs</a> worldwide. More than 409 million people read over 20 billion pages monthly on <a href="http://wordpress.com">wordpress.com</a> alone, with WordPress still powering 40% of all websites. Another source claims that <a href="https://www.demandsage.com/blogging-statistics/">83% of internet users (4.4 billion people) regularly read blog posts</a>.</p>
<p>So blogging is very much alive, though there&#39;s definitely been a shift toward video consumption.</p>
<p>Today, 82% of global internet traffic is video, and many people now turn to TikTok, Instagram, and similar platforms for quick answers—whether it&#39;s recipes, DIY tutorials, or even tech topics. That said, written content has clear advantages: it&#39;s easier to create and update. I do both—videos and blog posts. Writing is obviously much faster than producing a video, plus I can update an article after publishing, which I can&#39;t do with a video. That&#39;s a significant advantage for people who don&#39;t have the energy to film themselves, or simply don&#39;t want to show their face.</p>
<p>Yes, video will keep dominating entertainment and &quot;brain off&quot; moments, but blogs will remain more accessible and better suited for specialized, easily-updated content.</p>
<p>However—and this is where video platforms win—the big difference is content recommendation. And that&#39;s what makes the blog model fragile.</p>
<h2>Discoverability: Just Vanity Metrics?</h2>
<p>Discoverability is a broad topic, because the first question is: does it even matter when you&#39;re writing a blog?</p>
<p>For some, the answer is clearly yes—people who&#39;ve built media outlets, paid newsletters, and monetize their traffic. Examples: <a href="https://www.pragmaticengineer.com/">Pragmatic Engineer</a>, <a href="https://aliabdaal.com/newsletter/">Ali Abdaal</a>.</p>
<p>At the other end of the spectrum, it&#39;s purely personal—a journal where whatever happens, happens. Discoverability might even be actively discouraged, like <a href="http://n.survol.fr">n.survol.fr</a> which publishes no sitemap and makes site exploration intentionally difficult.</p>
<p>And between these extremes lies a whole spectrum: people working on personal branding (so 2010s), others using blogs for influence, weekend hobbyist bloggers, etc.</p>
<p>I&#39;m somewhere in that gray zone. I don&#39;t monetize my blog, which I&#39;ve been running since 2001, but I&#39;ll admit I&#39;d find it a bit sad if nobody read it. So I pay attention. Even though I use it as a kind of personal digital memory, my original motivation back in the early 2000s was sharing tutorials and experiences. And if absolutely nobody reads them, I&#39;d probably put in less effort. That&#39;s precisely why I added YouTube videos a year ago—to scale up.</p>
<p>I understand this isn&#39;t everyone&#39;s goal, but personally, I&#39;m trying to have an impact—at my own scale—on understanding tech topics and their influence on business and society. I&#39;m not selling anything; I&#39;m trying to contribute something.</p>
<p>Here&#39;s the thing: when I post a YouTube video, I average several thousand views, with my personal best at 35K so far. (For example: as I write this, I published a video this morning and it already has 3.6K views in under 7 hours.)</p>
<p>On the blog, views range from 50 to 12 000, with most posts hovering around 1K. And that&#39;s for an established blog with decent domain authority and reasonable SEO—these aren&#39;t even bad numbers.</p>
<p>Again, maybe some people are totally against tracking these &quot;vanity metrics,&quot; but I won&#39;t pretend I&#39;m not competitive, and I&#39;d bet some blogs would be more active if they were more widely read.</p>
<p>When content isn&#39;t read, it&#39;s not necessarily because it&#39;s bad—it&#39;s because it&#39;s hard to find. Without active promotion, nobody reads a blog post. SEO for individual bloggers is a nearly lost battle against platforms and professional sites with better authority or marketing budgets.</p>
<p>That&#39;s why <a href="https://www.demandsage.com/blogging-statistics/">90% of bloggers use social media</a> to promote their posts.</p>
<p>And naturally, while building Writizzy, I&#39;m wondering: what if we could do better? What if we could enable content discovery through a community of readers?</p>
<h2>Algorithms: The Platform Solution</h2>
<p>This is exactly where platforms come in. Instagram, YouTube, TikTok, X—they all work the same way. They create personalized content feeds, trying to maximize time spent on the platform by continuously serving content tailored to each user.</p>
<p>The idea is to leverage content produced by all users to determine the right audience for any new video.</p>
<p>When I publish on YouTube, I make zero promotional effort—YouTube handles it. It identifies the right audience, shows them the video, measures reactions (clicks, watch time, likes, comments, etc.), validates the audience, and repeats.</p>
<p>That&#39;s what we call an algorithm.</p>
<p>But these algorithms have plenty of flaws. They can be optimized to favor negative engagement (like X, which amplifies controversial content), or even favor certain political viewpoints (X again, implicated in several recent election interference cases). They&#39;re also criticized for creating filter bubbles that trap us in belief patterns—though I&#39;d argue our own confirmation biases already do that on their own. They can also lock us into infinite scrolling, rewarded by small dopamine hits, while we passively accept ads scattered throughout.</p>
<p>Yes, algorithms have a bad reputation, but in practice, they&#39;re the main reason we stay on these platforms. They let us discover available content, and for creators, they&#39;re what prevents total anonymity.</p>
<p>If I&#39;m convinced discoverability matters for blogs, one question emerges: how do we give control back to users?</p>
<h2>Taking Back Control</h2>
<p>Before going further, I should note that not all algorithms are opaque and complex. There are &quot;lightweight&quot; alternatives, like Hacker News, which ranks purely by vote count and freshness. <a href="https://bearblog.dev/discover/">Bearblog</a> uses the same approach, displaying its formula at the bottom of the page:</p>
<pre><code class="language-javascript"># This page is ranked according to the following algorithm:
Score = log10(U) + (S / (B * 86,400))
</code></pre>
<p>Other solutions offer simple chronological sorting. That&#39;s Mastodon&#39;s approach—posts sorted purely by date. I find this too minimalist.</p>
<p>What really interests me is whether there&#39;s a virtuous approach. How do we preserve recommendation quality without imposing unilateral choices? This is exactly what <a href="https://medium.com/mit-media-lab/who-filters-your-news-why-we-built-gobo-social-bfa6748b5944">this blog post</a> addresses, making an important observation:</p>
<blockquote>
<p>You can pay money and advertise to women of color between 40–60 in Seattle, but you can&#39;t choose to read perspectives from those women</p>
</blockquote>
<p>The post highlights a solution, an MIT research project: <a href="https://gobo.social/">Gobo</a> (unfortunately inactive as I write this), which lets you aggregate data from platforms and apply your own filters. Similar projects include <a href="https://youchoose.ai/">Youchoose</a> and <a href="https://tournesol.app/">Tournesol</a>, all sharing the same goal: empowering users.</p>
<p>While these initiatives remain niche, the most polished and widely-used implementation is probably <a href="https://bsky.social/about/blog/7-27-2023-custom-feeds">Bluesky, which lets anyone choose algorithms that can be created by other users</a>.</p>
<p>If I were to build a content recommendation system for Writizzy, this would be the approach that appeals to me most.</p>
<p>However, discussing this with Thomas (who also works on Writizzy), offering a content feed quickly raises two other problems:</p>
<ul>
<li>How do you start with only 140 users, of which maybe 10-15% are truly active? This is called the Cold Start problem.</li>
<li>Moderation.</li>
</ul>
<p>I&#39;ll skip the first topic—it&#39;s not what this post is about. But the second is serious.</p>
<h2>Moderation</h2>
<p>The moment you create a page aggregating content from multiple users, the risk of inappropriate content exists. It could be adult content, spam, scams, racist abuse, etc.</p>
<p>Writizzy already has responsibilities under the European DSA (Digital Services Act). I must provide a reporting mechanism and act on reports of illegal content. Note: as a host, I&#39;m not required to proactively monitor—only to respond to reports. As long as blogs remain separate, it&#39;s still manageable. Impact is limited to the individual&#39;s blog.</p>
<p>But once a feed exists, impact multiplies—that&#39;s the whole point—but it also creates more pressure on moderation. And it&#39;s far from simple, because you have to judge whether content is illegal, and that judgment isn&#39;t always clear-cut. What&#39;s acceptable varies.</p>
<p>Where&#39;s the line between satire and insult? Between political criticism and defamation? How do you detect and handle fake news? What&#39;s the line between pornographic nudity and art (Courbet&#39;s <em>L&#39;Origine du monde</em>, for instance)?</p>
<p>I&#39;ve tried to catalog different moderation methods to see what might work for Writizzy:</p>
<h3>Manual Moderation</h3>
<p>Two main categories here: manual moderation by one or more super-admins, and mass outsourced moderation. Small-scale manual moderation is what you see on Mastodon, with the obvious bias of moderator subjectivity and resulting conflicts between instances with different political positions. I&#39;m not infallible; I don&#39;t want to be responsible for moderating all published content. And it won&#39;t scale.</p>
<p>Then there&#39;s mass moderation, often outsourced to low-wage countries by major platforms like <a href="https://time.com/6247678/openai-chatgpt-kenya-workers/">Meta, TikTok, or OpenAI</a>. It&#39;s far from pleasant work, and <a href="https://www.theverge.com/2019/2/25/18229714/cognizant-facebook-content-moderator-interviews-trauma-working-conditions-arizona">abuses have been documented extensively</a>. It&#39;s unsuitable for Writizzy—economically and ethically.</p>
<h3>Community Moderation</h3>
<p>This relies mainly on user reports. X&#39;s Community Notes fall into this category, as do Wikipedia&#39;s discussion threads. It&#39;s obviously the cheapest approach, but it can be gamed if groups coordinate to censor content. This system can be improved with reputation points awarded by the community. That&#39;s Reddit and Hacker News Karma, or Stack Overflow reputation scores. This mechanism could make sense for Writizzy. However, community moderation is reactive—meaning the damage is done; content has already been exposed before being flagged.</p>
<h3>Automated Moderation</h3>
<p>This can involve keyword detection, user profiling (new accounts, posting patterns, etc.), or nudity detection algorithms for images. It&#39;s the easiest method to implement. You can adjust tolerance levels. This is where AI could shine for understanding text, but it&#39;s far from foolproof—people use word substitutions, altered spelling, emojis representing concepts, or algorithms simply perform worse in certain languages.</p>
<p>My conclusion from this mini-study is fairly obvious: you&#39;d need automated detection upfront, then a reporting system enhanced by Karma scores downstream, and finally manual super-admin intervention as a last resort.</p>
<p>Yet these systems exist and platforms are still criticized, because all moderation is imperfect. There&#39;s always the central question of interpretation: what&#39;s legal or not? And that interpretation varies by country and culture.</p>
<p>This brings us to another approach—Bluesky&#39;s again—where <a href="https://docs.bsky.app/blog/blueskys-moderation-architecture">one of the fundamental principles is decentralization, including moderation via labelers</a>.</p>
<h3>Decentralized Moderation</h3>
<p>Bluesky&#39;s moderation has two levels:</p>
<ul>
<li>Base moderation, handled by Bluesky itself. This first layer uses <a href="https://github.com/bluesky-social/ozone">Ozone, an open-source moderation tool</a>. It&#39;s configurable so users can set their own tolerance levels. This step catches universally unacceptable content (child abuse, incitement to violence, etc.) for which the platform can be held legally responsible.</li>
<li>Optional moderation provided by independent labelers. These labelers can be built <a href="https://docs.bsky.app/docs/advanced-guides/moderation">with an SDK</a> and offered to users who choose them to customize their expected moderation.</li>
</ul>
<p>Once again, it comes back to the same idea: giving users control. (Even if 90% will probably keep the default settings.)</p>
<h2>Alternatives for Discoverability</h2>
<p>What&#39;s certain is that this topic is complex, and I completely understand Thomas&#39;s reluctance to venture into it. So we discussed other approaches. Rather than aggregating content, we could start with content curation. It&#39;s much simpler—we could manually select content to highlight each week or month.</p>
<p>We could also consider smaller-scale recommendations:</p>
<ul>
<li>Related content suggestions at the bottom of articles</li>
<li>Similar newsletter suggestions when users subscribe</li>
</ul>
<p>Or we could focus on automating cross-posting: RSS and newsletters today, automatic distribution to ATProto, Bluesky, Nostr tomorrow?</p>
<p>There are other possibilities, and no decisions have been made yet.</p>
<p>What would you do? If discoverability matters to you, what would be your ideal solution? Do you use Medium&#39;s or <a href="http://dev.to">dev.to</a>&#39;s recommendations? Are you already cross-posting to federated networks?</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What if your favorite platform died? How I'm trying to build software that lasts]]></title>
            <link>https://eventuallymaking.io/p/what-if-your-favorite-platform-died-how-i-m-trying-to-build-software-that-lasts</link>
            <guid>https://eventuallymaking.io/p/what-if-your-favorite-platform-died-how-i-m-trying-to-build-software-that-lasts</guid>
            <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[How do you build a platform users can rely on for years? Reversibility, avoid enshittification, viability, etc..]]></description>
            <content:encoded><![CDATA[<p>While talking with several potential Writizzy users, I realized that one of their main concerns when choosing a blogging platform—or any platform for photos, videos, etc.—is <strong>longevity</strong>.</p>
<p>Will the platform shut down in a year or two? What happens if it does? Do I lose my data? </p>
<p>And what if it evolves, but in the wrong direction? (I’m looking at you Twitter...)</p>
<p>Some quotes from users:</p>
<blockquote>
<p>I don&#39;t really intend to use a platform. One of the reasons I built my own engine is stability.</p>
</blockquote>
<blockquote>
<p>Before using Substack, I was using Twitter&#39;s solution that did pretty much the same thing. They shut it down overnight, and I couldn&#39;t recover my content.</p>
</blockquote>
<p>This is a legitimate concern: will the effort I put into maintaining a blog be wiped out tomorrow?</p>
<p>I need to answer this question. How do I preserve the effort of people who might use Writizzy? Here are some of my answers. But this isn&#39;t just about Writizzy. Whether you&#39;re choosing a platform or building one, here&#39;s a framework for thinking about longevity.</p>
<h2>Plan for reversibility</h2>
<p>The first priority, in my view, is to always remain in control of what you produce. You need to provide a simple way to export your data.</p>
<p>The import/export function must be easy to find, and the format must be usable.</p>
<p>On Writizzy, I chose a JSON format similar to Ghost&#39;s. All posts are included in markdown format. The newsletter subscriber list is also included.</p>
<p>There&#39;s no data lock-in, and it would be easy for any user to migrate to another platform if needed.</p>
<p>The second factor of <strong>reversibility</strong> is giving everyone the option to use their own domain name. For example, I use <a href="http://eventuallymaking.io">eventuallymaking.io</a>. If Writizzy shuts down tomorrow, I could keep that domain and rebuild my blog from my data. The content isn&#39;t buried inside a platform (like Medium, for instance), so I retain full control over how I can retrieve and distribute it.</p>
<p>On the topic of reversibility, I could also mention <strong>interoperability</strong>: how to ensure content isn&#39;t exclusive to Writizzy, how to make it work elsewhere. Solutions like <strong>RSS</strong> feeds and <strong>newsletters</strong> already exist. But I&#39;m also looking into <strong>ActivityPub</strong>, <strong>AtProto</strong>, and anything that could enable better content decentralization if viable solutions emerge.</p>
<h2>Prevent enshittification</h2>
<p>Yes, that&#39;s a strange title.</p>
<p>Most consumer products tend to age poorly—becoming too complex, too expensive. This is often the result of two pressures: shareholders seeking to maximize profits, and internal teams who need to constantly evolve the product to justify their existence.</p>
<p><a href="https://en.wikipedia.org/wiki/Enshittification">Cory Doctorow popularized this term</a>, but mainly in reference to the first cause—investor pressure. I tend to think the second is just as problematic.</p>
<p>Writizzy is built differently. And I believe most new companies being created in this post-AI, bootstrapped era will share this same discipline. I&#39;ll make sure to build only what&#39;s necessary and evolve the product only when needed. I won&#39;t take external investors and I don&#39;t plan to sell this project. And I don&#39;t plan to hire hundreds of people.</p>
<p>I think it&#39;s possible—and actually healthy—to build &quot;<strong>slowly but surely</strong>&quot; for this type of project.</p>
<h2>Be economically viable</h2>
<p>Longevity requires that the product isn&#39;t a financial black hole. The first answer was given in the previous section: I have no investors, I won&#39;t hire people to burn through a budget I don&#39;t have, and I know what it takes to build a product—I&#39;ve done it several times. I know how to develop lean.</p>
<p>On <a href="http://Hakanai.io">Hakanai.io</a> (another product I created), I&#39;m not making thousands of euros, but the product brings in more than it costs. Writizzy is only a month and a half old, and that&#39;s already the case too. Because it&#39;s simple today to create products with limited resources.</p>
<p>Obviously, I might not be able to live off it, but I&#39;m not counting on that for now—and neither is <a href="https://thomas-sanlis.com/">Thomas</a>, who builds this product with me. I&#39;ll work toward making it happen, if only to prove I can, but I have the luxury of being patient.</p>
<h2>Use durable technology</h2>
<p>This is the hardest part to achieve, because no technology is truly durable. All languages, all frameworks require regular updates—for security patches, OS compatibility, and so on.</p>
<p>That said, there are some best practices to follow: avoid technical lock-in, don&#39;t rely heavily on a platform you couldn&#39;t do without (avoid big cloud vendors, Datadog, etc.). Always have alternatives, backup plans in case a tool becomes too expensive or dies.</p>
<p>Writizzy runs on a standard stack (Kotlin, Nuxt) with a PAAS tool that would be easy to swap (Coolify with Traefik), on a straightforward VPS at Hetzner.</p>
<p>You might ask: why not make it open source? It seems like the ultimate guarantee of longevity. I say &quot;seems,&quot; because history has shown that open source projects can be co-opted by their creators (see WordPress and its various dramas). </p>
<p>The question isn&#39;t necessarily open source vs. not open source, but rather: what are the creators&#39; intentions? </p>
<p>There are many examples of <a href="https://en.wikipedia.org/wiki/Openwashing">openwashing</a>—projects that use the &quot;open source&quot; label as an acquisition channel or marketing argument, without it being a deep conviction.</p>
<p>In any case, open source comes with constraints. Today Writizzy is three separate applications, which isn&#39;t exactly the standard for what people like to deploy as open source. It&#39;s also designed as a platform, not a product meant for personal use only. Finally, there&#39;s the matter of commercial exploitation—I don&#39;t want others to profit from my work for free and resell what I&#39;ve built.</p>
<p>I might revisit this topic in the future depending on how the product evolves. But for now, this option is off the table.</p>
<p>However, if Thomas and I decide to stop or if something happens to us, that would trigger a switch to open source—and I&#39;m going to set up mechanisms to make that happen automatically.</p>
<h2>Be your own first user (dogfooding)</h2>
<p>Finally, I&#39;ve been blogging for 20 years. I&#39;m currently the most prolific user on Writizzy with over 80 articles already published (though I cheated—I migrated my old posts ^^). I&#39;m building this tool because I use it. I think it&#39;s much easier to build a product you understand because you&#39;re a user yourself. </p>
<p>And that&#39;s also a factor for longevity.</p>
]]></content:encoded>
            <category>indie hacker</category>
            <category>writizzy</category>
        </item>
        <item>
            <title><![CDATA[Variable pay for tech roles: good idea or bad idea?]]></title>
            <link>https://eventuallymaking.io/p/variable-pay-for-tech-roles-good-idea-or-bad-idea</link>
            <guid>https://eventuallymaking.io/p/variable-pay-for-tech-roles-good-idea-or-bad-idea</guid>
            <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Variable pay for software engineers sounds motivating on paper. In practice, it's a recruiting obstacle, a source of tension, and often counterproductive. Here's why equity works better.]]></description>
            <content:encoded><![CDATA[<p>I recently had a discussion on Slack about variable pay (bonuses) for tech roles. I&#39;ve always found it counterproductive — I briefly mentioned it in a <a href="https://eventuallymaking.io/p/should-we-measure-the-performance-of-an-engineering-team">previous post about measuring engineering team performance</a>:</p>
<blockquote>
<p><em>I should mention that I&#39;m generally not in favor of variable pay for engineering roles. At least not before staff engineering level and above, but that&#39;s not the point of this post so I won&#39;t elaborate.</em></p>
</blockquote>
<p>Let&#39;s elaborate now.</p>
<p><strong>TL;DR</strong></p>
<p>Variable pay for tech roles isn&#39;t common practice, and it&#39;s generally perceived negatively by engineers — rightfully so, in my opinion. It becomes an obstacle during hiring.</p>
<p>Unless the variable is <strong>added on top of</strong> market rate.</p>
<p>In practice, it also creates ongoing tension between managers and employees when there are no objective and relevant criteria for awarding bonuses.</p>
<p>Perks like additional PTO based on tenure, conference budget, learning stipends, etc. <strong>are far more effective at building a lasting relationship</strong>.</p>
<p>The difficulty of finding relevant criteria also makes variable pay counterproductive — either because it misaligns individuals in what is naturally a collaborative activity, or because it incentivizes gaming the metrics meant for continuous improvement.</p>
<p><strong>Using equity (stock options, RSUs) or profit-sharing mechanisms</strong> is, in my view, a much better way to align individuals with company success.</p>
<h2>Variable pay is a hard sell during hiring</h2>
<p>Let&#39;s start with the basics: why do companies offer variable pay?</p>
<p>For the company, it&#39;s mainly about motivating employees to go the extra mile in order to earn a higher salary.</p>
<p>For the employee, there&#39;s significant risk involved. Variable pay isn&#39;t guaranteed. It&#39;s typically excluded from income calculations when applying for a mortgage or renting an apartment. Banks look at your base salary, not your OTE.</p>
<p>And that&#39;s my first argument against variable pay.</p>
<p>In today&#39;s context — where variable pay is uncommon for tech roles, the market is tight, and salaries are high — you lose a lot of attractiveness if the variable component just compensates for a lower base.</p>
<p>A dev will systematically choose $180k fixed over  $150k fixed + $30k variable(all other factors being equal). Why would they do otherwise?</p>
<p>Now, you might argue that variable pay can allow someone to significantly exceed market rate.</p>
<p>And yes, <strong>if the variable is added on top of market salary</strong>, it can become attractive.</p>
<p>For example: $180k fixed + $30k variable.</p>
<p>But let&#39;s be honest — this is rare. Most companies align with the market and then carve out a portion to make it variable.</p>
<p>Bottom line: it generally doesn&#39;t add to your attractiveness and makes the offer stage of hiring risky.</p>
<h2>It&#39;s a constant source of tension with the manager</h2>
<p>If it&#39;s harder to recruit with variable pay, it&#39;s also a source of tension between managers and employees since you need to regularly set and update objectives.</p>
<p>For sales roles, it&#39;s considered straightforward — variable pay is proportional to sales volume.</p>
<p>In tech roles, it gets complicated. The job is inherently team-based and creative. You can&#39;t easily measure individual success, and devs don&#39;t (thankfully) get paid per line of code.</p>
<p>At a previous company, I was often told that &quot;bonuses were almost always given&quot; and that &quot;if you didn&#39;t get it, you should consider leaving because either the company was doing badly or it was a hidden message.&quot; Basically, withholding the variable was used as a roundabout way to push people out.</p>
<p>Personally, I much prefer clear messages. If something&#39;s wrong, I shouldn&#39;t have to guess — we discuss it and decide together. Using variable pay this way is cowardly management.</p>
<p>If you want to set up a system to encourage people to stay, there are many more effective options:</p>
<ul>
<li>Work environment (good equipment, quality office in a good location, or remote work)</li>
<li>Mission and meaning of the work</li>
<li>Continuous learning budget (conferences, traditional training, online courses, etc.)</li>
<li>Equity that vests over time (you acquire portions progressively)</li>
<li>Benefits that accrue with tenure (additional PTO, for example)</li>
</ul>
<p>(non-exhaustive list)</p>
<h2>Variable pay is counterproductive</h2>
<p>But let&#39;s get back to how variable pay is calculated. To have variable pay, you need to tie it to an objective.</p>
<p><strong>First scenario</strong>: individual objectives tied to a specific project.</p>
<p>This often leads to absurd situations. Projects get abandoned because they&#39;re no longer relevant, scope changes, the person is no longer working on it, etc.</p>
<p>And when I talk about counterproductive situations: in the past, as an individual contributor, I had the choice between continuing on a project (relatively small and less useful than expected) to get my bonus at the expense of the team, or abandoning it to focus on more relevant topics at the expense of my bonus.</p>
<p>In short, <strong>you create a conflict between (very) short-term and long-term interests</strong>.</p>
<p>(Have you never seen a situation where, after discussion, everyone agrees that a project is actually problematic for the company, but a few people whose bonus depends on it keep defending it?)</p>
<p><strong>Second scenario</strong>: those who try to rely on quantitative metrics not tied to specific projects.</p>
<p>Sure, what could be more natural than looking for individual measurement tools?</p>
<p>In a company, you want a reliable, fair, objective, and consistent tool to measure performance. What better than quantitative data? The intention is good.</p>
<p>However, I could quote a famous law:</p>
<blockquote>
<p><em>When a measure becomes a target, it ceases to be a good measure.</em></p>
<p><em>Goodhart&#39;s Law</em></p>
</blockquote>
<p>As I mentioned in the post about measuring performance, these tools are meant for continuous improvement of a team. As soon as you start using them to calculate bonuses, things go sideways because the whole game becomes about gaming the numbers.</p>
<p>I have plenty of amusing anecdotes about this... And I could spend a long time explaining how you can game individual metrics at the expense of the collective.</p>
<p>In any case, a developer works within a team and a strategy. Their success depends on others.</p>
<p>Introducing an individual bonus misaligns people&#39;s objectives. It&#39;s demotivating and a constant source of conflict.</p>
<p>Team-based bonuses might seem to solve this, but as soon as you apply them only to the dev team, you shift the problem by misaligning them with the rest of the company (customer support, marketing, sales, etc.).</p>
<p>Note: I&#39;m not saying you shouldn&#39;t track individual performance (I mentioned it in the post about tracking tools). But this tracking should be both quantitative and qualitative. And it should be aimed at continuous improvement.</p>
<p>If, as a manager, you conclude that someone isn&#39;t meeting their objectives and isn&#39;t adapting within a team, you need to act — that&#39;s your job. But that&#39;s a different question from whether someone should get their bonus or not...</p>
<h2>Examples of metrics used for variable pay</h2>
<p>Here are some metrics that are sometimes used to set up compensation schemes:</p>
<p><strong>Individual bonus based on Scrum metrics</strong></p>
<p>For me, one of the worst schemes. Scrum metrics are the easiest to game and don&#39;t reflect software quality. The likely result is lower ambition on sprints or artificial inflation of complexity to increase story points. Really avoid this.</p>
<p><strong>Team bonus based on Scrum metrics</strong></p>
<p>Less bad than the previous one — this scheme tries to account for the collective aspect. But Scrum isn&#39;t designed for this. Most metrics that come out of it aren&#39;t user-facing. As mentioned above, perverse effects quickly emerge, along with under-commitment to meet expectations.</p>
<p><strong>Team bonus based on user-facing metrics</strong></p>
<p>You could put user NPS in this category. The intention isn&#39;t bad, but the connection to dev work is sometimes hard to make. Is NPS really just a reflection of dev effort? Or also customer support, product-market fit, etc.? Too many externalities come into play, and it becomes a source of conflict between departments.</p>
<p><strong>Team bonus based on Accelerate metrics</strong></p>
<p>I&#39;m more convinced by these metrics than Scrum ones because they specifically aim to measure software quality.</p>
<p>But again, you&#39;re measuring &quot;internal&quot; quality, not product-market fit. You can ship fast and have few defects on a product nobody wants. You can have a tech team with great metrics but zero business alignment.</p>
<p>It&#39;s &quot;the least bad&quot; option, but you&#39;re not really solving much...</p>
<h2>Equity: alignment and motivation through collective success</h2>
<p>To end on a positive note, if we&#39;re talking about compensation and alignment with company interests, I&#39;m much more convinced by <strong>equity grants</strong> (stock options, ISOs, RSUs for startups and public companies) or <strong>profit-sharing mechanisms</strong> (for mature companies).</p>
<p>Here you lose individual or even team-level tracking for the dev team. But you align everyone with the company&#39;s success. We all succeed together or fail together because it&#39;s directly tied to the company&#39;s revenue (or valuation).</p>
<p>I&#39;ll admit, we&#39;re not talking about the same thing.</p>
<p>Profit sharing is a mechanism that can only be implemented in mature companies that are profitable (rarely startups). It&#39;s generally predictable and you receive it every year.</p>
<p>Variable pay is quasi-predictable — the risk exists but is limited to the year&#39;s income.</p>
<p>Equity, in my experience, is harder to explain to dev populations and it&#39;s risky — but the potential upside is incomparable.</p>
<p>A lot of the time, equity won&#39;t result in any gain. But if the startup succeeds, the gains can be really significant (<a href="https://eventuallymaking.io">here are some examples</a>), far greater than a 10-20% variable component.</p>
<p>Equity has multiple advantages, including the fact that people who eventually leave will remain aligned with the company&#39;s success and therefore stay active promoters (and really, that&#39;s beneficial!).</p>
<p>You can have attribution schemes that depend on where someone is in the career ladder (with possible re-grants starting at staff engineer level if their impact increases, for example).</p>
<p>That&#39;s all from me. But I suspect the discussion will continue in the comments on a topic like this :)</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Managing Custom Domains and Dynamic SSL with Coolify and Traefik]]></title>
            <link>https://eventuallymaking.io/p/managing-custom-domains-and-dynamic-ssl-with-coolify-and-traefik</link>
            <guid>https://eventuallymaking.io/p/managing-custom-domains-and-dynamic-ssl-with-coolify-and-traefik</guid>
            <pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Handle your customers' custom domains on Coolify. A guide to automating dynamic SSL certificates with Traefik's File Provider.]]></description>
            <content:encoded><![CDATA[<p>I recently published an article on <a href="https://eventuallymaking.io/p/2025-10-coolify-wildcard-ssl">managing SSL certificates for a multi-tenant application on Coolify</a>.</p>
<p>The title might sound intimidating, but basically it lets an application handle tons of subdomains (over HTTPS) dynamically for its users. For example:</p>
<ul>
<li><code>https://hugo.writizzy.com</code></li>
<li><code>https://thomas-sanlis.writizzy.com</code></li>
</ul>
<p>That&#39;s a solid foundation, but users often want more: <strong>custom domains</strong>. The ability to use their own address, like:</p>
<ul>
<li><code>https://eventuallymaking.io</code></li>
<li><code>https://thomas-sanlis.com</code></li>
</ul>
<p>So let&#39;s dive into how to manage custom domains for a multi-tenant app with dynamic SSL certificates.</p>
<p><em>(I feel like I&#39;m going for the world record in longest blog post title!)</em></p>
<h2>Custom Domains</h2>
<p>The first step for a custom domain is routing traffic from that (sub)domain to your application (Writizzy in my case).</p>
<p>It all comes down to <strong>DNS records</strong> on the user&#39;s side. Only they can configure their domain to point to your application&#39;s subdomain.<br>They have several options: <strong>CNAME</strong>, <strong>ALIAS</strong>, or <strong>A</strong> records.</p>
<h3>1. CNAME (the simplest)</h3>
<p>A CNAME is an alias for another domain. It basically says that <code>www.eventuallymaking.io</code> is an alias for <code>hugo.writizzy.com</code>. All traffic trying to resolve the <code>www</code> address gets automatically forwarded to your application domain.</p>
<p><strong>Major limitation:</strong> You can&#39;t use a CNAME for a root domain (e.g., <code>eventuallymaking.io</code> without the <code>www</code>). Adding a CNAME on an apex domain would conflict with other records (A, MX, TXT, etc.).</p>
<h3>2. ALIAS</h3>
<p>Some DNS providers offer <strong>ALIAS</strong> records (or <em>CNAME flattening</em>). It&#39;s essentially a CNAME that can coexist with other records on a root domain. Great option if the user&#39;s provider supports it (OVH doesn&#39;t, for instance).</p>
<h3>3. A Record</h3>
<p>Here, the user directly enters Writizzy&#39;s server IP address.</p>
<p><strong>Warning:</strong> This approach is risky. If you change servers (and therefore IPs), all your users&#39; custom domains break until they update their config. To use this method safely, you need a <strong>floating IP</strong> that can be reassigned to your new server or web frontend.</p>
<p>Alright, that&#39;s a good start, but if we stop here, things won&#39;t work well—the site won&#39;t serve over HTTPS.</p>
<h2>HTTPS on Custom Domains</h2>
<p>In my previous post, I showed how Traefik could route all traffic hitting <code>*.writizzy.com</code> subdomains to the same application using these lines:</p>
<pre><code class="language-yaml">traefik.http.routers.https-custom.rule=HostRegexp(`^.+$`)
traefik.http.routers.https-custom.entryPoints=https
traefik.http.routers.https-custom.service=https-0-zgwokkcwwcwgcc4gck440o88
traefik.http.routers.https-custom.tls.certresolver=letsencrypt
traefik.http.routers.https-custom.tls=true
traefik.http.routers.https-custom.priority=1
</code></pre>
<p>Since the regex catches everything, you might think SSL would just follow along. Unfortunately, no. Traefik knows it needs to handle a wildcard certificate for <code>*.writizzy.io</code>, but it has no clue about the external domains it&#39;ll need to serve.</p>
<p>We need to help it by dynamically providing the list of custom domains.</p>
<p>Our constraints:</p>
<ul>
<li>Obviously, no application restart</li>
<li>We want to drive it programmatically</li>
</ul>
<h3>Dynamic Traefik Configuration with File Providers</h3>
<p>This is where Traefik&#39;s <a href="https://doc.traefik.io/traefik/reference/install-configuration/providers/others/file/">File Providers</a> come in.</p>
<p>In Coolify, this feature is enabled by default via <a href="https://coolify.io/docs/knowledge-base/proxy/traefik/dynamic-config">dynamic configurations</a>. Under the hood, Traefik watches a specific directory:</p>
<pre><code class="language-bash">- &#39;--providers.file.directory=/traefik/dynamic/&#39;
- &#39;--providers.file.watch=true&#39;
</code></pre>
<p>Drop a <code>.yml</code> file defining the rule for a new domain, and Traefik picks it up hot and triggers the HTTP challenge with Let&#39;s Encrypt to get the SSL certificate.</p>
<p><strong>Example dynamic configuration:</strong></p>
<pre><code class="language-yaml">http:
  routers:
    eventuallymaking-https:
      rule: &quot;Host(`eventuallymaking.io`)&quot;
      entryPoints:
        - https
      service: https-0-writizzy
      tls:
        certResolver: letsencrypt
      priority: 10
    eventuallymaking-http:
      rule: &quot;Host(`eventuallymaking.io`)&quot;
      entryPoints:
        - http
      middlewares:
        - redirect-to-https@docker
      service: https-0-writizzy
      priority: 10
</code></pre>
<p>So with this approach, we&#39;ve solved our first constraint: no restart needed to configure a new custom domain.</p>
<p>Now let&#39;s tackle the second one and make it programmatic.</p>
<h3>Automation via the Application</h3>
<p>The idea is straightforward: the application creates these files directly in the directory Traefik watches.</p>
<ol>
<li><strong>Coolify configuration:</strong> Go to <code>Configuration -&gt; Persistent Storage</code> and add a <code>Directory mount</code> to make the <code>/traefik/dynamic/</code> directory visible to your application container.</li>
</ol>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1765961966661-wymdzej.png" alt="directory mount" /></p>
<ol>
<li><strong>Code (Kotlin in my case):</strong> The application generates a file based on the template above as soon as a user configures their domain.</li>
</ol>
<blockquote>
<p><strong>Important note on timing:</strong> If you create the Traefik config before the user has pointed their domain to your IP, the SSL challenge will fail. Traefik will automatically retry (with backoff), but it can take a while. Ideally, validate the DNS pointing (via a background job) <strong>before</strong> generating the file.</p>
</blockquote>
<blockquote>
<p><strong>Important note on security:</strong> The generated file contains user input (the domain name). It&#39;s crucial to sanitize and validate this data to prevent a malicious user from injecting arbitrary Traefik directives into your configuration.</p>
</blockquote>
<h2>Wrapping Up</h2>
<p>This post wraps up what I hope has been a useful series for SaaS builders running multi-tenant apps on Coolify. We&#39;ve covered:</p>
<ol>
<li><a href="https://eventuallymaking.io/p/2025-10-coolify-subdomain">Tenant management (Nuxt) and basic Traefik configuration</a></li>
<li><a href="https://eventuallymaking.io/p/2025-10-coolify-wildcard-ssl">SSL management with dynamic subdomains</a></li>
<li><strong>Custom domains with SSL</strong> (this post)</li>
</ol>
<p>You might wonder if this solution scales with tens of thousands of sites all using custom domains—specifically whether Traefik can handle monitoring that many files in a directory. </p>
<p>I don&#39;t have the answer yet. Writizzy is nowhere near that scale for now. There might be other solutions, like using Caddy instead of Traefik in Coolify, but it&#39;s way too early to explore that.</p>
]]></content:encoded>
            <category>ssl</category>
            <category>traefik</category>
            <category>coolify</category>
        </item>
        <item>
            <title><![CDATA[What's the Real Impact of AI on Tech Companies in 2025?]]></title>
            <link>https://eventuallymaking.io/p/what-s-the-real-impact-of-ai-on-tech-companies-in-2025</link>
            <guid>https://eventuallymaking.io/p/what-s-the-real-impact-of-ai-on-tech-companies-in-2025</guid>
            <pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[What's AI actually changing for dev agencies and SMBs in 2025? Insights from CTOs on adoption, the bubble question, and why everyone's both using it and sick of it.]]></description>
            <content:encoded><![CDATA[<p>What&#39;s AI actually changing for tech companies day-to-day? Not just Big Tech, but agencies and SMBs?</p>
<p>I recently had the chance to discuss this with several CTOs during an informal meetup, and I wanted to share what came out of it.</p>
<p>AI is a hot topic for pretty much everyone because, whatever your opinion on it, you can&#39;t just sweep it under the rug. Clients talk about it, employees talk about it (positively or negatively), and some competitors are using it.</p>
<p>This led to several discussions:</p>
<ul>
<li>What&#39;s the concrete impact of AI for a dev agency in 2025?</li>
<li>Is it a bubble? And what if it bursts?</li>
<li>How do you get your teams to adopt AI? Is it an individual choice or a company mandate?</li>
<li>How can AI be necessary yet nauseating at the same time?</li>
</ul>
<p>I&#39;ll try to capture these discussions here. To preserve anonymity, all names are fictional.</p>
<h2>Impact of AI for a Dev Agency in 2025</h2>
<p>I spoke with the head of a dev agency (let&#39;s call him Chris) for whom AI has been a game-changer, with a real company-wide adoption policy.</p>
<p>I&#39;ll keep it brief to avoid distorting what I heard:</p>
<ul>
<li>AI has impacted every aspect of the business: contracts, development, support, etc.</li>
<li>The agency does way more fixed-price projects and less time &amp; materials. Billing by time spent no longer makes sense. They now prefer billing based on impact and value delivered.</li>
<li>They can now commit to smaller fixed-price contracts because margins have increased and risk has decreased.</li>
<li>They&#39;re starting to see bottlenecks on the client side. Devs are now faster than clients can express their needs.</li>
<li>They&#39;re increasingly having 1 dev per client, which isn&#39;t great for service continuity. But with two devs, there&#39;s not enough work.</li>
<li>The design phase has become more important, with solid documentation to capture requirements. That&#39;s what feeds the AI afterward (which also helps refine the docs).</li>
<li>Consequence of the above: it&#39;s the first time since the company was founded that this much documentation has been produced, with good quality.</li>
<li>He&#39;s had discussions with senior lead devs who&#39;ve seen their job change and initially doubted whether they&#39;d still enjoy their work. So far, these people have learned to love their new job.</li>
<li>It&#39;s hard to hire juniors because working with AI to build applications requires the hindsight to know how to code things yourself, read code, spot flaws, etc. There&#39;s a real &quot;AI wall&quot; for newcomers.</li>
<li>Overall, the agency is making better margins. But also because competitors haven&#39;t caught up yet. Chris thinks it&#39;ll rebalance once more competitors adopt the same working methods.</li>
<li>He has no problem involving clients and doesn&#39;t hide the use of AI. It&#39;s still a tool, but it&#39;s their methods and expertise that make it deliver satisfying results.</li>
</ul>
<h2>How to Get Your Teams to Adopt AI</h2>
<p>This topic is rich, and I&#39;d already seen it come up on Slack.</p>
<p>The question could be framed like this:</p>
<blockquote>
<p>Some devs don&#39;t use AI on the team despite demo sessions, coaching, etc. How do you convince them?</p>
</blockquote>
<p>The discussion raised many points, but it boils down to two questions:</p>
<ul>
<li>Should you force people?</li>
<li>What reasons do these devs give?</li>
</ul>
<p>For the second question, the reasons can be summarized as:</p>
<ul>
<li>Environmental concerns</li>
<li>Feeling like the job has lost its meaning</li>
<li>Fear of losing skills</li>
</ul>
<p>On the first point, nobody really wanted to go there. I didn&#39;t respond in the discussion either, maybe for fear of coming across as the resident cynic. But with hindsight, I&#39;ll use this post to share my thoughts. Sure, it might not please everyone, but I&#39;m afraid it might come true.</p>
<p>Let&#39;s start with this hypothesis: <strong>If AI does in 5 minutes what an engineer would have done in several hours/days, the environmental equation strongly favors AI.</strong></p>
<p>To support this, I&#39;ll use numbers I calculated in another blog post:</p>
<blockquote>
<p>The average time to produce concept art varies between artists but is generally around 15 hours with Photoshop. That&#39;s 1500Wh — more than 300 times the cost with AI.</p>
</blockquote>
<p>For equivalent tasks, AI is more environmentally friendly than a human worker. Obviously, one could argue that if we go faster, we&#39;ll produce more. The developer will work a full day regardless, so they&#39;ll consume more over the day.</p>
<p>Yes, a dev will consume more. If that&#39;s all they do, which is already optimistic.</p>
<p><strong>But if headcount drops by 30 or 40%, the equation becomes positive again.</strong></p>
<p>And I&#39;m afraid nobody says this too loudly because the implications are heavy.</p>
<p>There will be two scenarios:</p>
<ol>
<li><strong>Dysfunctional companies</strong> where people take 3 weeks for simple tasks and spend part of their time hiding at the coffee machine or in useless meetings. If these people use AI, they&#39;ll just spend more time on the rest. And that&#39;ll save energy. Yes, it&#39;s a bit provocative, but I know these companies exist, and I&#39;m not being cynical here. <em>I told you I&#39;d be blunt...</em></li>
<li><strong>Companies that pursue productivity.</strong> These companies will keep their most effective people but will reduce headcount because demand won&#39;t keep up. It&#39;s hard to hear, I get it. But it&#39;s going to happen.</li>
</ol>
<p>I&#39;m afraid that people who hold back for environmental reasons will end up getting their way... by losing their jobs.</p>
<p>And I want to be clear: I don&#39;t wish this on anyone. I&#39;m following a line of reasoning that seems important to address. You can hate the messenger. But it&#39;s the message that should interest you.</p>
<p>Then come the other two topics:</p>
<ul>
<li>Loss of meaning</li>
<li>Loss of skills</li>
</ul>
<p>From the various discussions I&#39;ve had, everyone seemed to reach the same conclusions: yes, the job is changing. It&#39;s much more about design, with heavy emphasis on architecture and the ability to formalize it. Many people end up enjoying it. But not everyone does, and that&#39;s partly what creates the resisters.</p>
<p>Now we get to the thorny question:</p>
<h3>Should you force people?</h3>
<p>Opinions diverge quite a bit between those who think it should be a personal choice, like choosing your IDE.</p>
<blockquote>
<p>The reflection is valid, but the &quot;mandatory&quot; aspect isn&#39;t justified in my view. Some tools are constraints: versioning, unit testing, etc. Others should be left to the dev&#39;s discretion: IDE, StackOverflow, Reddit, etc. AI, for me, falls into the second category.</p>
</blockquote>
<p>And others who think it can no longer be optional, no more than refusing to use version control.</p>
<blockquote>
<p>I understand your points, but I place AI at a different level than a simple tool. Today, if a dev uses VSCode, I don&#39;t force them to use IntelliJ (or anything else), but not using an IDE at all would seem pretty strange.</p>
</blockquote>
<p>I didn&#39;t see any consensus emerge from the groups discussing this topic. But one phrase stands out for me as a conclusion:</p>
<blockquote>
<p><strong>Developers who don&#39;t want to use AI need to understand that their performance will be evaluated against people who do use it. If they&#39;re just as performant without it, fine. Otherwise, they&#39;re facing a problem they need to solve on their own, right?</strong></p>
</blockquote>
<p>From this discussion came a question: OK, but if we all switch to AI and the bubble bursts, what do we do?</p>
<h2>Is It a Bubble? And What If It Bursts?</h2>
<p>I find this question very relevant. What happens in 2 or 3 years if the AI bubble bursts like the dot-com bubble in 2000? Will we be able to go back to our old work habits?</p>
<p>On the &quot;bubble&quot; aspect, the consensus seems widely shared, and the current period feels a lot like 2000.</p>
<p>In 2000, simply renaming your company with a &quot;.com&quot; could make stock valuations explode, even if the company had nothing to do with the web. To raise money, you had to find a link — real or not — to the internet. Today it&#39;s the same with AI. More than half of investments involve AI. I get contacted every week by companies that will &quot;revolutionize sector X or Y&quot; with AI.</p>
<p>Every. Single. Week.</p>
<p>So yes, the consensus is shared: many companies riding the AI wave will crash. And potentially not just small ones. But there&#39;s a second consensus: AI won&#39;t die with the bubble, just as the web didn&#39;t die in 2000.</p>
<p>Given the massive adoption of code assistance tools, there&#39;s little chance they&#39;ll disappear, especially since open-source models already exist. And some imagine it&#39;ll be possible to maintain specialized code models for less than today&#39;s big generalist models. A profitable economic equation will emerge, at least for this niche.</p>
<p>Nobody&#39;s a fortune teller, as one participant pointed out, but I tend to think the probability of AI completely disappearing seems unlikely.</p>
<h2>How Can AI Be Necessary Yet Nauseating?</h2>
<p>I&#39;m not even sure this chapter is necessary since it seems so obvious, but everyone seems equally intrigued and suffering from indigestion on AI topics. Sure, everyone uses it, but just like everyone uses a keyboard — that&#39;s not enough for it to be the ONLY topic of conversation.</p>
<p>Yet:</p>
<ul>
<li>It&#39;s hard to raise money without saying you&#39;re doing AI</li>
<li>There are tons of company pitches constantly talking about AI, but when you dig a little, there&#39;s nothing credible if you&#39;re being serious</li>
<li>It&#39;s annoying to see tech conferences with 95% of talks on AI, with some competition in hot air (beginner tutorials, far-fetched topics, etc.)</li>
</ul>
<p>So yes, it&#39;s paradoxical: it&#39;s the topic of the moment, and at the same time, everyone&#39;s saturated.</p>
<p>Anyway, we talked about all this (not just this, don&#39;t worry) and I hope this little summary was interesting to you.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building an app independent from US tech in 2025]]></title>
            <link>https://eventuallymaking.io/p/building-an-app-independent-from-us-tech-in-2025</link>
            <guid>https://eventuallymaking.io/p/building-an-app-independent-from-us-tech-in-2025</guid>
            <pubDate>Sat, 06 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[As a European, can you be 100% independent from US tech?]]></description>
            <content:encoded><![CDATA[<p>As a European, can you be 100% independent from US tech?</p>
<p>That&#39;s probably the wrong question.</p>
<p><strong>Why</strong> would you want to be?</p>
<p>&quot;Why&quot; is the better question.</p>
<p>Being dependent on any single country means taking risks with your own freedom of expression and security.</p>
<p>Europe has always been influenced by the US, but that country has now become hostile. Recent events have shown us the real risks of this dependency:</p>
<ul>
<li>Multiple scandals involving social networks—X and Facebook—used to influence European elections</li>
<li>Grok, Musk&#39;s AI, repeatedly generating hateful content</li>
<li>Sanctions against the International Criminal Court investigating potential war crimes in Gaza</li>
</ul>
<p>Overnight, ICC judges found themselves <a href="https://www.heise.de/en/news/How-a-French-judge-was-digitally-cut-off-by-the-USA-11087561.html">cut off from the global economic system</a>—largely controlled by Visa, Mastercard, and American Express. Their accounts on all US platforms were shut down (Amazon, Airbnb, PayPal, you name it). Even non-American banks closed their accounts to avoid violating US rules.</p>
<p>At the same time, the entire ICC administration was cut off from their tools—emails, documentation, everything.</p>
<p>I could also mention the <a href="https://www.cnn.com/2025/12/05/politics/trump-national-security-strategy">National Security Strategy</a> published two days ago. This report explicitly states the intent to influence domestic politics in European countries.</p>
<p>Steve Bannon, Trump&#39;s advisor, created a foundation in Brussels with the goal of weakening the European Union by <a href="https://prospect.org/culture/the-brink-inside-steve-bannon-s-plan-ruin-world/">uniting far-right parties across Europe around a common goal</a>: &quot;maiming the European Union.&quot;</p>
<p>This isn&#39;t paranoia. It&#39;s a <strong>documented</strong> and <strong>official</strong> strategy. European tech dependency isn&#39;t just a theoretical risk—it&#39;s being actively exploited as a geopolitical lever.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1765056109162-hz5wnfd.jpg" alt="Musk is absolutely transparent about the US ambitions" /></p>
<p><strong>Going 100% European seems hard to achieve, but everyone can take small steps to shift the balance by using more non-US solutions.</strong></p>
<p>Back in April, I tried to list all the services I depended on calculating my tech dependency score.</p>
<p>Since then, I&#39;ve made progress:</p>
<ul>
<li>Switched to Proton for email, document storage, VPN, and password management. Proton has grown 5x in users over the past 4 years.</li>
<li>Left X, and soon Facebook (just waiting to post this article there before I do)</li>
<li>Stopped using Airbnb entirely—Booking only</li>
</ul>
<p>It&#39;s still far from perfect. It&#39;s really hard to quit Amazon, LinkedIn, and even harder when it comes to entertainment—Netflix, YouTube, Crunchyroll. The US dominates.</p>
<p>But technically, nothing prevents us from having a decentralized, non-US LinkedIn.</p>
<p>We&#39;re starting to see interesting things emerge, leveraging decentralized protocols like Mastodon&#39;s ActivityPub or Bluesky&#39;s AT Protocol:</p>
<ul>
<li>Instagram alternatives: Pixelfed (ActivityPub), <a href="http://Sprk.so">Sprk.so</a>, Flashes and Pinksky (AT Protocol)</li>
<li>Reddit alternative: Lemmy (ActivityPub)</li>
<li>TikTok alternative: Skylight (AT Protocol)</li>
<li>YouTube alternative: PeerTube (ActivityPub)</li>
<li>An initiative to create a <a href="https://www.reuters.com/business/media-telecom/european-project-eurosky-aims-reduce-reliance-us-tech-giants-2025-07-15/">European PDS for Bluesky</a>, removing dependency on the sole US-based PDS</li>
</ul>
<p>EDIT: There&#39;s a great directory of AT Protocol alternatives here: <a href="https://blueskydirectory.com/">https://blueskydirectory.com/</a></p>
<p>It&#39;s far from perfect. A social network needs critical mass to become attractive. Some of these initiatives are nowhere near replacing their big sisters.</p>
<p><strong>But technology is no longer a barrier.</strong></p>
<p>And that alone <strong>is good news</strong>. Because the day we get cut off, we&#39;ll know how to manage without. But we shouldn&#39;t wait for that moment.</p>
<p>This is the responsibility of everyone who builds apps or decides which ones to buy for their companies.</p>
<p>I work in software development. I set myself a goal: avoid US tools as much as possible when building new projects.</p>
<p>Last month, I started a new app: <a href="https://writizzy.com">Writizzy</a>. The project itself is an attempt to offer an alternative to US platforms like Substack, Medium, or WordPress.</p>
<p>I managed to use mostly non-US alternatives:</p>
<ul>
<li>Hosting on <strong>Hetzner</strong> servers (Germany)</li>
<li><strong>Coolify</strong> as a self-hosted PaaS (Hungary)</li>
<li>CDN and web storage on <strong><a href="http://Bunny.net">Bunny.net</a></strong> (Slovenia)—one of my favorites, easily replaces Cloudflare and goes way beyond just CDN</li>
<li>DNS on <strong>Hostinger</strong>(Germany), gradually moving to <a href="http://Bunny.net">Bunny.net</a></li>
<li>Transactional emails on <strong>Brevo</strong>(France)</li>
<li>Email accounts for me and Thomas (my cofounder) on <strong>Proton</strong>(Switzerland)</li>
<li>S3 storage on <strong>Scaleway</strong> (France)</li>
</ul>
<p>I still have some pain points:</p>
<ul>
<li><strong>Stripe.</strong> Hard to replace with something equally simple and affordable. I should probably look at Paddle (UK), but payment infrastructure isn&#39;t something you switch easily.</li>
<li><strong>GitHub.</strong> I don&#39;t know any obvious alternatives. GitLab is also US-based. Bitbucket (Australia) might work, but it&#39;s felt half-dead for a while. This is less critical than payments—switching providers would be straightforward. I need to find something.</li>
<li><strong>Claude Code.</strong> I have zero non-US alternatives to suggest. I could try DeepSeek, but swapping US influence for Chinese influence has its own risks. And Mistral wasn&#39;t up to par last time I tried. This one is genuinely bad news.</li>
</ul>
<p>Anyway, if you&#39;re starting an app today, you owe it to yourself to think about this. Don&#39;t start on the wrong foundations.</p>
<p>Also understand: by using these services, you help them improve. They&#39;ll have the revenue and feedback to get better.</p>
<p>I get that this is a real handicap for legacy applications. I know the effort required to transform an existing app, especially with no direct financial gain. But you need to consider this as a <strong>risk factor</strong>.</p>
<p>Imagine what happens tomorrow when Trump decides to sanction your company because... whatever… he doesn&#39;t need a good reason. All of US Big Tech funded Trump and served him hors d&#39;oeuvres at his inauguration. They&#39;re expecting returns on investment, and that will come through industrial espionage and/or blockades. Any European company can be targeted at any moment.</p>
<p>In public administrations, there&#39;s a growing movement to move away from Microsoft tools. In Germany, France, Denmark, Italy, and Spain, we&#39;re seeing administrations migrate to Linux, LibreOffice, Thunderbird, and more.</p>
<p>That&#39;s good news. But it needs to be followed by private companies—and for that, we need to be more ambitious about the quality of software we create. Naive sovereignty that just sells &quot;being European&quot; while delivering poor quality doesn&#39;t work.</p>
<p>So it&#39;s on us to make the right choices and be ambitious. Let&#39;s not wait until it&#39;s too late.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Implementing a tracking-free captcha with Altcha and Nuxt]]></title>
            <link>https://eventuallymaking.io/p/implementing-a-tracking-free-captcha-with-altcha-and-nuxt</link>
            <guid>https://eventuallymaking.io/p/implementing-a-tracking-free-captcha-with-altcha-and-nuxt</guid>
            <pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Setting up Altcha captcha with Nuxt. Open-source, no tracking, includes code... and why it didn't solve my spam problem.]]></description>
            <content:encoded><![CDATA[<p>For the past few days, I&#39;ve noticed several suspicious uses of my contact form.</p>
<p>Looking closer, I noticed that each contact form submission was followed by a user signup with the same email and a name that always followed the same pattern:</p>
<p>qSfDMiWAiLnpYYzdCeCWd </p>
<p>fePXzKXbAmiLAweNZ</p>
<p>etc... Let&#39;s just say their membership in the human species seems particularly dubious.</p>
<p>Anyway, it&#39;s probably time to add some controls, and one of the most famous is the captcha.</p>
<h2>Next-generation captchas</h2>
<p>Everyone knows captchas – they&#39;re annoying, probably on par with cookie consent banners.</p>
<p>Nowadays we see captchas where you have to identify traffic lights, solve additions, drag a puzzle piece to the right spot, and so on.</p>
<p>But you may have noticed that lately we&#39;re also seeing simple forms with a checkbox: &quot;I am not a robot&quot;.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1764749254941-124yicj.jpg" alt="I'm not a robot" /></p>
<p>Sometimes the captcha isn&#39;t even visible anymore, with detection happening without asking you anything.</p>
<p>So how does it work? And how can I add it to my application?</p>
<h2>Nuxt Turnstile, the default solution with Nuxt</h2>
<p>In the Nuxt ecosystem, the most common solution is <a href="https://nuxt.com/modules/turnstile">Nuxt turnstile</a>. The documentation is pretty clear on how to add it.</p>
<p>It&#39;s a great solution, but it relies on <a href="https://nuxt.com/modules/turnstile">Cloudflare turnstile</a>, and I&#39;m trying to use only european products for Writizzy and Hakanai.</p>
<p>Still, the documentation helps understand a bit better how next-generation captchas work.</p>
<p>When the page loads, the turnstile widget performs client-side checks:</p>
<ul>
<li>**proof of space: **The script asks the client to generate and store an amount of data according to a predefined algorithm, then asks for the byte at a given position. Not only does this take time, but it&#39;s difficult to automate at scale.</li>
<li><strong>trivial browser detections:</strong> The idea is to try to detect a bot (no plugins, webdriver control, etc.). Fingerprinting also helps in this case. It collects all available info about the browser, OS, available APIs, resolution, etc.</li>
</ul>
<p>Note that fingerprinting can be frowned upon by GDPR, which may consider it as uniquely identifying a person. Personally, I find that debatable, but in the context of anti-spam protection, we&#39;re kind of chasing our tail here since it would be necessary to ask bots for their permission to try to detect them. We&#39;re at the limits of absurdity here.</p>
<p>But let&#39;s continue. Based on the previous info, the script sends all this to Cloudflare. Based on this info and relying on a huge database of worldwide traffic, Cloudflare calculates a percentage chance that the user is a bot.</p>
<p>The form will vary between:</p>
<ul>
<li>nothing to do, Cloudflare is convinced it&#39;s a human</li>
<li>a checkbox &quot;I am not a robot&quot;</li>
<li>a more elaborate captcha if the suspicion is really strong</li>
<li>a blocking page when there&#39;s no doubt about the suspicion</li>
</ul>
<p>Now, you might say, the checkbox is a bit light, isn&#39;t it? If I&#39;ve gotten this far, I can easily automate a click on a checkbox. Especially since Cloudflare is everywhere, it&#39;s necessarily the same form everywhere.</p>
<p>Yes... But...</p>
<p>First, the way you check the box will be analyzed. Is the click too fast, does it seem automated, is the mouse path to reach the box natural? All this can trigger additional protection. </p>
<p><em>EDIT: Turnstile might not do this operation. reCaptcha, Google&#39;s solution, is known for doing it. Turnstile is less explicit on the subject.</em></p>
<p>But on top of that, the checkbox triggers a challenge, a small calculation requested by Cloudflare that your client must perform. The result is what we call a <strong>proof of work</strong>.</p>
<p>This work is slow for a computer. We&#39;re talking about 500ms, an eternity for a machine. For a human user, it&#39;s totally anecdotal. And the satisfaction of having proven their humanity makes you forget those 500 little milliseconds.</p>
<p>On the other hand, for a bot, this time will be a real problem if it needs to automate the creation of hundreds or thousands of accounts.</p>
<p>So it&#39;s not impossible to check this box, but it&#39;s costly. And it&#39;s supposed to make the economic equation uninteresting at high volumes.</p>
<p>Now, even though all this is nice, I still don&#39;t want to use Cloudflare, so how do I replace it?</p>
<h2>Altcha, an open-source alternative</h2>
<p>During my research, I came across <a href="https://altcha.org/">altcha</a>. The solution is open source, requires no calls to external servers, and shares no data.</p>
<p>The implementation requires requesting the Proof of Work (the famous JavaScript challenge) from your server. Here we&#39;ll initiate it from the Nuxt backend, in a handler:</p>
<p>typescript</p>
<pre><code class="language-typescript">// server/api/altcha/challenge.get.ts
import { createChallenge } from &#39;altcha-lib&#39;

export default defineEventHandler(async () =&gt; {
  const hmacKey = useRuntimeConfig().altchaHmacKey as string

  return createChallenge({
    hmacKey,
    maxnumber: 100000,
    expires: new Date(Date.now() + 60000) // 1 minute
  })
})
</code></pre>
<p>In the contact form page, we&#39;ll add a Vue component:</p>
<p>vue</p>
<pre><code class="language-vue">	&lt;ClientOnly&gt;
	  &lt;Altcha
		v-model:payload=&quot;altchaPayload&quot;
	  /&gt;
	&lt;/ClientOnly&gt;
</code></pre>
<p>This <code>altchaPayload</code> will be added to the post payload, for example:</p>
<p>typescript</p>
<pre><code class="language-typescript">    await $fetch(&#39;/api/contact&#39;, {
      method: &#39;POST&#39;,
      body: {
        email: loggedIn.value ? user.value?.email : event.data.email,
        subject: event.data.subject,
        message: event.data.message,
        altcha: altchaPayload.value
      }
    })
</code></pre>
<p>The calculation result will then be verified in the <code>/api/contact</code> endpoint</p>
<p>typescript</p>
<pre><code class="language-typescript">    const hmacKey = useRuntimeConfig().altchaHmacKey as string

    const ok = await verifySolution(data.altcha, hmacKey)
    if (!ok) {
      throw createError({ statusCode: 400, message: &#39;Invalid challenge&#39; })
    }
</code></pre>
<p>The Vue component I mentioned earlier is this one:</p>
<p>vue</p>
<pre><code class="language-vue">&lt;script setup lang=&quot;ts&quot;&gt;
import { onMounted, onUnmounted, ref, watch } from &#39;vue&#39;

const altchaWidget = ref&lt;HTMLElement | null&gt;(null)
const props = defineProps({
  payload: {
    type: String,
    required: false
  }
})
const emit = defineEmits&lt;{
  (e: &#39;update:payload&#39;, value: string): void
}&gt;()
const internalValue = ref(props.payload)

watch(internalValue, (v) =&gt; {
  emit(&#39;update:payload&#39;, v || &#39;&#39;)
})

const onStateChange = (ev: CustomEvent | Event) =&gt; {
  if (&#39;detail&#39; in ev) {
    const { payload, state } = ev.detail
    if (state === &#39;verified&#39; &amp;&amp; payload) {
      internalValue.value = payload
    } else {
      internalValue.value = &#39;&#39;
    }
  }
}

onMounted(() =&gt; {
  const script = document.createElement(&#39;script&#39;)
  script.src = &#39;https://cdn.jsdelivr.net/gh/altcha-org/altcha@main/dist/altcha.min.js&#39;
  script.type = &#39;module&#39;
  document.head.appendChild(script)

  if (altchaWidget.value) {
    altchaWidget.value.addEventListener(&#39;statechange&#39;, onStateChange)
  }
})

onUnmounted(() =&gt; {
  if (altchaWidget.value) {
    altchaWidget.value.removeEventListener(&#39;statechange&#39;, onStateChange)
  }
})
&lt;/script&gt;

&lt;template&gt;
  &lt;altcha-widget
    ref=&quot;altchaWidget&quot;
    challengeurl=&quot;/api/altcha/challenge&quot;
    hidelogo
    hidefooter
    style=&quot;--altcha-max-width:100%&quot;
  /&gt;
&lt;/template&gt;
</code></pre>
<p>And there you go, the <a href="https://pulse.hakanai.io/contact">contact page</a> and the <a href="https://pulse.hakanai.io/signup">signup page</a> are now protected by this altcha.</p>
<p>Now, does it work?</p>
<h2>Altcha&#39;s limitations</h2>
<p>The implementation was done yesterday. And unfortunately, I&#39;m still seeing very suspicious signups on Pulse. So clearly, Altcha didn&#39;t do its job.</p>
<p>However, now that we know how it works, it&#39;s easier to understand why it doesn&#39;t work.</p>
<p>Altcha doesn&#39;t do any of the checks that Turnstile does:</p>
<ul>
<li>no proof of space</li>
<li>no fingerprinting</li>
<li>no fingerprint verification with Cloudflare</li>
<li>no behavioral verification of the mouse click on the checkbox.</li>
</ul>
<p>The only protection is the proof of work, which only costs the attacker time.</p>
<p>Now for Pulse, for reasons I don&#39;t understand, the person having fun creating accounts makes about 4 per day. The cost of the proof of work is negligible in this case.</p>
<p>So Altcha is not suited for this type of &quot;slow attack&quot;.</p>
<p>Anyway, I&#39;ll have to find another workaround... And I&#39;m open to your suggestions.</p>
]]></content:encoded>
            <category>nuxt</category>
            <category>captcha</category>
            <category>altcha</category>
            <enclosure url="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1764749229575-e5wh6ob.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Tim Ferriss Promised Freedom. Indie Hackers Are Selling Shovels]]></title>
            <link>https://eventuallymaking.io/p/tim-ferriss-promised-freedom-indie-hackers-are-selling-shovels</link>
            <guid>https://eventuallymaking.io/p/tim-ferriss-promised-freedom-indie-hackers-are-selling-shovels</guid>
            <pubDate>Sun, 30 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Tim Ferriss promised freedom through automation. Today's indie hackers are trapped selling courses about selling courses. Here's how a movement lost its soul]]></description>
            <content:encoded><![CDATA[<p>Fake Stripe notifications. Fake revenue dashboards. Courses teaching you how to sell courses about building SaaS products. The indie hacker movement has become a gold rush where everyone&#39;s selling shovels. </p>
<p>But it didn&#39;t start this way. It started in 2007 with a book about freedom and time. Tim Ferriss&#39;s &quot;4-Hour Work Week&quot; wasn&#39;t really about working 4 hours - it was about reclaiming your time to pursue what matters. </p>
<p>Somehow, we turned that into a movement obsessed with &quot;passive income&quot; and easy money. I co-founded Malt in 2013, a freelance marketplace that grew to 700 people across Europe. I can tell you: you don&#39;t build that working 4 hours a week. But I can also tell you where this whole thing went wrong.</p>
<h2>The Origins: Millennials vs. The 9-to-5</h2>
<p>Remember the 2008 financial crisis? It hit the entire world. In the US, unemployment soared. But beyond the economic crisis, it marked something bigger: the <strong>millennial generation questioning their relationship with work</strong>. The 2000s signaled a break from the myth of lifetime employment and a general rejection of the traditional 9-to-5 grind. The social contract was broken, so many people decided to go their own way.</p>
<p>It&#39;s in this exact context, in 2007, that Tim Ferriss released &quot;The 4-Hour Workweek.&quot;</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1764599752398-sqh0ihc.jpg" alt="Cover of "the 4h work week"" /></p>
<p>And the story he told resonated with a lot of people.</p>
<p>His idea: automate your business, make yourself unnecessary, and then go live through your &quot;muses&quot; - personal pursuits that truly matter to you. </p>
<p>For a whole generation of tech-savvy readers, this was a revelation. If you can automate your work - something totally within reach for people in software - you can escape the alienating constraints of traditional employment. You can automate your income and live somewhere with a lower cost of living.</p>
<p>Tim Ferriss in 2007 had just popularized digital nomadism and the concept of passive income.</p>
<p>In short, Tim Ferriss became a solution to all the generational frustrations of millennials and soon Gen Z too.</p>
<p>And since then, many others have followed. But has his legacy remained intact? Well, not exactly.</p>
<h2>The Indie Hackers Era</h2>
<p>In 2010, I went freelance. But I quickly realized I enjoyed building products, largely inspired by startup culture - though it was still young in France at the time.</p>
<p>One book inspired me above all: &quot;Rework.&quot;</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1764599636096-c6w9db5.png" alt="Rework cover" /></p>
<p>Rework was a shot fired across the traditional working world, questioning all standard work habits. It demolished presenteeism, meeting culture, and basically everything that characterized old-school corporate employment.</p>
<p>Following Rework, in 2013 came the second installment: &quot;Remote,&quot; which, as the name suggests, dealt with remote work.</p>
<p>Our relationship with work needed to change, I was convinced of it. In this context, I first created Lateral-Thoughts, then Malt in early 2013.</p>
<p>But parallel to this startup movement, another more frugal movement was launching.</p>
<p>Also in 2013, Jennifer Dewalt set herself a challenge: <a href="https://jenniferdewalt.com/">build 180 websites in 180 days to learn programming</a>. This challenge got a lot of attention and sparked a new trend, later taken up by a young Dutch guy who would attempt to create <a href="https://levels.io/12-startups-12-months/">12 startups in 12 months</a>: Pieter Levels.</p>
<p>This young Dutchman, expatriated in Asia, was one of the first proto-digital nomads. The solopreneur/digital nomad movement was officially launched, represented for a long time by this famous Pieter.</p>
<p>And this movement would soon take on a new name, a new identity.</p>
<p>People creating software solo, without external funding, existed before but it was still anecdotal and scattered. Then in 2016, Courtland Allen created the <a href="https://www.indiehackers.com/">Indie Hackers</a> website and everything changed. He gave the movement a name, created a community, and above all, normalized something radical: publicly sharing your revenue, failures, and strategies.</p>
<p>This was the origin of what we&#39;d call &quot;building in public.&quot;</p>
<p>It wasn&#39;t new - I&#39;ve been blogging since 2001 myself - but it would establish a culture of transparency...</p>
<p>Except that it also created a playbook for faking success.</p>
<p>And that&#39;s maybe where everything went off the rails.</p>
<h2>The Shovel Sellers</h2>
<p>Between 2013 and 2024, I was far from all this. I was building a company that would grow to 700 people and cover all of Europe. Far from the 4-hour work week.</p>
<p>But in 2024, I chose to change paths and return to my roots, back to my freelance beginnings and my early inspirations when I read Rework and Remote.</p>
<p>Except that in the meantime, the landscape had drastically changed.</p>
<p>The floodgates opened. First no-code, now AI. Anyone can build software. And Tim Ferriss&#39;s &quot;passive income&quot; concept morphed into an obsession: <strong>SaaS</strong>, the holy grail that supposedly generates revenue while you sleep. Except it doesn&#39;t work that way. But that won&#39;t stop people from selling you courses on how to build one.</p>
<p>::gallery
<img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1764600237652-vgyodnr.jpg" alt="" />
<img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1764600258256-g0r7b4o.jpg" alt="" />
<img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1764600274227-7bmd0n8.jpg" alt="" />
<img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1764600295213-828w8ry.jpg" alt="" />
::</p>
<p>To support this mirage, we see fake screenshots showing fake revenue, fake Stripe notification popups, fake dashboards - everything aligned with one of the mantras from the startup world: &quot;<em>Fake it until you make it.</em>&quot;</p>
<p>And the worst part? Others started seeing the opportunity. <strong>The best thing isn&#39;t selling shovels - it&#39;s running the bar where everyone comes to drink in the evening. Selling alcohol to the shovel sellers.</strong></p>
<p>Because now you can buy the app that lets you create fake dashboards, fake payment notifications, fake analytics panels - everything I just mentioned. Not to mention courses teaching you how to sell courses on creating SaaS products. And now there are even apps designed to prove your MRR isn&#39;t fake.</p>
<p>Does it sound a bit like a Ponzi scheme? Maybe.</p>
<p>But more importantly, beyond all that, when I say the indie hacker movement has lost its way, there&#39;s one thing I especially want to talk about.</p>
<p>Many have lost sight of one of the key concepts Tim Ferriss talked about.</p>
<h2>What Everyone Missed</h2>
<p>In 2010, as I said, I went freelance. And one of my first motivations was, let&#39;s say, somewhat financial.</p>
<p>Except that in my first year, I probably chased that too much. I worked way too much and yes, I had a great year financially, but I burned out. Simple as that.</p>
<p>Starting in 2011, I had a revelation and completely changed my approach. I set a maximum income threshold for myself.</p>
<p>My goal became to earn less, which would by default make me work less.</p>
<p>Because at that moment, I realized something: by going freelance, what I&#39;d really gained wasn&#39;t the possibility of having more money, but the possibility of having more time.</p>
<p>And that&#39;s what Tim Ferriss talks about - the new wealth is time. It&#39;s time that allows you to pursue your muses.</p>
<p>Ferriss wanted to free himself from the constraints of salaried employment to dedicate himself to his muses. Whether it&#39;s tango, Sanda, or breakdancing for Tim Ferriss, it&#39;s hard to say he didn&#39;t work hard at those things. But in an unpaid way.</p>
<p>In reality, Tim Ferriss was working far more than 4 hours a week, just not in the traditional sense.</p>
<p>For a large majority of the current indie movement, the relationship with work has become toxic.</p>
<p>For every one Pieter Levels, there are hundreds of thousands of others who earn nothing and have no interest in what they&#39;re building which creates tons of soulless applications (yet another to-do app, yet another AI wrapper…).</p>
<p>Between the stress of results that never come and time consumed on topics that don&#39;t excite them, it&#39;s far from the dream sold by their guru.</p>
<h2>The Point</h2>
<p>Tim Ferriss&#39;s book wasn&#39;t so much about money as it was about the search for freedom - freedom over your time. Not to do nothing, but to work on finding meaning for yourself and for others.</p>
<p>And that&#39;s probably where the current movement has lost its way.</p>
<p>The indie hacker movement became a cargo cult. Everyone&#39;s copying the surface-level metrics (MRR! Growth! Passive income!) without understanding what made the original builders successful: they gave a shit about what they were building.</p>
<p>So before you let yourself be seduced by indie hacking, think carefully about the reasons driving you to do it.</p>
<p>If it&#39;s purely for financial reasons, the statistics aren&#39;t in your favor, and freelancing is much better suited.</p>
<p>But if the product you want to create is important to you, if it has meaning for you, then the game might be worth the candle.</p>
]]></content:encoded>
            <category>indie hacker</category>
        </item>
    </channel>
</rss>