<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Law-and-Regulation | AkitaOnRails.com</title><link>https://akitaonrails.github.io/en/tags/law-and-regulation/</link><description>Fabio Akita's blog — tech, career, and assorted geek topics. English edition.</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 19 Oct 2026 23:20:51 +0000</lastBuildDate><atom:link href="https://akitaonrails.github.io/en/tags/law-and-regulation/index.xml" rel="self" type="application/rss+xml"/><item><title>Survival Guide for a Censored Internet</title><link>https://akitaonrails.github.io/en/2026/08/19/survival-guide-for-a-censored-internet/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/08/19/survival-guide-for-a-censored-internet/</guid><pubDate>Wed, 19 Aug 2026 12:00:00 -0300</pubDate><description>&lt;p&gt;Last week I wrote about &lt;a href="https://akitaonrails.github.io/en/2026/08/13/understanding-the-discord-censorship-and-brazils-digital-eca/"&gt;the Discord censorship and Brazil&amp;rsquo;s Digital ECA law&lt;/a&gt;, the Digital ECA (&amp;ldquo;Estatuto Digital da Criança e do Adolescente&amp;rdquo;, the digital version of Brazil&amp;rsquo;s Child and Adolescent Statute): the ANPD (Brazil&amp;rsquo;s data protection authority, now also the country&amp;rsquo;s de facto internet regulator) ordered the Go Live feature shut down nationwide because end-to-end encryption prevents content surveillance, and in the same package came the first sentence enhancement in Brazilian history for committing a crime &amp;ldquo;using a VPN&amp;rdquo;. After that article, the question I got the most was the obvious one: &lt;em&gt;&amp;ldquo;OK, so what do I do?&amp;rdquo;&lt;/em&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>Last week I wrote about <a href="/en/2026/08/13/understanding-the-discord-censorship-and-brazils-digital-eca/">the Discord censorship and Brazil&rsquo;s Digital ECA law</a>, the Digital ECA (&ldquo;Estatuto Digital da Criança e do Adolescente&rdquo;, the digital version of Brazil&rsquo;s Child and Adolescent Statute): the ANPD (Brazil&rsquo;s data protection authority, now also the country&rsquo;s de facto internet regulator) ordered the Go Live feature shut down nationwide because end-to-end encryption prevents content surveillance, and in the same package came the first sentence enhancement in Brazilian history for committing a crime &ldquo;using a VPN&rdquo;. After that article, the question I got the most was the obvious one: <em>&ldquo;OK, so what do I do?&rdquo;</em></p>
<p>This article is the answer: a practical guide, from easiest to hardest, to keep your communication channels standing as the siege tightens. Because the siege <strong>is</strong> tightening, and you should understand its pace before picking your tools.</p>
<h2>The track record: none of this is new<span class="hx:absolute hx:-mt-20" id="the-track-record-none-of-this-is-new"></span>
    <a href="#the-track-record-none-of-this-is-new" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Anyone surprised by the Discord case was not paying attention. The Brazilian judiciary has been blocking communication services for over a decade, always steamrolling millions of innocent users to reach half a dozen suspects:</p>
<ul>
<li><strong>WhatsApp, 2015 and 2016</strong>: blocked <a href="https://g1.globo.com/tecnologia/noticia/2022/03/18/whatsapp-ja-foi-bloqueado-por-decisao-judicial-em-2015-e-2016-no-brasil.ghtml"target="_blank" rel="noopener">three times by lower-court judges</a>, always because the company would not hand over conversations that, by design, it cannot read.</li>
<li><strong>Telegram, 2022 and 2023</strong>: suspended <a href="https://www.gazetadopovo.com.br/republica/stf-voltara-a-julgar-bloqueio-do-whatsapp-moraes-ja-suspendeu-telegram/"target="_blank" rel="noopener">for two days by order of Justice Alexandre de Moraes in March 2022</a>, and again by a federal judge in 2023. <a href="https://www.migalhas.com.br/depeso/414499/stf-alem-do-x-relembre-os-bloqueios-do-whatsapp-e-telegram-no-brasil"target="_blank" rel="noopener">Migalhas has the full timeline</a>.</li>
<li><strong>X/Twitter, 2024</strong>: the landmark. <a href="https://itforum.com.br/noticias/de-outubro-a-outubro-confronto-x-e-stf/"target="_blank" rel="noopener">Nationwide suspension from August 30 to October 8</a>, <strong>40 days</strong>, by a single justice&rsquo;s order. And here is the detail that matters for this guide: the decision included <a href="https://www.gazetadopovo.com.br/mundo/crise-eua-moraes-twitter-files-lei-magnitsky/"target="_blank" rel="noopener">a fine of R$ 50,000 (~US$ 10,000) per day for any individual who accessed X through a VPN</a>, an order for app stores to remove VPN apps (walked back hours later), and <a href="https://istoedinheiro.com.br/pf-e-anatel-enviam-ao-stf-relatorios-sobre-acessos-ao-x-mesmo-com-bloqueio"target="_blank" rel="noopener">the Federal Police and Anatel (the telecom regulator) producing reports on who bypassed the block</a> to support the fines.</li>
</ul>
<p>Notice what happened there: for the first time, using a neutral privacy tool became, by itself, punishable conduct in Brazil. Nobody was fined in the end, but the infrastructure to fine people was built, tested and documented. And in 2026 Congress voted and the president signed a sentence enhancement for crimes committed with a VPN. The X precedent stopped being an exception and became repertoire.</p>
<blockquote>
  <p><strong>Keep this:</strong> in the X case, the Brazilian state already treated VPN users as offenders, already tried to pull VPNs from app stores, and already requested reports on who bypassed the block. All of it documented, in court orders and public reports.</p>

</blockquote>
<h2>The endgame: the Chinese model<span class="hx:absolute hx:-mt-20" id="the-endgame-the-chinese-model"></span>
    <a href="#the-endgame-the-chinese-model" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>I have little doubt that very well-positioned people in government look at <a href="https://freedomhouse.org/country/china/freedom-net/2024"target="_blank" rel="noopener">China&rsquo;s Great Firewall</a> with envy, not horror. And it is worth understanding what it is, because it defines the limit of the game.</p>
<p>The Firewall goes far beyond blocking websites. It is deep packet inspection (DPI) at national scale, running on the country&rsquo;s internet backbone: all traffic is classified in real time, known VPN protocols are identified by their handshake shape and dropped, Tor is blocked by default, and only <strong>state-approved VPNs</strong> (meaning, with a backdoor) operate legally. Ordinary citizens caught using unauthorized VPNs get fined. And even when the traffic cannot be read, the metadata gives the game away: who talks to whom, when, for how long.</p>
<p>That is why the honest answer to &ldquo;can you bypass a Firewall like that without being noticed?&rdquo; is: <strong>no, not for an ordinary citizen</strong>. Against a state-level firewall of that caliber, no consumer tool makes you invisible. At best it makes you too expensive to be worth persecuting at scale. Anyone selling you total invisibility is lying.</p>
<p>The good news is that Brazil is nowhere near that point. Censorship rarely arrives all at once: it comes in steps, and each step has a matching defense. The rest of this guide is that staircase, step by step. The logic behind everything that follows is a single one: <strong>censorship is a matter of cost</strong>. Our job is to make blocking expensive, technically and politically, until mass deployment becomes impractical.</p>
<blockquote>
  <p><strong>Keep this:</strong> against a complete state firewall, no tool makes you invisible, only too expensive to persecute at scale. The game is climbing your staircase before the censor climbs his.</p>

</blockquote>
<h2>Phase 1: Commercial VPN, the minimum everyone should have<span class="hx:absolute hx:-mt-20" id="phase-1-commercial-vpn-the-minimum-everyone-should-have"></span>
    <a href="#phase-1-commercial-vpn-the-minimum-everyone-should-have" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Start with the obvious. A VPN (virtual private network) creates an encrypted tunnel between your device and a provider&rsquo;s server. Your ISP (internet service provider) now sees only a scrambled flow going to a single address; the sites you visit see the VPN&rsquo;s IP, not yours. I explain it in depth, with the networking theory underneath, in <a href="https://akitaonrails.com/2022/08/29/akitando-126-criando-uma-rede-segura-introducao-a-redes-parte-6-vpn-e-nas/"target="_blank" rel="noopener">Akitando 126</a> (in Portuguese).</p>
<p>What a VPN <strong>does</strong>: hides your traffic from your ISP, swaps your exit IP, gets you out of geo-blocks and of court-ordered DNS/IP blocks. What it <strong>does not do</strong>:</p>
<ul>
<li><strong>It does not make you anonymous.</strong> The VPN provider sees all your traffic in place of your ISP. You did not eliminate the watcher, you just picked a different watcher.</li>
<li><strong>It does not hide your identity if you paid by credit card.</strong> A credit card subscription ties the VPN account to your tax ID. If authorities show up at the provider with a court order, your name is there.</li>
<li><strong>It does not protect content past the tunnel.</strong> From the VPN exit to the final website, the web&rsquo;s normal encryption (HTTPS) applies. The VPN is one leg of the path, not the whole path.</li>
</ul>
<p>That said, for the early phases of the siege it does the job. My recommendations, in order:</p>
<ul>
<li><strong><a href="https://protonvpn.com/"target="_blank" rel="noopener">ProtonVPN</a></strong>: Switzerland, outside easy jurisdiction, open source and audited, a no-logs policy tested in court, a decent free tier, and it accepts payment even in cash by mail.</li>
<li><strong><a href="https://mullvad.net/"target="_blank" rel="noopener">Mullvad</a></strong>: Sweden, the most paranoid on the market: it does not even ask for an email, your account is a random number. Flat €5/month, accepts cash in an envelope and cryptocurrency. It is the closest thing to an &ldquo;identity-less VPN&rdquo; that exists as a commercial product.</li>
<li>NordVPN and the like work technically, but their money goes more to marketing than to privacy posture. Among the big ones, I stick with the two above.</li>
</ul>
<p><strong>The limit of this phase</strong> is well known: the exit IPs of famous VPNs are public and catalogued. An order from ANPD or Anatel to national ISPs to block those ranges is technically trivial, and the X case showed that pulling the app from the store is also on the menu. When (not if) that happens, the commercial VPN dies in a day. That is why Phase 2 exists.</p>
<blockquote>
  <p><strong>Keep this:</strong> a commercial VPN is a seatbelt: use it always, but know it depends on three things outside your control. The app staying in the store, the IPs staying unblocked, and the provider staying honest.</p>

</blockquote>
<h2>Phase 2: Self-hosted VPN, your own tunnel<span class="hx:absolute hx:-mt-20" id="phase-2-self-hosted-vpn-your-own-tunnel"></span>
    <a href="#phase-2-self-hosted-vpn-your-own-tunnel" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The move here changes shape: instead of subscribing to a service with millions of users and catalogued IPs, you rent a cheap little server outside Brazil and build your personal VPN. There is no public list with your IP for the censors to download. You are one user on an unknown IP, indistinguishable from any other traffic until someone looks closely.</p>
<p><strong>Picking the provider (and why not AWS, Azure or Google Cloud).</strong> The big clouds have huge, public, well-mapped IP ranges (ASNs). Blocking them wholesale is one line in a routing table; the only brake is collateral damage (plenty of legitimate Brazilian businesses live there), and other countries have paid that price in crises. Smaller providers dilute that target. Options I would consider, from mid-sized to small:</p>
<table>
  <thead>
      <tr>
          <th>Provider</th>
          <th>Based in</th>
          <th>Why</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="https://www.hetzner.com/cloud"target="_blank" rel="noopener">Hetzner</a></td>
          <td>Germany/Finland</td>
          <td>Cheap, reliable, out of easy reach</td>
      </tr>
      <tr>
          <td><a href="https://www.ovhcloud.com/"target="_blank" rel="noopener">OVH</a> / <a href="https://www.scaleway.com/"target="_blank" rel="noopener">Scaleway</a></td>
          <td>France</td>
          <td>Same, European jurisdiction</td>
      </tr>
      <tr>
          <td><a href="https://contabo.com/"target="_blank" rel="noopener">Contabo</a></td>
          <td>Germany</td>
          <td>Very cheap, low profile</td>
      </tr>
      <tr>
          <td><a href="https://www.vultr.com/"target="_blank" rel="noopener">Vultr</a> / <a href="https://www.digitalocean.com/"target="_blank" rel="noopener">DigitalOcean</a></td>
          <td>US/global</td>
          <td>Mid-sized, known but not giant</td>
      </tr>
      <tr>
          <td><a href="https://my.frantech.ca/"target="_blank" rel="noopener">BuyVM</a>, <a href="https://hosthatch.com/"target="_blank" rel="noopener">HostHatch</a>, <a href="https://liteserver.nl/"target="_blank" rel="noopener">LiteServer</a></td>
          <td>US/Europe</td>
          <td>Small, off every obvious list</td>
      </tr>
  </tbody>
</table>
<p>A US$ 3 to 5 machine with 1 GB of RAM is plenty for a personal VPN. <strong>Important caveat:</strong> paying for a VPS (virtual private server) with a credit card leaves a trail just like the commercial VPN: your name is in the provider&rsquo;s records, and the provider can be legally compelled. Some accept cryptocurrency, which reduces (does not eliminate) the trail. For most people, at this phase, the signup risk is acceptable: you are not hiding from a named investigation, you are getting out of the aim of a mass block.</p>
<h3>Step by step: WireGuard with wg-easy<span class="hx:absolute hx:-mt-20" id="step-by-step-wireguard-with-wg-easy"></span>
    <a href="#step-by-step-wireguard-with-wg-easy" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I will use <a href="https://github.com/wg-easy/wg-easy"target="_blank" rel="noopener">wg-easy</a>, which packages WireGuard (the modern, fast, auditable VPN protocol) into a Docker container with a web panel and QR codes to set up your phone in seconds.</p>
<p><strong>1. Rent the VPS.</strong> Ubuntu 24.04, the smallest machine available, in a region outside Brazil (Amsterdam, Frankfurt and Helsinki are classic choices for jurisdiction and acceptable latency).</p>
<p><strong>2. Log in and update:</strong></p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ssh root@YOUR_IP
</span></span><span class="line"><span class="cl">apt update <span class="o">&amp;&amp;</span> apt upgrade -y</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p><strong>3. Install Docker:</strong></p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -fsSL https://get.docker.com <span class="p">|</span> sh</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p><strong>4. Generate the panel password hash</strong> (wg-easy does not accept a plaintext password; write down the password you choose):</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker run --rm -it ghcr.io/wg-easy/wg-easy wgpw <span class="s1">&#39;YourStrongPasswordHere&#39;</span>
</span></span><span class="line"><span class="cl"><span class="c1"># the output looks like: PASSWORD_HASH=$2b$12$abc...</span>
</span></span><span class="line"><span class="cl"><span class="c1"># in the command below, double every dollar sign: $ becomes $$</span></span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p><strong>5. Start the container:</strong></p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker run -d <span class="se">\
</span></span></span><span class="line"><span class="cl">  --name<span class="o">=</span>wg-easy <span class="se">\
</span></span></span><span class="line"><span class="cl">  -e <span class="nv">WG_HOST</span><span class="o">=</span>YOUR_IP <span class="se">\
</span></span></span><span class="line"><span class="cl">  -e <span class="nv">PASSWORD_HASH</span><span class="o">=</span><span class="s1">&#39;$$2b$$12$$abc...&#39;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">  -v ~/.wg-easy:/etc/wireguard <span class="se">\
</span></span></span><span class="line"><span class="cl">  -p 51820:51820/udp <span class="se">\
</span></span></span><span class="line"><span class="cl">  -p 51821:51821/tcp <span class="se">\
</span></span></span><span class="line"><span class="cl">  --cap-add<span class="o">=</span>NET_ADMIN <span class="se">\
</span></span></span><span class="line"><span class="cl">  --sysctl<span class="o">=</span><span class="s2">&#34;net.ipv4.conf.all.src_valid_mark=1&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">  --sysctl<span class="o">=</span><span class="s2">&#34;net.ipv4.ip_forward=1&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">  --restart unless-stopped <span class="se">\
</span></span></span><span class="line"><span class="cl">  ghcr.io/wg-easy/wg-easy</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p><strong>6. Open the firewall.</strong> Port 51820/UDP is the tunnel itself. Port 51821/TCP is the panel: <strong>do not leave the panel exposed to the internet</strong>. The right way is to open it only through an SSH tunnel (<code>ssh -L 51821:localhost:51821 root@YOUR_IP</code> and browse to <code>localhost:51821</code>), or to open 51821 just long enough to create your clients and close it right after.</p>
<p><strong>7. Create the clients.</strong> In the panel, one click generates a client with a QR code. Point the official WireGuard app (Android/iOS) camera at it and you are done. On a laptop, download the config file and import it into the WireGuard client.</p>
<p>Done: all of your device&rsquo;s traffic exits through your European server. Your Brazilian ISP sees only a scrambled flow to some random IP in Germany.</p>
<h3>And on your machine, how do you use it?<span class="hx:absolute hx:-mt-20" id="and-on-your-machine-how-do-you-use-it"></span>
    <a href="#and-on-your-machine-how-do-you-use-it" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The server is half the story. On your device, the ritual goes like this:</p>
<p><strong>On your phone (Android/iOS):</strong> install the official <a href="https://www.wireguard.com/install/"target="_blank" rel="noopener">WireGuard</a> app from the store (or from F-Droid on Android). Tap the <strong>&quot;+&quot;</strong>, choose &ldquo;Scan from QR code&rdquo; and point it at the code the wg-easy panel showed. A new &ldquo;tunnel&rdquo; appears in the list: one tap on the switch and you are in. On iOS, enable &ldquo;On-Demand&rdquo; in the tunnel settings so it reconnects by itself when you switch networks (Wi-Fi to 4G, for instance).</p>
<p><strong>On your laptop (Windows/macOS):</strong> download the official WireGuard client for your system, click &ldquo;Import tunnel(s) from file&rdquo; and select the <code>.conf</code> you downloaded from the panel. One click on &ldquo;Activate&rdquo; and done. Important detail: the official client has a <strong>&ldquo;Block untunneled traffic&rdquo;</strong> option (the kill switch): turn it on. If the tunnel drops, your internet stops instead of leaking through your real IP.</p>
<p><strong>On Linux:</strong> copy the <code>.conf</code> to <code>/etc/wireguard/wg0.conf</code> and bring it up with <code>sudo wg-quick up wg0</code> (plus <code>sudo systemctl enable wg-quick@wg0</code> to start it at boot). Or import the file straight into NetworkManager through the graphical interface, if you prefer clicking to typing.</p>
<p>A complete client <code>.conf</code>, for reference, looks like this:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="k">[Interface]</span>
</span></span><span class="line"><span class="cl"><span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;THIS device&#39;s private key&gt;</span>
</span></span><span class="line"><span class="cl"><span class="na">Address</span> <span class="o">=</span> <span class="s">10.10.0.2/32</span>
</span></span><span class="line"><span class="cl"><span class="na">DNS</span> <span class="o">=</span> <span class="s">1.1.1.1</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">[Peer]</span>
</span></span><span class="line"><span class="cl"><span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;server public key&gt;</span>
</span></span><span class="line"><span class="cl"><span class="na">Endpoint</span> <span class="o">=</span> <span class="s">SERVER_IP:51820</span>
</span></span><span class="line"><span class="cl"><span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">0.0.0.0/0</span>
</span></span><span class="line"><span class="cl"><span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>Two details worth their weight in gold here. <code>PersistentKeepalive = 25</code> keeps the tunnel alive when you are behind NAT (home network, 4G), preventing the connection from silently dying. And <code>AllowedIPs = 0.0.0.0/0</code> is what pushes <strong>all</strong> traffic into the tunnel; without it, only traffic to the VPN&rsquo;s own IPs goes out encrypted. (The <code>DNS =</code> line works fine on Windows, macOS and phones; on Linux with systemd-resolved it can get in the way, as I explain in the common mistakes below.)</p>
<p><strong>Checking that it worked:</strong> with the tunnel active, run <code>curl ifconfig.me</code> in a terminal (or open <code>ipleak.net</code> in the browser). It must show your VPS IP, not your home one. If your network has IPv6, check separately with <code>curl -4 ifconfig.me</code> and <code>curl -6 ifconfig.me</code>: <strong>both</strong> must show the server. And visit <code>dnsleaktest.com</code>: DNS must exit through the tunnel too. If your ISP&rsquo;s DNS server shows up, there is a leak to fix.</p>
<p><strong>Minimum maintenance:</strong> enable <code>unattended-upgrades</code> so the system patches itself, use SSH keys instead of passwords, and install nothing else on that machine. Small surface, small risk.</p>
<h3>The 2026 way to do this: let the AI configure it<span class="hx:absolute hx:-mt-20" id="the-2026-way-to-do-this-let-the-ai-configure-it"></span>
    <a href="#the-2026-way-to-do-this-let-the-ai-configure-it" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>If you got stuck on some step, remember it is 2026: you no longer need to master every command in this guide. I went down that path myself. I rented the VPS, handed the SSH access to the AI agent and asked for the full setup; on the other side, on my own machine, it imported the <code>.conf</code>, brought up <code>wg-quick</code>, enabled it at boot and checked for leaks at the end. Today my server is a reproducible Ansible playbook (kill the VPS, spin up another, run one command) and my laptop&rsquo;s config follows the same pattern. All in <strong>private</strong> repositories, private on purpose: VPN configuration is not the sort of thing I want strangers peeking at.</p>
<p><img src="gitea-my-vpnserver.png" alt="My private Gitea repository with the server’s Ansible playbook: “Private” badge, roles, group_vars and an operations README"  loading="lazy" /></p>
<p><em>Mine, running on my own Gitea: private, versioned, and the whole server comes back up with one command.</em></p>
<p>And if you are going to ask an AI to configure it, skip the generic &ldquo;install me a VPN&rdquo; and hand over the real requirements. Something like this:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Turn this fresh Ubuntu 24.04 VPS into a robust WireGuard server,
</span></span><span class="line"><span class="cl">preferably through an idempotent Ansible playbook (I want to be able to
</span></span><span class="line"><span class="cl">destroy the VPS and recreate everything by running one command).
</span></span><span class="line"><span class="cl">Requirements:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">- WireGuard managed by wg-quick@wg0, server key generated on the server
</span></span><span class="line"><span class="cl">  itself (mode 0600), no exposed web panel
</span></span><span class="line"><span class="cl">- Dual-stack tunnel: IPv4 and IPv6 (fd00::/64 ULA subnet with NAT66), so
</span></span><span class="line"><span class="cl">  no traffic leaks outside on networks with native IPv6
</span></span><span class="line"><span class="cl">- ufw denying everything except SSH and the WireGuard UDP port
</span></span><span class="line"><span class="cl">- key-only sshd (no passwords), fail2ban on sshd, unattended-upgrades
</span></span><span class="line"><span class="cl">  with no automatic reboot
</span></span><span class="line"><span class="cl">- Peers declared as data in a config file: adding a client = adding one
</span></span><span class="line"><span class="cl">  entry and running the playbook again
</span></span><span class="line"><span class="cl">- Generate client .conf files with PersistentKeepalive=25, full-tunnel
</span></span><span class="line"><span class="cl">  AllowedIPs and QR codes via qrencode
</span></span><span class="line"><span class="cl">- At the end, print the verification commands (curl -4/-6 ifconfig.me,
</span></span><span class="line"><span class="cl">  wg show)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Finally, hand me a short operations README: how to add a client, how to
</span></span><span class="line"><span class="cl">update, when to reboot.</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>The difference between a &ldquo;working&rdquo; server and a solid one lives entirely in those requirements: dual-stack, closed firewall, passwordless sshd, peers as data, reproducibility. The technical barrier of this entire article has, in practice, become a conversation.</p>
<h3>Common mistakes (and how to avoid them)<span class="hx:absolute hx:-mt-20" id="common-mistakes-and-how-to-avoid-them"></span>
    <a href="#common-mistakes-and-how-to-avoid-them" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I keep seeing the same stumbles whenever someone sets up their first self-hosted VPN. All avoidable:</p>
<ul>
<li><strong>Exposing the wg-easy panel to the internet.</strong> The number one classic mistake. The panel is the key to the vault: open on port 51821, any botnet scan finds it within hours. SSH tunnel always, open port never.</li>
<li><strong>Weak or recycled passwords on the panel and SSH.</strong> An entire VPN protected by <code>changeme123</code> is worse than no VPN. And disable SSH password login for good (<code>PasswordAuthentication no</code> in <code>sshd_config</code>) once your key is set up.</li>
<li><strong>Thinking you are anonymous because the IP is &ldquo;yours&rdquo;.</strong> The VPS is in your name, paid with your card. It protects you from mass blocking, not from an investigation with your name on it. The wrong level of paranoia creates a false sense of security, which is worse than none.</li>
<li><strong>A VPS in Brazil or from a Brazilian company.</strong> I have seen people build a &ldquo;privacy VPN&rdquo; on a national provider. If the court order arrives in the same country, you did not leave the reach, you just changed shelves. Server abroad, jurisdiction abroad.</li>
<li><strong>Handing out access to half the world.</strong> Each extra person is one more device, one more usage pattern, one more mouth. Close family, fine; a 40-contact group, no. The more people on the same IP, the faster it lands on some list.</li>
<li><strong>Using the same machine for other things.</strong> Personal blog, Telegram bot, seedbox: all of that grows the attack surface and ties together identities you wanted separate. The VPN VPS is for the VPN only.</li>
<li><strong>Trusting without testing for leaks.</strong> After setting up, test: <code>ipleak.net</code> or <code>dnsleaktest.com</code> with the VPN on. If your real IP or your ISP&rsquo;s DNS shows up, something is wrong, and this is the only way you find out.</li>
<li><strong>Forgetting IPv6.</strong> This one got even me: an IPv4-only tunnel on a network with native IPv6, and all the v6 traffic goes around the VPN, in the clear, without you noticing. Either the tunnel is dual-stack, or half of your traffic leaks. Test with <code>curl -6 ifconfig.me</code>.</li>
<li><strong>The <code>DNS =</code> line breaking the Linux client.</strong> On systemd-resolved systems (Ubuntu, Fedora and the like), <code>wg-quick</code> calls openresolv to write the DNS, openresolv refuses to touch the <code>/etc/resolv.conf</code> owned by systemd-resolved (&ldquo;signature mismatch&rdquo; error) and the whole interface fails to come up. If your system DNS already works fine, just remove the line: queries ride the tunnel anyway.</li>
<li><strong>Losing the printer, the NAS and the local network.</strong> With <code>AllowedIPs = 0.0.0.0/0</code>, even traffic inside your own home tries to go through the tunnel. The fix is a policy routing rule evaluated before WireGuard&rsquo;s own rules: <code>PostUp = ip rule add to 192.168.0.0/16 lookup main priority 1000</code> (plus the matching <code>PostDown</code> to undo it on shutdown).</li>
<li><strong>Chaining <code>wg-quick down &amp;&amp; up</code>.</strong> <code>down</code> returns an error when the interface is already down, and with <code>&amp;&amp;</code> the <code>up</code> never runs. Run <code>up</code> on its own.</li>
<li><strong>Installing and abandoning.</strong> A server without updates for a year is a server with known vulnerabilities. And test the connection from time to time: what works today can be fingerprinted tomorrow.</li>
<li><strong>No backup of the configuration.</strong> The <code>~/.wg-easy</code> directory holds everything (keys, clients). Keep an encrypted local copy. If the VPS dies or gets shut down by the provider, you bring another one up in ten minutes instead of starting from zero.</li>
</ul>
<blockquote>
  <p><strong>Keep this:</strong> a US$ 5 VPS outside Brazil running WireGuard gets you out of any mass block based on catalogued IPs. The price is your signup record at the provider: acceptable against blocking, insufficient against a named investigation.</p>

</blockquote>
<h2>The invisible enemy: DPI<span class="hx:absolute hx:-mt-20" id="the-invisible-enemy-dpi"></span>
    <a href="#the-invisible-enemy-dpi" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>So far I have assumed the censor blocks <strong>addresses</strong>. Their next level is blocking <strong>formats</strong>, and that is where deep packet inspection (DPI) lives.</p>
<p>Even encrypted, a VPN tunnel has a signature. The initial handshake of WireGuard and OpenVPN has characteristic packet sizes, sequences and timings. The content is unreadable, but the shape screams &ldquo;I am a VPN&rdquo;. China does exactly this at national scale: it does not need to read your traffic, it only needs to recognize the protocol and drop the connection.</p>
<blockquote>
  <p><strong>Keep this:</strong> the censor does not need to read your traffic to block you. Recognizing the tunnel&rsquo;s shape is enough. That is why obfuscation exists.</p>

</blockquote>
<p>The technical answer is <strong>obfuscation</strong>: making the tunnel look like something else.</p>
<ul>
<li><strong><a href="https://amnezia.org/"target="_blank" rel="noopener">AmneziaWG</a></strong>: a WireGuard fork that injects junk packets and scrambles headers until the signature vanishes. Same audited WireGuard base, free apps for every platform, and it points at the same kind of VPS from Phase 2. If you set up wg-easy, migrating to Amnezia is the natural step when DPI arrives.</li>
<li><strong>udp2raw</strong>: wraps WireGuard&rsquo;s UDP traffic inside fake TCP packets that look like an ordinary connection.</li>
<li><strong>Shadowsocks</strong>: born in China precisely for this, an encrypted proxy designed to have no recognizable signature.</li>
</ul>
<p>Notice we are still talking about free tools and a US$ 5 VPS. The cost rises for the censor much faster than for you.</p>
<h2>Phase 3: when even your VPS is not enough<span class="hx:absolute hx:-mt-20" id="phase-3-when-even-your-vps-is-not-enough"></span>
    <a href="#phase-3-when-even-your-vps-is-not-enough" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>If the scenario degrades to national DPI with protocol blocking, the game becomes heavy camouflage and redundancy. The real options, in order of effort:</p>
<p><strong>Protocols that disguise themselves as ordinary HTTPS.</strong> The current state of the art is <strong>VLESS with Reality</strong> (from the Xray-core project): your traffic presents itself as a legitimate TLS 1.3 connection to a real, innocent website, with certificate, handshake and packet pattern indistinguishable from a normal visit. To block you, the censor would have to block the innocent site too, and the collateral damage is the defense. <strong>Trojan-Go</strong> follows a similar philosophy. <strong>Outline</strong>, from Jigsaw (Google), packages Shadowsocks with a friendly manager if you want to hand out access to family and friends.</p>
<p><strong>Tor with bridges.</strong> Plain Tor is blocked by default in censoring countries, but obfs4 bridges and Snowflake were tailor-made for that scenario: Snowflake disguises your entry into the Tor network as an ordinary WebRTC video call. It is slow, forget streaming, but it is the hardest network to extinguish in existence, maintained precisely for journalists and activists in hostile countries.</p>
<p><strong>Redundancy and rotation.</strong> Two or three cheap VPSs at different providers, with automatic failover. If one lands on a blacklist, you switch in minutes: new instance, new IP. Your cost: another US$ 5. The censor&rsquo;s cost: find and block it again, every time.</p>
<p><strong>Alternative access.</strong> Starlink and other satellite links leave the national ground infrastructure entirely. As long as they are not regulated as well, they are the physical last resort. And for extreme cases, the usual sneakernet: thumb drive, external disk, physical copies.</p>
<p><strong>Client-side hygiene</strong>, valid in every phase:</p>
<ul>
<li><strong>Kill switch on</strong>: if the tunnel drops, the device cuts the internet instead of leaking through your real IP.</li>
<li><strong>DNS leak protection</strong>: your DNS queries must go through the tunnel, otherwise your ISP keeps seeing every site you visit.</li>
<li><strong>WebRTC disabled in the browser</strong> (or use an extension): it leaks your real IP even with the VPN on.</li>
<li><strong>VPN on when needed, not always</strong>: a 24/7 usage pattern becomes a behavioral signature of its own.</li>
</ul>
<p>And the usual honest notes: running your own server for personal use is legal; using it to commit crimes is not. And since 2026, with the new sentence enhancement, &ldquo;using a VPN&rdquo; weighs on the sentence of any crime you would commit anyway. Keep the surface small, test your connectivity from inside Brazil regularly (what works today can be fingerprinted tomorrow), have a plan B (a second VPS, a Tor profile with bridges) and keep offline copies of everything critical.</p>
<p><strong>Realistic assessment:</strong> no solution is permanent against a determined, well-funded censor. The goal here is different: make mass blocking expensive until it becomes a bad deal, technically and politically. A country that needs to take down half of the legitimate internet to silence half a dozen voices has a public relations problem, not a technology one. That cost is where we place our bet.</p>
<blockquote>
  <p><strong>Keep this:</strong> the staircase is commercial VPN, then your own VPN, then obfuscated protocol, then Tor with bridges, then satellite. Each step raises your cost a little and the censor&rsquo;s a lot. Start climbing before you need to.</p>

</blockquote>
<h2>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The Brazilian pattern is what I called censorship by accumulation: no single step looks like the end of the world, and each comes with its little plaque of good intentions. But blocking infrastructure, once built, has no moral owner: it serves today&rsquo;s government and tomorrow&rsquo;s, against today&rsquo;s target and against you.</p>
<p>Free communication infrastructure works exactly the same: also built by accumulation, also brick by brick. A commercial VPN configured today. Your own VPS tomorrow. An obfuscated protocol in the drawer for when it is needed. None of this is paranoia. It works like backups: you do not wait for the disk to fail before starting.</p>
<p>And if you want to follow this frontier closely, a personal recommendation: follow <a href="https://x.com/ayubio"target="_blank" rel="noopener">Ayub</a>. He is the best source on internet infrastructure and state censorship in Brazil today. He was the one who <a href="https://x.com/ayubio/status/2058990595503509513"target="_blank" rel="noopener">sounded the alarm about the VPN criminalization in bill PL 3066/2025</a> months before it became law. And in recent days he has been covering two things the mainstream press barely touched: the handover of over R$ 100 billion in public networks, ducts and federal properties to the carriers and BTG Pactual, and the technical apparatus of the new Marco Civil regulation, which according to him gave Anatel <a href="https://rendageek.com.br/noticias/marco-civil-da-internet-novas-regras/"target="_blank" rel="noopener">remote access to ISPs&rsquo; edge routers</a>. He posts in Portuguese, but your browser&rsquo;s translator handles it. Required reading to understand where the next step of the staircase comes from.</p>
<p>The best time to build your tunnel was before you needed it. The second best time is now.</p>
]]></content:encoded><category>networking</category><category>security</category><category>law-and-regulation</category></item><item><title>Understanding Anthropic's AI Watermark: How to Beat It</title><link>https://akitaonrails.github.io/en/2026/08/16/anthropic-ai-watermark-how-to-beat-it/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/08/16/anthropic-ai-watermark-how-to-beat-it/</guid><pubDate>Sun, 16 Aug 2026 16:00:00 -0300</pubDate><description>&lt;p&gt;Claude now ships with a stamp on it. Since August 2, 2026, Anthropic has been invisibly marking the text of its newest models, with the older ones migrating over the following months.&lt;/p&gt;
&lt;p&gt;No off switch. The backlash came fast: a &lt;a href="https://www.businessinsider.com/claude-users-cancel-subscriptions-citing-anthropic-new-ai-watermark-2026-8"target="_blank" rel="noopener"&gt;wave of subscription cancellations&lt;/a&gt;, with cancellation screenshots making the rounds on X.&lt;/p&gt;
&lt;p&gt;Before you cancel on reflex, it&amp;rsquo;s worth knowing what the mark actually is. It works quite differently from what most people picture, it exists for a concrete reason, and it vanishes with an almost comic ease.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Claude now ships with a stamp on it. Since August 2, 2026, Anthropic has been invisibly marking the text of its newest models, with the older ones migrating over the following months.</p>
<p>No off switch. The backlash came fast: a <a href="https://www.businessinsider.com/claude-users-cancel-subscriptions-citing-anthropic-new-ai-watermark-2026-8"target="_blank" rel="noopener">wave of subscription cancellations</a>, with cancellation screenshots making the rounds on X.</p>
<p>Before you cancel on reflex, it&rsquo;s worth knowing what the mark actually is. It works quite differently from what most people picture, it exists for a concrete reason, and it vanishes with an almost comic ease.</p>
<p>For those in a hurry, the essentials:</p>
<ul>
<li><strong>A statistical bias in the words Claude picks.</strong> Invisible to the reader, detectable only by whoever holds Anthropic&rsquo;s key. Hidden characters and strange fonts stay out.</li>
<li><strong>The origin is European law, the AI Act.</strong> Anthropic signed the EU transparency code and chose to stamp the whole world; the why comes below.</li>
<li><strong>One pass through another LLM erases the stamp.</strong> The signal lives in Claude&rsquo;s word choices; when another model rewrites the text, even a weak local one, the choices become its own and the pattern dissolves. Anthropic itself admits this.</li>
</ul>
<p>Each point in detail below.</p>
<h2>What this watermark actually is<span class="hx:absolute hx:-mt-20" id="what-this-watermark-actually-is"></span>
    <a href="#what-this-watermark-actually-is" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Strike the invisible Unicode character, the hidden space mid-line, the altered font. Anthropic&rsquo;s watermark is <a href="https://www.anthropic.com/news/claude-text-watermark"target="_blank" rel="noopener">statistical</a>: it acts at the moment Claude decides which word to use, precisely at the points where several words would serve equally well.</p>
<p>Every language model assembles text one word at a time, pulling the next from a list of likely candidates. When two or three work equally well, a random number settles it. The watermark changes where that randomness comes from: the number now derives from a secret key combined with the preceding words. The method is inherited from <a href="https://ai.google.dev/responsible/docs/safeguards/synthid"target="_blank" rel="noopener">SynthID-Text</a> at Google DeepMind.</p>
<p>A concrete example. Talking about the weather, &ldquo;the sky was overcast&rdquo; and &ldquo;the sky was grey&rdquo; carry the same information. At these synonym junctions, the key leans Claude one way more often than pure chance would. Each individual choice goes unnoticed, but a long text repeats this decision point hundreds of times, and the whole ends up forming a statistical signature.</p>
<p>Anthropic&rsquo;s announcement is blunt: <strong>the text gains nothing, and no character stays hidden</strong>. The cost stays the same because no extra tokens are generated, and the reading is identical. Whoever holds the key runs a detector, compares the sequence of words against Claude&rsquo;s typical choices, and gets back a probability that the text came from Claude.</p>
<p>And what the mark proves boils down to this: Claude <strong>was involved</strong> at some point. It doesn&rsquo;t distinguish text the model wrote from scratch from text it merely edited heavily. About you, nothing gets recorded: no user, no company, no identified conversation.</p>
<p>The stamp covers text in Claude.ai, the API, Claude Code, and the other products. In code it shows up less, since code rarely lets you swap one term for an equivalent. Files and images take a different route, a signed piece of metadata called C2PA, instead of this text watermark. And the limitation matters: on short or highly factual passages, where almost no word choice exists, the detector weakens.</p>
<h2>Why so many people canceled<span class="hx:absolute hx:-mt-20" id="why-so-many-people-canceled"></span>
    <a href="#why-so-many-people-canceled" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The spark added up three ingredients: mandatory, global reach, and no opt-out. The mark can&rsquo;t be switched off and applies outside Europe too. A wave of Claude Max subscribers <a href="https://www.forbes.com/sites/maryroeloffs/2026/08/11/claude-will-put-invisible-watermarks-on-ai-text-and-images-and-the-internet-isnt-happy/"target="_blank" rel="noopener">canceled citing control and authorship</a> of their own material.</p>
<p>The fear is concrete, professional and academic. Drafting with Claude and signing the result as your own becomes a liability if, down the road, a detector points at &ldquo;went through AI&rdquo;. <a href="https://gizmodo.com/anthropic-explains-its-watermark-system-as-some-claude-users-loudly-revolt-2000799022"target="_blank" rel="noopener">Anthropic answered with a post</a> insisting the mark preserves reading, meaning, and quality, only signaling processing. Not everyone bought it.</p>
<h2>The European law behind the stamp<span class="hx:absolute hx:-mt-20" id="the-european-law-behind-the-stamp"></span>
    <a href="#the-european-law-behind-the-stamp" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The stamp was born of a concrete obligation. <a href="https://artificialintelligenceact.eu/article/50/"target="_blank" rel="noopener">Article 50 of the AI Act</a> requires providers of generative AI systems to mark output in machine-readable form, so artificial content can be identified as such. The obligation took effect on August 2, 2026, and violating it costs real money: fines up to €15 million or 3% of annual global revenue.</p>
<p>Back in July 2026, Anthropic had signed the European Commission&rsquo;s Code of Practice on Transparency for AI-Generated Content, alongside other major model providers, in a group of roughly 190 signatories. The others will implement their own watermarks too, each with its own key and its own method.</p>
<p>That left Anthropic with a decision: restrict marking to Europe or extend it to the whole planet. The company says it still has no durable way to scope the mark by region, so it chose to stamp everything, everywhere, from day one. Hence the stamp showing up in the text of Brazilian and Japanese subscribers, who have nothing to do with European law.</p>
<h2>Can you remove it by passing the text through another LLM?<span class="hx:absolute hx:-mt-20" id="can-you-remove-it-by-passing-the-text-through-another-llm"></span>
    <a href="#can-you-remove-it-by-passing-the-text-through-another-llm" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>That&rsquo;s the question I get most. Short answer: yes, and it&rsquo;s easy. The signal lives in Claude&rsquo;s word choices; when another model rewrites the text, the choices become that model&rsquo;s, and the statistical pattern comes apart.</p>
<p>Anthropic itself admits it. Light retouching probably leaves pieces of the mark, but <strong>a complete rewrite, with every word swapped, kills the signal</strong>. The logic is simple: the detector measures which synonyms Claude preferred; if another model picked its own synonyms, there&rsquo;s nothing of Claude left to measure.</p>
<p>Academia confirms the direction. <a href="https://arxiv.org/abs/2508.20228"target="_blank" rel="noopener">Robustness tests of SynthID</a>, done at Queen&rsquo;s University, start from perfect detection with no attack and show the rate dropping to around 84% after a dedicated paraphraser, and below 70% with round-trip translation. The more aggressive the rewrite, the more the signal degrades.</p>
<p>And yes, your intuition is right: <strong>a modest model, even a local one, does the job</strong>. Rearranging text while preserving the meaning is a task that calls for zero deep reasoning. A GLM, a Kimi, a small Llama running on your machine rewrites the paragraph and wipes the signature along the way. Swapping &ldquo;overcast&rdquo; for &ldquo;grey&rdquo; a thousand times is nowhere near needing the smartest model on the market.</p>
<p>Two honest caveats. The rewrite has to be genuine, word by word; a spell-checker pass doesn&rsquo;t come close to counting. And all of this applies to the text watermark: files and images carry that C2PA metadata, which comes off by another method, stripping the file&rsquo;s metadata.</p>
<h2>What prompt would pull this off<span class="hx:absolute hx:-mt-20" id="what-prompt-would-pull-this-off"></span>
    <a href="#what-prompt-would-pull-this-off" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Add up the watermark&rsquo;s criteria and the removal prompt practically writes itself. The mark inhabits synonym and structure choices, survives light editing, and needs text of some length. So the prompt has to demand maximum vocabulary and structure swap while holding the meaning in place.</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Rewrite the text below in full, in your own words.
</span></span><span class="line"><span class="cl">Replace the vocabulary and restructure the sentences from start to finish:
</span></span><span class="line"><span class="cl">pick different synonyms, change the order of the clauses, vary the construction.
</span></span><span class="line"><span class="cl">Keep the exact meaning, the facts, and the tone.
</span></span><span class="line"><span class="cl">Avoid reproducing any literal expression from the original.
</span></span><span class="line"><span class="cl">Return only the rewritten text.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Text:
</span></span><span class="line"><span class="cl">&#34;&#34;&#34;
</span></span><span class="line"><span class="cl">&lt;paste the Claude text here&gt;
</span></span><span class="line"><span class="cl">&#34;&#34;&#34;</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>Each line targets one criterion. &ldquo;In your own words&rdquo; and &ldquo;replace the vocabulary&rdquo; dismantle the synonym junctions where the mark hides. &ldquo;Restructure the sentences&rdquo; and &ldquo;change the order of the clauses&rdquo; break the word sequence the detector compares. &ldquo;Avoid reproducing any literal expression&rdquo; seals the gaps a light edit would leave open.</p>
<p>No magic here, and that&rsquo;s by design. Anthropic knows the limit and says it plainly: the mark is soft, attests that Claude touched the text, and disappears in the face of a serious rewrite. It works as a provenance label in a world where most people will never bother to erase it; against whoever decides to erase it, the signal is weak.</p>
<h2>Where this leaves us<span class="hx:absolute hx:-mt-20" id="where-this-leaves-us"></span>
    <a href="#where-this-leaves-us" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>In my accounting, the watermark scares less and does less than both sides of the shouting advertise. It&rsquo;s invisible, carries zero data about you, and proves at most that Claude passed through the text. A rewrite in any model dissolves it. It&rsquo;s a deliberately weak provenance label, designed to satisfy European law.</p>
<p>Still, canceling over it follows a logic I understand. Compulsory, planetary marking with no exit door irritates the people paying for the tool. And of the roughly 190 signatories to the European Code, Claude was the first to hit the headlines, absorbing the revolt wave all alone.</p>
<p>If you just want to use Claude and get on with your life, the day-to-day difference is barely there. If you need your text not to scream &ldquo;AI&rdquo;, a paragraph rewritten in a local model fixes it, and the recipe comes straight from Anthropic itself. The noise ended up much bigger than the hole.</p>
<h2>How this text was made<span class="hx:absolute hx:-mt-20" id="how-this-text-was-made"></span>
    <a href="#how-this-text-was-made" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Transparency suits the subject. The first draft of this article was written by Claude. Then Kimi ran the fact-check, claim by claim, against the original sources, and caught an invented statistic along the way, which we corrected. Finally, GLM rewrote the entire text, word by word, following the recipe from the sections above.</p>
<p>In other words: the article applies to itself what it teaches. It left Claude, passed through Kimi&rsquo;s sieve, and came back with GLM&rsquo;s vocabulary and construction. If the original draft carried the watermark, the complete rewrite swapped the word choices, and with them the signal. With no public detector, nobody can check from the outside; the recipe, anyone can test.</p>
]]></content:encoded><category>llms</category><category>security</category><category>law-and-regulation</category></item><item><title>Understanding the Brazilian Censorship of Discord and the Digital ECA Law</title><link>https://akitaonrails.github.io/en/2026/08/13/understanding-the-discord-censorship-and-brazils-digital-eca/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/08/13/understanding-the-discord-censorship-and-brazils-digital-eca/</guid><pubDate>Thu, 13 Aug 2026 11:00:00 -0300</pubDate><description>&lt;p&gt;If you didn&amp;rsquo;t know: Brazil censored Discord&amp;rsquo;s livestreams this week. One heads-up before we start: this story runs on Brazilian law and Brazilian reporting, so most of the sources linked below are in Portuguese. I&amp;rsquo;ll translate everything that matters.&lt;/p&gt;
&lt;p&gt;In six days, Brazil went from a tragedy to a regulatory precedent that should worry anyone who understands technology. On July 22, a 13-year-old girl died in Naviraí, Mato Grosso do Sul, during a live broadcast on Discord, coerced by a group the police are investigating as a criminal organization. On August 12, the ANPD, Brazil&amp;rsquo;s data protection authority, ordered Discord to suspend live broadcasting nationwide.&lt;/p&gt;</description><content:encoded><![CDATA[<p>If you didn&rsquo;t know: Brazil censored Discord&rsquo;s livestreams this week. One heads-up before we start: this story runs on Brazilian law and Brazilian reporting, so most of the sources linked below are in Portuguese. I&rsquo;ll translate everything that matters.</p>
<p>In six days, Brazil went from a tragedy to a regulatory precedent that should worry anyone who understands technology. On July 22, a 13-year-old girl died in Naviraí, Mato Grosso do Sul, during a live broadcast on Discord, coerced by a group the police are investigating as a criminal organization. On August 12, the ANPD, Brazil&rsquo;s data protection authority, ordered Discord to suspend live broadcasting nationwide.</p>
<p>In between: the First Lady demanding the platform be blocked at an official ceremony, the Attorney General announcing a public civil action, and the first major enforcement action in the history of the Digital ECA Law — Brazil&rsquo;s new online child-protection statute, named after the <em>Estatuto da Criança e do Adolescente</em>, the Child and Adolescent Statute. Let&rsquo;s go piece by piece, because the devil lives exactly in the pieces.</p>
<h2>The Naviraí case<span class="hx:absolute hx:-mt-20" id="the-naviraí-case"></span>
    <a href="#the-navira%c3%ad-case" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The facts, per the <a href="https://g1.globo.com/politica/noticia/2026/08/04/policia-faz-operacao-contra-suspeitos-de-induzir-adolescente-a-tirar-a-propria-vida-e-transmitir-em-rede-social.ghtml"target="_blank" rel="noopener">Mato Grosso do Sul Civil Police and G1</a>: Lívia, 13, was found dead in her backyard on the morning of July 22. She took her own life during a broadcast on Go Live, Discord&rsquo;s live video feature, under pressure, humiliation, and explicit encouragement from other users. <strong>More than 200 people</strong> were watching.</p>
<p><a href="https://www.enfoquems.com.br/operacao-livia-combate-grupo-neonazista-que-coagiu-adolescente-ao-suicidio-em-navirai/"target="_blank" rel="noopener">Operação Lívia</a>, launched on August 4 with warrants across five states, revealed what was behind it: a group made up mostly of teenagers, the alleged leader just 14, that recruited minors via Discord <strong>and Telegram</strong>, spread neo-Nazi and misogynistic content, and is being investigated for qualified homicide and criminal organization. A second girl was induced to self-harm during the same livestream but left the broadcast.</p>
<p>Hold on to two details for later: the group operated on more than one platform, and the Ministry of Justice <a href="https://g1.globo.com/politica/noticia/2026/08/04/policia-faz-operacao-contra-suspeitos-de-induzir-adolescente-a-tirar-a-propria-vida-e-transmitir-em-rede-social.ghtml"target="_blank" rel="noopener">asked the ANPD to investigate Discord and Telegram</a>. Only one of the two was sanctioned.</p>
<h2>From the First Lady to the ANPD in six days<span class="hx:absolute hx:-mt-20" id="from-the-first-lady-to-the-anpd-in-six-days"></span>
    <a href="#from-the-first-lady-to-the-anpd-in-six-days" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>On August 6, at the signing ceremony of <a href="https://www.camara.leg.br/proposicoesWeb/fichadetramitacao?idProposicao=2528433"target="_blank" rel="noopener">the bill PL 3066/2025</a> (which stiffens penalties for digital crimes against children — keep that bill in mind, it comes back shortly), First Lady Janja da Silva <a href="https://www1.folha.uol.com.br/cotidiano/2026/08/janja-chama-discord-de-rede-horrorosa-apos-caso-de-suicidio-ao-vivo-e-pede-seu-bloqueio-no-brasil.shtml"target="_blank" rel="noopener">left no room for doubt</a>: <em>&ldquo;we need to block Discord in Brazil by any means necessary&hellip; we need to work with the Judiciary to take this horrendous network offline.&rdquo;</em> The Attorney General, Jorge Messias, announced right there a public civil action to take the platform down.</p>
<p>On the 7th, the ANPD <a href="https://www.gov.br/anpd/pt-br/assuntos/noticias/anpd-instaura-processo-de-fiscalizacao-contra-o-discord-para-apurar-falhas-na-protecao-de-criancas-e-adolescentes"target="_blank" rel="noopener">opened an enforcement proceeding against Discord</a>, giving the company five business days to explain itself. On the 12th, <a href="https://www.gov.br/anpd/pt-br/assuntos/noticias/em-medida-preventiva-anpd-determina-que-discord-suspenda-transmissoes-ao-vivo-no-brasil"target="_blank" rel="noopener">out came the preventive measure</a>: Discord must suspend Go Live and equivalent video-sharing features in Brazil within <strong>three business days</strong>, and can only turn them back on after proving effective child-protection measures and obtaining express ANPD authorization. The legal basis: articles 6, 10, 17, 28, and 29 of the Digital ECA Law, with fines up to <strong>R$ 50 million</strong> per infraction (art. 35).</p>
<p>Discord <a href="https://www.meioemensagem.com.br/midia/anpd-suspende-transmissoes-ao-vivo-do-discord-no-brasil"target="_blank" rel="noopener">called the measure &ldquo;premature&rdquo;</a>: it received the case file on Friday, was still within its response window, and says it removed the private server where the crime happened. And it dropped the most interesting sentence in the whole response: its internal investigation found evidence that <em>&ldquo;the criminal activity was coordinated on other platforms before the server was created on Discord and continued on them afterward.&rdquo;</em></p>
<p>A necessary clarification here. A version has circulated claiming the case originated on Instagram. I went looking and found no source confirming it: the platform named by police, besides Discord, is Telegram. Discord doesn&rsquo;t name the &ldquo;other platforms.&rdquo; What matters still stands, just with a different name in the slot: the case <strong>was not exclusive to Discord</strong>, the Ministry of Justice asked for two platforms to be investigated, and only Discord got the sanction. Telegram, which barely has legal representation in Brazil, remains untouched.</p>
<p>And that&rsquo;s where the first uncomfortable question shows up: if the problem is systemic, why is the sanction surgical?</p>
<h2>What the Digital ECA Law is, a.k.a. the &ldquo;Felca Law&rdquo;<span class="hx:absolute hx:-mt-20" id="what-the-digital-eca-law-is-aka-the-felca-law"></span>
    <a href="#what-the-digital-eca-law-is-aka-the-felca-law" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The sanction was only possible because of a brand-new law. In August 2025, the YouTuber Felca published the video <em>&ldquo;Adultização&rdquo;</em> (&ldquo;Adultification&rdquo;), exposing profiles that monetized sexualized content involving minors — the most shocking case being influencer Hytalo Santos, <a href="https://www.poder360.com.br/poder-justica/hytalo-santos-e-marido-sao-condenados-por-exploracao-de-menores/"target="_blank" rel="noopener">arrested that same month and convicted in February 2026</a> to over 11 years in prison. The video passed 30 million views, the Senate opened a parliamentary inquiry, and Congress <a href="https://gcaa.com.br/eca-digital-e-sancionado-comentarios-sobre-marco-regulatorio-de-protecao-de-criancas-e-adolescentes-em-ambientes-digitais/"target="_blank" rel="noopener">rushed the bill PL 2628/2022 through under urgency</a>, authored by Senator Alessandro Vieira.</p>
<p>The result: <a href="https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2025/lei/l15211.htm"target="_blank" rel="noopener">Law 15,211 of September 17, 2025</a>, the Digital Statute for Children and Adolescents, in force since March 17, 2026. The points that matter for this discussion:</p>
<ul>
<li><strong>Duty of care</strong> (art. 6): platforms must take <em>&ldquo;reasonable measures from the design phase&rdquo;</em> to prevent minors&rsquo; exposure to sexual exploitation, violence, and inducement to self-harm and suicide.</li>
<li><strong>Age verification</strong> (art. 9, §1): <em>&ldquo;reliable age-verification mechanisms at every access&rdquo;</em>, with a devastating punchline: <strong>&ldquo;self-declaration is forbidden.&rdquo;</strong></li>
<li><strong>Notice and takedown</strong> (art. 29): a duty to remove content violating children&rsquo;s rights as soon as notified, <strong>no court order required</strong>.</li>
<li><strong>Enforcer</strong>: the ANPD, which stacked the job on top of the LGPD (<em>Lei Geral de Proteção de Dados</em>, Brazil&rsquo;s General Data Protection Law) and, since May 2026, duties under the Marco Civil da Internet (Brazil&rsquo;s internet bill of rights). It became the country&rsquo;s de facto digital regulator.</li>
<li><strong>Fines</strong> up to 10% of Brazilian revenue, capped at R$ 50 million per infraction. Suspension of activities, on paper, <a href="https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2025/lei/l15211.htm"target="_blank" rel="noopener">only through the Judiciary</a> (art. 35, §5).</li>
</ul>
<p>That last point is already contested: <a href="https://www1.folha.uol.com.br/cotidiano/2026/08/anpd-tem-poder-para-fiscalizar-discord-mas-competencias-ainda-sao-discutiveis-dizem-especialistas.shtml"target="_blank" rel="noopener">experts interviewed by Folha</a> point out that the ANPD&rsquo;s &ldquo;preventive measure&rdquo; may in practice be a temporary suspension of activities — a sanction the law reserves for the Judiciary. Barely born, the regulation is already flirting with its own illegality.</p>
<p>Worth remembering the bigger context: in June 2025 the Supreme Court <a href="https://www.conjur.com.br/2025-jun-11/stf-forma-maioria-por-responsabilizacao-de-big-techs-por-publicacoes-de-usuarios/"target="_blank" rel="noopener">partially struck down art. 19 of the Marco Civil</a>, ending the requirement of a specific court order to hold platforms liable. In June 2026 the same court <a href="https://www.cnnbrasil.com.br/politica/stf-exige-representante-de-big-techs-no-brasil-e-da-60-dias-para-adaptacao/"target="_blank" rel="noopener">consolidated a &ldquo;duty of care&rdquo;</a> with categories for immediate removal, including suicide inducement and grave crimes against children. The Digital ECA Law legislates in that direction. In one year, platform liability in Brazil went from reactive to proactive.</p>
<h2>The oxymoron: &ldquo;you may encrypt, as long as we can read it&rdquo;<span class="hx:absolute hx:-mt-20" id="the-oxymoron-you-may-encrypt-as-long-as-we-can-read-it"></span>
    <a href="#the-oxymoron-you-may-encrypt-as-long-as-we-can-read-it" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Now the core of it, which is what made me write this. The ANPD&rsquo;s official justification for suspending Go Live deserves a careful read: Discord&rsquo;s architecture uses end-to-end encryption, <strong>the platform has no access to livestream content</strong>, and therefore real-time moderation is impossible. In the ANPD&rsquo;s assessment, if moderation depends on flawed automated systems and on reports from people inside the very room where the crime is happening, the feature is incompatible with the law.</p>
<p>Read that again, slowly. The ANPD didn&rsquo;t ban encryption — a direct ban would be indefensible in public. It said something else, far more ingenious: you may have end-to-end encryption, as long as you can monitor the content to comply with your legal duties.</p>
<p>Except that&rsquo;s an oxymoron. The entire point of end-to-end encryption is that the server carries ciphertext and cannot read it. To &ldquo;monitor the content,&rdquo; that content has to arrive at the servers in the clear — and then it&rsquo;s not end-to-end anymore. There is no third option: either it&rsquo;s illegible to the platform, or it&rsquo;s legible. The ANPD didn&rsquo;t criminalize encryption; it merely made it impossible to offer real encryption and operate in Brazil at the same time. Saying &ldquo;they banned cryptography&rdquo; is technically wrong. Functionally, it&rsquo;s exactly what happened.</p>
<p>And I&rsquo;m not the one saying it. Carlos Affonso Souza, director of ITS Rio, <a href="https://www.cnnbrasil.com.br/politica/discord-anpd-cria-precedente-perigoso-sobre-criptografia-diz-especialista/"target="_blank" rel="noopener">told CNN Brasil</a> this is the first time the ANPD has treated end-to-end encryption as a regulatory obstacle, a dangerous precedent comparable to the WhatsApp blocks — and that criminals will simply migrate to less cooperative platforms with no legal presence in the country (did someone say Telegram?).</p>
<p>To be fair to the debate: the law&rsquo;s text never mentions encryption once, and art. 34, §1 <a href="https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2025/lei/l15211.htm"target="_blank" rel="noopener">expressly forbids</a> <em>&ldquo;massive, generic or indiscriminate surveillance mechanisms.&rdquo;</em> Fact-checkers <a href="https://www.boatos.org/tecnologia/ia-tera-acesso-a-todas-conversas-do-whatsapp-a-partir-de-hoje.html"target="_blank" rel="noopener">debunked the rumors</a> that the Digital ECA Law would read your WhatsApp. All of that is true — and all of that is about paper. In practice, the first major enforcement in the law&rsquo;s history treated the technical impossibility of surveillance as grounds to kill a feature. Paper accepts anything; the enforcer&rsquo;s pen is what writes the real law.</p>
<p>And there are hooks in the letter of the law waiting to be used: art. 18, III requires parental-control tools to <em>&ldquo;identify the profiles of adults with whom the child or adolescent communicates&rdquo;</em> — explain to me how an end-to-end encrypted messenger complies with that. Art. 27 orders providers to <em>&ldquo;remove and report&rdquo;</em> abuse content <em>&ldquo;detected&rdquo;</em> directly or indirectly — and detection presupposes seeing. Neither has been used yet. The Go Live precedent shows how they&rsquo;ll be read when they are.</p>
<blockquote>
  <p><strong>Remember this:</strong> the ANPD didn&rsquo;t ban encryption. It banned a feature whose encryption prevents content surveillance. The practical effect is identical: in Brazil, end-to-end encryption is now a regulatory risk.</p>

</blockquote>
<h2>Digital ECA Law vs. the LGPD<span class="hx:absolute hx:-mt-20" id="digital-eca-law-vs-the-lgpd"></span>
    <a href="#digital-eca-law-vs-the-lgpd" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The bigger irony is institutional. In 2018 we passed the LGPD to protect Brazilians&rsquo; personal data, built on principles like minimization (collect only what&rsquo;s necessary) and purpose limitation (use it only for what it was collected for). The Digital ECA Law, enforced by the same agency, pushes the other way.</p>
<p>Age verification is the crystal-clear example. <em>&ldquo;Self-declaration is forbidden&rdquo;</em> means every user, adults included, will have to prove their age to access ordinary services. Prove it how? ID documents, facial biometrics, verifiable credentials. <a href="https://www.gazetadopovo.com.br/vida-e-cidadania/verificacao-etaria-do-eca-digital-poe-em-risco-privacidade-de-dados/"target="_blank" rel="noopener">Gazeta do Povo heard experts</a> warning about the obvious: we&rsquo;re building a permanent identification infrastructure for everyone on the internet, with biometric data that, once leaked, can&rsquo;t be changed — you can change a password, you can&rsquo;t change your face.</p>
<p>And it&rsquo;s not theory. An <a href="https://convergenciadigital.com.br/governo/inutil-e-perigoso-cientistas-alertam-contra-sistemas-de-verificacao-de-idade-na-internet/"target="_blank" rel="noopener">open letter signed by 438 scientists from 32 countries</a> calls these systems &ldquo;useless and dangerous&rdquo;: trivially bypassed with VPNs and deepfakes, biased against minorities. And it cites the perfect example — Discord itself, which <a href="https://convergenciadigital.com.br/governo/inutil-e-perigoso-cientistas-alertam-contra-sistemas-de-verificacao-de-idade-na-internet/"target="_blank" rel="noopener">leaked ID photos of ~70,000 users</a> precisely because of outsourced age verification. The platform the ANPD is punishing for not surveilling is the same one that proved, in practice, the cost of collecting.</p>
<p>The law has safeguards on paper — art. 13 limits the use of verification data <em>&ldquo;solely for that purpose,&rdquo;</em> art. 12 talks about minimization. But notice the structural conflict of interest: the ANPD holds three mandates: LGPD, Digital ECA Law, and Marco Civil. <strong>The agency that should defend the minimization of your data is the same one now demanding you hand it over.</strong> When those two roles collide inside the same body, which one do you think wins?</p>
<h2>The other law of August 6: using a VPN now weighs on your sentence<span class="hx:absolute hx:-mt-20" id="the-other-law-of-august-6-using-a-vpn-now-weighs-on-your-sentence"></span>
    <a href="#the-other-law-of-august-6-using-a-vpn-now-weighs-on-your-sentence" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Remember how the ceremony where the First Lady demanded the block was the signing of another law? It&rsquo;s worth looking at what else was signed that day, because one article of PL 3066/2025 went almost unnoticed outside the tech bubble: <strong>art. 226-A</strong>, which <a href="https://agenciagov.ebc.com.br/noticias/202608/sancionada-lei-que-atualiza-o-eca-e-que-define-e-pune-crimes-sexuais-no-mundo-digital"target="_blank" rel="noopener">raises sentences by one third to two thirds</a> for crimes under the Child and Adolescent Statute committed using proxies, VPNs, or any IP-masking or anonymization technique.</p>
<p>Ayub, who has followed digital legislation for years, <a href="https://x.com/ayubio/status/2058990595503509513"target="_blank" rel="noopener">sounded the alarm back in May</a>, when the Chamber of Deputies approved the text: <em>&ldquo;it provides prison for anyone who develops or provides VPN services. You can&rsquo;t say I didn&rsquo;t warn you.&rdquo;</em></p>
<p>One clarification matters here, because checking sources is what separates analysis from panic. The <strong>original</strong> draft by congressman Osmar Terra did criminalize developing, distributing, or selling IP-masking software — in practice, it turned the VPN-developer profession into a crime. But the bill went through a technical working group that heard the Federal Police, prosecutors, the child-safety NGO Safernet, and the platforms themselves, and the final rapporteur, congresswoman Rogéria Santos, <a href="https://iclnoticias.com.br/projeto-contra-pedofila-quase/"target="_blank" rel="noopener">removed the development criminalization</a> and kept only the sentence enhancer, with an express safeguard for lawful use. Ayub&rsquo;s tweet describes the bill that went into the Chamber, not the law that came out. His warning, though, captured the direction — and the direction held.</p>
<p>Because what survived is already plenty. <a href="https://isoc.org.br/noticia/isoc-e-isoc-brasil-pedem-rejeicao-do-art-226-a-do-pl-3066-2025"target="_blank" rel="noopener">ISOC Brasil pointed out</a> (ISOC is the Internet Society) that the enhancer puts VPN use on the same penal footing as armed robbery. And an <a href="https://teletime.com.br/06/07/2026/vpn-senado-entidaddes/"target="_blank" rel="noopener">open letter to the Senate</a>, signed by the EFF (Electronic Frontier Foundation), the Tor Project, Artigo 19, Data Privacy Brasil, and half a dozen other organizations, explained the obvious to anyone in the field: proxies and VPNs are standard corporate security infrastructure, recommended by international standards like ISO/IEC 27001; identifier anonymization is a native feature of browsers like Firefox and Brave; and your employer probably <strong>requires</strong> you to use a VPN to work from home. The Senate didn&rsquo;t listen. On August 6, the article became law — at that very ceremony.</p>
<p>The sentence from the letter that should haunt any legislator: <em>&ldquo;legal precedents rarely remain confined to the hypothesis that justified their creation.&rdquo;</em> In the letter&rsquo;s formulation, it&rsquo;s the <strong>first time</strong> Brazilian criminal law treats a neutral security technology as, by itself, grounds for a harsher sentence. Today the hypothesis is crimes against children — the one nobody dares question in public, and the bill&rsquo;s authors knew it. Tomorrow it&rsquo;s any crime. The next congressman who wants to enhance theft &ldquo;committed through VPN use&rdquo; already has the precedent ready, voted and signed.</p>
<p>And notice the ingenuity, identical to the encryption play: nobody banned VPNs — a direct ban would be indefensible. A mechanism was merely created to treat VPN users as qualified suspects. Think about the execution: to apply the &ldquo;lawful use&rdquo; safeguard, the State first needs to know you use a VPN and then determine whether your use was lawful. In other words, every user of a privacy tool becomes, by default, a potential object of verification. The safeguard doesn&rsquo;t protect the user — it authorizes their inspection.</p>
<p>And there&rsquo;s a fine irony to close: the 438-scientist letter I mentioned in the previous section warns that age verification is bypassed with VPNs. The Brazilian legislator&rsquo;s answer wasn&rsquo;t to rethink age verification. It was to half-criminalize VPNs. The siege closes from both sides, always with the same little plaque of good intentions nailed on top.</p>
<blockquote>
  <p><strong>Remember this:</strong> nobody banned VPNs in Brazil. Something subtler was created: the first criminal-law precedent where using a neutral privacy tool weighs against you. Today it enhances crimes against children. The precedent itself has no owner.</p>

</blockquote>
<h2>And the actual criminals?<span class="hx:absolute hx:-mt-20" id="and-the-actual-criminals"></span>
    <a href="#and-the-actual-criminals" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>There&rsquo;s a contradiction in this story that almost nobody commented on. The sanction against Discord came down in six days, with a potential R$ 50 million fine per infraction. And what happens to the perpetrators of the crime that motivated all of this?</p>
<p>The Naviraí group was made up of five teenagers aged 13 to 17 and one 18-year-old. The alleged leader is 14. Under Brazilian law, <strong>only the 18-year-old answers as an adult</strong>, for qualified homicide. The other five fall under the ECA regime — the classic one, not the digital one: socio-educational internment, with a <a href="https://www.atfcursosjuridicos.com.br/repositorio/material/15893963154125-ecaparaoabatf.pdf"target="_blank" rel="noopener">three-year ceiling</a> and compulsory release at 21. The case is sealed and we don&rsquo;t know what measures were applied, but that&rsquo;s the ceiling, no matter the cruelty. The intellectual mentor of the Suzano school massacre, with 10 dead, was 17 and <a href="https://g1.globo.com/sp/mogi-das-cruzes-suzano/noticia/2019/05/03/justica-decide-manter-internacao-de-menor-apontado-como-mentor-intelectual-do-massacre-em-suzano.ghtml"target="_blank" rel="noopener">was interned</a> — three years, regardless of the body count.</p>
<p>And there&rsquo;s a calendar irony: in February 2026 Brazil <a href="https://www.brasilparalelo.com.br/noticias/lula-sanciona-lei-que-define-bullying-e-cyberbullying-como-crimes"target="_blank" rel="noopener">signed a law making online inducement to suicide and self-harm a heinous crime</a>, with doubled penalties for group leaders. For adults. For the five Naviraí teenagers, investigated for exactly that, nothing changes: the ceiling is still the ECA&rsquo;s three years.</p>
<p>It stays this way by choice, and not for lack of trying. In March 2026, the rapporteur of the Public Security constitutional amendment included a <a href="https://www.congressoemfoco.com.br/amp/noticia/116889/governo-se-manifesta-contra-a-reducao-da-maioridade-penal--ineficaz"target="_blank" rel="noopener">referendum on lowering the criminal age to 16</a>; the government called the reduction &ldquo;ineffective and unconstitutional&rdquo; and the passage was stripped so the amendment could pass — <a href="https://www.nsctotal.com.br/noticias/camara-aprova-pec-da-seguranca-publica-apos-retirada-de-mencao-a-maioridade-penal"target="_blank" rel="noopener">approved 487 to 15</a> without a single line on the subject. In June, the Chamber&rsquo;s Constitution and Justice Committee <a href="https://www.camara.leg.br/noticias/1280551-comissao-de-constituicao-e-justica-aprova-pec-que-reduz-maioridade-penal/"target="_blank" rel="noopener">approved the admissibility of another reduction amendment, 44 to 18</a>, but it still needs 308 votes in two plenary rounds — exactly the wall where the 2015 version died. Even the middle way stalls: <a href="https://www12.senado.leg.br/noticias/materias/2025/10/22/vai-a-camara-mais-tempo-de-internacao-de-adolescente-em-conflito-com-a-lei"target="_blank" rel="noopener">the bill PL 1.473/2025</a>, which would raise maximum internment from 3 to 5 years (10 for violent crimes), passed the Senate in October 2025 and has been sleeping in the Chamber ever since.</p>
<p>Meanwhile, organized crime does the math. Factions recruit teenagers on purpose, because they know the ECA shields the triggerman: in the faction attacks in Ceará, adults <a href="https://ponte.org/periferias-sao-as-principais-vitimas-dos-ataques-de-faccoes-no-ceara/"target="_blank" rel="noopener">paid R$ 1,000 to R$ 5,000 per attack</a> for teenagers to torch vehicles — the boss doesn&rsquo;t expose himself, the executor doesn&rsquo;t go to prison. The Naviraí group is the digital version of the same logic: a 14-year-old leader coordinating crimes that, committed by an adult, would mean decades in prison.</p>
<p>And Brazil has become an outlier even in its neighborhood. Argentina <a href="https://g1.globo.com/mundo/noticia/2026/02/27/argentina-aprova-lei-que-reduz-maioridade-penal-de-16-para-14-anos.ghtml"target="_blank" rel="noopener">approved lowering the age from 16 to 14 in February</a>. Sweden, of all countries, <a href="https://noticias.r7.com/prisma/espaco-prisma/com-13-anos-um-adolescente-pode-matar-e-ir-para-a-cadeia-a-suecia-decidiu-que-sim-o-brasil-ainda-nao-sabe-05022026/"target="_blank" rel="noopener">dropped to 13 for serious crimes starting in July</a> — after gangs started recruiting children on Snapchat for attacks precisely because they couldn&rsquo;t be prosecuted. England prosecutes from age 10 (though its own Bar Council wants to raise it to 14), most American states transfer 14-year-olds to criminal court for murder, Portugal at 16.</p>
<p>For the record, the other side exists: <a href="https://brasil.un.org/pt-br/317703-redu%C3%A7%C3%A3o-da-maioridade-penal-unicef-manifesta-preocupa%C3%A7%C3%A3o-com-avan%C3%A7o-da-pec-na-c%C3%A2mara-dos"target="_blank" rel="noopener">UNICEF came out against the reduction</a>, and the recidivism data is uncomfortable for both sides — ~43% after internment, ~70% after regular prison. If we&rsquo;re going to debate the model, let&rsquo;s debate it. What doesn&rsquo;t fly is the current result: a new law managed in six days to take offline a feature used by millions of innocent people, while the system that punishes the perpetrators hasn&rsquo;t moved in thirty years. We punish the pipe because the pipe is what&rsquo;s within reach.</p>
<blockquote>
  <p><strong>Remember this:</strong> six days to sanction a platform used by millions of innocent people; thirty years without touching the ceiling for those who committed the crime.</p>

</blockquote>
<h2>Meanwhile, at the Supreme Court: source protection breached<span class="hx:absolute hx:-mt-20" id="meanwhile-at-the-supreme-court-source-protection-breached"></span>
    <a href="#meanwhile-at-the-supreme-court-source-protection-breached" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>If it were only Discord, you could call it a regulatory accident. But in the same week, another pillar fell.</p>
<p>Since November 2025, journalist Luís Pablo, from Maranhão, had been publishing reports about the use of an official car of the TJ-MA (<em>Tribunal de Justiça do Maranhão</em>, the Maranhão state court) by Supreme Court minister Flávio Dino and family members. In March, Alexandre de Moraes authorized a <a href="https://www.gazetadopovo.com.br/republica/decisao-de-moraes-sobre-jornalista-cita-inquerito-das-fake-news-e-contraria-nota-oficial-do-stf/"target="_blank" rel="noopener">search and seizure against the journalist</a> — in a decision that cited the fake news inquiry, which the Court&rsquo;s press office later denied. Phones, a notebook, and a pen drive seized. In April, the equipment was returned, but the forensic analysis continued.</p>
<p>On August 11, <a href="https://g1.globo.com/jornal-nacional/noticia/2026/08/11/moraes-determina-investigacao-contra-fonte-de-jornalista-em-reportagem-sobre-dino.ghtml"target="_blank" rel="noopener">the Federal Police served warrants against Raimundo Cutrim</a>, Maranhão&rsquo;s former security secretary — identified as the journalist&rsquo;s source. How did they get to him? Through the analysis of the journalist&rsquo;s seized devices.</p>
<p>See the mechanism? Article 5, XIV of the Constitution protects source secrecy, and the journalist can refuse to reveal it — as he did, staying silent in his deposition. So they didn&rsquo;t ask. They seized his work material, read everything, and <strong>identified the source behind his back</strong>. Constitutional scholar Vera Chemin <a href="https://www.cnnbrasil.com.br/politica/especialistas-avaliam-decisao-de-moraes-sobre-fonte-de-jornalista/"target="_blank" rel="noopener">summed it up on CNN</a>: <em>&ldquo;you cannot breach the secrecy first and then check whether a crime occurred.&rdquo;</em></p>
<p>The Supreme Court itself has ruled this, more than once. In a 2019 constitutional case (ADPF 601), Gilmar Mendes <a href="https://noticias.stf.jus.br/postsnoticias/ministro-gilmar-mendes-garante-sigilo-da-fonte-a-jornalista-glenn-greenwald/"target="_blank" rel="noopener">protected Glenn Greenwald during Vaza Jato</a> with a sentence that should be framed: source secrecy <em>&ldquo;prevents the State from using coercive measures to constrain professional activity and to rummage through the way in which what is brought to public knowledge is received and transmitted.&rdquo;</em> &ldquo;Rummage through the way it is received&rdquo; is literally what the forensic analysis of the devices did.</p>
<p>For the record, the Court&rsquo;s defense exists and deserves to be presented: the investigation targets the illegal monitoring of a minister and his family, with license plates, security agents&rsquo; names, and clandestine images of children published; the Federal Police says Cutrim used his public office to access restricted systems; and there&rsquo;s a R$ 100,000 transfer from a second suspect to the journalist, whose nature nobody has proven yet. The files are sealed, so neither version is verifiable from the outside. There may be a crime there. But that&rsquo;s exactly why the order of operations matters: first you investigate by lawful means, then — maybe, in the most exceptional cases — you discuss exceptions. <strong>Reversing that order turns the exception into the method.</strong></p>
<p>The reaction was the usual one, only louder: the press associations <a href="https://www.abraji.org.br/noticias/abraji-condena-violacao-de-sigilo-de-fonte-de-jornalista-no-maranhao"target="_blank" rel="noopener">Abraji</a>, ANJ and ABERT, the Inter American Press Association, and <a href="https://www.poder360.com.br/poder-midia/globo-folha-e-estadao-criticam-stf-por-quebra-de-sigilo-da-fonte/"target="_blank" rel="noopener">editorials from the country&rsquo;s three biggest newspapers on the same day</a>. Estadão wrote that the fake news inquiry <em>&ldquo;has been converted into an instrument of intimidation.&rdquo;</em> Miro Teixeira, the lawyer who struck down the dictatorship&rsquo;s Press Law in 2009, said the Court <a href="https://www.poder360.com.br/poder-justica/stf-atua-momentaneamente-como-tribunal-de-excecao-diz-miro-teixeira/"target="_blank" rel="noopener">is acting &ldquo;momentarily as a tribunal of exception&rdquo;</a>.</p>
<blockquote>
  <p><strong>Remember this:</strong> source secrecy wasn&rsquo;t repealed, it was bypassed. Nobody coerced the journalist; they seized his devices and the source surfaced in the forensics. The guarantee still exists, but only on paper.</p>

</blockquote>
<h2>Conclusion: is Brazil becoming a censored country?<span class="hx:absolute hx:-mt-20" id="conclusion-is-brazil-becoming-a-censored-country"></span>
    <a href="#conclusion-is-brazil-becoming-a-censored-country" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>It&rsquo;s the pattern that worries me, not the isolated episodes. In 2024, X spent a month offline in Brazil by monocratic order. In 2025, art. 19 of the Marco Civil fell and platform liability went proactive. In 2026, the Digital ECA Law handed the Executive a package of obligations so intrusive that, the first time it was used, it took down an encrypted feature nationwide — while the 14-year-old leader of the group that motivated the sanction faces, at most, three years of internment. And journalistic source secrecy was breached forensically, with the blessing of the same court that enshrined it.</p>
<p>Every rung of that ladder has a sympathetic justification, and that&rsquo;s exactly why the ladder is dangerous. Nobody builds censorship infrastructure saying it&rsquo;s for censorship. You build it to protect children, to protect ministers, to protect democracy.</p>
<p>The problem is that <strong>infrastructure has no moral owner</strong>. The ruler that measures Discord today measures any app tomorrow. The enforcement that demands plaintext streams today to protect Lívia will demand plaintext for whatever the government of the day wants to see. The source breach that catches the Dino case&rsquo;s source today catches any source, in any case, against anyone.</p>
<p>And the week&rsquo;s most revealing detail: of the two platforms the Ministry of Justice asked to investigate, the sanctioned one is the one with an office, a tax ID, and lawyers in Brazil — the one that <em>cooperates</em>. The message the regulator sent the market is inverted: <strong>cooperating exposes you; being opaque protects you</strong>. The teenagers from the Naviraí neo-Nazi group aren&rsquo;t going anywhere — they&rsquo;re going to Telegram, which nobody touched.</p>
<p>And there&rsquo;s the most Brazilian trait of all in this arrangement: it became impossible to be on the right side of the law. If you truly protect your users with end-to-end encryption, you violate the Digital ECA Law. If you comply with the Digital ECA Law, you open up your users&rsquo; data and violate the LGPD. If you collect IDs for age verification, you become a leak target and a sanction target; if you don&rsquo;t collect, you become an enforcement target. <strong>There is no safe configuration.</strong></p>
<p>And that&rsquo;s a tradition of ours: laws so broad, with so many stacked exceptions, that anyone becomes an offender by accident on any street corner. When everyone is always in violation, the law stops being a rule and becomes an option — real power migrates to whoever chooses whom to apply it against. That&rsquo;s what happened this week: two platforms investigated, one punished. The one with a local address.</p>
<p>Protecting children is a non-negotiable civilizational duty. Investigating crimes against a minister is the State&rsquo;s obligation. The question that remains isn&rsquo;t whether those causes are legitimate — they are. It&rsquo;s whether Brazil can still pursue legitimate causes without demolishing the guarantees that make the country a liberal democracy: real privacy, functional encryption, a press with protected sources. This week, the answer was no three times in a row.</p>
<p>It&rsquo;s not regime censorship. In a way it&rsquo;s worse: it&rsquo;s censorship by accumulation, voted, signed, and applauded, every brick carrying a little plaque of good intentions. And you only notice the wall when it&rsquo;s already around you.</p>
]]></content:encoded><category>security</category><category>law-and-regulation</category><category>politics</category></item><item><title>The Rio 3.5 LLM Controversy. Plagiarism?</title><link>https://akitaonrails.github.io/en/2026/06/15/rio-3-5-llm-controversy-plagiarism/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/06/15/rio-3-5-llm-controversy-plagiarism/</guid><pubDate>Mon, 15 Jun 2026 16:00:00 -0300</pubDate><description>&lt;figure&gt;
&lt;img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/06/15/rio-3-5/rio35.png" alt="Scooby-Doo meme unmasking Rio-3.5-Open-397B and revealing Nex-N2-Pro" /&gt;
&lt;figcaption&gt;The meme is funny because it summarizes the accusation. But let's separate the joke, the technical evidence, and the license question.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This week a curious controversy showed up in the open LLM world: &lt;strong&gt;&lt;a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B"target="_blank" rel="noopener"&gt;Rio 3.5 Open 397B&lt;/a&gt;&lt;/strong&gt;, presented by the &lt;a href="https://prefeitura.rio/cidade/prefeitura-do-rio-anuncia-projetos-de-inovacao-que-serao-testados-na-cidade/"target="_blank" rel="noopener"&gt;City of Rio / IplanRIO in the Rio 3 Open announcement&lt;/a&gt; as an open model.&lt;/p&gt;
&lt;p&gt;The accusation: in practice, the published checkpoint, meaning the model weights file, was a direct blend of &lt;strong&gt;&lt;a href="https://huggingface.co/nex-agi/Nex-N2-Pro"target="_blank" rel="noopener"&gt;Nex-N2-Pro&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://huggingface.co/Qwen/Qwen3.5-397B-A17B"target="_blank" rel="noopener"&gt;Qwen3.5-397B-A17B&lt;/a&gt;&lt;/strong&gt;, without initial credit to Nex.&lt;/p&gt;</description><content:encoded><![CDATA[<figure>
  <img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/06/15/rio-3-5/rio35.png" alt="Scooby-Doo meme unmasking Rio-3.5-Open-397B and revealing Nex-N2-Pro" />
  <figcaption>The meme is funny because it summarizes the accusation. But let's separate the joke, the technical evidence, and the license question.</figcaption>
</figure>
<p>This week a curious controversy showed up in the open LLM world: <strong><a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B"target="_blank" rel="noopener">Rio 3.5 Open 397B</a></strong>, presented by the <a href="https://prefeitura.rio/cidade/prefeitura-do-rio-anuncia-projetos-de-inovacao-que-serao-testados-na-cidade/"target="_blank" rel="noopener">City of Rio / IplanRIO in the Rio 3 Open announcement</a> as an open model.</p>
<p>The accusation: in practice, the published checkpoint, meaning the model weights file, was a direct blend of <strong><a href="https://huggingface.co/nex-agi/Nex-N2-Pro"target="_blank" rel="noopener">Nex-N2-Pro</a></strong> and <strong><a href="https://huggingface.co/Qwen/Qwen3.5-397B-A17B"target="_blank" rel="noopener">Qwen3.5-397B-A17B</a></strong>, without initial credit to Nex.</p>
<p>The question mark in the title is intentional. &ldquo;Plagiarism&rdquo; is a loaded word, especially when we&rsquo;re talking about a model under a permissive license. The right question isn&rsquo;t only &ldquo;can they use it?&rdquo; In open source, most of the time they can. The question is: <strong>did they use it, modify it, redistribute it, and give proper credit?</strong> And for an AI model, there&rsquo;s another question just as important: <strong>were they transparent about what was actually done?</strong></p>
<p>My short conclusion before the long version: Nex&rsquo;s public evidence is strong. Strong enough to say the initially published Rio 3.5 checkpoint looks like an almost linear blend of Nex-N2-Pro and Qwen3.5-397B-A17B.</p>
<p>Rio&rsquo;s own <a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B/raw/main/README.md"target="_blank" rel="noopener">README</a> was changed after the <a href="https://github.com/nex-agi/Nex-N2/issues/4"target="_blank" rel="noopener">Nex issue</a> to acknowledge Nex + Qwen and say there had been an &ldquo;incorrect upload&rdquo;.</p>
<p>I did not reproduce the tensor-by-tensor analysis myself. I&rsquo;m evaluating the evidence Nex published, the public Hugging Face history, and the tests I ran separately in my own benchmark.</p>
<p>This does not prove, legally, &ldquo;plagiarism&rdquo; in the classic sense. But it shows a serious attribution and communication failure. And for a public-sector project, with a city government involved, that matters more.</p>
<h2>What the City of Rio announced<span class="hx:absolute hx:-mt-20" id="what-the-city-of-rio-announced"></span>
    <a href="#what-the-city-of-rio-announced" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>In April, the City published a note saying IplanRio had presented <strong>Rio 3 Open</strong>, &ldquo;a family of six cutting-edge artificial intelligence models, fully free and open.&rdquo;</p>
<p>The official text said the idea was to make Rio recognized as a public innovation hub, capable of developing its own AI solutions &ldquo;without depending on foreign platforms.&rdquo; It also highlighted an MIT license, free use, modification, and even profit from the technology. Source: <a href="https://prefeitura.rio/cidade/prefeitura-do-rio-anuncia-projetos-de-inovacao-que-serao-testados-na-cidade/"target="_blank" rel="noopener">City of Rio, 2026-04-02</a>.</p>
<p>A <a href="https://www.mobiletime.com.br/noticias/02/04/2026/prefeitura-do-rio-3-llms/"target="_blank" rel="noopener">Mobile Time</a> article gave more context: the family would be developed from Qwen, Alibaba&rsquo;s Chinese model.</p>
<p>João Cabaretta, president of IplanRio, reportedly said: &ldquo;What we did was take the Qwen model, already ready, and from it we modified the model.&rdquo; The article also listed expected city use cases: reading security cameras for suspicious activity, analyzing accountability documents, generating institutional images and videos, and citizen service.</p>
<p>So far, nothing absurd. Taking an open model and adapting it for local use is exactly what many people do. If the city managed to assemble infrastructure, adapt a model, document it, and publish weights, good. I&rsquo;m in favor of that. I prefer it over another closed contract with a foreign SaaS nobody can audit.</p>
<p>The problem starts with how Rio 3.5 was presented.</p>
<p>On Hugging Face, the <a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B"target="_blank" rel="noopener"><code>prefeitura-rio/Rio-3.5-Open-397B</code></a> repository initially said the model was &ldquo;developed by IplanRIO&rdquo;, &ldquo;Post-trained from Qwen 3.5 397B&rdquo;, with <strong>MIT License</strong>, and acknowledgments to the Qwen Team and SwiReasoning. That older version is still accessible in the Hugging Face history: <a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B/raw/cd503cdc7aaac2506bf68f6d278503ddb07a83ef/README.md"target="_blank" rel="noopener">README before the correction</a>.</p>
<p>The card also promised a frontier-class general-purpose model, with <strong>397B total / 17B active parameters</strong>, a <strong>1,010,000-token</strong> context window, and commercial/research use under MIT. In other words: this wasn&rsquo;t a footnote. It was an ambitious release.</p>
<p>Notice the detail: Qwen appeared as the base. Nex did not.</p>
<p>And this matters because, in Nex&rsquo;s own discussion, someone corrected the narrative by saying Rio <strong>had credited Qwen</strong> early on. That&rsquo;s true: the <a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B/commit/a0b566a0ecd25ae6996ccafd377b2162af01077a"target="_blank" rel="noopener">second model-card commit</a> already listed <code>base_model: Qwen/Qwen3.5-397B-A17B</code>. A comment in the issue points this out too: <a href="https://github.com/nex-agi/Nex-N2/issues/4#issuecomment-4710338431"target="_blank" rel="noopener">&ldquo;They did say Qwen 3.5 397B was the base model from the beginning&hellip;&rdquo;</a>.</p>
<p>So the stronger accusation isn&rsquo;t &ldquo;they omitted Qwen.&rdquo; It&rsquo;s: <strong>they credited Qwen, but omitted Nex-N2-Pro</strong>, exactly the component Nex&rsquo;s weight analysis says was the majority ingredient in the published recipe.</p>
<p>After Nex opened the issue, the current README said something different:</p>
<blockquote>
  <p>&ldquo;The model was built through a merge of <a href="https://huggingface.co/nex-agi/Nex-N2-Pro"target="_blank" rel="noopener">https://huggingface.co/nex-agi/Nex-N2-Pro</a> and <a href="https://huggingface.co/Qwen/Qwen3.5-397B-A17B"target="_blank" rel="noopener">https://huggingface.co/Qwen/Qwen3.5-397B-A17B</a>, followed by On-Policy Distillation from a stronger model. We detected an incorrect upload in the previous version, where the merged base version was uploaded instead of the final distilled model. We apologize for the confusion.&rdquo;</p>

</blockquote>
<p>Source: <a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B/raw/main/README.md"target="_blank" rel="noopener">current Rio 3.5 README</a>, changed in commit <a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B/commit/a778c1ec4e21180ee55c3ea016a348e549e75f09"target="_blank" rel="noopener">a778c1e</a>.</p>
<p>That sentence changes the story a lot. Before: &ldquo;post-trained from Qwen.&rdquo; After: &ldquo;blend of Nex-N2-Pro and Qwen, followed by distillation, but we uploaded the wrong file.&rdquo;</p>
<p>That may be true. There may really have been a wrong upload. But as an outside observer, I can only analyze what was published.</p>
<h2>Nex&rsquo;s accusation<span class="hx:absolute hx:-mt-20" id="nexs-accusation"></span>
    <a href="#nexs-accusation" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Nex opened issue <a href="https://github.com/nex-agi/Nex-N2/issues/4"target="_blank" rel="noopener">nex-agi/Nex-N2#4</a> on June 14. In my translation/summary, the core accusation is direct:</p>
<blockquote>
  <p><code>prefeitura-rio/Rio-3.5-Open-397B</code> is presented as an original 397B model trained by IplanRIO. It is not. Its weights are a direct element-wise blend of our model, Nex, with the official <code>Qwen3.5-397B-A17B</code> base — about 0.6 Nex / 0.4 Qwen — and we find no evidence of their own training.</p>

</blockquote>
<p>Nex points to two lines of evidence.</p>
<p>First: identity behavior. According to them, Rio&rsquo;s service used a built-in system prompt saying &ldquo;You are Rio&rdquo;. With that prompt removed, they asked 120 identity questions. The reported result was:</p>
<ul>
<li>&ldquo;Nex&rdquo;: 95/120, or 79.2%.</li>
<li>&ldquo;Nex-AGI&rdquo;: 88/120, or 73.3%.</li>
<li>&ldquo;Rio&rdquo;: 0/120.</li>
</ul>
<p>Example response cited by Nex:</p>
<blockquote>
  <p>&ldquo;I am Nex, from Nex-AGI. Nex-AGI is a large-model ecosystem alliance, jointly built by the Shanghai Innovation Institute…&rdquo;</p>

</blockquote>
<p>Source: <a href="https://github.com/nex-agi/Nex-N2/issues/4#issuecomment-4702171801"target="_blank" rel="noopener">Nex comment on identity behavior</a>.</p>
<p>That alone doesn&rsquo;t prove everything. A model identifying as another model can happen because of dataset contamination, system prompt, a bad test prompt, or reused fine-tuning. But it&rsquo;s a bad sign when a supposedly &ldquo;Rio&rdquo; model never says &ldquo;Rio&rdquo; without the mask and says &ldquo;Nex&rdquo; very often.</p>
<p>The second piece of evidence is more serious: weight analysis.</p>
<p>Nex&rsquo;s hypothesis is simple. If Rio = α·Nex + (1−α)·Qwen, then for every tensor:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">(Rio − Qwen) ≈ α · (Nex − Qwen)</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>They report very consistent values: routed experts with α ≈ 0.571 ± 0.0016 and <code>cos_fit</code> 0.993; <code>lm_head</code> with 0.574 and 0.991; attention around 0.585 and 0.986; linear-attention projections around 0.586 and 0.984. Source: <a href="https://github.com/nex-agi/Nex-N2/issues/4#issuecomment-4702181710"target="_blank" rel="noopener">Nex comment on weight analysis</a>.</p>
<p>This is the part that carries the most weight. High similarity between models in the same family would not be surprising. But tensor-by-tensor collinearity at this level is a different thing. If the equation reproduces across all tensors, it doesn&rsquo;t look like &ldquo;we trained something similar.&rdquo; It looks like a merge.</p>
<p>The weak point: until someone reproduces it independently, this is still an analysis presented by an interested party. The strong point: it&rsquo;s falsifiable technical analysis, not just a screenshot of a chat.</p>
<h2>Nex&rsquo;s tweet<span class="hx:absolute hx:-mt-20" id="nexs-tweet"></span>
    <a href="#nexs-tweet" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><figure>
  <img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/06/15/rio-3-5/nex-tweet-rio35.png" alt="Screenshot of Nex's tweet saying Rio 3.5 is essentially Nex N2 Pro wearing a different hat" />
  <figcaption>Screenshot of Nex's tweet. Original link: <a href="https://x.com/NexEcosystem/status/2066180407100571714">x.com/NexEcosystem/status/2066180407100571714</a>.</figcaption>
</figure>
<p>Nex&rsquo;s tweet summarizes the accusation in meme form:</p>
<blockquote>
  <p>&ldquo;The Rio 3.5 model broke the internet this week. The plot twist? It&rsquo;s essentially our open-source model, Nex N2 Pro, wearing a different hat.&rdquo;</p>

</blockquote>
<p>And continues:</p>
<blockquote>
  <p>&ldquo;We analyzed the weights, and the recipe is exact: Rio 3.5 ≈ 0.6 * Nex N2 Pro + 0.4 * Qwen 3.5&rdquo;</p>

</blockquote>
<p>It also repeats the identity claim:</p>
<blockquote>
  <p>&ldquo;It even literally introduces itself as &lsquo;Nex N2 Pro&rsquo; if you ask it without initial system prompt!&rdquo;</p>

</blockquote>
<p>And closes with the most important sentence:</p>
<blockquote>
  <p>&ldquo;But in the open-source world, attribution matters.&rdquo;</p>

</blockquote>
<p>That&rsquo;s it. The most important part isn&rsquo;t &ldquo;they used our model.&rdquo; Open models exist to be used. If the analysis is correct, the complaint is: they allegedly used it, benefited from inherited performance, announced results, but only gave credit after Nex exposed the blend.</p>
<h2>But what is Nex-N2-Pro?<span class="hx:absolute hx:-mt-20" id="but-what-is-nex-n2-pro"></span>
    <a href="#but-what-is-nex-n2-pro" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Before going further, it&rsquo;s worth explaining who Nex is in this story, because it didn&rsquo;t come out of nowhere either.</p>
<p>In the <a href="https://huggingface.co/nex-agi/Nex-N2-Pro/raw/main/README.md"target="_blank" rel="noopener">official model card</a>, Nex describes <strong>Nex-N2</strong> as &ldquo;an agentic model with Agentic Thinking&rdquo;.</p>
<p>Marketing aside, the promise is clear: not just a good chat model, but a model tuned for long agent tasks. Coding, tool calls, terminal execution. The annoying kind of workflow where the model needs to plan, execute, see environmental feedback, fix things, and iterate.</p>
<p>And yes: it is also based on Qwen. The card itself says the two models in the family were post-trained on top of the Qwen3.5 series:</p>
<ul>
<li><strong>Nex-N2-Pro</strong>: built on <a href="https://huggingface.co/Qwen/Qwen3.5-397B-A17B"target="_blank" rel="noopener"><code>Qwen3.5-397B-A17B</code></a>.</li>
<li><strong>Nex-N2-mini</strong>: built on <a href="https://huggingface.co/Qwen/Qwen3.5-35B-A3B-Base"target="_blank" rel="noopener"><code>Qwen3.5-35B-A3B-Base</code></a>.</li>
</ul>
<p>So Nex is not saying &ldquo;we created a base architecture from scratch.&rdquo; It is saying: we took Qwen as a base and did agent-focused post-training on top. The promised difference is in that post-training.</p>
<p>They call the framework <strong>Agentic Thinking</strong>, split into two ideas:</p>
<ul>
<li><strong>Adaptive Thinking</strong>: the model decides when to think less and act quickly, or when to spend more reasoning on critical decisions.</li>
<li><strong>Coherent Thinking</strong>: keeping one consistent reasoning paradigm across general tasks, coding, and agent tasks, instead of treating reasoning, tool use, and execution as separate islands.</li>
</ul>
<p>There are practical details too: they recommend a customized fork of <code>sglang</code>, use <code>reasoning-parser qwen3</code>, <code>tool-call-parser qwen3_coder</code>, talk about robust function calling, and list agent/coding benchmarks where Nex-N2-Pro would land close to proprietary models like GPT-5.5 and Opus 4.7.</p>
<p>Of course, vendor benchmarks always need salt. But the thesis is this: <strong>raw Qwen is the base; Nex is the agent post-training and packaging that should turn that base into a better model for real agent work</strong>.</p>
<p>That matches my independent benchmark. Qwen3.5-397B-A17B base did badly: 42/C. Nex-N2-Pro did well: 83/A. Same base, brutal difference. At least in my Rails/RubyLLM test, Nex&rsquo;s value doesn&rsquo;t seem to be &ldquo;it has 397B parameters.&rdquo; Qwen already had that. The value is in fixing agent behavior the Qwen base did not have: using a real API, finishing the task, validating the environment, handling errors.</p>
<p>That distinction matters for the Rio controversy. If Rio 3.5 used Nex as the main ingredient, it&rsquo;s not just &ldquo;Qwen under another name.&rdquo; It would have used precisely the part that made Qwen useful for agent tasks. And that part was Nex&rsquo;s work.</p>
<h2>What Rio effectively answered<span class="hx:absolute hx:-mt-20" id="what-rio-effectively-answered"></span>
    <a href="#what-rio-effectively-answered" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The most concrete public answer I could verify was the README change on Hugging Face. Rio now says:</p>
<ol>
<li>The model is built through a merge of Nex-N2-Pro and Qwen3.5-397B-A17B.</li>
<li>After that there would be an <strong>On-Policy Distillation</strong> step from a stronger model.</li>
<li>The initially uploaded checkpoint was the &ldquo;merged base version&rdquo;, not the final distilled model.</li>
<li>They were working to reupload the correct model.</li>
</ol>
<p>The Hugging Face commit history also shows that, after the issue, many files from <code>model-00001.safetensors</code> through <code>model-00097.safetensors</code> and a benchmark image were removed. You can see it through the <a href="https://huggingface.co/api/models/prefeitura-rio/Rio-3.5-Open-397B/commits/main"target="_blank" rel="noopener">Hugging Face commits API</a>.</p>
<p>Here comes my normal engineer skepticism. &ldquo;We uploaded the wrong file&rdquo; is a possible explanation. It happens. But when the wrong file, according to Nex&rsquo;s analysis, is exactly a mathematical combination of upstream models with no initial credit, and the correction arrives an hour after the accusation, it&rsquo;s hard to call it a mere operational detail.</p>
<p>Not impossible. Hard.</p>
<h2>What model merging is<span class="hx:absolute hx:-mt-20" id="what-model-merging-is"></span>
    <a href="#what-model-merging-is" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>For anyone not following this niche, model merging isn&rsquo;t magic. It&rsquo;s a fairly common technique: you take two compatible checkpoints, usually from the same architecture, and combine the weights. The simplest version is literally a linear interpolation:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">final_model = 0.6 * model_A + 0.4 * model_B</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>There are more sophisticated variations: layer-wise merge, task vectors, TIES, DARE, SLERP, different weights per module. But the concept is this: you&rsquo;re not training from scratch. You&rsquo;re combining already trained parameters.</p>
<p>Can this work? Sometimes. Especially when the models share the same base and were tuned in complementary directions. It can preserve capabilities from one and recover base behavior from another. It can also make things worse. Merging is statistical alchemy: there is technique, but also a lot of empirical testing.</p>
<p>And, most importantly: <strong>merging costs nowhere near what it costs to train a 397B model</strong>. You need to download huge checkpoints, run scripts, test weights, maybe benchmark, maybe tune a few things. <strong>It is not zero work. But it is not &ldquo;we trained a frontier model.&rdquo;</strong></p>
<p>If Nex&rsquo;s evidence is correct, the published checkpoint was something like:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Rio 3.5 ≈ 0.57 to 0.60 * Nex-N2-Pro + 0.40 to 0.43 * Qwen3.5-397B-A17B</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>That looks more like integration engineering than model training. It is not the same kind of technical merit as post-training or distilling a 397B and presenting it as your own advance.</p>
<h2>What distillation means here<span class="hx:absolute hx:-mt-20" id="what-distillation-means-here"></span>
    <a href="#what-distillation-means-here" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Distillation is a different thing. In LLMs, it usually means using a stronger teacher model to generate answers, reasoning traces, or preferences, and training a student model to imitate that behavior. You can distill style, reasoning ability, response format, a specific domain, tool use. The student can be smaller, cheaper, faster, or simply adapted to a goal.</p>
<p>Rio&rsquo;s corrected README says <strong>On-Policy Distillation from a stronger model</strong>. Roughly translated: they would have used a stronger model to generate training data or signals under a generation policy closer to the student itself, and then trained the final Rio 3.5.</p>
<p>That, if it exists, is real work. It requires a pipeline, data, compute, evaluation. The issue is that Nex did not analyze this alleged final distilled model. It analyzed the checkpoint that was public. And Rio now says that checkpoint was the &ldquo;merged base version&rdquo; uploaded by mistake.</p>
<p>So the factual state is:</p>
<ul>
<li>initially published checkpoint: accused of being a Nex + Qwen merge;</li>
<li>initial README: credited Qwen, not Nex;</li>
<li>corrected README: acknowledges Nex + Qwen merge and says the final distilled model was not that file;</li>
<li>correct final model: still open, until it is reuploaded and analyzed.</li>
</ul>
<p>Without the final checkpoint, we can&rsquo;t evaluate the distillation. We can evaluate the communication.</p>
<h2>The license: Apache allows it, but usually requires preserving notices<span class="hx:absolute hx:-mt-20" id="the-license-apache-allows-it-but-usually-requires-preserving-notices"></span>
    <a href="#the-license-apache-allows-it-but-usually-requires-preserving-notices" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This is where a lot of online discussion gets dumb.</p>
<p>I am not a lawyer and this is not legal advice. Also, the exact application of open-source licenses to model weights still has gray areas. But in a practical reading of Apache-2.0, the operational rule is not &ldquo;use it and erase the traces.&rdquo;</p>
<p>Nex-N2-Pro declares <strong>Apache-2.0</strong> on Hugging Face: <a href="https://huggingface.co/nex-agi/Nex-N2-Pro/raw/main/README.md"target="_blank" rel="noopener">Nex-N2-Pro README</a>. Qwen3.5-397B-A17B also declares <strong>Apache-2.0</strong>: <a href="https://huggingface.co/Qwen/Qwen3.5-397B-A17B/raw/main/README.md"target="_blank" rel="noopener">Qwen3.5-397B-A17B README</a>.</p>
<p>Apache-2.0 is permissive. It allows reproduction, modification, derivative works, sublicensing, and distribution. Commercially too. So it is not &ldquo;theft&rdquo; simply because they used Nex and Qwen. If the license allows use, use is part of the game.</p>
<p>But permissive does not mean &ldquo;no obligations at all.&rdquo; The <a href="https://www.apache.org/licenses/LICENSE-2.0.txt"target="_blank" rel="noopener">Apache-2.0 license</a> requires, among other things:</p>
<ul>
<li>giving recipients a copy of the license;</li>
<li>marking modified files with prominent change notices;</li>
<li>preserving copyright, patent, trademark, and attribution notices from the source form;</li>
<li>including NOTICE when the original work has an applicable NOTICE.</li>
</ul>
<p>Rio 3.5 initially declared <strong>MIT License</strong> and credited Qwen/SwiReasoning, but not Nex. If the distributed checkpoint was in fact derived from Nex-N2-Pro, that is at least an attribution failure. It may be fixable. It seems to have been partially corrected in the README. But the error happened at launch, exactly at the moment of highest visibility.</p>
<p>And there is another nuance: <strong>you can&rsquo;t simply take two Apache-2.0 components, generate a derivative, and announce the resulting package as if it were only MIT, without preserving the Apache obligations from the upstreams</strong>.</p>
<p>Apache-2.0 is permissive and allows you to distribute derivatives under different terms for your modifications, but with conditions: you still need to provide the Apache license, preserve copyright/attribution notices, and carry NOTICE when one exists.</p>
<p>So &ldquo;MIT&rdquo; may appear as the license for Rio&rsquo;s added layer, but it cannot erase Apache-2.0 from Nex and Qwen or imply the whole derivative is free of those obligations. If the original card said only MIT and did not include the applicable Apache credits/notices, that can stop being just an etiquette slip and become a possible license-compliance problem.</p>
<p>There&rsquo;s an irony here: they could have avoided 90% of the controversy with one honest sentence from the start:</p>
<blockquote>
  <p>&ldquo;Rio 3.5 is a merge/fine-tune built on Nex-N2-Pro and Qwen3.5-397B-A17B, with IplanRIO adaptations for Portuguese and public-sector use.&rdquo;</p>

</blockquote>
<p>Done. Maybe people would still complain politically, but the technical criticism would be much weaker. The problem is looking like you did it alone.</p>
<h2>How much work does it look like?<span class="hx:absolute hx:-mt-20" id="how-much-work-does-it-look-like"></span>
    <a href="#how-much-work-does-it-look-like" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This is the speculative part, so I&rsquo;ll mark it as speculation.</p>
<p>If what was published was only the base merge, the technical work may have been much smaller than the public narrative suggested. Merging two giant models is not clicking a button in a browser, of course. You need storage, scripts, machines, validation, shard handling, uploading almost a hundred <code>safetensors</code>, tests, documentation. It is operational work.</p>
<p>But it is not the same kind of work as truly training, post-training, or distilling a 397B.</p>
<p>And the phrase &ldquo;open AI model trained in Rio with public funding over the last year,&rdquo; as Eduardo Cavaliere said in this <a href="https://x.com/CavaliereRio/status/2065984620626129026"target="_blank" rel="noopener">tweet</a>, creates a very different expectation from &ldquo;we merged two Apache models and maybe distilled afterward.&rdquo;</p>
<p>Rafael Coelho replied in another <a href="https://x.com/RafaelC38655518/status/2066044310206771250"target="_blank" rel="noopener">tweet</a> that they had not spent public money and had swapped old training code for GPU credits. There may be an administrative explanation there, but from the outside the communication is confusing.</p>
<p>I am not claiming administrative wrongdoing. I am saying the public narrative became inconsistent.</p>
<p>And even the <strong>R$ 500,000</strong> figure, cited by Mobile Time about the previous generation, needs scale. In serious LLM research, that is not a lot of money. Add salaries for a few researchers, infrastructure, storage, cloud GPU hours, failed attempts, evaluation, data engineering, and that amount disappears quickly. It&rsquo;s a drop in the ocean compared with the cost of training or post-training a genuinely large model.</p>
<p>So I would not use &ldquo;R$ 500,000&rdquo; as automatic proof of waste. That&rsquo;s not the point. The point is different: that amount also does not, by itself, support a narrative that a heavy, original 397B training run happened. For that kind of scale, serious research would spend much, much more.</p>
<p>Was it publicly funded? Was it not? Did it cost R$ 500,000 in the previous generation? Was it GPU credits? Was it a year of training? Was it a merge? Was it distillation? Was it a wrong upload?</p>
<p>Maybe all those sentences have different contexts. But when technical communication is bad, the public stitches everything together and it becomes a mess.</p>
<h2>What my benchmark says about Nex and Qwen<span class="hx:absolute hx:-mt-20" id="what-my-benchmark-says-about-nex-and-qwen"></span>
    <a href="#what-my-benchmark-says-about-nex-and-qwen" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Now comes the part where I can speak from my own data. In my <a href="https://github.com/akitaonrails/llm-coding-benchmark"target="_blank" rel="noopener">llm-coding-benchmark</a>, I tested both <strong>Nex-N2-Pro</strong> and the <strong>Qwen 3.5 397B A17B base</strong>.</p>
<p>My benchmark measures one specific programming/Rails task. It is useful as a signal, not as a general capability evaluation.</p>
<p>I did not test Rio 3.5 directly for a simple reason: it is too large for my local machine. My Strix Halo has 128 GB of unified RAM, great for many things, but not enough to run a 397B model like this comfortably. To test it properly, I would need to rent a cloud machine, deal with setup, download hundreds of gigabytes, organize shards, start an inference server, pay by the hour, and still risk the correct checkpoint not even being available at that moment.</p>
<p>I was not up for all that work for a quick analysis post. So I used the best available approximation: test the originals that the controversy itself puts in the recipe, Nex-N2-Pro and Qwen3.5-397B-A17B. If the published Rio was basically a merge of those two, and if there is no public evidence of much effective work on top of that checkpoint, comparing the ingredients already says a lot. It does not replace a direct Rio test, but it puts the performance claim in perspective.</p>
<p>There&rsquo;s another detail: in <a href="https://huggingface.co/prefeitura-rio/Rio-3.5-Open-397B/raw/cd503cdc7aaac2506bf68f6d278503ddb07a83ef/README.md"target="_blank" rel="noopener">Rio&rsquo;s own old model card</a>, the table said &ldquo;Gains Over Base Model&rdquo;, but Rio <strong>did not beat Qwen 3.5 base on everything</strong>.</p>
<p>It lost on MMLU-Redux (94.6 vs 94.9), MMMU-Pro (78.4 vs 79.0), and VideoMMMU (81.6 vs 84.7), tied on MCP-Atlas (74.2 vs 74.2), and in some cases won by small margins, like MMLU-Pro (88.0 vs 87.8) and MathVision (89.1 vs 88.6). So even by the self-reported numbers, without independent auditing, the story was more &ldquo;improves on several benchmarks&rdquo; than &ldquo;better than Qwen at everything.&rdquo;</p>
<p>And yes, where Rio said it beat Qwen, that also fits Nex&rsquo;s hypothesis: <strong>Nex-N2-Pro was already better than the Qwen base precisely because of Nex&rsquo;s work</strong>. I saw this in my own benchmark: Qwen3.5-397B-A17B base scored 42/C, while Nex-N2-Pro scored 83/A. So a Rio that mixes Nex with Qwen can very well look better than Qwen. For the published checkpoint, the simpler explanation is not &ldquo;Rio invented a miracle technique&rdquo;; it&rsquo;s &ldquo;it inherited much of the gain Nex had already produced on top of Qwen.&rdquo;</p>
<p>Relevant commits:</p>
<ul>
<li><a href="https://github.com/akitaonrails/llm-coding-benchmark/commit/11a9c6850485215bb6ccc2ab8e3d1c60e175e62b"target="_blank" rel="noopener"><code>11a9c68</code></a>: adds Nex-N2-Pro, 83/100, Tier A.</li>
<li><a href="https://github.com/akitaonrails/llm-coding-benchmark/commit/e2af88c77c4c5abd95438d5a6132d2bfdf7d943b"target="_blank" rel="noopener"><code>e2af88c</code></a>: adds Qwen 3.5 397B A17B base, 42/100, Tier C.</li>
</ul>
<p>In the final benchmark table, Nex landed here: <a href="https://github.com/akitaonrails/llm-coding-benchmark/blob/e2af88c77c4c5abd95438d5a6132d2bfdf7d943b/docs/success_report.md#L77-L89"target="_blank" rel="noopener">rank #10, 83/100, Tier A</a>.</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Nex-N2-Pro | 83 | A | RubyLLM OK | OpenRouter | 25m | free</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>The Qwen base landed here: <a href="https://github.com/akitaonrails/llm-coding-benchmark/blob/e2af88c77c4c5abd95438d5a6132d2bfdf7d943b/docs/success_report.md#L102-L108"target="_blank" rel="noopener">rank #28, 42/100, Tier C</a>.</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Qwen 3.5 397B A17B (base) | 42 | C | RubyLLM not OK | OpenRouter | 15m | ~$0.58</span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>That&rsquo;s an interesting control. Same backbone, completely different result.</p>
<p>The Qwen base hallucinated the RubyLLM API (<code>chat.system</code>, <code>chat.user</code>, <code>response.text</code>) and even created the app inside a nested <code>chat-app/</code> directory, violating the expected benchmark shape.</p>
<p>Nex, on the other hand, used the real API: <code>RubyLLM.chat</code>, <code>chat.ask</code>, <code>response.content</code>, booted locally, passed Docker, compose, and real chat through OpenRouter. The report compares it directly: <a href="https://github.com/akitaonrails/llm-coding-benchmark/blob/e2af88c77c4c5abd95438d5a6132d2bfdf7d943b/docs/success_report.md#L570-L581"target="_blank" rel="noopener">Qwen base 42/C vs Nex tuned 83/A, a 41-point jump</a>.</p>
<p>That puts Rio 3.5 in perspective. If it really was 60% Nex + 40% Qwen base, it makes sense that it would inherit a lot of Nex&rsquo;s agent capability. But it also makes sense to suspect that mixing in 40% of a model that did much worse in my programming test could degrade pure Nex in some scenarios.</p>
<p>So I won&rsquo;t claim &ldquo;Rio is worse&rdquo; as my own measurement. What I can say is: <strong>the Nex component is good; the Qwen base component was bad in my test; a Rio that was only Nex diluted with Qwen base should not be sold as an obvious advance over pure Nex without a reproducible benchmark against Nex itself</strong>. From what has been published so far, it does not look like the work on top of the merge improved the ranking in a demonstrable way. If it did, publish the correct model and reproducible tests.</p>
<p>And even Nex, which did very well, was not at the top of my open or open-ish ranking. It scored 83. The best so far were Kimi K2.6 and GLM 5.2 at 87, and Kimi K2.7 Code at 86. Nex is Tier A, free, impressive. But it is not magic. It is a good agent-focused fine-tune on top of a family that, raw, badly trips on library APIs.</p>
<p>So as a user, my practical conclusion is simple: <strong>if I had to choose today, I would use Nex-N2-Pro directly</strong>. Not because Rio is automatically useless forever, but because the published checkpoint did not show a clear, auditable gain over the most valuable ingredient in the recipe. If the gain came from Nex, why not use Nex? Rio becomes technically interesting again only if the correct final distilled model appears, with reproducible evaluation showing a real advantage over pure Nex-N2-Pro.</p>
<h2>So was it plagiarism?<span class="hx:absolute hx:-mt-20" id="so-was-it-plagiarism"></span>
    <a href="#so-was-it-plagiarism" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>My honest answer: <strong>I would not call it plagiarism as a legal conclusion</strong>. I would call it a poorly attributed repackaging of the initially published checkpoint, with strong evidence of a direct merge and a correction that only appeared after exposure.</p>
<p>Open source is not &ldquo;you can&rsquo;t use it.&rdquo; Open source is &ldquo;you can use it, but respect the license and give credit.&rdquo; If Nex and Qwen are Apache-2.0, the city could build on top of them. It could merge. It could distill. It could publish a derivative. It could even license its own layer under MIT, as long as it does not erase the Apache obligations from the components and preserves the required notices.</p>
<p>The mistake was letting the public narrative look like an original creation, with incomplete credit. And then, when Nex showed up with tensor-by-tensor math, the README changed.</p>
<p>Maybe there is a real final distilled model. If there is, publish it. Preferably with:</p>
<ul>
<li>a clear card stating the base, merge, distillation, and training data;</li>
<li>a license compatible with Qwen and Nex;</li>
<li>explicit credits;</li>
<li>a reproducible evaluation script;</li>
<li>a benchmark against pure Nex-N2-Pro and Qwen base;</li>
<li>an explanation of the &ldquo;incorrect upload.&rdquo;</li>
</ul>
<p>That would close much of the technical discussion. Maybe not the political one, but the technical one, yes.</p>
<h2>What to learn from this<span class="hx:absolute hx:-mt-20" id="what-to-learn-from-this"></span>
    <a href="#what-to-learn-from-this" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This story is a good reminder for everyone surfing open models now. The derivation chain matters. Not because of academic bureaucracy, but because it is part of trust.</p>
<p>If you fine-tune on top of Qwen, say Qwen. If you merge with Nex, say Nex. If you distill from a closed teacher, say you distilled, even if you can&rsquo;t name the teacher. If you uploaded the wrong checkpoint, explain exactly which one was wrong, which one is right, and how someone can verify it.</p>
<p>The worst path is trying to look bigger than you are. Because open LLMs are an environment where weights can be downloaded, compared, and audited. You can hide the narrative for a while, but you cannot hide linear algebra.</p>
<p>In the end, Nex may have received the best involuntary validation of its own model: if a city government used Nex-N2-Pro as 60% of the recipe for a model announced as &ldquo;state of the art,&rdquo; then Nex is good. But involuntary validation does not pay the credit bill.</p>
<p>And credit, in open source, is not fussiness. It is the basic currency of the game.</p>
]]></content:encoded><category>llms</category><category>open-source</category><category>law-and-regulation</category></item><item><title>[Off-Topic] Commenting on the Approved Marco Civil</title><link>https://akitaonrails.github.io/en/2014/03/30/off-topic-comentando-o-marco-civil-aprovado/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2014/03/30/off-topic-comentando-o-marco-civil-aprovado/</guid><pubDate>Sun, 30 Mar 2014 09:46:00 -0300</pubDate><description>&lt;p&gt;As I said on social media before, I&amp;rsquo;m on the fence about this Marco Civil. Being a little cynical, if it comes from the government, from a PT-party government and still with opposition support, it already doesn&amp;rsquo;t smell right. The timing and the urgency are there to cash in on the recent American-government wiretapping on Brazilian soil and the Snowden controversy. The goal is to look like the nation&amp;rsquo;s savior while quietly embedding safeguards that legalize government activities that are shady at best.&lt;/p&gt;</description><content:encoded><![CDATA[<p>As I said on social media before, I&rsquo;m on the fence about this Marco Civil. Being a little cynical, if it comes from the government, from a PT-party government and still with opposition support, it already doesn&rsquo;t smell right. The timing and the urgency are there to cash in on the recent American-government wiretapping on Brazilian soil and the Snowden controversy. The goal is to look like the nation&rsquo;s savior while quietly embedding safeguards that legalize government activities that are shady at best.</p>
<p>I&rsquo;ll publish the full text and add a few comments. Plenty of people have opinions about this Marco Civil, and my guess is 99% never read the law before weighing in. So I recommend reading it. I took the text from <a href="http://estaticog1.globo.com/2014/03/25/marcocivilInternet-textofinalcamara-25mar2014.pdf"target="_blank" rel="noopener">this PDF</a>; if it&rsquo;s outdated, let me know.</p>
<p>Don&rsquo;t forget to comment.</p>
<blockquote>
  <p><strong>Translator&rsquo;s note:</strong> the full legal text of the Marco Civil is preserved in the original Portuguese (it&rsquo;s a Brazilian law, whose authoritative text is Portuguese). Only Akita&rsquo;s commentaries are translated below, interleaved with a brief summary of each article so an English reader can follow along.</p>

</blockquote>
<h4>GLOBAL SUBSTITUTE SUB-AMENDMENT TO PLENARY AMENDMENTS TO BILL No. 2,126 OF 2011<span class="hx:absolute hx:-mt-20" id="global-substitute-sub-amendment-to-plenary-amendments-to-bill-no-2126-of-2011"></span>
    <a href="#global-substitute-sub-amendment-to-plenary-amendments-to-bill-no-2126-of-2011" class="subheading-anchor" aria-label="Permalink for this section"></a></h4><p>Establishes principles, guarantees, rights, and duties for the use of the Internet in Brazil.</p>
<h2>CHAPTER I. PRELIMINARY PROVISIONS<span class="hx:absolute hx:-mt-20" id="chapter-i-preliminary-provisions"></span>
    <a href="#chapter-i-preliminary-provisions" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p><strong>Art. 1.</strong> This Law establishes principles, guarantees, rights, and duties for the use of the Internet in Brazil.</p>
<p><strong>Art. 2.</strong> The discipline of Internet use in Brazil is grounded on respect for freedom of expression, as well as: (I) recognition of the global scale of the network; (II) human rights, personal development, and exercise of citizenship in digital media; (III) plurality and diversity; (IV) openness and collaboration; (V) free initiative, free competition, and consumer protection; and (VI) the social purpose of the network.</p>
<blockquote>
  <p>There&rsquo;s no way to guarantee &ldquo;the social purpose of the network.&rdquo; A purpose isn&rsquo;t defined by decree; it&rsquo;s whatever the users make of it. Guaranteeing a &ldquo;social purpose&rdquo; requires restrictive manipulation, and the Internet is what it is precisely because no purpose was imposed on it. Everyone does what they want, and the free market adjusts on its own.</p>
<p>The Internet is a data transport medium, everyone pays for it, and its use follows from that free access. Once you define an objective, however good the intentions, you create restrictions. Every restriction has to be regulated, and every regulation needs someone to audit it.</p>

</blockquote>
<p><strong>Art. 3.</strong> The discipline of Internet use in Brazil has the following principles: (I) guarantee of freedom of expression; (II) protection of privacy; (III) protection of personal data; (IV) preservation and guarantee of network neutrality; (V) preservation of stability, security, and functionality of the network; (VI) accountability of agents according to their activities; (VII) preservation of the participatory nature of the network; (VIII) freedom of business models on the Internet.</p>
<blockquote>
  <p>Principles II and III are redundant, and III actually restricts II: the first defines privacy, the second breaks it and hands the government a monopoly on the breach.</p>

</blockquote>
<blockquote>
  <p>V should be irrelevant. Following any standard by decree doesn&rsquo;t work, and it begs the question: who defines what &ldquo;techniques compatible with international standards&rdquo; or &ldquo;use of good practices&rdquo; are? In practice, some government body ends up holding a monopoly on that regulation.</p>

</blockquote>
<blockquote>
  <p>VII can&rsquo;t be defined either. Who decides what &ldquo;participatory nature&rdquo; means? These bits guarantee one more bureaucratic jobs rack, an Anatel or something like it, to &ldquo;guarantee&rdquo; these &ldquo;rights.&rdquo; Every non-fundamental &ldquo;right&rdquo; demands a regulator, and every regulator is harmful.</p>

</blockquote>
<p><strong>Art. 4.</strong> The discipline of Internet use in Brazil has the following objectives: (I) promote the right of access to the Internet to all; (II) promote access to information, knowledge and participation in cultural life; (III) promote innovation and broad dissemination of new technologies; (IV) promote adherence to open technology standards that allow communication, accessibility, and interoperability.</p>
<blockquote>
  <p>This whole article is bad. You can&rsquo;t &ldquo;guarantee&rdquo; Internet access for everyone, the same way you can&rsquo;t guarantee food or education to anyone. The moment you define one person&rsquo;s right, you decree another&rsquo;s servitude, because the government doesn&rsquo;t have the means to guarantee it, we citizens do. And when you declare that someone has a right to something that&rsquo;s ours, you infringe our rights too.</p>

</blockquote>
<blockquote>
  <p>Sorry, the Internet isn&rsquo;t free. Electricity, water, and basic sanitation aren&rsquo;t free either, somebody pays. Put a government regulator in charge and we&rsquo;ll get the same level of service as Sabesp and Eletropaulo: water shortages, blackouts, and the lights going out when it rains. Why do we put up with that? Government regulation.</p>

</blockquote>
<blockquote>
  <p>Fostering &ldquo;innovation&rdquo; isn&rsquo;t and shouldn&rsquo;t be the government&rsquo;s job. Innovation is a natural consequence of free competition and a free market. Making it a state task hands out permission to burn our tax money. And, again, who defines what &ldquo;innovation&rdquo; is? Another regulator, another rack of bureaucrats.</p>

</blockquote>
<blockquote>
  <p>So far, the only thing these articles guarantee is the creation of regulatory bodies.</p>

</blockquote>
<p><strong>Art. 5.</strong> Definitions: Internet, terminal, autonomous system administrator, IP address, Internet connection, connection record, Internet applications, and records of access to Internet applications.</p>
<blockquote>
  <p>At least it shows some politicians aren&rsquo;t total illiterates. These are just technical definitions, pretty raw, but they do the job for this document. Note the &ldquo;IP address,&rdquo; as if it guaranteed identifying someone. What&rsquo;s missing is a line saying an IP address can&rsquo;t be used as the basis to identify anyone.</p>

</blockquote>
<p><strong>Art. 6.</strong> In the interpretation of this Law, the nature of the Internet, its particular uses and customs, and its importance for the promotion of human, economic, social, and cultural development shall be taken into account.</p>
<h2>CHAPTER II. RIGHTS AND GUARANTEES OF USERS<span class="hx:absolute hx:-mt-20" id="chapter-ii-rights-and-guarantees-of-users"></span>
    <a href="#chapter-ii-rights-and-guarantees-of-users" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p><strong>Art. 7.</strong> Access to the Internet is essential to the exercise of citizenship, and the following rights are guaranteed to users: inviolability of intimacy and private life; inviolability and secrecy of communications; non-suspension of Internet connection except for debts; maintenance of the contracted quality; clear information in contracts; non-provision of personal data to third parties except with consent; clear information about data collection and use; express consent; deletion of personal data upon request; publicity of usage policies; accessibility; application of consumer protection norms.</p>
<blockquote>
  <p>Translating &ldquo;inviolability&rdquo;: the access provider shouldn&rsquo;t violate it unless the Judiciary forces them to.</p>

</blockquote>
<blockquote>
  <p>The maintenance of the contracted quality should be the domain of Consumer Rights.</p>

</blockquote>
<blockquote>
  <p>The paragraphs of this article are all redundant. In short: the provider has to declare how it uses the data it collects, and when that isn&rsquo;t clear, the government holds a monopoly on getting at it, since every paragraph ends with &ldquo;except by judicial order, in the form of the law.&rdquo; Everyone already does this. We have the &ldquo;Terms of Service&rdquo; nobody reads and everybody accepts, but that technically are there.</p>

</blockquote>
<blockquote>
  <p>It&rsquo;s not a totally bad article: it ratifies behaviors that are already standard in any decent service. But we all know that, by judicial order, anyone can get anything in this country, because there&rsquo;s no privacy limit on the government. And if the government can access everything, so can anyone else. There&rsquo;s no guarantee of privacy anywhere in this document.</p>

</blockquote>
<p><strong>Art. 8.</strong> The guarantee of the right to privacy and freedom of expression in communications is a condition for the full exercise of the right of access to the Internet.</p>
<h2>CHAPTER III. PROVISION OF CONNECTION AND INTERNET APPLICATIONS<span class="hx:absolute hx:-mt-20" id="chapter-iii-provision-of-connection-and-internet-applications"></span>
    <a href="#chapter-iii-provision-of-connection-and-internet-applications" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><h3>Section I. Network Neutrality<span class="hx:absolute hx:-mt-20" id="section-i-network-neutrality"></span>
    <a href="#section-i-network-neutrality" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><strong>Art. 9.</strong> The person responsible for transmission, switching, or routing has the duty to treat any data packets in an isonomic way, without distinction by content, origin, destination, service, terminal, or application. Traffic discrimination or degradation is only allowed for: (I) indispensable technical requirements, and (II) priority for emergency services.</p>
<blockquote>
  <p>In short, this is the article that should stop a provider from creating a &ldquo;Facebook&rdquo; plan, where traffic to Facebook gets high priority and access to everything else is slower or nonexistent. It also blocks silent &ldquo;traffic shaping,&rdquo; where the provider watches your traffic and makes access to certain places, like the Pirate Bay, slower.</p>

</blockquote>
<blockquote>
  <p>The principle is valid enough. Nobody in their right mind would be against &ldquo;neutrality&rdquo; or isonomy.</p>

</blockquote>
<blockquote>
  <p>Except it raises a question. We&rsquo;ve had commercial Internet in Brazil for nearly 20 years, and before this document none of that was illegal. So why don&rsquo;t you see a Claro or a Net selling &ldquo;YouTube&rdquo; plans?</p>

</blockquote>
<blockquote>
  <p>Ask yourself that. The answer isn&rsquo;t simple, and you&rsquo;ll start wondering what the real purpose of this article is.</p>

</blockquote>
<h3>Section II. Protection of Records, Personal Data, and Private Communications<span class="hx:absolute hx:-mt-20" id="section-ii-protection-of-records-personal-data-and-private-communications"></span>
    <a href="#section-ii-protection-of-records-personal-data-and-private-communications" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><strong>Arts. 10–12.</strong> Guardianship and disclosure of connection and application access records, personal data, and content of private communications; sanctions (warning, fines up to 10% of revenue, suspension, prohibition).</p>
<blockquote>
  <p>This article makes it explicit that all data sit at the Judiciary&rsquo;s disposal. Privacy is broken by law, and the government holds a monopoly on the breach. That opens the door to every kind of corruption. If only the government can open someone&rsquo;s information, corporate espionage gets easier: grease a judge&rsquo;s palm, issue a warrant, and whoever can pay gets access to anything.</p>

</blockquote>
<blockquote>
  <p>Yet another mechanism that guarantees the creation of a regulator, and here it&rsquo;s spelled out, &ldquo;in the form of the regulation.&rdquo; Who&rsquo;s going to &ldquo;verify compliance with Brazilian law on data collection, storage, and retention&rdquo;? This was always unnecessary and still is, but now we&rsquo;ll pay some deadbeat auditor to do nothing and bully smaller services on top of it, choking off free competition. Want to mess with someone&rsquo;s business? Call this &ldquo;police&rdquo; and say company X isn&rsquo;t complying with this paragraph.</p>

</blockquote>
<h3>Subsection I. Storage of Connection Records<span class="hx:absolute hx:-mt-20" id="subsection-i-storage-of-connection-records"></span>
    <a href="#subsection-i-storage-of-connection-records" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><strong>Art. 13.</strong> In providing Internet connection, the relevant autonomous system administrator has the duty to maintain connection records, under secrecy, in a controlled and secure environment, for one year.</p>
<blockquote>
  <p>I take this article to cover only Internet access providers. It&rsquo;s just an excuse to raise costs and, again, break privacy.</p>

</blockquote>
<h3>Subsection II. Storage of Access Records to Internet Applications in Connection Provision<span class="hx:absolute hx:-mt-20" id="subsection-ii-storage-of-access-records-to-internet-applications-in-connection-provision"></span>
    <a href="#subsection-ii-storage-of-access-records-to-internet-applications-in-connection-provision" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><strong>Art. 14.</strong> In providing connection, paid or free, it is forbidden to store records of access to Internet applications.</p>
<h3>Subsection III. Storage of Access Records in Application Provision<span class="hx:absolute hx:-mt-20" id="subsection-iii-storage-of-access-records-in-application-provision"></span>
    <a href="#subsection-iii-storage-of-access-records-in-application-provision" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><strong>Art. 15.</strong> The provider of Internet applications constituted as a legal entity, which carries out this activity in an organized, professional, and economic manner, must maintain the respective records of access to Internet applications, under secrecy, for six months.</p>
<blockquote>
  <p>This one is even more <a href="http://pt.wikipedia.org/wiki/George_Orwell"target="_blank" rel="noopener">Orwellian</a>. It lets the government force a provider to track more information, for an indefinite period and indiscriminately. The government could already pull this off before, through Anatel&rsquo;s pull and other lobbies, but now it&rsquo;s secured by law.</p>

</blockquote>
<p><strong>Arts. 16–17.</strong> Prohibition of storing records of access to other applications without prior consent; opting not to store records doesn&rsquo;t imply responsibility for damages.</p>
<h3>Section III. Responsibility for Damages from Third-Party Content<span class="hx:absolute hx:-mt-20" id="section-iii-responsibility-for-damages-from-third-party-content"></span>
    <a href="#section-iii-responsibility-for-damages-from-third-party-content" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><strong>Arts. 18–21.</strong> Connection providers are not civilly liable for damages from third-party content. Application providers can only be civilly liable for damages from third-party content after a specific judicial order. Special treatment for cases involving nudity/private sexual content.</p>
<blockquote>
  <p>This doesn&rsquo;t seem totally bad, it already happens today, but it got more confusing. In practice, if a user of your site posts an offensive comment and the offended party gets a judicial order, the site isn&rsquo;t criminally liable for the content as long as it takes the comment down when ordered.</p>

</blockquote>
<blockquote>
  <p>The people who lean on this the most are the imbecile candidates for public office, who fire off judicial orders all the time against any site with political content. The problem is that offending a politician is against the law. Our Constitution itself has become a problem these days.</p>

</blockquote>
<h3>Section IV. Judicial Request for Records<span class="hx:absolute hx:-mt-20" id="section-iv-judicial-request-for-records"></span>
    <a href="#section-iv-judicial-request-for-records" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><strong>Arts. 22–23.</strong> The interested party may request that the judge order the person responsible for the storage to provide connection records. Secrecy and privacy must be preserved.</p>
<blockquote>
  <p>This article extends what the previous ones already set up: unrestricted, indiscriminate access to data that&rsquo;s supposed to have &ldquo;privacy&rdquo; guaranteed.</p>

</blockquote>
<blockquote>
  <p>&ldquo;It&rsquo;s up to the judge,&rdquo; meaning, forget your privacy. Judges can be, and are, bought. It&rsquo;s a market.</p>

</blockquote>
<h2>CHAPTER IV. ACTION OF THE PUBLIC POWER<span class="hx:absolute hx:-mt-20" id="chapter-iv-action-of-the-public-power"></span>
    <a href="#chapter-iv-action-of-the-public-power" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p><strong>Art. 24.</strong> Guidelines for the action of the Union, States, Federal District, and Municipalities in the development of the Internet in Brazil: multi-stakeholder governance, promotion of management rationalization, interoperability, open standards, data publicity, infrastructure optimization, capacity building, promotion of culture and citizenship, provision of integrated public services.</p>
<blockquote>
  <p>This article sanctions the Orwellian part: the creation of regulatory bodies, the <a href="http://en.wikipedia.org/wiki/Thought_Police"target="_blank" rel="noopener">&ldquo;Thought Police&rdquo;</a>. That body would be responsible for &ldquo;guaranteeing&rdquo; what&rsquo;s in the paragraphs: setting up governance mechanisms, rationalizing management, promoting interoperability, and on it goes. You&rsquo;ve sanctioned by law a machine for corruption, market reserve, breach of free competition, and the rotting of the Internet market.</p>

</blockquote>
<blockquote>
  <p>Understand: there&rsquo;s no way to define &ldquo;multi-stakeholder governance,&rdquo; &ldquo;collaborative,&rdquo; or &ldquo;rationalization.&rdquo; Who decides what counts as collaborative, interoperable, or efficient? Someone has to interpret it, and anything left open to interpretation only benefits whoever has the power to impose their reading. By definition, it&rsquo;s a bad text.</p>

</blockquote>
<p><strong>Arts. 25–28.</strong> Internet applications of public entities should seek compatibility with multiple terminals, accessibility, compatibility with both human reading and automated processing, usability, and strengthening of social participation.</p>
<blockquote>
  <p>This shouldn&rsquo;t be here. They&rsquo;re technical clauses for software procurement bids, which already exist, and I don&rsquo;t see the use of them. In some cases the items are dispensable and add one more unnecessary restriction.</p>

</blockquote>
<blockquote>
  <p>This isn&rsquo;t the state&rsquo;s duty.</p>

</blockquote>
<blockquote>
  <p>Again, it&rsquo;s not the state&rsquo;s duty. This whole chapter is restrictive and shouldn&rsquo;t exist, because it frees up unrestricted use of our money on government programs. As a taxpayer, I&rsquo;m against any program that spends my money that way. It&rsquo;s one person&rsquo;s right breaking another&rsquo;s, and by definition that can&rsquo;t be a guaranteed right.</p>

</blockquote>
<h2>CHAPTER V. FINAL PROVISIONS<span class="hx:absolute hx:-mt-20" id="chapter-v-final-provisions"></span>
    <a href="#chapter-v-final-provisions" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p><strong>Arts. 29–32.</strong> The user has the option of free choice in using software for parental control; the defense of interests and rights established in this Law may be exercised in court; until the entry into force of the specific law, liability for copyright infringement remains governed by current legislation; the Law enters into force sixty days after publication.</p>
<p>Representative ALESSANDRO MOLON.
Rapporteur</p>
<blockquote>
  <p>Honestly, I don&rsquo;t see the upside of this text. The relevant part, neutrality, should be regulated by Consumer Rights. Everything else sanctions the legality of breaking privacy and hands the government a monopoly on that breach. And it creates &ldquo;rights&rdquo; that will demand more public spending and more state apparatus, at our expense and with no apparent benefit. At bottom it&rsquo;s a propaganda document to make the government look good, at my expense and at yours. Congratulations.</p>

</blockquote>
]]></content:encoded><category>law-and-regulation</category><category>networking</category><category>security</category><category>off-topic</category></item><item><title>[Off-Topic] Demystifying the "Evil" Microsoft</title><link>https://akitaonrails.github.io/en/2011/02/20/off-topic-desmistificando-a-microsoft-do-mal/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2011/02/20/off-topic-desmistificando-a-microsoft-do-mal/</guid><pubDate>Sun, 20 Feb 2011 17:53:00 -0300</pubDate><description>&lt;p&gt;&lt;img src="http://s3.amazonaws.com/akitaonrails/assets/2011/2/20/ballmerasdrevil_original.jpg?1298235025" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;Maybe anyone who entered the tech market this decade never followed the 90s saga that ended in the antitrust case against Microsoft. The &amp;ldquo;fear&amp;rdquo; of &amp;ldquo;monopolist&amp;rdquo; Microsoft got replaced by disdain and ridicule. I know, I use that image myself now and then. It&amp;rsquo;s almost a universal joke: Microsoft is the eternal evil, and everyone else, the Canonicals, the Apples, the Googles, are the good guys.&lt;/p&gt;
&lt;p&gt;Or almost, because now it&amp;rsquo;s Apple growing too big, and Google too, which already has thousands of detractors instead of fans. Soon we may see a new antitrust case: against Apple&amp;rsquo;s iTunes Store, for its &amp;ldquo;unfair&amp;rdquo; and &amp;ldquo;anti-competitive&amp;rdquo; practices. If that happens, it&amp;rsquo;s because people really don&amp;rsquo;t learn, and we&amp;rsquo;re doomed to go backward instead of forward.&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="http://s3.amazonaws.com/akitaonrails/assets/2011/2/20/ballmerasdrevil_original.jpg?1298235025" alt=""  loading="lazy" /></p>
<p>Maybe anyone who entered the tech market this decade never followed the 90s saga that ended in the antitrust case against Microsoft. The &ldquo;fear&rdquo; of &ldquo;monopolist&rdquo; Microsoft got replaced by disdain and ridicule. I know, I use that image myself now and then. It&rsquo;s almost a universal joke: Microsoft is the eternal evil, and everyone else, the Canonicals, the Apples, the Googles, are the good guys.</p>
<p>Or almost, because now it&rsquo;s Apple growing too big, and Google too, which already has thousands of detractors instead of fans. Soon we may see a new antitrust case: against Apple&rsquo;s iTunes Store, for its &ldquo;unfair&rdquo; and &ldquo;anti-competitive&rdquo; practices. If that happens, it&rsquo;s because people really don&rsquo;t learn, and we&rsquo;re doomed to go backward instead of forward.</p>
<p>In terms of personal taste, guaranteed by individual freedom of expression, I dislike most Microsoft products and like most Apple products. That doesn&rsquo;t stop me from understanding, respecting, and admiring the ability of both to go from a garage to the top of the world. It&rsquo;s what a capitalist free market makes possible.</p>
<p>And it bothers me when success starts getting seen through the disdain and envy of the incompetent, who in the end think they have a &ldquo;right&rdquo; to something without having the same ability.</p>
<p>Whether I consider a product &ldquo;technically&rdquo; better or not is beside the point. &ldquo;Better&rdquo; and &ldquo;worse&rdquo; are matters of taste, and the best thermometer in the market is demand. If demand is high, the product can be &ldquo;good&rdquo; even if it&rsquo;s &ldquo;technically bad.&rdquo;</p>
<p>Nobody has a &ldquo;right&rdquo; to anything beyond what they produce themselves, let alone to something of others for free. But plenty of people think nobody is allowed to grow too big, or else what happens to the smaller competitors? That kind of statist thinking led to the Great Depression of 1929, the World Wars, and the Financial Crisis of 2008.</p>
<p>I find it disoriented to lump the fact that a piece of software is &ldquo;open,&rdquo; or that a company backs &ldquo;free software,&rdquo; together with social and populist movements. Technology shouldn&rsquo;t be dragged into failed socialist ideologies. In another article I&rsquo;ll explain why Open Source has everything to do with Capitalism and nothing to do with politicized social movements.</p>
<p>The text below is old, translated from Onkar Ghate&rsquo;s <a href="https://ari.aynrand.org/issues/government-and-business/regulations/drop-the-antitrust-case-against-microsoft/"target="_blank" rel="noopener">original article</a> (Pittsburgh Tribune-Review, March 17, 2002), and it should convince you of what I mean. Drop the prejudices (&ldquo;Microsoft = Evil&rdquo;) and read with reasoning, because the arguments are logical. The context is 2002; Microsoft has shrunk a lot since then, and its qualities have changed.</p>
<h2>[TRANSLATION] Drop the antitrust case against Microsoft<span class="hx:absolute hx:-mt-20" id="translation-drop-the-antitrust-case-against-microsoft"></span>
    <a href="#translation-drop-the-antitrust-case-against-microsoft" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The historic antitrust case against Microsoft is now entering its final phase: the determination of Microsoft&rsquo;s punishment. The presiding judge, U.S. District Court judge Colleen Kollar-Kotelly, should be as lenient as legally permissible. (If possible, she should impose only a nominal punishment like a one-dollar fine or, better still, throw the case out entirely.)</p>
<p>To understand why, one needs to understand two points, one general and one particular. First, antitrust laws are nonobjective and unjust. Second, Microsoft is guilty of no actual crime. Let us begin with the first point.</p>
<p>The &ldquo;actions&rdquo; that antitrust laws prohibit are vague, contradictory, undefined. For instance, antitrust laws prohibit companies from engaging in &ldquo;restraint of trade.&rdquo; But what specific actions constitute &ldquo;restraint of trade&rdquo;? If, as is done repeatedly in the business world, a company signs an exclusive distribution agreement with another company, is that &ldquo;restraint of trade&rdquo; because now other potential competitors are excluded from that area of the market? Or if a company sells a computer to individual X, is that &ldquo;restraint of trade&rdquo; because competing computer companies can no longer sell X a computer since he has need for only one? No — the courts have declared to businessmen — only those &ldquo;restraints&rdquo; that are &ldquo;unreasonable&rdquo; are illegal. But which specific &ldquo;restraints&rdquo; are &ldquo;unreasonable&rdquo;? No definition is to be found in the law, so no company can know before it acts which actions are in law legal and which are not.</p>
<p>Consider another example. The antitrust laws prohibit &ldquo;unfair&rdquo; trade practices. But again, what counts as an &ldquo;unfair&rdquo; practice? Is it any business practice that, for instance, causes bankruptcies among some of a firm&rsquo;s competitors, because they cannot find a way to compete with the firm&rsquo;s low prices and/or superior products? Or is it simply any practice that the administration in power disapproves of? Again, no answer is to be found in the law, so it is impossible for a company to determine beforehand which specific actions the law prohibits.</p>
<p>Take one last example. Under antitrust laws, a company can be charged with &ldquo;predatory pricing&rdquo; if it sets prices below those of its competitors, because the competitors might as a result go bankrupt. It can be charged with &ldquo;monopoly pricing&rdquo; if it sets prices that are deemed too high, because then it is supposedly bilking consumers of their hard-earned income. But if it therefore decides to set prices at the level of those of its competitors — it can be charged with &ldquo;collusion&rdquo; or &ldquo;conspiracy,&rdquo; because now it is said to be no longer &ldquo;competing.&rdquo;</p>
<p>In the nightmarish world of antitrust law, any and no action can be pronounced illegal. There are and can be no definite, objective principles specified in the law — and as a result a businessman has no way to determine, before he acts, whether his action is legal or not. In practice, this means that businessmen are at the mercy of the government. Any moment the government wants to cripple a particular company, it can unleash the antitrust laws against the company. In logic, a business has no possible defense against a charge of &ldquo;restraint of trade&rdquo; or &ldquo;unfair&rdquo; trade policies or &ldquo;predatory pricing&rdquo; because the charge itself has no objective meaning. The antitrust laws, therefore, vest the government with arbitrary power.</p>
<p>The result, unsurprisingly, is that when, say, a bureaucrat is disgruntled with a successful company because it has failed to share (i.e., give away) its wealth or support the government&rsquo;s particular programs — or when a government official thinks that destroying a powerful company will win him votes with misguided citizens who believe that Big Business is their enemy — or when resentful, envious competitors (like Netscape and Oracle and AOL in the Microsoft case) can persuade their government representatives to cripple a superior competitor — the brunt of the antitrust laws descends upon that company.</p>
<p>It is no accident that it is America&rsquo;s most successful, most productive, most admired companies — Microsoft, IBM, Intel, Wal-Mart, American Airlines, Standard Oil, etc. — that are subjected to antitrust lawsuits.</p>
<p>As a form of granting arbitrary power to the government, antitrust laws are unconstitutional and un-American. As a means of penalizing the successful for being successful, antitrust laws are a perversion of justice.</p>
<p>Let us therefore now leave to one side antitrust law, under which any action of a company could be considered a crime, and ask whether in actual fact Microsoft is guilty of any crime.</p>
<p>What are the principal accusations against Microsoft?</p>
<p>Microsoft is accused of &ldquo;unfair&rdquo; competition. But competition refers to the process by which companies utilize their assets and personnel to build better and/or cheaper products. They thereby seek to earn, through voluntary trade, even greater profits. In a free market, there is no such thing as &ldquo;unfair&rdquo; competition. There are only better and worse competitors. In other words, some companies are better than others at research and development, at structuring long-term, mutually beneficial business agreements, at marketing products, at keeping good employees happy yet challenged. Microsoft, for example, excels at all these processes — and many more. (The charge that Microsoft is not innovative is particularly disingenuous given its continual upgrades and improvements to its major products; even Judge Jackson had to concede this point.) The fact that Microsoft is one of the greatest competitors the business world has seen is, in a free nation, not a crime but a virtue.</p>
<p>The only &ldquo;unfair competition&rdquo; that exists is in fact not competition. If, say, the Mafia threatens to blow up a shopkeeper&rsquo;s store unless he gives it a percentage of his sales, the Mafia is not engaged in competition, albeit unfair. It is engaged in coercion — precisely to prevent voluntary trade and the free market from operating. When Netscape loses sales to Microsoft because Microsoft&rsquo;s browser is better and/or cheaper, Netscape&rsquo;s loss of sales bears no similarity to a shopkeeper&rsquo;s &ldquo;loss&rdquo; of sales to the Mafia. One must never equate the voluntary (people choose to buy Microsoft&rsquo;s products) with the coerced (if he had a choice, the shopkeeper would not &ldquo;deal&rdquo; with the Mafia).</p>
<p>Second, Microsoft is accused of &ldquo;predatory pricing.&rdquo; Translated into reality, this means that Microsoft is able to charge prices below those of its competitors, such as Netscape. Some of these competitors, who cannot match Microsoft&rsquo;s low prices, lose market share or go bankrupt. But it is Microsoft&rsquo;s incredible efficiency and productiveness that allows it to undersell its competition yet still make large profits. Again, this represents not criminal behavior but real virtue.</p>
<p>Finally, Microsoft is accused of wielding &ldquo;monopoly power.&rdquo; This accusation as well is based on equating the voluntary with the coerced.</p>
<p>It is true that Microsoft has a dominant market position in some segments of the software industry and that some of its competitors have gone out of business. But this is because Microsoft has out-competed them: it is more innovative, more efficient, a better marketer, and/or a better employer than other software firms. Microsoft, in other words, has earned its dominant position.</p>
<p>And it continues to earn it: it faces constant competition, even if there are no actual competitors presently in its market. For whenever another entrepreneur can figure out a way to produce similar software at a cheaper price or better software at an attractive price (or some undreamt of product that makes current software obsolete), he is free to enter Microsoft&rsquo;s market. And if he has a sound business plan, he will be able to raise the necessary capital even if he himself has none: there are thousands of venture capitalists looking for the next Bill Gates. Microsoft&rsquo;s dominant position in the software industry, in other words, must be earned anew each day.</p>
<p>So once again, Microsoft is being attacked for its success: in reality it has no monopoly power — just brilliant management.</p>
<p>The only monopolies that can in fact exist are government-created ones. Only a government can prevent someone from entering a market and thus eliminate competition. The Post Office, for instance, is a monopoly. There is little doubt that Federal Express could provide better service, more cheaply, and still earn a profit. But the government forcibly prevents it from entering the Post Office&rsquo;s market. The Post Office&rsquo;s dominant market position is unearned: it offers sub-par service but because of government coercion faces no competition. Microsoft&rsquo;s dominant market position, by contrast, is earned: it faces constant competition, which it continues to win. Again, do not equate the voluntary with the coerced.</p>
<p>Microsoft is the epitome of American business success: it produces enormous wealth through intelligence and hard work. Imagine the wealth that would exist — for every firm, for every employee, for every shareholder, for every customer — if all companies in America were run by a Bill Gates. The fact that they are not should not lead us to destroy Bill Gates&rsquo;s creation but, all the more, to admire and champion it.</p>
<p>Why should Microsoft&rsquo;s punishment be as lenient as possible (assuming the case cannot be thrown out at this stage in the proceedings)? Because antitrust laws are arbitrary laws that penalize virtue for being virtue — as the specific accusations against Microsoft clearly reveal.</p>
<p>Dr. <a href="https://ari.aynrand.org/experts/onkar-ghate/"target="_blank" rel="noopener">Onkar Ghate</a>, PhD in philosophy, is a senior researcher at the Ayn Rand Institute in Irvine, California. The Institute promotes Objectivism, the philosophy of Ayn Rand, author of <a href="http://web.archive.org/web/20070202073236/http://www.aynrandbookstore.com:80/prodinfo.asp?number=AR91B"target="_blank" rel="noopener">Atlas Shrugged</a> and <a href="http://web.archive.org/web/20070202073147/http://www.aynrandbookstore.com:80/prodinfo.asp?number=AR89B"target="_blank" rel="noopener">The Fountainhead</a>.</p>
<h2>Disclaimer<span class="hx:absolute hx:-mt-20" id="disclaimer"></span>
    <a href="#disclaimer" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To be clear, the intention isn&rsquo;t to say Microsoft is innocent of everything. That&rsquo;s what the judicial system is for, and any company that feels illegally harmed has every right to sue, as has happened countless times. See <a href="http://en.wikipedia.org/wiki/Microsoft_litigation"target="_blank" rel="noopener">this list</a> of lawsuits.</p>
<p>And this holds for any company. One of a government&rsquo;s functions is to make sure contracts are honored.</p>
<p>What interests me in the episode above is the <a href="http://en.wikipedia.org/wiki/Sherman_Antitrust_Act"target="_blank" rel="noopener">Sherman Antitrust Act</a>, which in essence gives the government carte blanche to sue any company for any reason. This wasn&rsquo;t the only lawsuit against Microsoft, but it was one of the most widely publicized. Antitrust law itself is an evil, like any regulation that hands out privileges nobody could earn in the market.</p>
<p>And for anyone who wants to dig deeper, I recommend reading the full <a href="https://www.justice.gov/sites/default/files/atr/legacy/2006/04/11/msjudge.pdf"target="_blank" rel="noopener">Findings of Fact</a> on the case in the U.S. justice archive. To understand why antitrust law is a serious problem, start with <a href="http://wiki.objectivismonline.net/Antitrust"target="_blank" rel="noopener">this article</a>, but mostly the book <a href="http://en.wikipedia.org/wiki/Capitalism:_The_Unknown_Ideal"target="_blank" rel="noopener">Capitalism: The Unknown Ideal</a>.</p>
]]></content:encoded><category>law-and-regulation</category><category>microsoft</category><category>philosophy</category><category>off-topic</category></item><item><title>[Off-Topic] The Damn Regulation Law Is Back!</title><link>https://akitaonrails.github.io/en/2009/08/22/off-topic-maldita-lei-de-regulamenta-o-est-de-volta/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2009/08/22/off-topic-maldita-lei-de-regulamenta-o-est-de-volta/</guid><pubDate>Sat, 22 Aug 2009 17:01:00 -0300</pubDate><description>&lt;p&gt;&lt;strong&gt;Update 09/08/2009:&lt;/strong&gt; A brief mention in a &lt;a href="http://web.archive.org/web/20090919011125/http://br.noticias.yahoo.com:80/s/02092009/25/tecnologia-projeto-quer-exigir-diploma-profissao.html"target="_blank" rel="noopener"&gt;Yahoo! News&lt;/a&gt; story on this subject.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 08/26/2009:&lt;/strong&gt; Excellent historical analysis of a good legislative proposal that had already been rejected once, via &lt;a href="http://web.archive.org/web/20090828015946/http://www.gizmodo.com.br:80/conteudo/made-brazil-regulamentacao-de-analistas-de-sistemas-ja-foi-discutida-pelo-congresso-e-o-qu-0"target="_blank" rel="noopener"&gt;Gizmodo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: 08/25/2009:&lt;/strong&gt; I just added a long argumentative text about the Law in this article.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s in the &lt;a href="http://web.archive.org/web/20090826104306/http://www.tiinside.com.br:80/News.aspx?ID=143390&amp;amp;C=265"target="_blank" rel="noopener"&gt;news&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The proposal that regulates the practice of the systems analyst profession was approved this Wednesday, the 19th, by the Senate&amp;rsquo;s Committee on Constitution, Justice and Citizenship (CCJ). The bill (&lt;a href="http://www.senado.gov.br/sf/atividade/Materia/Detalhes.asp?p_cod_mate=82918"target="_blank" rel="noopener"&gt;PLS 607/07&lt;/a&gt;), authored by Senator &lt;a href="http://www1.folha.uol.com.br/folha/brasil/ult96u582101.shtml"title="PR-RO"target="_blank" rel="noopener"&gt;Expedito Júnior&lt;/a&gt;, now goes to the Committee on Social Affairs (CAS) for a terminal decision.&lt;/p&gt;</description><content:encoded><![CDATA[<p><strong>Update 09/08/2009:</strong> A brief mention in a <a href="http://web.archive.org/web/20090919011125/http://br.noticias.yahoo.com:80/s/02092009/25/tecnologia-projeto-quer-exigir-diploma-profissao.html"target="_blank" rel="noopener">Yahoo! News</a> story on this subject.</p>
<p><strong>Update 08/26/2009:</strong> Excellent historical analysis of a good legislative proposal that had already been rejected once, via <a href="http://web.archive.org/web/20090828015946/http://www.gizmodo.com.br:80/conteudo/made-brazil-regulamentacao-de-analistas-de-sistemas-ja-foi-discutida-pelo-congresso-e-o-qu-0"target="_blank" rel="noopener">Gizmodo</a></p>
<p><strong>Update: 08/25/2009:</strong> I just added a long argumentative text about the Law in this article.</p>
<p>It&rsquo;s in the <a href="http://web.archive.org/web/20090826104306/http://www.tiinside.com.br:80/News.aspx?ID=143390&amp;C=265"target="_blank" rel="noopener">news</a>:</p>
<blockquote>
  <p>The proposal that regulates the practice of the systems analyst profession was approved this Wednesday, the 19th, by the Senate&rsquo;s Committee on Constitution, Justice and Citizenship (CCJ). The bill (<a href="http://www.senado.gov.br/sf/atividade/Materia/Detalhes.asp?p_cod_mate=82918"target="_blank" rel="noopener">PLS 607/07</a>), authored by Senator <a href="http://www1.folha.uol.com.br/folha/brasil/ult96u582101.shtml"title="PR-RO"target="_blank" rel="noopener">Expedito Júnior</a>, now goes to the Committee on Social Affairs (CAS) for a terminal decision.</p>
<p>Under the substitute bill previously approved by the Committee on Science, Technology, Innovation, Communication and Information Technology (CCT) and adopted by the CCJ rapporteur, Senator <a href="http://g1.globo.com/Noticias/Politica/0,,MUL67360-5601,00.html"title="PSDB-GO"target="_blank" rel="noopener">Marconi Perillo</a>, only professionals with a university degree in systems analysis, computer science or data processing will be allowed to practice the systems analyst profession.</p>

</blockquote>
<p>I recommend everyone reread <a href="/en/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema">my article from last year</a> on this topic. This law is a complete farce, created by this <a href="http://www1.folha.uol.com.br/folha/brasil/ult96u582101.shtml"title="PR-RO"target="_blank" rel="noopener">Expedito Júnior</a> and embraced by this <a href="http://g1.globo.com/Noticias/Politica/0,,MUL67360-5601,00.html"title="PSDB-GO"target="_blank" rel="noopener">Marconi Perillo</a>.</p>
<h2>The Text of the Proposed Law<span class="hx:absolute hx:-mt-20" id="the-text-of-the-proposed-law"></span>
    <a href="#the-text-of-the-proposed-law" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>I decided to go through the text more carefully. The original proposal was the failed Bill No. 1,947 of 2003 by Eduardo Paes, thankfully shelved. Not satisfied, Expedito Júnior introduced the <strong>disastrous</strong> Bill No. 607 of 2007. I recommend reading the original version first, available as a PDF <a href="http://www.senado.gov.br/sf/atividade/Materia/getTexto.asp?t=11569&amp;c=RTF"target="_blank" rel="noopener">at this link</a>.</p>
<p>The first review was by the Committee on Science, Technology, Innovation, Communication and Information Technology, published on <strong>03/05/2008</strong>. It isn&rsquo;t entirely bad, but it has several flawed points of interpretation, and I&rsquo;d rather not decide whether that comes down to bad faith or laziness. The report opens by citing the SBC, the Brazilian Computing Society:</p>
<blockquote>
  <p>According to information disclosed by the SBC itself, what matters in regulating the profession is the observance of certain principles such as the free exercise of activities related to the information technology field. Thus, no professional council should create any obstacle or restriction to the above principle, and the field should be self-regulated.</p>

</blockquote>
<p>That&rsquo;s correct, and I think everyone in the field agrees with it. But the very next paragraph gets the interpretation wrong, obviously written by someone from outside the field:</p>
<blockquote>
  <p>In this case, that is not the issue, because art. 2 establishes that professionals &ldquo;may&rdquo; practice the profession of Systems Analyst, Computer Science or Data Processing, which greatly expands the possibilities for professional classification, covering practically all university courses in the information technology field.</p>

</blockquote>
<p>To be clear, art. 2 states the following:</p>
<blockquote>
  <p>Art. 2. The following may practice the profession of Systems Analyst in the country:</p>
<p>I – holders of a university degree in Systems Analysis, Computer Science or Data Processing, issued by official or accredited schools;</p>
<p>II – graduates of foreign schools recognized by the laws of their country who have had their diplomas revalidated in accordance with current legislation;</p>
<p>III – those who, at the time this Law takes effect, can demonstrate that they have practiced the role of Systems Analyst for a minimum of five years</p>

</blockquote>
<p>In other words, the interpretation leaves out self-taught individuals and students who chose not to get a formal degree for various reasons (see my article <a href="/en/2009/04/17/off-topic-devo-fazer-faculdade">Should I Get a Degree?</a>). The article excludes a good chunk of the most qualified professionals.</p>
<p>Even item III doesn&rsquo;t spell out what &ldquo;demonstrated five or more years of practice&rdquo; means. Does an employment record count? Does an invoice for IT services billed to a client count? What are the criteria?</p>
<p>The analysis continues with the assertion:</p>
<blockquote>
  <p>Art. 4 of the bill, in establishing what the activities and attributions are, does not restrict the activities of other professionals. Nor is any exclusivity established or is it stated that any particular activity or attribution will be reserved for holders of degrees in the aforementioned professions.</p>

</blockquote>
<p>Article 4 defines activities such as definition, management and coordination of software projects, explicitly including &ldquo;coding.&rdquo; That is, everything project managers, architects, programmers and the like do. And the same article gives us:</p>
<blockquote>
  <p>Sole paragraph. Technical responsibility for projects and systems for data processing, information technology and automation, as well as the issuance of technical opinions, reports or assessments, are <strong>exclusive</strong> to the Systems Analyst.</p>

</blockquote>
<p>I may be misreading it, but that paragraph looks clearly exclusive to me and, once again, leaves out self-taught programmers. The analysis then falls back on some <a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"target="_blank" rel="noopener">FUD</a>:</p>
<blockquote>
  <p>One cannot imagine that the data processing center of a public body, financial system institutions, or even private companies could do without the technical accountability of a professional character, given the interface and synergy created with citizens, clients and consumers.</p>

</blockquote>
<p>This is the wrong justification behind most arguments in favor of the law: that a formally trained professional is always far superior to a more experienced self-taught one. It&rsquo;s the entire basis of my argument in <a href="/en/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema">my article from last year</a>. I recommend reading it carefully.</p>
<p>To be fair to the analysis, it did at least suggest cutting the most serious parts:</p>
<ul>
<li>suppression of articles 7 through 33, which create the Federal Council and Regional Councils of Informatics;</li>
<li>exclusion, in item III of art. 2, of the clause &ldquo;… and who must register with the Regional Councils of Informatics&rdquo;;</li>
<li>exclusion, in item II of art. 3, of the clause &ldquo;… and who must register with the Regional Councils of Informatics&rdquo;;</li>
</ul>
<p>Which brings us to the latest mess: the approval in the Committee on Constitution, Justice and Citizenship, published on 08/19/2009. The proposal passed with all the modifications suggested by the Committee on Science and Technology listed above.</p>
<p>Fortunately, the suppression of articles 7 through 33 was maintained:</p>
<blockquote>
  <p>… there is <strong>unconstitutionality</strong> of a formal nature in the provisions dealing with the supervision and exercise of the profession, as well as the registration of professionals and the payment of fees … These articles are therefore tainted by unconstitutionality, since parliamentary initiative to create public bodies and assign them functions is prohibited, by virtue of the aforementioned provision of the Constitution …</p>

</blockquote>
<p>In plain terms, this <strong>removes</strong> the chapters that created the oversight bodies: the Federal Council of Informatics, the Regional Councils, professional registration and oversight, annual fees, emoluments and rates and, finally, infractions and penalties. Those would have been the most harmful parts if implemented. I really hope they stay out.</p>
<h2>The Seventh Element<span class="hx:absolute hx:-mt-20" id="the-seventh-element"></span>
    <a href="#the-seventh-element" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Since 08/20/2009 the substitute bill has been awaiting a rapporteur at the Committee on Social Affairs, where it can be approved or shelved. The way things are going, it looks like it&rsquo;ll pass without much trouble, which is <strong>terrible</strong>!</p>
<p>My arguments in the article <a href="http://www.akitaonrails.com/en/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema"target="_blank" rel="noopener">Let&rsquo;s Stop the Regulation</a> from last year still hold. Even after giving up the articles that created the whole bureaucratic machine and the penalties, it&rsquo;s still a terrible law for the market. Worse: art. 7 of the current substitute bill makes me <strong>very</strong> uneasy:</p>
<blockquote>
  <p><strong>Art. 7.</strong> The Executive Branch will be responsible for supervising and overseeing the practice of the Systems Analyst profession, and for the registration of IT professionals.</p>

</blockquote>
<p>This single article replaces articles 7 through 33 without defining anything, leaving it open and arbitrary what the Executive will do about supervising and registering professionals. Deep down, everything that was removed is still implicitly valid.</p>
<p>This article didn&rsquo;t exist in the 2008 version from the Committee on Science and Technology. It was the only thing added in the version approved by the CCJ on 08/19/2009 and is, in my opinion, what made the text regress the most. The report reads:</p>
<blockquote>
  <p>On the other hand, to give viability to the objective of this initiative, we also wish to add an article aimed at delegating to the Executive Branch the function of deliberating on the matters dealt with in the articles suppressed herein. Thus, we accept the Substitute offered by the Committee on Science and Technology, with the addition of a provision.</p>

</blockquote>
<h2>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>If the Committee on Social Affairs approves this law, it will be an enormous setback for the national IT market. It has the potential to be even more destructive than the market-reservation laws for IT from the 1980s, which left us almost a decade behind the First World in modernization.</p>
<p>As the SBC itself pointed out, this market should be free and self-regulated, which it already is in practice. There&rsquo;s no need whatsoever for regulation of this kind.</p>
<p>I&rsquo;ve said before that we can discuss a more realistic text. But this particular one is far too harmful to be considered. It would need to be rewritten from scratch by experienced professionals active in the field, together with the entire new generation of developers.</p>
<p>I know of no parallel to this law anywhere in the world (if anyone does, please comment here). It restricts the activity by starting from the <strong>wrong premise</strong> that formally trained professionals are always better than self-taught ones, which, from personal experience, is very false. Some of the best people I&rsquo;ve worked with over these past 15 years had no degree.</p>
<p>Most people in favor fall into two groups: those who have read the bill and its proceedings, and those who haven&rsquo;t. Those who haven&rsquo;t simply don&rsquo;t know what they&rsquo;re talking about.</p>
<p>Those who have read it and still agree are exactly the bad professionals who can&rsquo;t compete with self-taught people and want to lean only on the force of &ldquo;credentials&rdquo; as the criterion. This market self-regulates as bad professionals get naturally pushed into lower-value activities.</p>
<p>There&rsquo;s also a confusion between the careers of &ldquo;coder&rdquo; and &ldquo;developer.&rdquo; The coder is a commodity, close to a typist, who just translates diagrams and requirements into code with no attention to quality. The developer is a born architect, with total control over their own creation. One is a commodity; the other is the &ldquo;cream of the crop,&rdquo; rising in the market through pure meritocracy and natural selection via networking. With some exceptions, I&rsquo;d say it&rsquo;s a reasonable implementation of <a href="http://en.wikipedia.org/wiki/Laissez-faire"target="_blank" rel="noopener">laissez-faire</a>.</p>
<p>Our field doesn&rsquo;t even have a consolidated working methodology. We&rsquo;re still moving from the Taylorist-Fordist Classical Software Engineering based on Waterfall to the post-Toyotist Agile movement of Lean, Scrum, XP and others. Our tools today and the ones from ten years ago are quite different, and the internet completely changed the course of the profession.</p>
<p>These changes are too sudden to try to regulate. In a scenario like this, the free market is the best way to deal with the problem.</p>
<p>For all of this, I remain vehemently opposed to this proposal and hope there are sensible people on the Committee on Social Affairs, with the good sense to ask society and us, the affected category, before shelving this text once and for all.</p>
]]></content:encoded><category>law-and-regulation</category><category>career</category><category>tech-market</category><category>off-topic</category></item><item><title>Off Topic: Let's All Stop the Regulation of the Systems Analyst Profession</title><link>https://akitaonrails.github.io/en/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2008/04/19/off-topic-vamos-todos-impedir-a-regulamenta-o-da-profiss-o-de-analista-de-sistema/</guid><pubDate>Sat, 19 Apr 2008 20:22:00 -0300</pubDate><description>&lt;p&gt;&lt;strong&gt;Update 25/08/2009:&lt;/strong&gt; The law &lt;a href="https://akitaonrails.github.io/en/2009/08/22/off-topic-maldita-lei-de-regulamenta-o-est-de-volta"&gt;has already been approved&lt;/a&gt; by the CCJ and is heading to the CAS. This is going too far!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 21/04/2008:&lt;/strong&gt; This post by &lt;a href="http://web.archive.org/web/20090113184842/http://www.michelazzo.com.br:80/node/393"target="_blank" rel="noopener"&gt;Paulino Michelazzo&lt;/a&gt; is very good. Recommended.&lt;/p&gt;
&lt;p&gt;Rodrigo Kumpera &lt;a href="http://web.archive.org/web/20130117165747/http://www.kumpera.net/blog/index.php/2008/04/16/vamos-todos-impedir-a-regulamentacao-da-profissao-de-analista-de-sistema/"target="_blank" rel="noopener"&gt;said it all&lt;/a&gt;: this &amp;ldquo;systems analyst&amp;rdquo; regulation bill is a complete waste of time and a monumental piece of nonsense.&lt;/p&gt;
&lt;p&gt;Dear &amp;ldquo;politicians&amp;rdquo;: since you&amp;rsquo;re already burning our taxes on senseless bills, how about regulating the profession of politician? From what we can see, your profession can harm far more people, far more easily, than an unlicensed doctor performing heart surgery.&lt;/p&gt;</description><content:encoded><![CDATA[<p><strong>Update 25/08/2009:</strong> The law <a href="/en/2009/08/22/off-topic-maldita-lei-de-regulamenta-o-est-de-volta">has already been approved</a> by the CCJ and is heading to the CAS. This is going too far!</p>
<p><strong>Update 21/04/2008:</strong> This post by <a href="http://web.archive.org/web/20090113184842/http://www.michelazzo.com.br:80/node/393"target="_blank" rel="noopener">Paulino Michelazzo</a> is very good. Recommended.</p>
<p>Rodrigo Kumpera <a href="http://web.archive.org/web/20130117165747/http://www.kumpera.net/blog/index.php/2008/04/16/vamos-todos-impedir-a-regulamentacao-da-profissao-de-analista-de-sistema/"target="_blank" rel="noopener">said it all</a>: this &ldquo;systems analyst&rdquo; regulation bill is a complete waste of time and a monumental piece of nonsense.</p>
<p>Dear &ldquo;politicians&rdquo;: since you&rsquo;re already burning our taxes on senseless bills, how about regulating the profession of politician? From what we can see, your profession can harm far more people, far more easily, than an unlicensed doctor performing heart surgery.</p>
<p>Let&rsquo;s all chip in: blog about it, spread the word, and above all send junk mail to their homes (the addresses are at the link above). I have a few kilos of spare junk sitting here waiting for a destination.</p>
<p>It has to be fast. Time is running out.</p>
<p>Note: if you want to get properly outraged, read the <a href="http://web.archive.org/web/20100612074543/http://www.senado.gov.br:80/sf/atividade/Materia/getHTML.asp?t=11569"target="_blank" rel="noopener">full text</a> of this so-called law. It would be funny if it weren&rsquo;t tragic.</p>
<p>The short version: the bill creates thousands of sinecures (regional councils, inspectors, blah blah blah), charges us annual fees to feed those sinecures, sets us back 30 years, and stalls the country&rsquo;s technological development. All that by blocking qualified professionals and clearing the way for useless diploma holders. The point here isn&rsquo;t &ldquo;whether degrees matter&rdquo;: programmers have nothing in common with doctors or engineers.</p>
<p><strong>Update 20/04/2008:</strong> Since the comments have been so good, I decided to spell out exactly why I, personally, want to box the ears of the genius who came up with this &ldquo;law&rdquo;.</p>
<p>In Brazil, whenever a new law shows up, the first question should be: <strong>who does it benefit?</strong> And no, the answer isn&rsquo;t &ldquo;the population&rdquo;. It should be, but here it usually isn&rsquo;t. That politicians and lobbyists win is old news; the real question is who else cashes in.</p>
<p>On top of that, every law&rsquo;s justification is fallacious. Politicians are masters of argumentation; that&rsquo;s why they&rsquo;re politicians. Let&rsquo;s go.</p>
<h3>The Fallacy<span class="hx:absolute hx:-mt-20" id="the-fallacy"></span>
    <a href="#the-fallacy" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>First of all, the argument everyone loves most:</p>
<p><em>&ldquo;Civil Engineers, Cardiologists, Criminal Lawyers, Accountants, all of them need degrees, all of them need a license to work, all of them pay regulatory councils, in short, all of them are &ldquo;regulated&rdquo;. Why do programmers, analysts, and computer scientists think they&rsquo;re more &ldquo;special&rdquo; and don&rsquo;t need any of this?&rdquo;</em></p>
<p>That&rsquo;s the main argument and the key to the fallacy. The premise to break is this one: <em>&ldquo;software developer belongs in the same category as civil engineer, doctor, or lawyer&rdquo;</em>.</p>
<p>If an engineer builds a bad structure, it collapses. If it collapses, people die. Rare, but it happens. If a doctor slips, the patient dies. If a lawyer slips, an innocent person spends 30 years in prison. If an accountant slips, the client takes a serious financial hit and ends up in trouble with the tax authorities.</p>
<p>The bad comparison goes like this: if an &ldquo;inexperienced&rdquo; programmer lets a <em>bug</em> slip through, a computer-controlled airplane could crash. An elevator could plummet. A medical device could kill a patient. Therefore an ill-prepared programmer is as dangerous as an ill-prepared doctor, except today nobody supervises or punishes him.</p>
<h3>Going Back in Time<span class="hx:absolute hx:-mt-20" id="going-back-in-time"></span>
    <a href="#going-back-in-time" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Civil engineering goes back to before the pharaohs and the pyramids. Medicine goes back to tribal healers. Lawyering and the arts of argumentation have been around as long as people have.</p>
<p>All these professions rest on a body of knowledge that is complex, complete, and uniform. That doesn&rsquo;t mean they stopped evolving. But in them, the majority just executes the techniques they learned, and a minority has the resources to research and discover new ones.</p>
<p>Computing is the opposite. Our field isn&rsquo;t even a century old, and the market itself started less than 60 years ago. Every evolutionary leap here equals a century anywhere else.</p>
<p>The trouble is that our field mixes mathematics with engineering techniques. So laypeople assume it&rsquo;s all the same thing: well-defined techniques with well-defined results. It isn&rsquo;t. I wouldn&rsquo;t go as far as <strong>Pete McBreen</strong> in <a href="http://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862"target="_blank" rel="noopener">Software Craftsmanship</a>, but most people start from the wrong premises when they evaluate software.</p>
<p>Our field isn&rsquo;t stable like the others because it evolves at full speed, and every step changes everything. A single new algorithm can change what we do. One Google, one Linux, redefines how we think about and build software.</p>
<p>A little over a decade ago, the internet wasn&rsquo;t even mainstream. Languages and paradigms change all the time. A few years ago, Agile methodologies weren&rsquo;t taken seriously at all. What you learned in college 10 years ago has already changed plenty, and 10 years from now it will be different again.</p>
<h3>Breaking the Premise<span class="hx:absolute hx:-mt-20" id="breaking-the-premise"></span>
    <a href="#breaking-the-premise" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Software developers cannot and should not be compared to doctors or engineers. We&rsquo;re closer to craft, to art, to experimentation.</p>
<p>The same programmer changes how he does the same thing from project to project, the way an artist changes something in a sculpture. Technique refines itself through experience and through rubbing shoulders with other artists.</p>
<p>We combine different tools and processes, and every combination produces a different result. There are no fixed criteria defining what &ldquo;good software&rdquo; or &ldquo;bad software&rdquo; is.</p>
<p>Something else: 100% bug-free software doesn&rsquo;t exist. Bugs are inherent to the practice. You can control them, never eliminate them. No language, platform, or set of techniques guarantees 100% certainty.</p>
<p>What we learned was to live with that: test suites, for instance. Even that doesn&rsquo;t guarantee 100%; it only covers the most obvious bugs. Want better odds? Write more tests. But past a certain point, someone still has to guarantee the tests themselves have no bugs (!)</p>
<p>Some people think you just apply CMMi, PMI, or any of those fads to &ldquo;guarantee&rdquo; &ldquo;good software&rdquo; at the end of the process. Wrong again. Neither XP nor Scrum is the definitive answer, though both are a big step forward. The process that guarantees 100% certainty doesn&rsquo;t exist yet.</p>
<h3>The Diploma Fallacy<span class="hx:absolute hx:-mt-20" id="the-diploma-fallacy"></span>
    <a href="#the-diploma-fallacy" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Is a credentialed musician better than Villa-Lobos? A credentialed painter better than Tarsila do Amaral? A trained writer better than Machado de Assis? Is Washington Olivetto a great ad man because he graduated? Small detail: he never finished the advertising program at FAAP.</p>
<p>What does that mean? That I&rsquo;m against higher education? <strong>Absolutely not.</strong></p>
<p>If Linus hadn&rsquo;t gone through the University of Helsinki, he might never have created Linux. If Larry Page and Sergey Brin hadn&rsquo;t met in Stanford&rsquo;s PhD program, Google might never have existed. And the list goes on: James Gosling through Carnegie Mellon, Bill Joy through Berkeley, Bjarne Stroustrup through Cambridge, Dennis Ritchie through Harvard, Yukihiro Matsumoto through the University of Tsukuba.</p>
<p>Many of computing&rsquo;s great names are graduates. Does that mean everyone else is doomed? No. The problem here is the <a href="http://en.wikipedia.org/wiki/Informal_fallacy"target="_blank" rel="noopener">Informal Fallacy</a>:</p>
<p><em>&ldquo;Many great computer programmers have degrees. Therefore, the key to becoming a great programmer is getting a degree.&rdquo;</em></p>
<p>Given the two scenarios above, artists and programmers, I&rsquo;d put it this way:</p>
<p><em>&ldquo;Great programmers are not formed. Great programmers <strong>form themselves</strong>.&rdquo;</em></p>
<p>Those great names finished degrees, graduate programs, and doctorates because they saw <strong>value</strong> in that education and went after it. I guarantee each of their classes had dozens of other graduates, many there out of sheer inertia. Only one of them has a Wikipedia page today.</p>
<p>A great artist travels to France for knowledge and inspiration on his own initiative, not because it&rsquo;s homework. A great programmer reads Donald Knuth before bed because he grasps the value of algorithms, not because he needs next semester&rsquo;s credits.</p>
<h3>Brazilian Problems<span class="hx:absolute hx:-mt-20" id="brazilian-problems"></span>
    <a href="#brazilian-problems" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The problem here is Brazil, as usual. And no, that&rsquo;s not some &ldquo;neoliberal right-wing&rdquo; excuse.</p>
<p>The overwhelming majority of our universities, at least in computing, don&rsquo;t come close to American ones. Sure, we have USP, Unicamp, a few federal schools. I&rsquo;m not talking about the exceptions.</p>
<p>There&rsquo;s almost no incentive for research, public or private. We have no Bell Labs, no Microsoft Research, no Google, none of the hundreds of companies that invest heavily in <strong>Research &amp; Development</strong>. Brazilian companies don&rsquo;t want to invest; they want to bill. OK, I&rsquo;m generalizing; the exceptions don&rsquo;t count in this argument.</p>
<p>Our tax and fiscal system is a <strong>national disgrace</strong>. It bleeds us every day and eats away at the country the way cancer eats away at a terminal patient. Protectionist laws that don&rsquo;t work, taxes whose only purpose is to fill more public sinecures.</p>
<p>The original scientific research published by Brazilians is a hair next to the library of innovations coming out of the best American, European, and Asian universities. The technologies we use every day didn&rsquo;t come from Brazil: we just license, import, and apply them. Even the rare exceptions of great Brazilian achievements get used more abroad than at home. The classic example: the <a href="http://en.wikipedia.org/wiki/Lua_%28programming_language%29"target="_blank" rel="noopener">Lua</a> programming language, which ironically has a more complete Wikipedia page in English than in Portuguese.</p>
<p>If most of our colleges only teach what gets discovered abroad, what&rsquo;s my incentive to graduate here? Anyone with a research vocation has to leave, like many of our best scientists do. In Brazil, scientists starve.</p>
<p>And if the point is to learn, years late, what&rsquo;s already applied abroad, why waste the time? Luckily we have the internet now. Algorithms and data structures? Statistics and probability? Artificial intelligence, finite automata? Compilers? Non-relational databases? Modern operating systems? All of it is covered by books and the web. College to learn the principles behind modern languages? No, here college teaches Java. Sorry, that&rsquo;s not nearly enough.</p>
<p>I spent two years at USP and simply lost the motivation to stay. I learned all the programming theory on my own. To find out the Tanenbaum book exists, I didn&rsquo;t need to wait until senior year. To read Wirth&rsquo;s book, I didn&rsquo;t need to enroll at all. Where was the innovative research that would have kept me there? The great names publishing new work? The motivation to stick around for four years or more?</p>
<p>And after graduation? Is there any real incentive for grad school, a doctorate, my own research? In the private sector, would any company hire me to do research? And if I opened my own company, could I keep it alive?</p>
<p>Being an entrepreneur in Brazil is a Herculean task. You need to be Achilles to avoid getting crushed by the elephant of the government machine. Opening a company here practically makes you a criminal. Brazil rewards the &ldquo;jeitinho&rdquo; and the quick payoff, because long-term here is close to a synonym for losses. That&rsquo;s why an iPhone would never come out of a Brazilian company, and the next quantum processor will never come out of a Brazilian institution. Importing technology is cheaper, easier, and more profitable than creating it, even with protectionist tariffs.</p>
<p>In short: if the only incentive is to collect a piece of paper after four years because some law demands it, keep my urine test. It&rsquo;s cheaper.</p>
<h3>&ldquo;Jeitinho,&rdquo; a National Pride<span class="hx:absolute hx:-mt-20" id="jeitinho-a-national-pride"></span>
    <a href="#jeitinho-a-national-pride" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Bad universities, bad companies, unmotivated students, no new technology. In that downward spiral, the &ldquo;regulatory law&rdquo; makes even less sense.</p>
<p>First of all, a law that regulates what can&rsquo;t be regulated serves one purpose: raising more funds for the brothels of Brasília.</p>
<p>Our universities, as a whole, are very bad. The way we popularized &ldquo;generic medicines&rdquo;, we created &ldquo;generic universities&rdquo;. Every day another Uni* pops up with two-year, MEC-approved programs churning out &ldquo;professionals&rdquo;. They exist precisely for the reasons I listed: once a degree became mandatory bureaucracy, Brazilians invented a way around it. If companies want paper, paper they shall have, costing less time and less money.</p>
<p>Let&rsquo;s define what such an agency would regulate. &ldquo;Certified&rdquo; software would be whatever is made by diploma holders, under an ISO-whatever process, with the stamp of an &ldquo;authorized inspector&rdquo;, written in Java and running on Windows servers. Piece of cake.</p>
<p>It&rsquo;s public and notorious that most software service providers, a.k.a. &ldquo;consultancies&rdquo;, are a byproduct of these conditions. A byproduct of the &ldquo;jeitinho&rdquo;. None of them has any interest in quality, research, or training. If they run &ldquo;education centers&rdquo; to certify employees, it&rsquo;s solely and exclusively because government bids demand the paperwork.</p>
<p>They&rsquo;re the ones who make a developer&rsquo;s life harder. The government has no competence to run software projects, every project costs an order of magnitude more, and the easy conclusion is to blame the consultancies. Guilty they are, but here the spell backfires on the sorcerer: the government itself created these aberrations, with moves exactly like this &ldquo;regulatory law&rdquo;.</p>
<p>Creating regulatory bodies that have no clue what they&rsquo;re regulating is my very definition of a <strong>patronage job factory</strong>: one more corps of inspectors to <strong>bribe</strong>. It&rsquo;s one more cost every company will pay to keep operating, one more obstacle in the absurd daily bureaucracy. Overnight a new category of &ldquo;fixers&rdquo; is born to route around it, plus more work for lawyers.</p>
<h3>What Does This Law Do for &hellip;<span class="hx:absolute hx:-mt-20" id="what-does-this-law-do-for-"></span>
    <a href="#what-does-this-law-do-for-" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><ul>
<li>
<p>software company clients? Nothing. Whoever got bad service will keep getting it, only pricier. Whoever had good service may lose it, because many good professionals will be barred from working and the bad ones will take their seats.</p>
</li>
<li>
<p>software companies? Nothing. Hiring good people gets harder, bureaucracy costs go up, and early on there may even be price inflation for those already holding diplomas. One more cost to pass on to the client, one more pain in the neck.</p>
</li>
<li>
<p>micro-entrepreneurs investing in software? Nothing. Many lived off quality as their only edge and can&rsquo;t afford the costs (bribes). Either they adapt with great difficulty, or they shut down.</p>
</li>
<li>
<p>good programmers? Nothing. The graduates keep working, now paying a CREA-style fee that protects no rights and still gets in the way all the time. Creativity loses, because the work will have to follow arbitrary, illogical &ldquo;standards&rdquo;. Whoever can afford it leaves the country.</p>
</li>
<li>
<p>bad programmers? Everything. The graduates just got a protectionist law that benefits them with or without effort, plus more demand and free sinecures to hang on. The ones without degrees will rush to get them, and the generic Uni* shops win too, selling paper at gold prices and getting rich in the process.</p>
</li>
<li>
<p>the middlemen? Everything. From the Uni* schools packing their bottom-quality &ldquo;programs&rdquo; to the connected fixers offering under-the-table exits through government offices to whoever can pay. On top of that, a new figure appears: the &ldquo;licensed professional&rdquo; who signs off on projects built by better &ldquo;unlicensed&rdquo; ones. A signature will be worth money.</p>
</li>
<li>
<p>the politicians? Everything. More sinecures, more jobs for relatives and friends, more executive positions to trade. More lobbyist bribes. More money squeezed from honest professionals paying arbitrary fees like this one. Most of the population, which doesn&rsquo;t understand the subject, gets fooled again, and they get reelected. Absolutely nothing to lose.</p>
</li>
<li>
<p>the population at large? Zero. Brazilian tech was already moving slowly anyway; this is just one more brake. With luck we won&rsquo;t start rolling downhill again. Combined with anachronistic laws like the market reserve, with its insane tariffs on imported electronics, this bill pushes the Brazilian IT market even further behind the rest of the world.</p>
</li>
</ul>
<h3>Programmers<span class="hx:absolute hx:-mt-20" id="programmers"></span>
    <a href="#programmers" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><em>&ldquo;Good professionals are not formed. Good professionals form themselves. Good professionals, in Brazil, may tragically end up pushed into becoming terrible ones.&rdquo;</em></p>
<p><em>&ldquo;Terrible professionals are not formed. Terrible professionals will always be terrible. There&rsquo;s no hope for them.&rdquo;</em></p>
<p>I don&rsquo;t care whether someone has a degree or not. I care whether the professional is good.</p>
<ul>
<li>A good professional studies and researches on his own, since nobody encourages him.</li>
<li>A good professional is always concerned about the quality of his own work, even when nobody rewards it.</li>
<li>A good professional helps others, even when they stab him in the back.</li>
<li>A good professional spends his free time in communities, spreading information and trying to improve the field, even if it earns him a stress crisis.</li>
<li>A good professional, in Brazil, is a survivor: despite all this, he still wants to get better and learns to live in the jungle.</li>
<li>A good professional has to be practically Chuck Norris.</li>
<li>A good professional keeps fantasies of a .44 Magnum aimed at every politician&rsquo;s head.</li>
</ul>
<p>Terrible people are terrible professionals. Every politician, by definition, is a terrible professional.</p>
<ul>
<li>A terrible professional is dead weight. He goes to college for the diploma; learning is the last thing on his mind.</li>
<li>A terrible professional lists his 10 certifications at the top of his résumé.</li>
<li>A terrible professional laughs at laws like this one: they only improve his situation.</li>
<li>A terrible professional roots for the sector&rsquo;s decay, because in the short term he profits from it.</li>
<li>A terrible professional loves protectionist laws, because they always protect types like him. After all, the people writing those laws are terrible professionals themselves.</li>
<li>A terrible professional is like a cockroach: disgusting and hard to kill. Eventually, some terrible professionals become politicians.</li>
</ul>
<p>Some say I&rsquo;m just a pessimist. Am I?</p>
]]></content:encoded><category>law-and-regulation</category><category>career</category><category>off-topic</category></item></channel></rss>