<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Benjamin Touchard</title>
    <description>The latest articles on DEV Community by Benjamin Touchard (@benjy33000).</description>
    <link>https://dev.to/benjy33000</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1740181%2F6d815ca5-1362-4f6f-afda-31a93e2a8d24.jpg</url>
      <title>DEV Community: Benjamin Touchard</title>
      <link>https://dev.to/benjy33000</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/benjy33000"/>
    <language>en</language>
    <item>
      <title>I built two open-source tools faster by letting AI write most of the code</title>
      <dc:creator>Benjamin Touchard</dc:creator>
      <pubDate>Sat, 20 Dec 2025 11:20:40 +0000</pubDate>
      <link>https://dev.to/benjy33000/i-built-two-open-source-tools-faster-by-letting-ai-write-most-of-the-code-688</link>
      <guid>https://dev.to/benjy33000/i-built-two-open-source-tools-faster-by-letting-ai-write-most-of-the-code-688</guid>
      <description>&lt;p&gt;Over the past weeks, I built two open-source projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one in a few weeks,&lt;/li&gt;
&lt;li&gt;the other in a few days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not because I rushed.&lt;br&gt;
Not because they are toy projects.&lt;/p&gt;

&lt;p&gt;But because I changed &lt;em&gt;who types the code&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What actually changed (and what didn’t)
&lt;/h2&gt;

&lt;p&gt;I didn’t “let AI build a product”.&lt;/p&gt;

&lt;p&gt;I still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;define the architecture,&lt;/li&gt;
&lt;li&gt;decide what exists and what doesn’t,&lt;/li&gt;
&lt;li&gt;control data models,&lt;/li&gt;
&lt;li&gt;review every line,&lt;/li&gt;
&lt;li&gt;say no very often.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What changed is simple:&lt;br&gt;
&lt;strong&gt;I don’t type most of the code anymore.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI does.&lt;/p&gt;




&lt;h2&gt;
  
  
  This is not about prompts or magic
&lt;/h2&gt;

&lt;p&gt;This has nothing to do with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clever prompts,&lt;/li&gt;
&lt;li&gt;autonomous agents,&lt;/li&gt;
&lt;li&gt;“vibe coding” without thinking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It works because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I know exactly what I want,&lt;/li&gt;
&lt;li&gt;I know when something is wrong,&lt;/li&gt;
&lt;li&gt;I know how the system should behave.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI is fast.&lt;br&gt;
I am precise.&lt;/p&gt;

&lt;p&gt;That combination matters more than prompts.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I actually use AI to code
&lt;/h2&gt;

&lt;p&gt;My workflow is closer to this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I describe &lt;em&gt;very precisely&lt;/em&gt; what needs to be implemented&lt;/li&gt;
&lt;li&gt;The AI writes the code&lt;/li&gt;
&lt;li&gt;I read it like a strict reviewer&lt;/li&gt;
&lt;li&gt;I ask for corrections, refactors, deletions&lt;/li&gt;
&lt;li&gt;I integrate or reject&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The AI writes faster than I ever could.&lt;br&gt;
I think slower, but better.&lt;/p&gt;

&lt;p&gt;It feels very similar to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the first smart autocompletion,&lt;/li&gt;
&lt;li&gt;then IDE refactoring tools,&lt;/li&gt;
&lt;li&gt;then real-time linting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same shift. Bigger scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  Two different projects, same approach
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Ackify
&lt;/h3&gt;

&lt;p&gt;Ackify is an open-source tool to handle &lt;strong&gt;internal document acknowledgements&lt;/strong&gt;:&lt;br&gt;
proof that people actually read internal policies, procedures, or mandatory documents.&lt;/p&gt;

&lt;p&gt;It required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a clear domain model,&lt;/li&gt;
&lt;li&gt;strong constraints,&lt;/li&gt;
&lt;li&gt;no feature creep.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI helped write:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;handlers,&lt;/li&gt;
&lt;li&gt;storage layers,&lt;/li&gt;
&lt;li&gt;repetitive logic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I stayed in control of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scope,&lt;/li&gt;
&lt;li&gt;semantics,&lt;/li&gt;
&lt;li&gt;guarantees.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SHM
&lt;/h3&gt;

&lt;p&gt;SHM (Self-Hosted Metrics) is much smaller.&lt;br&gt;
It answers one question:&lt;br&gt;
&lt;em&gt;“Is this self-hosted app actually used?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It was built in days because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the scope was tiny,&lt;/li&gt;
&lt;li&gt;the rules were strict,&lt;/li&gt;
&lt;li&gt;the AI handled most of the boilerplate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Different scale.&lt;br&gt;
Same method.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI as a force multiplier, not a decision maker
&lt;/h2&gt;

&lt;p&gt;The biggest misunderstanding about AI-assisted coding is thinking it replaces thinking.&lt;/p&gt;

&lt;p&gt;It doesn’t.&lt;/p&gt;

&lt;p&gt;It replaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;typing speed,&lt;/li&gt;
&lt;li&gt;mechanical repetition,&lt;/li&gt;
&lt;li&gt;obvious glue code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The moment you stop knowing what you want,&lt;br&gt;
the output degrades immediately.&lt;/p&gt;

&lt;p&gt;AI is not creative in architecture.&lt;br&gt;
It is efficient in execution.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters for solo developers and open-source
&lt;/h2&gt;

&lt;p&gt;For solo developers, time is the real constraint.&lt;/p&gt;

&lt;p&gt;AI doesn’t give you ideas.&lt;br&gt;
It gives you &lt;strong&gt;throughput&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That makes it possible to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;explore ideas faster,&lt;/li&gt;
&lt;li&gt;kill bad ones earlier,&lt;/li&gt;
&lt;li&gt;finish small useful tools instead of polishing one forever.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s exactly how many open-source needs are met:&lt;br&gt;
small tools, precise scope, fast iteration.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;I don’t feel replaced by AI.&lt;br&gt;
I feel amplified.&lt;/p&gt;

&lt;p&gt;I still design.&lt;br&gt;
I still decide.&lt;br&gt;
I still review.&lt;/p&gt;

&lt;p&gt;I just don’t type as much anymore.&lt;/p&gt;

&lt;p&gt;And that’s fine.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Proving people actually read internal documents is still a mess</title>
      <dc:creator>Benjamin Touchard</dc:creator>
      <pubDate>Sat, 20 Dec 2025 11:15:33 +0000</pubDate>
      <link>https://dev.to/benjy33000/proving-people-actually-read-internal-documents-is-still-a-mess-2ng7</link>
      <guid>https://dev.to/benjy33000/proving-people-actually-read-internal-documents-is-still-a-mess-2ng7</guid>
      <description>&lt;p&gt;I’ve worked on internal tools, compliance processes, and regulated environments for years.&lt;/p&gt;

&lt;p&gt;And there is one recurring problem that almost everyone underestimates:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you prove that people actually read internal documents?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not signed contracts.&lt;br&gt;&lt;br&gt;
Not legal agreements.&lt;br&gt;&lt;br&gt;
Just things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;internal procedures&lt;/li&gt;
&lt;li&gt;security policies&lt;/li&gt;
&lt;li&gt;onboarding documents&lt;/li&gt;
&lt;li&gt;mandatory trainings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answers are usually disappointing.&lt;/p&gt;




&lt;h2&gt;
  
  
  How this is usually handled
&lt;/h2&gt;

&lt;p&gt;In most teams, it looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a PDF sent by email&lt;/li&gt;
&lt;li&gt;a shared folder or intranet page&lt;/li&gt;
&lt;li&gt;a checkbox in a form&lt;/li&gt;
&lt;li&gt;sometimes a signature on paper&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When someone asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can you prove that employees read this document?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer is often:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Well… we sent it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s not proof.&lt;br&gt;&lt;br&gt;
And in audits, that difference matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why existing tools don’t really fit
&lt;/h2&gt;

&lt;p&gt;There are many tools for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;e-signatures&lt;/li&gt;
&lt;li&gt;contract management&lt;/li&gt;
&lt;li&gt;document workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are usually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;heavy&lt;/li&gt;
&lt;li&gt;expensive&lt;/li&gt;
&lt;li&gt;SaaS-only&lt;/li&gt;
&lt;li&gt;designed for legal or sales use cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They solve problems like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;signing contracts&lt;/li&gt;
&lt;li&gt;closing deals&lt;/li&gt;
&lt;li&gt;external compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But internal acknowledgements are different.&lt;/p&gt;

&lt;p&gt;They are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;frequent&lt;/li&gt;
&lt;li&gt;low-risk&lt;/li&gt;
&lt;li&gt;internal&lt;/li&gt;
&lt;li&gt;boring but mandatory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using a full contract-signing platform for that feels excessive.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I actually needed
&lt;/h2&gt;

&lt;p&gt;From a technical and operational point of view, I needed something simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;prove that a document was presented&lt;/li&gt;
&lt;li&gt;prove that it was acknowledged&lt;/li&gt;
&lt;li&gt;keep a verifiable record&lt;/li&gt;
&lt;li&gt;without managing contracts or identities manually&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No document storage SaaS.&lt;br&gt;&lt;br&gt;
No legal framing.&lt;br&gt;&lt;br&gt;
No complexity.&lt;/p&gt;

&lt;p&gt;Just &lt;strong&gt;proof of read&lt;/strong&gt;, done properly.&lt;/p&gt;




&lt;h2&gt;
  
  
  A pragmatic response: Ackify
&lt;/h2&gt;

&lt;p&gt;So I built &lt;strong&gt;Ackify&lt;/strong&gt;, an open-source tool focused on one thing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Internal document acknowledgements.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ackify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generates acknowledgement requests&lt;/li&gt;
&lt;li&gt;records confirmations&lt;/li&gt;
&lt;li&gt;produces verifiable proof&lt;/li&gt;
&lt;li&gt;stays simple by design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not a replacement for legal signature platforms.&lt;br&gt;&lt;br&gt;
It’s a tool for internal compliance and operational needs.&lt;/p&gt;

&lt;p&gt;👉 Repository: &lt;a href="https://github.com/btouchard/ackify-ce" rel="noopener noreferrer"&gt;https://github.com/btouchard/ackify-ce&lt;/a&gt;&lt;br&gt;
👉 Website: &lt;a href="https://ackify.eu" rel="noopener noreferrer"&gt;https://ackify.eu&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  Why this problem is mostly ignored
&lt;/h2&gt;

&lt;p&gt;Internal compliance is not shiny.&lt;/p&gt;

&lt;p&gt;It doesn’t:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generate revenue directly&lt;/li&gt;
&lt;li&gt;impress investors&lt;/li&gt;
&lt;li&gt;fit growth dashboards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it costs time, energy, and stress when done badly.&lt;/p&gt;

&lt;p&gt;Big platforms optimize for contracts and transactions.&lt;br&gt;&lt;br&gt;
Small teams just need clarity and traceability.&lt;/p&gt;

&lt;p&gt;This gap is where many open-source tools live.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;Not every problem needs an enterprise platform.&lt;/p&gt;

&lt;p&gt;Some problems just need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a clear scope&lt;/li&gt;
&lt;li&gt;a simple workflow&lt;/li&gt;
&lt;li&gt;and reliable evidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Internal acknowledgements are one of them.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>selfhosted</category>
      <category>devops</category>
      <category>compliance</category>
    </item>
    <item>
      <title>Why I refuse to ship Google Analytics in open-source projects</title>
      <dc:creator>Benjamin Touchard</dc:creator>
      <pubDate>Sat, 20 Dec 2025 11:03:15 +0000</pubDate>
      <link>https://dev.to/benjy33000/why-i-refuse-to-ship-google-analytics-in-open-source-projects-47dp</link>
      <guid>https://dev.to/benjy33000/why-i-refuse-to-ship-google-analytics-in-open-source-projects-47dp</guid>
      <description>&lt;p&gt;I build open-source applications, most of them self-hosted.&lt;/p&gt;

&lt;p&gt;Like many developers, I need metrics. Not marketing metrics. Just basic signals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the application actually used?&lt;/li&gt;
&lt;li&gt;How many instances are alive?&lt;/li&gt;
&lt;li&gt;Which features are used at all?&lt;/li&gt;
&lt;li&gt;And for a long time, the default answer was obvious: Google Analytics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But at some point, I decided to stop shipping it entirely.&lt;/p&gt;




&lt;h2&gt;
  
  
  Google Analytics is a poor fit for open-source and self-hosted apps
&lt;/h2&gt;

&lt;p&gt;Google Analytics is not a bad tool. It’s just built for a completely different purpose.&lt;/p&gt;

&lt;p&gt;It assumes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a centralized SaaS product,&lt;/li&gt;
&lt;li&gt;tracked end-users,&lt;/li&gt;
&lt;li&gt;marketing funnels,&lt;/li&gt;
&lt;li&gt;cookies, consent banners, and external dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that aligns well with self-hosted open-source software.&lt;/p&gt;

&lt;p&gt;Embedding GA in an open-source app means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sending usage data outside the user’s infrastructure,&lt;/li&gt;
&lt;li&gt;introducing legal and privacy concerns you don’t control,&lt;/li&gt;
&lt;li&gt;tracking individuals when you only want aggregate usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, the cost (technical, ethical, cognitive) is higher than the value.&lt;/p&gt;




&lt;h2&gt;
  
  
  Existing alternatives didn’t really solve my problem
&lt;/h2&gt;

&lt;p&gt;I looked at many “privacy-friendly” or “self-hosted” analytics tools, like Countly, PostHog, ...&lt;/p&gt;

&lt;p&gt;Most of them still assume:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;websites, not distributed instances,&lt;/li&gt;
&lt;li&gt;user tracking (even anonymized),&lt;/li&gt;
&lt;li&gt;dashboards designed for marketing teams,&lt;/li&gt;
&lt;li&gt;heavy setups for very simple questions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I needed was much simpler.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I actually need as a developer / CTO
&lt;/h2&gt;

&lt;p&gt;For open-source and self-hosted software, my questions are boring but essential:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this instance still running?&lt;/li&gt;
&lt;li&gt;Is anyone using this feature?&lt;/li&gt;
&lt;li&gt;Is adoption growing or stagnating?&lt;/li&gt;
&lt;li&gt;Did this release break usage patterns?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don’t need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;page views,&lt;/li&gt;
&lt;li&gt;funnels,&lt;/li&gt;
&lt;li&gt;session replay,&lt;/li&gt;
&lt;li&gt;user identity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I just need &lt;strong&gt;signals&lt;/strong&gt;, not surveillance.&lt;/p&gt;




&lt;h2&gt;
  
  
  A pragmatic response: build something smaller
&lt;/h2&gt;

&lt;p&gt;So I built a small open-source service called SHM (Self-Hosted Metrics).&lt;/p&gt;

&lt;p&gt;It’s intentionally minimal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it accepts simple JSON events,&lt;/li&gt;
&lt;li&gt;it doesn’t track users,&lt;/li&gt;
&lt;li&gt;it’s agnostic to the application,&lt;/li&gt;
&lt;li&gt;it works well with self-hosted deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not analytics.&lt;br&gt;
The goal is &lt;strong&gt;observability of usage&lt;/strong&gt;, without violating the principles of open-source or self-hosting.&lt;/p&gt;

&lt;p&gt;Repository:&lt;br&gt;
👉 &lt;a href="https://github.com/btouchard/shm" rel="noopener noreferrer"&gt;https://github.com/btouchard/shm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;h2&gt;
  
  
  What this says about the open-source ecosystem
&lt;/h2&gt;

&lt;p&gt;A lot of real needs sit between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“no metrics at all”&lt;/li&gt;
&lt;li&gt;and “full SaaS analytics stacks”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Big tools don’t care about these needs.&lt;br&gt;
They’re not scalable, not monetizable, and not flashy.&lt;/p&gt;

&lt;p&gt;But for maintainers, indie developers, and small teams, they matter.&lt;/p&gt;

&lt;p&gt;Not everything needs to be measured like a growth funnel.&lt;br&gt;
Sometimes, knowing that your software is simply used is enough.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>selfhosted</category>
      <category>privacy</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
