<?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>Mon, 13 Jul 2026 00:01:44 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[How I Do Design as a Backend Developer]]></title>
            <link>https://eventuallymaking.io/p/how-i-do-design-as-a-backend-developer</link>
            <guid>https://eventuallymaking.io/p/how-i-do-design-as-a-backend-developer</guid>
            <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[From Bootstrap in 2011 to Claude Design in 2026, a look back at 15 years of web design evolution and design systems, seen through the eyes of a backend developer.]]></description>
            <content:encoded><![CDATA[<p>Imagine the place. It&#39;s dark, it&#39;s only 6pm but winter and cold have arrived.</p>
<p>We are in a classroom, unhygienic and unheated, like all suburban Paris classrooms, because the high priests of &#39;Macronomics&#39; decided it was more interesting to pay millions of Euros for McKinsey PowerPoints than to <em>actually</em> invest in our future! ... I&#39;m getting off track</p>
<p>Briefly, a circle of people gathers, on small wooden chairs that hurt like hell. I&#39;m present, looking grim. Actually no I wasn&#39;t listening to Jean-Michel who just spoke but I&#39;m still trying to understand how the Spurs managed to mess up so badly in the last games of the 2026 NBA Finals.</p>
<p>And then I get up and introduce myself.</p>
<p><em>&quot;Hello I&#39;m Hugo Lassiège, I&#39;m first and foremost a backend developer and here&#39;s my first version of Malt in 2012&quot;</em></p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781337106330-t7giy22.png" alt="Malt version from 2012 (never shown publicly, and we can understand why)" /></p>
<p><em><strong>Basically, I&#39;m terrible at design.</strong></em></p>
<p>So how in 2026 do I manage to propose designs like this blog&#39;s? That&#39;s what I propose to show you in this post.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781338183757-789wt64.png?width=400" alt="thumbnail of the eventuallycoding.com blog" /></p>
<h2>2011, the army of clones</h2>
<p>::callout{type=primary}
If the somewhat historical part doesn&#39;t interest you that much, you can skip directly to the next sections to go to my current workflow which is described further down.
::</p>
<p>2012 was quite a long time ago and at the time I was using <a href="https://getbootstrap.com/">Bootstrap</a> primarily, which explains that little very characteristic style from the first screenshot (mixed with frankly questionable aesthetic tastes, I&#39;ll grant you).</p>
<p>Because yes, in 2011 a framework came out, Bootstrap if you&#39;ve been following, which offered to make available the official UI kit used at Twitter. Inside we found the guidelines for making buttons, forms, progress bars, all in the spirit of the blue bird. We also found all the tools to more easily build responsive websites with the famous grid system that would last a long time. A very long time.</p>
<p>For backend devs like me, that is to say those with more than modest taste for design, it was an opportunity to start with simple bases to finally make websites that don&#39;t look like they came out of a koala&#39;s acid trip imagination.</p>
<p>Following Bootstrap several other libraries came out, <a href="https://get.foundation/index.html">Foundation</a>, <a href="https://materializecss.com/">Materializecss</a>, and so on but always with that little syndrome for sites using them of &quot;but damn, what is this army of clones&quot;.</p>
<h2>From atomic design to design systems</h2>
<p>Now it was nice to have a standard grid and buttons, but you still had to assemble them together. If buttons, input fields, text blocks were atoms, you needed to give a structure to assemble them in the form of molecules.</p>
<p>::gallery
<img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781340823200-qj40ghz.webp" alt="" />
<img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781340845121-az55kfv.webp" alt="" />
::</p>
<p>This is exactly this analogy that would be progressively pushed starting in 2013/2014 by Brad Frost, under the name of <a href="https://atomicdesign.bradfrost.com/">Atomic Design</a>.</p>
<p>This notion of molecules is really what you might call a component. A component fixes the assembly of our molecules as well as a behavior. And that&#39;s exactly what we find in several frameworks released in the same period, React (2013), Vue (2014) and even more generally Web Components (2011).</p>
<p>As an aside, in my previous company (Malt) we grew in the same period, we thought it would be a great idea to mix all of this. We did Bootstrap, then we grouped all of that with an in-house framework (HopModules), we added Vue around 2015, then built Web Components, then used Nuxt a bit later to finally realize around 2023 that actually, that was a lot of everything...</p>
<p>(But <a href="https://eventuallymaking.io/p/the-singapore-project-migration-to-nuxt">it's another story I tell here</a>).</p>
<p>Briefly, we started building &quot;components&quot; that we assembled, standardized to finally arrive at what we call today, <a href="https://www.figma.com/blog/design-systems-101-what-is-a-design-system/">a design system</a>, that is to say sorts of Lego bricks that you can assemble together and that guarantee a certain identity, a voice for a site. Design systems that are even often public and that you can <a href="https://designsystemsrepo.com/design-systems">find</a> and <a href="https://adele.uxpin.com/">study</a> on different sites.</p>
<h2>Tailwind and design tokens</h2>
<p>To build a design system, there was a missing brick. It&#39;s nice to say for example that your buttons have a border radius of 4px. 4, not 2, not 6 but 4.</p>
<p>And it&#39;s rather simple to express globally:</p>
<pre><code class="language-css">.button { border-radius: 4px; }
</code></pre>
<p>But imagine you also want to align this radius on all your cards?</p>
<p>Imagine you want to define a global padding, a &quot;primary&quot; color for your main buttons, the possible font sizes across the entire site.</p>
<p>If the button is the atom, in reality there was a missing element below, how do you create our atoms?</p>
<p>During the 2010s (perhaps via <strong>Jina Anne</strong> at Salesforce in 2014), someone introduces a new term: the design token.</p>
<p>A design token is the definition of the interface structure by these tokens.</p>
<p>For example:</p>
<ul>
<li><code>#0055ff</code> becomes the color-brand-primary token</li>
<li><code>16px</code> becomes the spacing-medium</li>
</ul>
<p>etc...</p>
<p>And that&#39;s exactly the approach of <a href="https://tailwindcss.com/">Tailwind</a> in 2017 which arrives with definitions of design tokens via a bunch of utility classes that will become very very used in current websites.</p>
<p>So, Tailwind doesn&#39;t get unanimity for many reasons and it was never introduced at Malt. But for my new projects, it became the default solution. And now we can talk about my design workflow :)</p>
<h2>My pre-2024 workflow, Tailwind and its component libraries</h2>
<p>Pre-2024 (soon we&#39;ll talk about the pre-AI agent era...) I launched <a href="https://hakanai.io/">Hakanai.io</a>. Let&#39;s not fool ourselves, it&#39;s better than what I was doing in 2012, but it&#39;s also as cheerful as an autumn day in Melun.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781343183085-nw0p52a.png?width=400" alt="hakanai.io interface created in 2024" /></p>
<p>Despite this, here we find my 2024 design workflow, the use of Tailwind and component libraries such as <a href="http://preline.io">preline.io</a> or <a href="http://Flowbite.com">Flowbite.com</a>. It&#39;s an assembly of more or less visually coherent blocks but which have the advantage of having structural coherence through Tailwind&#39;s design tokens.</p>
<p>It seems like nothing but it&#39;s already good. The spacing and breathing are consistent, the colors give an identity, the fonts are uniform, in short, it&#39;s a design system properly used. So yes, even Harry Potter drained of his soul by a Dementor looks better, but it works.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781343596032-0f4jqg2.png?width=400" alt="a Dementor expressing its love for Harry" /></p>
<p>And that&#39;s broadly the spirit of most &quot;indie&quot; sites released in that period. Correct. But nothing to write home about.</p>
<h2>And then came AI</h2>
<p>Starting in 2024 through early 2025, my workflow became less manual. I started building interfaces by asking Claude to do it. It was still copy-paste between the chat in the browser and my IDE. It was only HTML/JS/CSS and then I did the adaptation by hand.</p>
<p>And then Claude came into the IDE, so it could directly create mockups in my code. However Claude reproduces the style it sees in the other pages, so since the site was created pre-2024, well it reproduced my somewhat &quot;meeehhh&quot; style from before.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781343991407-k36dyw0.png?width=800" alt="the broadcast.hakanai.io dashboard" /></p>
<p>So already in 2025, I started changing my workflow for certain pages and especially the first <a href="https://writizzy.com/themes">themes available</a> on writizzy.com. I started from a blank slate, giving some constraints but making sure Claude didn&#39;t rely on existing work.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781344831253-wyx9geb.png?width=400" alt="forge theme on writizzy" /></p>
<p>Sometimes I asked it to draw inspiration from known software, here with Notion:</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781344881522-ve5j1fy.png?width=400" alt="notion theme on writizzy" /></p>
<p>Despite this, Claude has a certain tendency after a while to produce pretty much the same patterns and you can increasingly recognize an interface made by an AI. It&#39;s clean, it&#39;s better than what I produce alone, but it lacks originality. For admin interface in a SAAS it&#39;s not a big deal but to stand out on the internet, you have to make more effort.</p>
<p>I started seeing skills appear to avoid the &quot;slopification&quot;: <a href="https://www.tasteskill.dev/">tasteskill</a> and <a href="https://impeccable.style/">impeccable</a> but which I haven&#39;t personally tested. On the other hand, for some time I&#39;ve been systematically using <a href="https://www.anthropic.com/news/claude-design-anthropic-labs">Claude Design</a> and there, I see a significant improvement in what I produce.</p>
<p>First, what is Claude Design?</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781345330244-c0mqd9v.png?width=800" alt="Claude Design interface" /></p>
<p>Claude Design is specially optimized for interface creation, whether for its system instructions which are optimized for UI (but not UX!!), and through its tooling.</p>
<p>CD will indeed be able to visualize the result and iterate autonomously via screenshots. You&#39;ll be able to have a &quot;tweaks&quot; panel to visualize options, make low fidelity mockups or finished interfaces, comment on areas, etc...</p>
<p>But especially CD can start from a screenshot to get a vibe. So if I take the tux theme we can see in the screenshot above, I started from <a href="https://www.mux.com/">a site whose graphic vibe I appreciated</a>, I gave it an image and instructions for it to capture the essence: the grids, the particularly bright accents in certain places, the thick and tilted underlines etc... I had to iterate, the first draft had issues but the result is rather interesting.</p>
<p>The big limitation is that CD can&#39;t understand animations (except to copy paste the code from the html page), yet that&#39;s one of the strengths of the original site and for now it remains a weakness of my workflow.</p>
<p>Another use case is to start from a design system. You can define one directly, or iterate based on the model that seems most relevant to you. Here for example, it&#39;s the Writizzy dashboard in its new style. And now each new page starts from this one which serves as a &quot;design system&quot; to build the next ones.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781345865727-sr54icq.png?width=800" alt="Writizzy design system" /></p>
<p>In short my workflows are as follows:</p>
<ul>
<li>creating a mockup with Claude Design with 3 options:<ul>
<li>from a brief</li>
<li>from a screenshot</li>
<li>from a design system</li>
</ul>
</li>
<li>implementation in my own code via an &quot;implement-mockup&quot; skill that explains how to transcribe the html code produced by Claude in my technologies (nuxt-ui, tailwind)</li>
</ul>
<p>And more recently, I&#39;m testing:</p>
<ul>
<li>use of agent-browser or playwright to test the interface, especially in responsive</li>
</ul>
<p>So don&#39;t be mistaken, I much prefer working with a designer and I would when Writizzy gets bigger. But to get started, for an indie site, it remains much better than what I could do before and the level of expectations from users has become so much greater now that anyway, it&#39;s no longer really an option to do &quot;like before&quot;. Because yes, design gives a voice to a site, an identity. That and of course the text, on the page, the way you address readers. Without identity, a site, an application, doesn&#39;t hold your attention.</p>
<p>Of course it&#39;s less true on a blog post, you come to read the content, not the container, or on an admin interface of a software. But still, you don&#39;t want to be punished visually and give the impression of &quot;meeehhh&quot;.</p>
<p>Now let&#39;s take a step back, is it perfect? No.</p>
<p>Yes, if you look at the path traveled in 15 years, it&#39;s easier to build websites. Since Bootstrap we&#39;ve sought order, structure, standardization and it works.</p>
<p>But at what cost? We&#39;ve classified components, documented margins, frozen systems. We&#39;ve rationalized beauty. The problem is that by wanting to systematize everything, we&#39;ve created an incredibly clean web, but terribly boring. A web without friction, but without soul. And AI, by its very nature, is the absolute queen for reproducing this kind of lukewarm consensus. If you ask it for &quot;clean&quot;, it will give you clean.</p>
<p>Do I sometimes feel a little nostalgic for the ugly web of the early 2000s? Maybe.</p>
<p>Well, not always.... It depends! I don&#39;t know!!!</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781348423472-5zwur3z.png?width=400" alt="yorkshire breeding site from the 2000s" /></p>
<p>But maybe that&#39;s exactly it, if AI relieves us of the plumbing, if the technique is automated, it&#39;s an opportunity for us to put back intention, identity, emotion (I didn&#39;t think I&#39;d write that one day). Maybe that&#39;s what the evolution of the coming years looks like, breaking the rules, and making ugly things again, but with a beautiful voice.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What I Learned Spending €100 on Online Ads]]></title>
            <link>https://eventuallymaking.io/p/what-i-learned-spending-100-euros-online-ads</link>
            <guid>https://eventuallymaking.io/p/what-i-learned-spending-100-euros-online-ads</guid>
            <pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How I spent my first 100 euros on Reddit Ads for my SaaS Writizzy. My mistakes, the impact on traffic, my metrics and the results.]]></description>
            <content:encoded><![CDATA[<p>Yes, we&#39;re going to talk about online advertising. Don&#39;t run away :) I know it&#39;s not really the typical topic of this blog but it will be an excuse to talk about analytics, conversion, marketing, customer acquisition strategy and I promise, it&#39;s rather interesting.</p>
<p>Building a product, an application, a website, that&#39;s good. It&#39;s already not given to everyone but it&#39;s actually the simplest part. Because yes, the difficulty comes after, when it comes to getting known.</p>
<p>A good product that nobody uses is about as useful as an election platform the day after the election. Everyone couldn&#39;t care less.</p>
<p><em>(I hope this joke will please the person who criticized me for talking politics in my last blog post :))</em></p>
<p>Anyway, in this post we&#39;re going to talk about online advertising.</p>
<h2>Paid acquisition</h2>
<p>Paid acquisition consists of spending money to try to create traffic to your site.</p>
<p>Inside we can categorize several things (non-exhaustive list): </p>
<ul>
<li>SEA (Search engine advertising) which consists of placing ads on search engines via Google Ads or Bing Ads</li>
<li>SMA (Social Media advertising) for ads on social networks (Linkedin Ads, Reddit Ads, Meta Ads etc..)</li>
<li>Retargeting: targeted advertising, the thing that shows you diaper ads on all the websites you visit because you had the misfortune of looking at an ad somewhere once</li>
<li>Sponsoring, which consists of paying for space in a newsletter, a video, a podcast etc… Yes, it&#39;s the famous VPN ads we see on all YouTuber channels for example.</li>
</ul>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781875355471-8d6xn3b.png?width=800" alt="different acquisition channels" /></p>
<p>I&#39;m starting out, I have a small budget, so SEA and SMA are the two most affordable channels for me.</p>
<p>So I isolated Google Ads and Reddit Ads but not everything went as planned.</p>
<h2>Conversion tracking</h2>
<p>Most tools like Google Ads, Reddit Ads and the like will try to optimize the display of content to the audience that is supposed to &quot;convert&quot; best. </p>
<p>Yes, because, selling diapers to teenagers for example, that&#39;s not the most effective.</p>
<p>You&#39;re going to pay for displaying an ad but at any given time, many people also want to display an ad so you&#39;re in competition with them on a bidding mechanism. </p>
<p>By default you can just say &quot;on this keyword, I want to bid a maximum of €3&quot; and that&#39;s it. </p>
<p>But for several years now, most ads platforms offer you to put tracking mechanisms on your site to determine if the conversion really happened, if the user really made a sale, or a signup. And this signal will then be used by the platform to decide whether to bid or not. </p>
<p>In short, before we used to say: &quot;I&#39;ll pay a maximum of €3 for this keyword&quot; but now we give a maximum budget over a period of time and ask the platform to spend it and figure out on its own to make it as effective as possible. Platforms will analyze thousands of signals in real time to decide whether they bid €1, €5 or nothing at all because the user is unlikely to convert.</p>
<p>Except that, bad luck, on <a href="http://Writizzy.com">Writizzy.com</a> I don&#39;t want to put <strong>any overly intrusive tracking tools</strong> that store private information and cross it on multiple sites. This is what allows me not to put cookie banners because I&#39;m fed up with cookie banners everywhere and also because I don&#39;t want to base my product on selling my users&#39; data. </p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781876172629-ypwxnnd.png?width=400" alt="Cookies are only meant to be eaten" /></p>
<p>Now I&#39;m not saying I don&#39;t do any tracking, simply my objective is not to send private data to a third party and to calculate the conversion myself to adjust my budgets.</p>
<p>::callout{type=warning}
Not sending conversion information to platforms has many limitations. You have to manually cut off campaigns that aren&#39;t working and the algorithm of these platforms won&#39;t be able to adapt to the right audience. I&#39;m well aware that in this specific case, my ethics handicap me. And I will probably look for solutions in the future to give conversion signals without sending private data. At some point you have to make a choice.
::</p>
<h2>Conversion metrics</h2>
<p>Here we&#39;re going to be interested in several metrics: </p>
<ul>
<li><strong>raw traffic</strong>: the number of visits related to an ad campaign</li>
<li><strong>traffic conversion</strong>: are these visitors doing something useful for me</li>
<li><strong>customer acquisition cost (CAC)</strong>, that is the ratio between the budget and the number of new users</li>
</ul>
<p>For example if I spend 100 euros to get 1 customer, then my CAC is 100 euros.</p>
<p>It becomes interesting when CAC is less than LTV.</p>
<p>Ok, this sentence is cryptic. </p>
<p>The <strong>LTV</strong> (lifetime value) represents the value of a customer over their lifetime, basically the revenue generated by your customer.</p>
<p>For example, imagine a subscription at 9 euros per month. If the average duration of a user on your platform is 12 months, then the average LTV is 108 euros. In reality it&#39;s less, since you would need to subtract operating costs (the server for example) but let&#39;s simplify it like that for now.</p>
<p>Ideally you estimate that you should have <code>LTV = 3 x CAC</code> </p>
<p>For <a href="http://Writizzy.com">Writizzy.com</a>, I only have 6 months of history so my LTV is necessarily limited to 6 months but I still have customers who took annual subscriptions. </p>
<p>Stripe tells me my LTV is <strong>181 euros</strong>. </p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781879448646-fxgnpew.png" alt="LTV provided by Stripe" /></p>
<p>Ok, this might seem weird since I told you I only had 6 months of history and therefore not enough hindsight to have customers who spent this amount.<br>Stripe actually uses this formula: </p>
<p>$$LTV = \frac{ARPU}{Churn}$$</p>
<ul>
<li><strong>ARPU</strong> (Average Revenue Per User) represents the average revenue per user per month.</li>
<li><strong>Churn</strong> is the percentage of customers who cancel each month.</li>
</ul>
<p>So it&#39;s more of a prediction than a reality. </p>
<p>I still think my history will greatly evolve this value. We&#39;ll see later but overall it means that already if <strong>by spending 100 euros I can sign a customer, then I&#39;m winning</strong>.</p>
<h2>Reddit Ads</h2>
<p>I preferred to start with Reddit Ads to spend my first 100 euros. I tried to use Google Ads but without success and the fact that I didn&#39;t have tracking active on my site created lots of errors for me. It&#39;s theoretically possible to do without it but Google refused to spend my money :)</p>
<p>Reddit, if you don&#39;t know, is a sort of mega forum where people talk about pretty much everything. It&#39;s estimated to represent between 1 and 2 billion monthly active users. It&#39;s colossal.</p>
<p>Reddit is organized as sub-forums, the subreddits. Each subreddit talks about a topic, for example <a href="https://www.reddit.com/r/Raclette/">raclette</a>, <a href="https://www.reddit.com/r/BreadStapledToTrees/">people who photograph slices of bread attached to trees</a>… or <a href="https://www.reddit.com/r/SubSimulatorGPT3/">channels reserved for AI</a>. Ok…</p>
<p>And it&#39;s possible to display ads on subreddits, so in theory to well-targeted populations, like, people who like writing blog articles and sending newsletters, which works well for me for Writizzy.</p>
<p>I set up two campaigns to test two approaches: </p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781880942231-h3xqdwc.png" alt="my reddit campaigns" /></p>
<p>One campaign emphasizes the price difference with Substack. </p>
<p>The second emphasizes that we must remain masters of our data. </p>
<p>I&#39;ll spoil it right away, I changed the ads and actually I focused everything on price after 3 days. </p>
<p>Here&#39;s the graph of impressions and the amount spent per day provided by Reddit: </p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781881150779-bsorujx.png" alt="graph of impressions provided by Reddit" /></p>
<p>We note: </p>
<ul>
<li>that I spent exactly 100 euros, at 20 euros per day for 5 days</li>
<li>that my number of impressions increased drastically on the 4th day.</li>
</ul>
<p>Because yes, I made some big mistakes…</p>
<h2>Campaign setup</h2>
<p>First mistake is that I thought it wasn&#39;t working. That is, I started the campaign on June 9. I did see things happening on the 9th and then for 2 days I thought Reddit wasn&#39;t doing anything anymore.</p>
<p>In fact each day I would come back with the same date filter so I didn&#39;t see more than June 9 and until June 11 I thought Reddit wasn&#39;t working…</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781881508798-bxuqgsh.png?width=400" alt="facepalm" /></p>
<p>To be honest, I also thought it wasn&#39;t working because I saw barely any additional traffic arriving at my site. </p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781881606561-qyjgoyx.png" alt="no significant traffic until June 12." /></p>
<p>And then I fixed it and traffic arrived. Here&#39;s what I changed:</p>
<ul>
<li>I switched from a Free form ad type to Image</li>
<li>I strongly restricted the audience by removing many countries from geographic targeting</li>
</ul>
<p>The Free form ad looks like a post and then the person has to click on the link placed in the text. Whereas the &quot;Image&quot; ad sends traffic directly to you when people click. Let me tell you the difference is gigantic. You can see it in the traffic, nobody came with the Free-form ad.</p>
<p>Audience restriction has other benefits, two for my case: </p>
<ul>
<li>my product uses a payment platform that doesn&#39;t allow payments from all countries, so it&#39;s pointless to target unsupported countries</li>
<li>I&#39;m subject to a lot of spam attacks from certain countries, might as well stay quiet about them…</li>
</ul>
<p>It&#39;s not a problem to target fewer people as long as they&#39;re the ones ready to convert and pay. </p>
<p>So I reduced the audience to North America and Europe.</p>
<h2>Landings and conversion</h2>
<p>Starting from June 11, I finally had traffic and we&#39;re talking about significant visits, between 5 and 7 times more than my usual traffic. Reddit became my number 1 traffic source at that point:</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1781882319958-cb4ntj3.png" alt="writizzy traffic by source" /></p>
<p>But it&#39;s nice to have visits, but it still needs to be useful.</p>
<p>At first I was sending <a href="https://writizzy.com/compare/substack">to the comparison page with Substack</a>. But this page isn&#39;t adapted for conversion, it&#39;s oriented for SEO. It doesn&#39;t match the ad that was on Reddit and which talked about the price difference with Substack.<br>(Plus here you see the latest version of the comparison page which was worse at that time).</p>
<p>So I quickly made <a href="https://writizzy.com/lp/substack">another page just to be a landing page</a> for the Reddit campaign. </p>
<p>The difference between a SEO-oriented page and a landing page is that the second can have conversion-oriented messaging and must limit the number of exit points outside the signup button. Whereas the &quot;SEO&quot; page should on the contrary participate in the internal linking of the site and should be more neutral to hope that the indexing bots propose it in search results. </p>
<h2>The bottom line</h2>
<p>Over these 5 days, I spent 100 euros, 20 euros per day.</p>
<p>In reality only 2 days were really effective because of my startup errors.</p>
<p>My tracking in openpanel was a bit off and I had to improve it to better see the origin of signups. I can hardly say that the signups from the period are linked to my campaigns. But it will be more the case for the next ones.</p>
<p>I had 1000 unique visitors over 2 days, on a population rather interested in my product. For info, I was doing 2000 unique visitors per month before, so adding 1000 visitors is a 50% increase in traffic. If I had properly configured my campaign from the start I could have aimed for 1500 more visits. </p>
<p>90 people clicked on signup, 44 made it all the way through.  That&#39;s still a very good number!</p>
<p>I have no paying conversions so far. Sure, a person can decide to convert their account in the future but for now it&#39;s not the case. So my CAC is not calculable and I&#39;m not profitable versus my LTV.</p>
<p><strong>A single paying customer would have made the campaign profitable</strong> but I can still convert free users in the future.</p>
<p>So will I try again? Yes certainly.</p>
<p>With the same budget I could have doubled or even tripled my monthly traffic if I hadn&#39;t made mistakes.</p>
<p>And then it&#39;s up to me to better manage my conversion on site. </p>
<p>I&#39;ll try to see how I could send the conversion signal to Reddit without sacrificing privacy, if it&#39;s possible. Apparently I should look at <a href="https://business.reddithelp.com/s/article/Conversions-API">Reddit's conversion API</a>.</p>
<p>And I&#39;ll try other angles for future landings.</p>
<p>It&#39;s definitely far from my comfort zone. But actually it&#39;s interesting to play with all these parameters and especially to see results. I&#39;m very numbers-oriented so this game is likely to be very addictive on the contrary.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Transactional Outbox Pattern with PostgreSQL and RabbitMQ]]></title>
            <link>https://eventuallymaking.io/p/the-transactional-outbox-pattern-with-postgresql-and-rabbitmq</link>
            <guid>https://eventuallymaking.io/p/the-transactional-outbox-pattern-with-postgresql-and-rabbitmq</guid>
            <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How do you secure your writes between PostgreSQL and RabbitMQ without penalizing your performance? Discover the Transactional Outbox pattern]]></description>
            <content:encoded><![CDATA[<p>How do you write to two different systems, for example RabbitMQ and PostgreSQL?</p>
<p>You might say it&#39;s pretty straightforward.</p>
<pre><code class="language-kotlin">@Transactional   
fun doSomething() {
    ... 
    // save in database through JPA
    myRepo.save(myEntity)
    // post message
    broker.publishEvent(event)
    ...
}
</code></pre>
<p>But what happens if there&#39;s an error, if the SQL transaction fails? You end up with a message published but for an operation that never actually took place.</p>
<h2>Two-phase commit transactions</h2>
<p>This is a relatively common problem and we&#39;re used to handling it with <a href="https://en.wikipedia.org/wiki/Two-phase_commit_protocol">2 Phase commit</a> transactions. The idea being to introduce a transaction across all operations to external systems, including RabbitMQ here.</p>
<p>It&#39;s a somewhat complex mechanism that requires an additional coordinator to ensure everything goes well before validating the write across all systems.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1780731744816-woxokv4.png?width=400" alt="2 phase commit workflow" /></p>
<p>But there are several problems.</p>
<p>The first is that it&#39;s not possible to do <a href="https://docs.spring.io/spring-amqp/reference/amqp/transactions.html">2PC transactions with RabbitMQ</a> (also called XA transactions). Which, you&#39;ll agree, is already a relatively significant problem in itself.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1780733931608-l51ra7c.png" alt="excerpt from documentation confirming absence of XA transactions with RabbitMQ" /></p>
<p>We could use ActiveMQ which supports 2PC transactions. But on the other hand, it would be a shame to write an article about PostgreSQL and RabbitMQ just to conclude that you need to use ActiveMQ instead, right?</p>
<p>The second problem is that in any case, a 2PC transaction penalizes the overall system performance. To synchronize two or more systems, not only will the total operation time never be less than the minimal time of the slowest system, but you also add a cost related to coordination.</p>
<p>The last problem is that you degrade overall availability. Availability being the multiplication of the average availability of each system. For example with two systems with 99% availability, the total system achieves 98% availability.</p>
<p>$0.99 \times 0.99 = 0.9801$</p>
<p>And that was basically the state of my knowledge until yesterday. I had already used XA transactions, I had already dealt with distributed systems issues and I&#39;ve worked on plenty of mitigation scenarios for this type of problem.</p>
<p>Yesterday I added RabbitMQ to Writizzy&#39;s stack and I used another solution: the <a href="https://microservices.io/patterns/data/transactional-outbox.html">Transactional Outbox</a> pattern.</p>
<h2>The transactional outbox pattern</h2>
<p>While the underlying concept isn&#39;t necessarily new, this specific pattern was popularized by Chris Richardson between 2014 and 2016.</p>
<p>The concept is &quot;simple&quot;:</p>
<ul>
<li>rely only on the database to publish an event (step 1)</li>
<li>read the table in an asynchronous job (step 2)</li>
<li>publish to the message queue from the job (step 3)</li>
</ul>
<p>The code becomes</p>
<pre><code class="language-kotlin">@Transactional   
fun doSomething() {
    ... 
    // save in database through JPA
    myRepo.save(myEntity)
    // save in database
    outboxRepo.save(event)
    ...
}
</code></pre>
<p>We now have only <strong>a single transaction</strong>, and the <strong>guarantee that the event is published only if the transaction succeeds</strong>. Event that will be sent to RabbitMQ later.</p>
<p>Now, to actually send to RabbitMQ, you need a job to read the table:</p>
<pre><code class="language-javascript">@Scheduled(fixedDelay = 500)
@SchedulerLock(name = &quot;outbox_publisher&quot;, lockAtMostFor = &quot;PT30S&quot;, lockAtLeastFor = &quot;PT0S&quot;)
fun run() {
    outboxPublisherService.publishPending()
}
</code></pre>
<p>Note the use of <a href="https://www.baeldung.com/shedlock-spring">SchedulerLock</a> here which allows the use of schedulers in a multi-node context, to avoid simultaneous reading by multiple applications. This allows replacing Quartz which I frequently used until now.</p>
<p>And you need the publication service code</p>
<pre><code class="language-javascript">
    fun publishPending() {
        val events = outboxEventRepository.findTop20ByOrderByCreatedAtAsc()
        events.forEach { event -&gt; publishEvent(event) }
    }

    private fun publishEvent(event: OutboxEvent) {
        try {
            rabbitTemplate.invoke { t -&gt;
                t.convertAndSend(event.exchange, event.routingKey, event.payload) { message -&gt;
                    message.messageProperties.messageId = event.id
                    message.messageProperties.headers[HEADER_ORIGINAL_EXCHANGE] = event.exchange
                    message.messageProperties.headers[HEADER_ORIGINAL_ROUTING_KEY] = event.routingKey
                    message
                }
                t.waitForConfirmsOrDie(5_000)
            }
            outboxEventRepository.delete(event)
        } catch (e: Exception) {
            logger.error(&quot;Failed to publish outbox event ${event.id} (${event.eventType})&quot;, e)
        }
    }
</code></pre>
<p>Note that we&#39;ve enabled RabbitMQ&#39;s <a href="https://www.rabbitmq.com/tutorials/tutorial-seven-java">publisher confirms</a> mode and we&#39;re waiting for write confirmation: <code>t.waitForConfirmsOrDie(5_000)</code></p>
<p>But you could say to me: &quot;you have the problem of double write to two systems again&quot;.</p>
<p>And... you&#39;re not wrong.</p>
<p>But it&#39;s simpler here. I only have 3 cases:</p>
<ul>
<li>Everything goes well, nothing to say, it&#39;s perfect.</li>
<li>RabbitMQ fails =&gt; we go into the exception, we log, we exit, the message stays in the table and will be retried</li>
<li>The PostgreSQL transaction fails. We go into the exception but the message is already sent!!</li>
</ul>
<p>The 3rd case is important, it will happen so you need to handle it. This implies that each consumer must be able to be <strong>idempotent</strong> on message reception. That is, each consumer must be able to accept the same event twice without incident.</p>
<p>Here strategies are multiple:</p>
<ul>
<li>read the message ID and store it somewhere to check that we don&#39;t do the operation twice, ideal for calls to external services</li>
<li>trigger idempotent operations (Example: set status = pending, even if we do it twice, it doesn&#39;t pose a problem)</li>
</ul>
<p>etc...</p>
<h2>And error handling?</h2>
<p>But there&#39;s an issue, if RabbitMQ goes down, if it&#39;s unreachable, if the disk is full, we&#39;re going to log the exception and with a batch running every 500ms I&#39;ll let you imagine the astronomical amount of logs that will produce. So we need a <a href="https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern">Circuit Breaker</a>. Conveniently, we can use <a href="https://resilience4j.readme.io/docs/getting-started">resilience4j</a>.</p>
<p>With a circuit breaker, we&#39;ll cut off sending to Rabbit in case of error and wait a bit before retrying. I&#39;ll leave the code here but won&#39;t detail it, that would be the subject of another article.</p>
<pre><code class="language-javascript">
init {
    circuitBreakerRegistry.circuitBreaker(&quot;rabbitmq-outbox&quot;).eventPublisher
        .onStateTransition { event -&gt;
            logger.warn(&quot;RabbitMQ circuit breaker: ${event.stateTransition}&quot;)
        }
}

@CircuitBreaker(name = &quot;rabbitmq-outbox&quot;, fallbackMethod = &quot;skipOnOpenCircuit&quot;)
fun publishPending() {
    val events = outboxEventRepository.findTop20ByOrderByCreatedAtAsc()
    for (event in events) {
        publishEvent(event)
    }
}

private fun skipOnOpenCircuit(e: CallNotPermittedException) {
    // Circuit open — state transition already logged via eventPublisher
}

private fun publishEvent(event: OutboxEvent) {
    try {
        rabbitTemplate.invoke { t -&gt;
            t.convertAndSend(event.exchange, event.routingKey, event.payload) { message -&gt;
                message.messageProperties.messageId = event.id
                message.messageProperties.headers[HEADER_ORIGINAL_EXCHANGE] = event.exchange
                message.messageProperties.headers[HEADER_ORIGINAL_ROUTING_KEY] = event.routingKey
                message
            }
            t.waitForConfirmsOrDie(5_000)
        }
        outboxEventRepository.delete(event)
    } catch (e: AmqpException) {
        throw e  // broker error → propagates to circuit breaker
    } catch (e: Exception) {
        logger.error(&quot;Failed to publish outbox event ${event.id} (${event.eventType})&quot;, e)
    }
}
</code></pre>
<h2>Challenging your own developer beliefs with AI</h2>
<p>As I said earlier, I was well acquainted with the XA transaction mechanism and the state of my knowledge for solving this problem stopped there.</p>
<p>I wondered with curiosity if Claude would propose a more elegant implementation and I was rather surprised. In this specific kind of case, it was the perfect opportunity to try learning <strong>with</strong> AI instead of just suffering code we don&#39;t understand.</p>
<p>Letting AI write code without oversight, unsurprisingly it&#39;s rarely good. You need an expert eye and ultimately the code produced remains our responsibility and we must be able to understand it. So you need to find a middle ground between letting it do its thing and micro-managing the AI.</p>
<p>By giving it my constraints (stemming from my experience), it was the agent that came up with the Transactional Outbox pattern proposal. And while I was initially a bit skeptical, I tried to understand each part of the code to make it my own by asking multiple questions. The code wasn&#39;t perfect, it was following these exchanges that was added:</p>
<ul>
<li>the publish confirm pattern</li>
<li>resilience with resilience4j</li>
<li>the scheduler lock to avoid multi-node issues</li>
<li>the addition of messageid in headers (for deduplication)</li>
<li>claude had added a state management on messages that wasn&#39;t relevant</li>
</ul>
<p>So yes, it wasn&#39;t a smooth plan but it was a good way for me to force myself to get updated, do some research and in short, learn new things.</p>
<p>Beyond the technical aspect of this post, I mainly wanted to illustrate the method I use to code with an agent, which allows me to combine productivity AND craft.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What is a Hacker Residency?]]></title>
            <link>https://eventuallymaking.io/p/what-is-a-hacker-residency</link>
            <guid>https://eventuallymaking.io/p/what-is-a-hacker-residency</guid>
            <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Between hackerspaces and artist residencies, discover the concept of "Hackers in residence".]]></description>
            <content:encoded><![CDATA[<p>This week I&#39;m participating in a <a href="https://www.uneed.best/residency">Hackers residency</a> in Nantes. But what exactly is a &quot;hackers residency&quot; or &quot;Hackers in residence&quot;?</p>
<p>It&#39;s simple: you take a place, preferably a cool one, a group of hackers (I&#39;ll come back to this term), you let it brew for a short period and you get… something, in principle a product but we could simply talk about artifacts, prototypes, applications, physical machines, etc… But not just slides. Otherwise we&#39;d call it a McKinsey seminar.</p>
<p>When I talk about hackers, be careful I&#39;m not talking about the person who hacked your credit card last month. For lack of a more appropriate term, we&#39;d rather talk about tinkerers. People who seek to solve problems by sometimes taking a few shortcuts.</p>
<p>A hacker residency is, in spirit, a direct descendant of <a href="https://fr.wikipedia.org/wiki/Hackerspace">hackerspaces</a>, shared community spaces that emerged in the 1980s/90s. In essence, there are already Hackers who move from one place to another to share, test and experiment. For Hackers residencies, the concept is strengthened with a principle: what if we invited a hacker from another country, gave him an access badge, a couch to sleep on and let him code, hack hardware or volunteer to give workshops for a month? The concept of <em>Hacker-in-Residence</em> was born.</p>
<p>And even if the lineage isn&#39;t direct, we find a historical kinship with the <strong><a href="https://fr.wikipedia.org/wiki/R%C3%A9sidence_artistique">artist-in-residence</a></strong> model. The principle remains the same: invite artists, provide them with a place to express themselves, often with other artists. In short, the same fight—to create places, sometimes temporary, dedicated to creation.</p>
<p>Anyway, I&#39;m in Nantes for the week with 13 other people to discuss, build things, test, and incidentally, have fun!</p>
<p>::gallery
<img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1779954519848-eyyuv1q.png" alt="" />
<img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1779954537284-akg53g7.png" alt="" />
<img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1779954473841-ctynyuc.png" alt="" />
::</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Are We in the Era of Shitty Code?]]></title>
            <link>https://eventuallymaking.io/p/are-we-in-the-era-of-shitty-code</link>
            <guid>https://eventuallymaking.io/p/are-we-in-the-era-of-shitty-code</guid>
            <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[There isn't a day that goes by without discovering a major security flaw or data breach somewhere. Is this the beginning of a shitty code era ?]]></description>
            <content:encoded><![CDATA[<p>There isn&#39;t a day that goes by without discovering a major security flaw or data breach somewhere.</p>
<p>Just yesterday, it was Github, which apparently opened <a href="https://www.varonis.com/blog/github-breach">part of its code as open source</a>. Unintentionally, of course, but we can still appreciate the gesture.</p>
<p>Meanwhile, in France, it&#39;s <a href="https://www.lecanardenchaine.fr/technologie-sciences/53846-lecornu-debranche-l-anssi-accusee-de-ne-pas-avoir-securise-des-sites-sensibles-de-l-etat">3 data thefts per day on average</a> according to this article. But don&#39;t worry, apparently our prime minister has a solution: fire the director of the national cybersecurity agency (ANSSI)…</p>
<p>That said, the massive breach of France&#39;s <strong>secure</strong> identity document agency (ANTS) by a 15-year-old hacker via <a href="https://www.frandroid.com/culture-tech/securite-applications/3086647_cest-inquietant-le-piratage-de-lants-france-titres-viendrait-dune-faille-absurde">a trivial vulnerability</a> was kind of the straw that broke the camel&#39;s back.</p>
<p>And according to some, AI would be responsible for the general decline in software quality, for example at GitHub where uptime would be in constant decline since GPT3 on this chart (and the arrival of Microslop but let&#39;s focus on just one culprit).</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1779385294823-sr0yejx.png" alt="Github uptime since Microsoft acquisition" /></p>
<p>Okay, that&#39;s trolling. But some people wonder seriously: is AI really the source of all these problems?</p>
<p>That&#39;s what we&#39;re going to try to see. We&#39;re going to talk about the real reasons for the CVE surge but it will mostly be a pretext to wonder if we&#39;re really at the dawn of an era of AI-generated shitty code.</p>
<h2>The Rise in CVEs</h2>
<p>First, why am I talking about CVEs, and what is a CVE anyway?</p>
<p>A CVE (Common Vulnerabilities and Exposures) is a standard that catalogs all known vulnerabilities in a large database. Each CVE is listed under a super sexy little name, like <a href="https://nvd.nist.gov/vuln/detail/CVE-2024-12345">CVE-2024-12345</a>.</p>
<p>(Yes, it&#39;s quite thrilling, isn&#39;t it?)</p>
<p>So you&#39;re going to tell me, in the software world we talk about bugs, not CVEs, and you&#39;d be quite right. But there&#39;s no catalog of bugs for all known software.</p>
<p>So here I&#39;m taking the number of annual CVEs as a kind of indicator of the number of bugs in software because I think there&#39;s a small correlation between a decline in quality and an increase in security holes. At first glance anyway, but we&#39;ll come back to that.</p>
<p>And if we look at it, well the acceleration could date from 2022 with however a first step <a href="https://www.cvefind.com/en/cve-statistic-date.html">around 2017.</a></p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1779461611189-zigeu3z.jpg" alt="CVE increase since 1998" /></p>
<p>If we take 2017 as the turning point, it becomes hard to blame AI for the problem even with the bad faith of a a Marseille football fan (hey Max, if you&#39;re reading this, you know how you guys love to exaggerate).</p>
<p>Broadly speaking, the CVE increase since 2017 is probably explained by a mix of factors:</p>
<ul>
<li>greater pressure on software which is now expected to have a new version every day</li>
<li>a general explosion of digital technology</li>
<li>many more security programs (bug bounties)</li>
<li>an increase in the number of software dedicated to cybersecurity.</li>
<li>major geopolitical conflicts and more frequent cyber attacks</li>
</ul>
<p>Actually, it&#39;s not unlikely that we&#39;re measuring the number of thermometers (and not just the temperature), so the rise of the cyber industry, and on the other hand, the rise of digital technology which is becoming an economic and geopolitical stake in a rather unstable context for years.</p>
<p>Now we can still question the post-2022 period because the slope seems to be climbing as fast as Trump&#39;s court cases.</p>
<p>However, I&#39;d say that CVEs aren&#39;t the best proxy for measuring software quality because as we&#39;ve seen, CVEs can increase for rather exogenous reasons. It&#39;s not because we&#39;re controlling things better than before and scrutinizing more that there are really more bugs.</p>
<p>So we&#39;re going to go back to the starting point and look at a sentence I hear very often: AI is the death of craft.</p>
<h2>With AI, It&#39;s the Death of Craft</h2>
<p>Craft, for those not following along, is kind of an umbrella term to group together a whole set of practices aimed at producing &quot;quality&quot; software. Assuming we can define what quality software is, but that&#39;s another subject.</p>
<p>With AI we wouldn&#39;t be crafting anymore and technical expertise, the appeal of the profession for many, would have disappeared.</p>
<p>Wait, here we have two different subjects:</p>
<ul>
<li>the appeal of the profession would disappear because we wouldn&#39;t be crafting anymore</li>
<li>the code produced by AI would be to computing what English cuisine is to world gastronomy, i.e., not great.</li>
</ul>
<p>(Well, let&#39;s set the record straight on the second point: no, English cuisine is vastly worse)</p>
<p>So some people have tried to determine whether code produced by AI was necessarily less &quot;sustainable&quot; than code produced by a human, in short, whether we were really building mountains of technical debt at light speed.</p>
<h2>AI Slop and Software Maintenance</h2>
<p>Do you know <a href="https://www.linkedin.com/in/dave-farley-a67927/">Dave Farley</a>?</p>
<p>Dave Farley is notably one of the authors of the book Continuous Delivery released in 2010.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1779465841179-gjslvso.png?width=400" alt="Continuous Delivery book cover" /></p>
<p>It was one of my reference professional books for years at a time when there was a lot of talk about software factories, quality, and continuous deployment. I worked for years on these subjects, particularly from 2006 on distributed CI concepts. I then worked from 2010 on industrialization themes, then from 2012 on continuous deployment.</p>
<p>(okay grandpa but continue your story)</p>
<p>Well <a href="https://www.youtube.com/watch?v=b9EbCb5A408">Dave Farley participated in a study</a> that aimed precisely to determine which code was more maintainable between code produced by AI or code produced by humans. Was there more <strong>technical debt</strong> in AI-produced code? And the answer is… <strong>no</strong>.</p>
<p>To be frank, even I&#39;m surprised, and yet not at all.</p>
<p>I&#39;m surprised because I know the engineering effort required for AI to work well. Without that effort, the code quickly looks like a slightly lopsided Frankenstein.</p>
<p>But, I imagine the study is about professionals who had time to set up their usual tools.</p>
<h2>Building an Agentic Software Factory</h2>
<p>I told you, I love building software factories, I&#39;ve been working on this subject for years.</p>
<p>A software factory is nothing more than a manufacturing process, more or less industrialized and automated.</p>
<p>A code generator, however powerful, <strong>is not a software factory, it&#39;s just one of the factory&#39;s machines</strong>.</p>
<p>And if you just let <strong>one</strong> machine run, it&#39;s not enough.</p>
<p>When a dev only does copy-paste from ChatGPT from a browser, it&#39;s barely 10% of the work and yes, the result isn&#39;t great and often requires a lot of manual adjustments.</p>
<p>Now, being a bit provocative, I&#39;d say that tweaking the generated code is a failure. Imagine the same thing in a car factory. If artisans had to retouch every car produced, it would be a bit surprising. And, I&#39;m no specialist, but I don&#39;t think that&#39;s how it works.</p>
<p>Anyway, you need the other tools.</p>
<p>In our profession, this consists of building test and validation harnesses, defining rules to follow and finding ways to verify they&#39;re being followed, creating skills to guide AI agents&#39; work and prevent them from crashing, allowing them to verify themselves with tools and therefore correct themselves, etc…</p>
<p>And that, actually, <strong>is craft</strong>. Using AI agents makes those famous best practices mandatory that everyone talks about but you don&#39;t see so often in practice.</p>
<p>All the people I see right now in the <a href="https://www.devw.ai/">DevWithAI</a> community are craftspeople trying to improve their software factory. They&#39;re people working on token compression tools like <a href="https://www.rtk-ai.app/">rtk</a>, tools to simplify and standardize usage at team scale like <a href="https://packmind.com/">packmind</a>, <a href="https://cc.bruniaux.com/">usage guides like Florian's</a>.</p>
<p>Craft hasn&#39;t disappeared. It has changed.</p>
<p>For a company, there&#39;s substantial effort required to introduce these tools, build a software factory on top, create tooling, do platform engineering, and you need people for that, the same way you need people to design, maintain, and evolve production chains in factories.</p>
<p>Briefly, no, the appeal of the profession hasn&#39;t disappeared in my view, for people who love craft and technical work.</p>
<p>And if we talk about quality, I&#39;m going to surprise you but, at my scale, I see significant quality leaps in my applications.</p>
<h2>The Writizzy Example</h2>
<p>I develop several products, <a href="https://hakanai.io/">Hakanai</a> and <a href="https://writizzy.com/">Writizzy</a>. I recently put <a href="https://bloggrify.com/">Bloggrify</a> in maintenance mode.</p>
<p>Bloggrify started in 2022, Hakanai in 2023 and Writizzy in 2025.</p>
<p>For the first two, I barely used AI at first then gradually introduced some copy-paste from very discreet use of inline agents. So more than 90% of the code was produced by hand.</p>
<p>Well today I&#39;d say that it shows.</p>
<p>Wait, I&#39;m proud of what I did with Hakanai and Bloggrify. But to build an application solo you have to be <strong>very</strong> good at everything: building the application, its logic, its ergonomics, its UI, its robustness. But that&#39;s not my case. So sometimes there are places where it&#39;s a bit less good and it shows.</p>
<p>And beyond that, doing everything very well takes time. When building a product, you always have to choose between &quot;perfect&quot; and &quot;good enough for most uses&quot;. The difference between the two being the time available.</p>
<p>Sometimes you give up, you know it&#39;s not perfect, but you&#39;ve just spent 1 week on it, and frankly for a 5% quality improvement, forget it, we&#39;re not spending another week on it. That will be for next time. That famous next time that never comes.</p>
<p>Actually the quality of Hakanai and Bloggrify was variable. There were shortcuts taken, pages with ergonomics straight out of the 2000s web, and it doesn&#39;t matter, that&#39;s how we used to build products.</p>
<p>With Writizzy, that&#39;s completely different. I don&#39;t take shortcuts. First and foremost because to produce correct code with AI, you need a proper software factory, and that includes safeguards like tests, linters, etc… So it&#39;s non-negotiable, whereas ultimately it was negotiable before for Hakanai and Bloggrify.</p>
<p>Plus, the cost of refactoring has become almost zero. The small thing missing for a feature to be perfect, now I can do it.</p>
<p>Actually today I can take the time to handle edge cases, those famous little exceptions that before you&#39;d leave aside because &quot;that never happens&quot;. I can use the time saved on dev to think more about security, robustness, scalability.</p>
<p>Producing code has become a commodity. So I take advantage of it to produce very good code.</p>
<p>Briefly, I&#39;m still crafting, but its nature has changed.</p>
<p>And what I produce is better quality. So I&#39;m not convinced we&#39;ve entered an era of shitty code.</p>
<p>Now there&#39;s still a nuance to add. AI drastically lowers the barrier to entry. That&#39;s good, but it means we end up with a flood of stillborn software, things that won&#39;t survive longer than a shitcoin promoted by a Dubai influencer, and companies that are going to cut hard on R&amp;D costs because… laziness, and what if we increased margins. So yes, under those conditions, we&#39;re going to have an increase in the number of poorly produced software, software that will die after 3 months because their creators will get bored very quickly faced with the reality of actually managing an IT product. But good products will on the other hand be much better because craft will be a sine qua non condition for not crashing in a world where everything will move much faster.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[My AI stack for developing products without breaking the bank]]></title>
            <link>https://eventuallymaking.io/p/my-ai-stack-for-developing-products-without-breaking-the-bank</link>
            <guid>https://eventuallymaking.io/p/my-ai-stack-for-developing-products-without-breaking-the-bank</guid>
            <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Can you build an app with AI for 20€/month? Here's a field report to optimize these uses: token optimization, specs and agentic workflow.]]></description>
            <content:encoded><![CDATA[<p>Can you really build applications today with AI AND only spend 20 euros a month?</p>
<p>I&#39;m currently developing two projects: <strong><a href="https://broadcast.hakanai.io/">Hakanai</a></strong> (for static blogs) and <strong><a href="https://writizzy.com/">Writizzy</a></strong>, which just passed 550 users in 6 months. But combined, I don&#39;t make more than 250 euros a month and my principle is not to spend more than what I earn.</p>
<p>So I have a big constraint: budget. I try to build my applications without burning tokens at the speed of light. And I wanted to share with you how I do it.</p>
<h2>What is Writizzy?</h2>
<p>Quick reminder to set the context: Writizzy is an equivalent to Medium or Substack. A platform to write, send newsletters and monetize your content. I think it&#39;s vital to have spaces for expression outside the GAFAM (and outside the US). It&#39;s the software that runs the blog you&#39;re reading.</p>
<p>Code-wise, we have three big pieces:</p>
<ul>
<li>An <strong>API</strong> in Kotlin.</li>
<li>An <strong>Admin App</strong> in Nuxt.</li>
<li>A <strong>&quot;blog&quot; App</strong> (that serves the content) in Nuxt as well.</li>
</ul>
<p>To work, I mostly use <strong>Claude</strong>. Why? Because it remains the best-rated model on the code benchmarks.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1778777417711-qfyj55a.jpg?width=800" alt="Claude's ratings on the SWE leaderboard" /></p>
<p>But I&#39;m thinking about an alternative. I&#39;ll tell you more about it at the end.</p>
<h2>Context Engineering: Constraining the AI</h2>
<p>The idea to work effectively is to give the LLM the necessary and <em>sufficient</em> context to limit its solution space. We want to give it guidelines and ways to verify itself that it stays within the lines. If you don&#39;t do that, don&#39;t be surprised when the AI hallucinates APIs or uses old doc versions. It&#39;s normal.</p>
<h3>The Claude.md file</h3>
<p>It&#39;s the entry point. You&#39;ll find the project objective, the general structure to prevent the AI from browsing through all the code randomly, and especially the list of <strong>specs</strong>.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1778777528645-wcuy3ff.png" alt="list of writizzy specs" /></p>
<p>This list is fundamental in my development process, I&#39;ll come back to it later. It also serves as an index for Claude.</p>
<p>Note that I have other <a href="http://claude.md">claude.md</a> files in subdirectories, these files are loaded by Claude if it enters them. I have one per application (app, blog, and api). I use it to list available technologies but I tend to use rules more and more.</p>
<h3>The Rules (.claude/rules)</h3>
<p>These are rules that can be loaded conditionally. For example here, if Claude enters the <code>/app</code> directory, it loads the Nuxt rules.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1778777745407-iavgjhu.png" alt="header that defines loading conditions" /></p>
<p>In this rules file I define the patterns I want to see used, for example:
obligation to use Nuxt UI, to run a <code>typecheck</code> or <code>eslint</code> pass before finishing, etc.</p>
<p>These rules, I built them empirically. That is, the file was empty originally, then I added rules based on the errors I saw coming back. More recently I&#39;m trying to limit Claude&#39;s exploration so I systematically ask him if he saw patterns he should document in the rules to avoid spending tons of tokens exploring. Plus I don&#39;t really like him guessing based on the code he encounters.</p>
<p>Example of a question I recently asked him:</p>
<blockquote>
<p>I&#39;m looking to improve the rules I&#39;ve already put in place. I find that you had to read a lot of files to understand the context and patterns. Why? Give me a summary of the patterns you were looking to understand to see if we can make them into rules</p>
</blockquote>
<p>Actually, building these rules files is a kind of <strong>safety harness</strong>. But you also need to understand that it&#39;s not a guarantee because LLMs will regularly ignore rules. So you need to strengthen control means: tests, linter, CI quality gates, etc…</p>
<p>I note that it&#39;s easier for those used to developing with good practices to work correctly with AI. These practices serve as safeguards but for many companies, it was a bit of window dressing but not very effective in practice. And precisely, in companies where these methods aren&#39;t mature, AI doesn&#39;t take off. One wonders why... Or not…</p>
<h3>The &quot;Analyst&quot; command</h3>
<p>A command is a sort of pre-prompt. I use an <code>analyst</code> command for brainstorming. I ask him to be a specialist in blogging, IndieWeb and decentralization. I ask him to challenge my needs, detect inconsistencies and most importantly <strong>to write the specs</strong>.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1778778898711-yzwuiwu.png" alt="analyst command file" /></p>
<h2>Specs before code</h2>
<p>Earlier I talked about specs that are listed in the claude.md file.</p>
<p>Let&#39;s talk a bit about my dev cycle.. I systematically go through a spec before any significant piece of code.
(Funny when I think back to when I launched <strong>Malt</strong>, there wasn&#39;t much written at first…)</p>
<p>With AI, the spec has two major interests:</p>
<ol>
<li><strong>Frame the expected result</strong>. We first define the direction, user flows, etc.</li>
<li><strong>Save tokens in the future</strong>: By listing the technical entry points and key files in the spec, Claude doesn&#39;t need to search everywhere.</li>
</ol>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1778779441925-pkekdx3.png" alt="list of technical entry points" /></p>
<p>Indeed, when Claude reworks a feature that already exists, he&#39;ll use the spec file to understand how it works and especially easily get back to the key files. With these specs, he&#39;ll save a lot of time on that, and especially it will be more accurate than letting him guess.</p>
<p>Once the spec is validated, I create an <strong>implementation plan</strong> (well, Claude creates a plan). For that, I have a skill that imposes my practices: each step must be deployable, it must use feature flags if necessary, etc...</p>
<h2>The art of managing your context window</h2>
<p>Here I need to come back to the notion of context window because it&#39;s important for optimizing your monthly budget. What costs a lot is endless sessions. With each exchange, you send back the entire history. After a while, a simple &quot;Ok&quot; can cost tens of thousands of tokens. So already, that costs a lot.</p>
<p>But the second cool side effect, the fuller the window, the &quot;dumber&quot; the AI becomes. So I try never to exceed <strong>50% capacity</strong>. That&#39;s the whole point of implementation plans. The idea is to break it down into small autonomous tasks and change sessions regularly.</p>
<h2>Skills vs MCP: The efficiency battle</h2>
<p>I mentioned skills before. I use them heavily to be more efficient. And there&#39;s a real parallel between efficiency and cost so I need to talk about it here.</p>
<p>A <strong>Skill</strong> is a competency loaded on demand. For example, my Nuxt skill forces Claude to go read the doc online (in Markdown format) rather than relying on his outdated training data.</p>
<p>I have skills for different things:</p>
<ul>
<li>APIs that specify my design patterns: api-design, db-migration, write-spec</li>
</ul>
<p>It&#39;s sometimes a bit more than &quot;just&quot; specifying patterns, for example the db-migration skill lists exactly which tools to use (Flyway), the location of migration files, the file format. And on the pattern side we find my key principles of deployment strategy (rolling update, etc…)</p>
<ul>
<li>bento, nuxt, nuxt-content, nuxt-ui to specify how to fetch the doc</li>
<li>skills that explain how to use a CLI, for example sentry-fix-issues which explains how to use the sentry CLI to get information, diagnose, and fix</li>
</ul>
<p>On the other hand, we have <strong>MCP</strong> (Model Context Protocol). It&#39;s powerful too, but it takes up more space in the context because each method of the MCP is included in the context window. Where a skill, it&#39;s only the skill description that&#39;s included.</p>
<p>So I prefer Skills, except for:</p>
<ul>
<li><strong>MCP IntelliJ</strong>: To properly navigate code and compile.</li>
<li><strong>MCP Stripe</strong>: To debug configuration.</li>
<li><strong>Claude-mem</strong>: supposed to remember key decisions between sessions (I&#39;m still testing, the gain isn&#39;t clear yet).</li>
</ul>
<h2>What about design?</h2>
<p>Recently, I switched to <strong>Claude Design</strong>. It became my tool of choice. I brief, I comment on areas, I modify on the fly, and once the HTML is clean, I give it to my Claude agent for implementation. It&#39;s well above what I was doing before in simple prompting. The results are really stunning.</p>
<h2>Balance sheet: How to stick to the budget?</h2>
<p>In short, with all that I manage to get by for 20€ a month but I still have a few extra tricks:</p>
<ul>
<li><strong>Token compression</strong>: I use compression strategies (like <a href="https://www.rtk-ai.app/">rtk</a>) or I create my own tools to only send LLMs what&#39;s necessary.</li>
<li><strong>Online AIs</strong>: If I want to brainstorm &quot;for free&quot;, I go to Gemini. I&#39;m generally less of a fan but it can serve as a relay before going to really work with the analyst for example.</li>
</ul>
<p>But mostly, I have an incredible trick… I close my work session when Claude tells me I&#39;ve exceeded my quota. Plain and simple.</p>
<p>When it&#39;s done, I stop. I go do woodworking, cooking, I write an article (that&#39;s exactly what I&#39;m doing right now ^^).</p>
<p>It seems like nothing but this discipline is actually healthy. I don&#39;t see it only as a constraint but also as an opportunity to do something else, think, consolidate what I&#39;ve learned, etc… It joins what I wrote in a recent article, it&#39;s good <a href="https://eventuallymaking.io/p/coding-10x-faster-what-s-the-real-benefit">to save time, but you have to know how to make the most of it</a>.</p>
<p>Next step: I&#39;m testing local models. The idea is to delegate small implementation tasks to my machine and keep Claude only for strategic planning. It&#39;s really just the beginning so I&#39;ll talk about it more later.</p>
<p>I&#39;m far from being as advanced as possible on these topics and especially I&#39;m in a solo context. But if you have your own tips to share, don&#39;t hesitate in the comments, they&#39;ll be read carefully.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Day 181: What I learned with a Claude SEO Skill]]></title>
            <link>https://eventuallymaking.io/p/day-181-what-i-learned-with-a-claude-seo-skill</link>
            <guid>https://eventuallymaking.io/p/day-181-what-i-learned-with-a-claude-seo-skill</guid>
            <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[I tested Claude-SEO (MCP) to audit Writizzy after days of declining traffic. My deep dive into technical optimizations (JSON-LD, E-E-A-T, Nuxt) and the mystery of Google's 'Discovered - Currently Not Indexed' status]]></description>
            <content:encoded><![CDATA[<p>Alright, I’ve barely posted anything for the past 181 days, but you know how it is… procrastination.</p>
<p>Anyway, it’s been 181 days since I launched <strong><a href="https://writizzy.com">Writizzy</a></strong>. It’s the blogging platform I’m using for this very article. I’m the first one convinced by my own product, which is already a small victory :)</p>
<p>With a bit of exaggeration, I could tell you that in 181 days, Writizzy has managed to reach the same level as Substack, Medium, or Beehiiv in terms of features.</p>
<p>Obviously, on the usage side, we&#39;re not quite there yet. About 480 users have tested it, with around 130 of them being truly active.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1777916090289-68dtysn.png" alt="Real stats from the Writizzy platform:" /></p>
<p>And above all, it&#39;s far from being a smooth ride. I have a huge thorn in my side: very few people are discovering the product. Even worse, my traffic is decreasing.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1777916107500-uknv0m5.png" alt="Continuous traffic drop over the last 2 months:" /></p>
<p>With 1,850 unique visitors in April, it’s my second worst month since the beginning. And one of the reasons (though not the only one) is SEO.</p>
<h2>SEO is Failing</h2>
<p>&quot;SEO is Failing&quot;, that sounds like it could be the title of a gritty <strong>Liam Neeson</strong> thriller.</p>
<p>With 1,850 unique monthly visitors, I’m getting almost 3 times less traffic than my own personal blog (the one you’re reading right now). That’s… room for improvement :)</p>
<p>Most of the traffic comes from social media, Reddit, Facebook (?? I don&#39;t know why), Uneed (a product launch platform), and various blogs already using Writizzy.</p>
<p>There is some traffic coming from Google, but it’s what we call &quot;Brand&quot; traffic. These are people typing &quot;Writizzy,&quot; so they already know the product. In that case, you can&#39;t really call it new user acquisition.</p>
<p>So, a few weeks ago, I wanted to self-audit to see if I could find what was wrong. To do that, I found a set of skills for Claude: <strong><a href="https://github.com/AgriciDaniel/claude-seo">claude-seo</a></strong>.</p>
<p>Claude-SEO consists of about twenty skills that test several areas: content quality, JSON-LD markup, GeoSearch (AI search optimization), technical SEO, etc.</p>
<p>There are 21 of them, so I won&#39;t list them all, you&#39;ll have to excuse me...</p>
<p>Once installed, I ran the command <code>/seo audit [https://writizzy.com](https://writizzy.com)</code> and here is the first result:</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td><strong>Category</strong></td>
<td><strong>Weight</strong></td>
<td><strong>Weighted Score</strong></td>
</tr>
<tr>
<td><strong>Technical SEO</strong></td>
<td>22%</td>
<td>52/100 (11.4)</td>
</tr>
<tr>
<td><strong>Content Quality (E-E-A-T)</strong></td>
<td>23%</td>
<td>38/100 (8.7)</td>
</tr>
<tr>
<td><strong>On-Page SEO</strong></td>
<td>20%</td>
<td>45/100 (9.0)</td>
</tr>
<tr>
<td><strong>Schema / Structured Data</strong></td>
<td>10%</td>
<td>68/100 (6.8)</td>
</tr>
<tr>
<td><strong>Performance (CWV)</strong></td>
<td>10%</td>
<td>55/100 (5.5)</td>
</tr>
<tr>
<td><strong>AI Optimization (GEO)</strong></td>
<td>10%</td>
<td>41/100 (4.1)</td>
</tr>
<tr>
<td><strong>Images &amp; Social</strong></td>
<td>5%</td>
<td>35/100 (1.75)</td>
</tr>
<tr>
<td><strong>TOTAL</strong></td>
<td></td>
<td><strong>47 / 100</strong></td>
</tr>
</tbody></table>
<p>47/100 isn&#39;t great, but at the same time, it’s actually good news. It means there’s work to be done and the tool will be able to help me.</p>
<h2>Insights from the First Run</h2>
<p>Claude-SEO tests many things, especially technical SEO.</p>
<p>In theory, this is the easiest part since it involves structural optimizations, titles, performance, JSON schemas, etc.</p>
<p>I received some very relevant advice, particularly regarding home page image optimization and pre-connection directives for my Bunny CDN.</p>
<p>HTML</p>
<pre><code class="language-javascript">&lt;link rel=&quot;preload&quot; as=&quot;image&quot; href=&quot;/herobg.webp&quot; fetchpriority=&quot;high&quot;&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://writizzy.b-cdn.net&quot;&gt;
</code></pre>
<p>I also got a lot of feedback on the JSON-LD schemas used on the page.</p>
<p>::callout{type=info}
About JSON-LD: You have to understand that a bot indexing a site doesn’t read it like we do. We can help it better understand what the site is about by giving it structured data in JSON-LD format. It’s invisible to the human reader but very practical for the crawler.
::</p>
<p>You can see the entire JSON-LD structure of the home page that I modified thanks to this site (which I invite you to use for yourself): <a href="https://validator.schema.org/#url=https%3A%2F%2Fwritizzy.com">validator.schema.org</a></p>
<p>Claude-SEO also allowed me to realize there was a bug in the <strong>nuxt-seo</strong> library I use, which was impacting all the titles and meta descriptions of my site. Every page had the same attributes!</p>
<p>(By the way, Claude also helped me <a href="https://github.com/harlan-zw/nuxt-seo/issues/534">diagnose the bug to open an issue</a>, which has since been fixed).</p>
<p>But most importantly, Claude-SEO suggested several relevant additions:</p>
<ul>
<li>Adding an <a href="https://writizzy.com/llms.txt">llms.txt</a> file to improve my ranking for AI assistants.</li>
<li>Adding dedicated pages for the <a href="https://writizzy.com/about">founding team</a>, pricing, and specific features.</li>
</ul>
<p>Usually, we tend to create landing pages that group all this information together, but apparently, it can be beneficial to have separate pages to answer specific search intents, like &quot;Writizzy pricing.&quot;</p>
<p>As for the &quot;About&quot; page, it&#39;s about reinforcing the site&#39;s authority based on <strong>E-E-A-T</strong> criteria (Experience, Expertise, Authoritativeness, and Trustworthiness), criteria Google uses to assess the trust they can place in a site.</p>
<p>Once all that was in place, I ran a second test and got a <strong>64/100</strong>.</p>
<h2>An Instructive Second Run and a Few Bugs</h2>
<p>Claude-SEO is not a deterministic tool. In other words, new relevant problems can appear that weren&#39;t noted in the first run.</p>
<p>Second issue: sometimes page crawling fails. For example, during this second run, the <code>llms.txt</code> file was still considered missing even though it was there. Same for the blog, which wasn&#39;t detected.</p>
<p>However, there was still clear progress between the two executions, and some new problems were totally valid:</p>
<p><strong>No security headers</strong> were present. It’s not crucial for SEO, but it’s still a bad signal. I installed <a href="https://nuxt.com/modules/security">nuxt-security</a>, which resolved this very quickly.</p>
<p>More annoying: <a href="http://writizzy.com">http://writizzy.com</a> was returning a 200 and <a href="https://www.writizzy.com">https://www.writizzy.com</a> was sending an SSL error because the only valid URL is <a href="https://writizzy.com">https://writizzy.com</a>. That’s normal, but bad for crawling. HTTP must redirect to HTTPS, and &quot;www&quot; as well if you don&#39;t want to manage it. This was all handled directly at the Bunny and Coolify levels.</p>
<ul>
<li>Claude-SEO suggested several additions for <strong>Cache-Control</strong> directives and even gave me the configuration for Nuxt since it knew I was using it.</li>
</ul>
<p>I&#39;ll skip other minor or less interesting detections, which brings us to the 3rd execution: <strong>71/100</strong>.</p>
<p>This 3rd run mainly detected implementation errors on what had already been done, encoding errors in JSON-LD, logos with formats not accepted for Open Graph, and a few suggestions for additional pages.</p>
<h2>The Verdict?</h2>
<p>This Claude plugin was super interesting. I learned things (like E-E-A-T or certain JSON-LD entities I didn&#39;t know), it highlighted problems I could have seen myself (like security headers, lack of HTTP to HTTPS redirects), and it allowed me to better configure my Nuxt framework.</p>
<p>I highly recommend testing it on your own site.</p>
<p><strong>Now, did it work? Has my SEO become the best in the world?</strong></p>
<p>Well, not really. For a reason I can&#39;t explain, Google refuses to index the pages of my site except for the Home page. If you look on Google with <code>site:writizzy.com</code>, only the home page shows up. And this is confirmed in the Google Search Console, which lists all other pages as &quot;Discovered - Currently Not Indexed.&quot;</p>
<p>And there, it’s a mystery.</p>
<p>Especially since I have the exact same problem on <strong><a href="https://hakanai.io">hakanai.io</a></strong> (another product I&#39;m building), only the home page is indexed once again.</p>
<p>At this stage, I’m a bit lost. I think I’ve truly improved the SEO from a technical standpoint, but I must be missing a massive issue that I don’t understand.</p>
<p>For some unknown reason, my site is considered untrustworthy or lacking interest, even though I have a <strong>Domain Rating of 47</strong> and 3,000 backlinks.</p>
<p>In short, SEO isn&#39;t just about tech, and for now, I don&#39;t have all the keys yet :)</p>
<p>If you have SEO knowledge and ideas, feel free to share, I’m all ears.</p>
<p>Next steps: I’m going to go through every page one by one. If Google deems my content &quot;uninteresting,&quot; I need to understand why.</p>
<p>In the meantime, if you want to help me send positive signals to Google (or just test a pretty cool blogging tool), don&#39;t hesitate to start your blog on Writizzy with a little backlink, it’s a boost that could really help me ^^</p>
]]></content:encoded>
            <category>writizzy</category>
            <category>seo</category>
        </item>
        <item>
            <title><![CDATA[Why Open Source Won’t Be Enough to Free Us from Big Tech]]></title>
            <link>https://eventuallymaking.io/p/why-open-source-won-t-be-enough-to-free-us-from-big-tech</link>
            <guid>https://eventuallymaking.io/p/why-open-source-won-t-be-enough-to-free-us-from-big-tech</guid>
            <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[264 billion euros flow out of Europe every year. Why open source, without a genuine digital commons strategy, won’t save us.]]></description>
            <content:encoded><![CDATA[<p>Let’s play a game. A management game, SimCity-style.</p>
<p>Here’s the setup: You manage a country. Actually, let’s increase the difficulty: You manage a federal state made up of several countries.</p>
<p>This state is losing money every year because it buys more from neighboring countries than it sells to them.</p>
<p>This drain has several consequences: your companies sell less, so they under-invest. Your citizens have fewer jobs and lower wages.</p>
<p>You depend on imported products. The states selling them take advantage of this to impose their own conditions for continued business.</p>
<p>As you’ve probably guessed, this game already exists. It’s called Europe, and the products I’m talking about are essentially digital services.</p>
<p>And apparently, a solution is currently being studied to counterbalance this slow digital colonization: <strong>Open Source</strong>.</p>
<p>Okay, let’s explore this path and try to understand where it might lead us.</p>
<h2>264 Billion Euros and 1 Million Jobs</h2>
<p>264 billion euros and 1 million jobs, that’s what Europe lets slip away every year to major American Tech companies (Cloud, AI, etc.).</p>
<p>This figure hides massive blind spots. Digital technology means direct AND indirect jobs, <a href="https://www.business-humanrights.org/fr/derni%C3%A8res-actualit%C3%A9s/pega-committee-draft-report-reveals-rampant-spyware-abuse-in-europe/">risks of espionage</a>, and <a href="https://www.ege.fr/infoguerre/2018/12/linfluence-de-cambridge-analytica-brexit">proven cases of public opinion manipulation</a>.</p>
<p>It’s also a constant weight on our diplomatic relations, because it’s hard to resist our digital dealer when they impose conditions, for instance, <a href="https://www.lemonde.fr/international/article/2025/03/28/les-etats-unis-reclament-a-des-entreprises-francaises-de-se-conformer-aux-lois-federales-anti-discrimination_6587269_3210.html">demanding we abandon inclusion policies within our own companies</a>.</p>
<p>In this context, Europe wants to rely on the <a href="https://ec.europa.eu/info/law/better-regulation/have-your-say/initiatives/16213-European-Open-Digital-Ecosystems_en">European Open Digital Ecosystem</a>.</p>
<p>So, is Open Source the solution?</p>
<h2>Open Source and Geopolitics?</h2>
<p>If money has no smell, does Open Source? Not necessarily.</p>
<p>An open license tells us nothing about a project&#39;s governance, meaning, who decides and who captures the revenue.</p>
<p>A huge number of major open-source projects are simply funded by large American corporations (e.g., Kubernetes, React, VS Code). GitLab, for instance, sees a vast majority of its contributions coming from salaried engineers.</p>
<p>Another part of these projects is managed by foundations that may also be based in the US (Apache, Linux, Mozilla).</p>
<p>In the event of a conflict, even if Open Source is &quot;open,&quot; Europe could find itself penalized.</p>
<p>We could be excluded from major distribution platforms, like GitHub, which has restricted usage in Iran in the past.</p>
<p>A project could unilaterally decide to stop supporting local standards or legislation (such as privacy regulations).</p>
<p>A <a href="https://www.zdnet.fr/blogs/l-esprit-libre/selon-le-pere-de-linus-torvalds-la-nsa-a-bien-demande-un-acces-derobe-dans-linux-39795598.htm">state could influence contributors to insert backdoors</a>.</p>
<p>But it’s open source, you might say. We could just create our own fork and maintain it in Europe, right?</p>
<p>It’s not that simple.</p>
<p>That would imply finding, mobilizing, and funding armies of contributors in Europe. Contributors who would spend a portion of their time &quot;just&quot; catching up with the original code and verifying that no backdoors were introduced to target us.</p>
<p>In short, it requires resources and people willing to maintain projects built elsewhere.</p>
<p>Then there’s the concept of the ecosystem. Take Huawei, for example: they forked Android but couldn&#39;t access the Play Store or Google Play Services, which severely limited its appeal.</p>
<p>You might argue that we also have foundations in Europe. <a href="https://www.lembarque.com/article/la-fondation-eclipse-devient-une-organisation-pleinement-europeenne">Eclipse moved to Europe in 2020</a>, making it the largest European open-source foundation.</p>
<p>True, but a foundation lives off membership fees, and the main contributors to Eclipse are American (IBM, Oracle, Microsoft, Intel, Amazon, Google). Not to mention that the Eclipse Foundation isn&#39;t the most advanced on current topics like AI or Cloud.</p>
<h2>A Structural Fragility in Open Source</h2>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1777314792515-fw3vuuu.png" alt="" /></p>
<p>This isn&#39;t just a hunch; it all circles back to the question of resources.</p>
<p>Until now, we’ve mostly discussed massive projects, but the vast majority of projects rest on fragile foundations.</p>
<p>Open source is underfunded. Countless projects are simply too small to be visible, even though they likely power 99% of modern digital software (source: myself, but I doubt I&#39;m far off).</p>
<p>Between maintainer burnout and the lack of resources to keep up with current demands, it’s easy to connect this fragility to cyber risks. Log4Shell, Heartbleed, and XZ are perfect examples of vulnerabilities and cyberattacks targeting open source.</p>
<p>Relying on such fragile actors without funding them is hypocrisy.</p>
<p><a href="https://tech.eu/2025/07/25/chronic-underfunding-of-open-source-software-poses-strategic-risk-to-europes-digital-sovereignty/">But this conclusion is widely shared</a>, and Europe <a href="https://goodtech.info/commission-europeenne-strategie-open-source-souverainete-2026/">is planning to put money on the table to fund open source</a> as an alternative to major US software.</p>
<p>We’re talking about funding programs in the billions of euros and policies favoring open-source solutions.</p>
<h2>Digital Commons</h2>
<p>Of course, we return to the problem mentioned earlier: open source does not mean neutrality. Therefore, Europe is setting criteria and, above all, defining the concept of a <a href="https://en.wikipedia.org/wiki/Digital_commons_(economics)">Digital Common</a>:</p>
<p>A digital common is not just software (code); it is a triad of inseparable elements:</p>
<ul>
<li><strong>A digital resource:</strong> Software, a database, a technical standard.</li>
<li><strong>A community:</strong> Developers, contributors, companies, and users who maintain the resource.</li>
<li><strong>Governance:</strong> A set of rules defining who can contribute, how decisions are made, and how to prevent the resource from being captured by a single actor (&quot;vendor lock-in&quot;).</li>
</ul>
<p>An open-source project &quot;dictated&quot; by a single American multinational is not a digital common, because the community has no real decision-making power.</p>
<p>And &quot;digital commons&quot; created in Europe do exist: OpenStreetMap, VLC, and even Linux and the Web.</p>
<h2>Toward a Fragmented Open Source?</h2>
<p>The primary fear in a <strong>digital cold war</strong> is seeing <a href="https://goodtech.info/geopolitique-fragmentation-open-source-tendances-2026/">a fragmentation of open source</a>: license wars, targeted exclusion of contributors by country, and a decline in international collaboration. It’s already becoming difficult to get visas for international events, and refusing certain foreign travel is becoming both a political and ecological act.</p>
<p>While this outlook is somewhat grim, it is relatively inevitable. In a closing world, open source will not live in an isolated bubble. And this will force us to create our own digital identity.</p>
<h2>A European Digital Identity</h2>
<p>It’s true: open source alone is not the solution because it is a fragile, underfunded, and inherently non-neutral ecosystem.</p>
<p>A large portion of US Open Source is funded by big US companies, often serving as a digital Trojan horse to capture revenue.</p>
<p>But how many companies in the US actually run on &quot;Free Software&quot;?</p>
<p>Relatively few.</p>
<p>This is less true in Europe. The International Criminal Court (ICC) runs on OpenDesk. Several French administrations have just announced their migration to &quot;<a href="https://lasuite.numerique.gouv.fr/">La suite numérique</a>&quot;.</p>
<p>We could see a European digital identity taking shape, based on standards like <strong>interoperability</strong> (open formats), <strong>reversibility</strong> (the ability to easily retrieve one’s data), and the <strong>digital commons</strong> I mentioned earlier.</p>
<p>We could see industrial consortiums joining forces to create digital standards, such as <a href="https://eclipsesdv.org/">Eclipse SDV (for Software Defined Vehicles)</a>.</p>
<p>We could imagine conditions in public tenders that de facto eliminate US products—for example, an extraterritorial immunity clause to protect us by default against laws like the Cloud Act.</p>
<p>Finally, we can imagine Europe becoming a hub for digital ethics, attracting global talent who want to contribute to projects serving the general interest rather than the stock price of a giant.</p>
<p>In short, open source is not a magic wand for Europe to stop being a digital colony. We will have to go further. This will require courageous public procurement, massive funding of digital commons, and strict legal protection against extraterritorial laws. European digital identity will not be a gift from Tech giants, but an infrastructure we must build ourselves.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI & Layoffs: What if Artificial Intelligence Is Just an Excuse?]]></title>
            <link>https://eventuallymaking.io/p/ai-layoffs-what-if-artificial-intelligence-is-just-an-excuse</link>
            <guid>https://eventuallymaking.io/p/ai-layoffs-what-if-artificial-intelligence-is-just-an-excuse</guid>
            <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[273,000 job losses expected in the tech sector: Is AI already replacing us, or is it being used as a cover for opportunistic layoff plans? An analysis of a market shift where productivity isn’t always where you’d expect it to be.]]></description>
            <content:encoded><![CDATA[<p>Well, here we are—tech layoffs are exploding. According to <a href="https://www.rationalfx.com/">RationalFX</a>, the total number of departures is expected to reach 273,000 by the end of the year.</p>
<p>And while this figure alone doesn&#39;t mean much, know this: it represents roughly 10 times the annual volume of pre-COVID layoffs.</p>
<p>So, can we really say that humans are being progressively replaced by AI <a href="https://www.businessinsider.com/list-companies-replacing-human-employees-with-ai-layoffs-workforce-reductions#hp-4">as so many claim</a>?</p>
<table>
<thead>
<tr>
<th>Year</th>
<th>Average Annual</th>
</tr>
</thead>
<tbody><tr>
<td>2010-2019</td>
<td>15,000 to 30,000</td>
</tr>
<tr>
<td>2020-2021</td>
<td>85,000</td>
</tr>
<tr>
<td>2022</td>
<td>165,000</td>
</tr>
<tr>
<td>2023</td>
<td>264,000</td>
</tr>
<tr>
<td>2024</td>
<td>153,000</td>
</tr>
<tr>
<td>2025</td>
<td>245,000</td>
</tr>
<tr>
<td>2026</td>
<td>273,000 (forecast)</td>
</tr>
</tbody></table>
<p>In France, <a href="https://bsky.app/profile/insee.fr/post/3miax6xpogc23">INSEE speaks of a contraction in the job market directly linked to the rise of AI</a>. </p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1775308608839-go6oa5y.png" alt="" /></p>
<p>But correlation doesn&#39;t imply causation, so we&#39;re entitled to wonder if there&#39;s something else hiding behind all the hype.</p>
<p>So I wanted to dig deeper and explore the root causes to understand this wave. And it turns out AI might not be our biggest concern.</p>
<h2>Large waves of departures blamed on AI</h2>
<p>If you read the latest news, there&#39;s plenty to worry about:</p>
<ul>
<li>Oracle just <a href="https://www.bbc.com/news/articles/cm296jzzl9yo">laid off 30,000 people</a> (20% of its workforce)</li>
<li>Block cut <a href="https://www.theguardian.com/technology/2026/mar/03/jack-dorsey-block-ai-worker-jobs">40% of its headcount</a></li>
</ul>
<p>And I could&#39;ve cited Meta, Amazon, Klarna, ASML, Ericsson, Salesforce—the list goes on.</p>
<p>In most cases, AI is cited as one of the reasons. And this narrative has a major advantage because on paper, these companies say: we&#39;re automating, we&#39;re gaining productivity, and we&#39;re cutting fixed costs. Which tends to reassure shareholders.</p>
<p>Block&#39;s stock price, for example, recovered a bit in February following the announcements.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1775308667790-dgggjru.png" alt="" /></p>
<p> Same with Oracle&#39;s stock price (announcement made March 30th).</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1775308674411-363ss2q.png" alt="" /></p>
<p>Now doubts linger, and <a href="https://www.linkedin.com/pulse/ai-revolution-here-turns-out-its-just-layoff-better-pr-maren-hogan-hb4qc/">as one article put it</a>: &quot;Isn&#39;t this just layoffs with better marketing—AI washing?&quot;</p>
<h2>Block is really compensating for past management mistakes</h2>
<p>Block is the new name for Square, a payments company you might know from its little payment terminal that&#39;s now fairly ubiquitous:</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1775308701210-tklj01j.png" alt="" /></p>
<p>But Block isn&#39;t just a payment terminal—it&#39;s also companies in crypto because its founder, Jack Dorsey, is a big believer in cryptocurrencies.</p>
<p>Jack Dorsey is also the former founder of Twitter, which he sold to Elon Musk a few years ago.</p>
<p>And Jack tends to think big. Twitter had 8,000 employees when he sold it—a company that now runs with 2,800 people.</p>
<p>At Block, the company <strong>tripled</strong> its headcount post-COVID. We&#39;re talking about a 12,000-employee company that had just 4,000 pre-2020.</p>
<p>Sure, you can understand it by looking at the COVID effect on Block&#39;s stock.</p>
<p>Except the return to reality in 2022 hit hard. The company stagnated, and with an explosion in the payroll, things couldn&#39;t end well.</p>
<p>So we started seeing performance improvement plans emerge.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1775308736523-hd1tayq.png" alt="" /></p>
<p>Because if <a href="https://joshbersin.com/2026/03/is-blocks-decision-to-layoff-40-of-its-workforce-a-bellwether-or-not/">you look at the economic fundamentals, as this article does</a>, you realize that Block is far less profitable than its competitors, with gross margins that are half theirs.</p>
<p>Today, AI is mostly a &quot;pretty&quot; way to hide management mistakes and reassure investors.</p>
<h2>Oracle isn&#39;t cutting jobs for productivity gains</h2>
<p>Oracle&#39;s case is a bit different. Officially, it&#39;s not about cuts driven by productivity gains, but a reorientation of investments toward infrastructure to support AI.</p>
<p>In their case too, the stock price is rather concerning, but it&#39;s not the main driver of changes.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1775308763507-3o1k54g.png" alt="" /></p>
<p>As <a href="https://www.bbc.com/news/articles/cm296jzzl9yo">one article puts it, it's primarily about investment</a>:</p>
<blockquote>
<p>The job cuts at Oracle come as it has invested heavily in AI, spending both on its own infrastructure and on partnerships with other companies like OpenAI. It plans to spend at least $50bn on infrastructure this year, and it has also raised $50bn in debt in order to &quot;meet demand&quot; for even more AI infrastructure. Oracle is also part of the Stargate initiative, alongside OpenAI, SoftBank and MGX, an AI investment fund backed by US President Donald Trump.</p>
</blockquote>
<p>Here, it&#39;s really about reorienting capital from a traditional activity that&#39;s flagging to one that&#39;s supposed to replace it in a few years.</p>
<p>In reality, I won&#39;t criticize it. It&#39;s a strategy, a bet. A huge bet, but one that falls into the same category as what Kodak should&#39;ve done when digital arrived. <strong>And Oracle doesn&#39;t want to be the next Kodak.</strong></p>
<h2>The market is anticipating unrealized gains</h2>
<p>And that&#39;s really the issue—nobody wants to be the next Kodak.</p>
<p>When a leader (like Block, Google, or Meta) lays off 10% of its workforce and its stock goes up the next day, every other company is tempted to do the same.</p>
<p>Laying people off because you mismanaged your company would be an admission of failure. But laying people off because you&#39;re &quot;transforming through AI&quot; is a vision of the future.</p>
<p>And this FOMO—fear of missing out—explains a lot of the current departure plans. Gartner <a href="https://www.gartner.com/en/articles/future-of-work-trends">calls it "RIFs before reality", the anticipation of unrealized gains</a>:</p>
<blockquote>
<p>The employment deal is being rewritten in real time. CEOs are making bold moves based on AI&#39;s promise rather than its proven impact. Layoffs linked to AI dominated headlines last year, but Gartner data shows fewer than 1% were due to actual productivity gains.</p>
</blockquote>
<p>This anticipation drives investment reorientations. Oracle&#39;s case is representative here. Not everyone is investing in infrastructure, but many are reinvesting in engineering to automate other business functions and, most importantly, to be ready for the future.</p>
<blockquote>
<p>AI is no longer just a growth story; it&#39;s a cost-reduction tool, and firms are restructuring accordingly. What we&#39;re witnessing is a shift from headcount-driven expansion to automation-led productivity, a transition that will define the tech sector in the coming years. —Alan Cohen, analyst at RationalFX</p>
</blockquote>
<p>Now, this isn&#39;t new, and I notice a certain hypocrisy among some developers who are discovering today that their profession has always been about automating others&#39; jobs. It&#39;s a shame to discover it when it touches us personally.</p>
<p>Anyway, what&#39;s certain is that companies are anticipating cuts without yet having proof of the gains to come. It&#39;s not just a few layoffs—we&#39;re seeing signs, <a href="https://www.linkedin.com/posts/zuhayeer_companies-arent-just-laying-people-off-due-activity-7440136301531705344-7Ngq">notably raised by levels.fyi's founder</a>: we&#39;re witnessing a simplification of career paths.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1775308842239-o61bj6x.png" alt="" /></p>
<p>A layoff plan is temporary. But when you start eliminating rungs in career ladders, it signals you&#39;re anticipating a durable, global reduction in headcount.</p>
<p>And yet, once again, the gains aren&#39;t that obvious so far.</p>
<h2>Productivity gains aren&#39;t widely demonstrated yet</h2>
<p>We all have our opinion on this.</p>
<p>I consider myself more productive with AI. But not everyone agrees.</p>
<p>But in any case, these are just opinions.</p>
<p>There are studies on the topic of productivity, but there&#39;s no consensus.</p>
<p>You can find <a href="https://arxiv.org/abs/2507.09089">studies showing we're less productive</a>, but you <a href="https://www.pwc.fr/fr/espace-presse/communiques-de-presse/2024/mai/ai-jobs-barometer.html">can also find others saying the opposite</a>.</p>
<p>The causes are multiple. The first is what&#39;s called the <a href="https://en.wikipedia.org/wiki/Productivity_paradox">productivity paradox</a>:</p>
<blockquote>
<p>You can see the computer age everywhere but in the productivity statistics</p>
</blockquote>
<p>Yes, back then we wondered if computers really made us more productive. It was far from certain.</p>
<p>This paradox is explained two ways.</p>
<p>First, companies spend more time configuring tools, training people, and reorganizing workflows than actually producing more.</p>
<p>Second, a new technology requires a learning period that can be quite long to master. And that&#39;s what we&#39;re seeing today—AI usage is totally new. Many are just faster at doing what they did badly before.</p>
<p>And it&#39;s not like we know how to measure developer productivity anyway. I&#39;ll remind you that this question still hasn&#39;t found a universal answer since we started asking it.</p>
<p>Now, I&#39;ve also heard plenty of CTOs and IT directors privately say they have the means to prove it. <strong>But they don&#39;t want to</strong>. Because proving it would mean making decisions they don&#39;t want to make.</p>
<p>And I can tell you that in this period, I&#39;m glad I&#39;m no longer a CTO.</p>
<h2>Deeper economic reasons</h2>
<p>Still, as we&#39;ve seen, productivity gains or not, can we really say all current layoffs are AI-related? Probably not.</p>
<p>A <a href="https://www.resume.org/the-great-turnover-9-in-10-companies-plan-to-hire-in-2026-yet-6-in-10-will-have-layoffs-2/">recently cited study shows that 59% of HR leaders admit that AI was used as a "cover" to justify budget cuts that were actually driven by</a>:</p>
<ul>
<li>Over-hiring post-COVID</li>
<li>Investor pressure to increase margins</li>
<li>Internal strategy mistakes</li>
</ul>
<p>But I think that would be overly reductive.</p>
<p>It&#39;s mostly the nth demonstration that we&#39;ve entered a new era post-COVID. Between rising inflation, ongoing trade wars, endless debates about tariffs, skyrocketing energy costs, various conflicts that paralyze parts of international commerce—<strong>we&#39;re really in a recession</strong>.</p>
<p>AI is a facade to hide the rest. When Trump gets excited about his Stargate project (building datacenters), it&#39;s storytelling to hide the mess, even if it&#39;s true that AI is probably one of the drivers of the military sector in coming years and the US losing ground on it is probably making them nervous.</p>
<p>Yes, because the worst part is that even on AI, it&#39;s not certain the people leading the dance will be American.</p>
<p>Recent Chinese models like Ernie, DeepSeek, Qwen, and Kimi are largely on par with Gemini or ChatGPT, without necessarily costing the same. Kimi and DeepSeek reportedly cost 10% of their American counterparts during training phases.</p>
<p>Which, incidentally, is encouraging but mostly logical—technology improves, and we&#39;ve never seen tech stay this inefficient over time. The computer that sent a rocket to the moon was less powerful than our smartphone despite consuming far more energy.</p>
<p>And for all these reasons, US companies are in full downsizing mode. Players in AI need to become more competitive. They&#39;re investing heavily while cutting payroll at the same time.</p>
<p>Other tech companies are following suit, further constrained by hyper-unfavorable economic conditions and in a context where saying you&#39;re laying off to increase productivity is more sellable than admitting reality.</p>
<h2>A new era?</h2>
<p>And us in the middle of all this? Well...</p>
<p>I&#39;ll be honest—I really wondered how to conclude this piece. I always try to end on a positive note, but the exercise is difficult here. I&#39;ll try anyway.</p>
<p>Is this the end of an era? Probably the era of unreasonable hyper-growth, which isn&#39;t so bad. This forced downsizing might help us get back to basics instead of just chasing vanity metrics (like headcount).</p>
<p>It&#39;s also a global economic shift and a US bloc that seems to be faltering. I want to see some positivity in thinking that Europe has cards to play. We&#39;re less affected than the US by the recent massive waves of layoffs. Probably because we have less insane payrolls than the US and more solid social models.</p>
<p>While American giants painfully refocus, it&#39;s our moment in Europe to catch up. These new technologies, more accessible and efficient, let us move faster with fewer resources. Maybe it&#39;s finally time to create real European tech alternatives—more sober and pragmatic.</p>
<p>On that note, you can go back to normal activities.</p>
]]></content:encoded>
        </item>
        <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>bloggrify</category>
            <category>writizzy</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>bloggrify</category>
            <category>writizzy</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>
    </channel>
</rss>