<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Off-Topic | AkitaOnRails.com</title><link>https://akitaonrails.github.io/en/tags/off-topic/</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:52 +0000</lastBuildDate><atom:link href="https://akitaonrails.github.io/en/tags/off-topic/index.xml" rel="self" type="application/rss+xml"/><item><title>Codes of Conduct Are the Root of All Evil: Reclaiming Your Freedom</title><link>https://akitaonrails.github.io/en/2026/09/14/codes-of-conduct-root-of-all-evil/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/09/14/codes-of-conduct-root-of-all-evil/</guid><pubDate>Mon, 14 Sep 2026 17:00:00 -0300</pubDate><description>&lt;p&gt;Every major open source project today ships with a &lt;code&gt;CODE_OF_CONDUCT.md&lt;/code&gt; in the repository. The idea was sold that this existed to &amp;ldquo;protect minorities&amp;rdquo; and &amp;ldquo;create safe spaces.&amp;rdquo; In practice, what I watched happen over the last decade was something else: an instrument to cancel, persecute, and ban anyone who thought differently from whoever was in control. And the people leading those hunts, as a rule, were not the ones maintaining the projects&amp;rsquo; code.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Every major open source project today ships with a <code>CODE_OF_CONDUCT.md</code> in the repository. The idea was sold that this existed to &ldquo;protect minorities&rdquo; and &ldquo;create safe spaces.&rdquo; In practice, what I watched happen over the last decade was something else: an instrument to cancel, persecute, and ban anyone who thought differently from whoever was in control. And the people leading those hunts, as a rule, were not the ones maintaining the projects&rsquo; code.</p>
<p>This is my thesis, and I know it&rsquo;s unpopular. It took me ten years of patience to be able to write this piece. I stayed quiet watching this theater repeat itself year after year, waiting for the right moment to document everything I witnessed up close, and today I get to watch, with real pleasure, my own predictions come true one by one.</p>
<p>And before some smart aleck tries this one: I know boycotts, doxxing, and witch hunts exist with no CODE_OF_CONDUCT.md whatsoever, they always have. The title takes aim at what this file turned into: the instrument that took an internet-mob tactic and stamped it as official project policy, with a committee, a process, and a veneer of institutional legitimacy. A 500-line markdown file scares nobody by itself; what it became does.</p>
<blockquote>
  <p>Easy money was the fuel. The code of conduct was the weapon these people built to formalize what used to be just a shout in the street.</p>

</blockquote>
<p>One question is where the energy came from; another is the instrument it adopted to turn into permanent power inside the project. Keep that distinction in mind, because it holds up the whole piece. But before getting to the philosophy, let me tell the economic part, because without understanding the money you won&rsquo;t understand the rest.</p>
<h2>The bubble that funded all of this<span class="hx:absolute hx:-mt-20" id="the-bubble-that-funded-all-of-this"></span>
    <a href="#the-bubble-that-funded-all-of-this" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>From roughly 2012 to 2022, the tech industry lived through the biggest hiring bubble in history. Zero interest rates, infinite capital, and big tech companies growing like there was no tomorrow. We reached the surreal point of companies hiring engineers with no work for them to do. Keith Rabois, of the PayPal mafia, publicly accused Google and Meta of hiring thousands of people to do <a href="https://fortune.com/2023/03/10/google-over-hired-talent-do-nothing-fake-work-stop-working-rivals-former-paypal-boss-keith-rabois/"target="_blank" rel="noopener">&ldquo;fake work&rdquo;, out of vanity, and so they wouldn&rsquo;t go work for competitors</a>. A former Meta employee, laid off in the first 2022 wave, put it better: <a href="https://www.businesstoday.in/technology/news/story/paid-employees-to-do-fake-work-laid-off-worker-accuses-meta-of-not-having-enough-work-for-staff-373423-2023-03-15"target="_blank" rel="noopener">&ldquo;they were hoarding us like Pokémon cards&rdquo;</a>. The <a href="https://www.ibtimes.co.uk/how-get-paid-doing-nothing-inside-silicon-valleys-controversial-rest-vest-culture-1633884"target="_blank" rel="noopener">&ldquo;rest and vest&rdquo;</a> culture, collecting salary and stock options while doing almost nothing, had already been documented back in 2017.</p>
<p>It was this bubble that funded the &ldquo;coding is the profession of the future&rdquo; wave. Bootcamps <a href="https://www.coursereport.com/reports/2020-coding-bootcamp-market-size-study"target="_blank" rel="noopener">went from 2,178 graduates in 2013 to nearly 25,000 in 2020</a> in the US and Canada alone, growth of more than a thousand percent. <a href="https://www.theverge.com/2012/1/6/2688172/mayor-bloomberg-resolves-to-take-a-coding-class-in-2012"target="_blank" rel="noopener">Bloomberg resolved to learn to code as a New Year&rsquo;s resolution in 2012</a>. <a href="https://www.wired.com/2014/12/obama-becomes-first-president-write-computer-program/"target="_blank" rel="noopener">Obama wrote a line of code on TV in 2014</a>.</p>
<p>I told this story in more detail in a February 2020 video, back when the bubble was still inflating (<a href="/2020/02/19/akitando-72-rant-programacao-nao-e-facil/">transcript here</a>):</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/V7oUDL7E1g4"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>Tech influencer became a profession. Everyone was going to be a programmer.</p>
<p>Then the bubble popped. <a href="https://techcrunch.com/2024/05/01/a-comprehensive-archive-of-2023-tech-layoffs/"target="_blank" rel="noopener">2022: nearly 165,000 laid off. 2023: more than 262,000</a>, according to Layoffs.fyi. Meta cut <a href="https://about.fb.com/news/2022/11/mark-zuckerberg-layoff-message-to-employees/"target="_blank" rel="noopener">11,000 in November 2022</a> with Zuckerberg admitting <em>&ldquo;I got this wrong&rdquo;</em>, and another <a href="https://fortune.com/2023/03/14/meta-layoffs-10000-mark-zuckerberg-year-of-efficiency-hiring-freeze"target="_blank" rel="noopener">10,000 in the &ldquo;year of efficiency&rdquo;</a> in 2023. Amazon cut <a href="https://cbsaustin.com/news/nation-world/amazon-cuts-9000-jobs-now-at-least-27000-layoffs-in-2023"target="_blank" rel="noopener">27,000</a>. Google, <a href="https://blog.google/company-news/inside-google/message-ceo/january-update/"target="_blank" rel="noopener">12,000</a>, with Pichai admitting that <em>&ldquo;we hired for a different economic reality than the one we face today&rdquo;</em>. Stripe was the most honest: <a href="https://ca.finance.yahoo.com/news/digital-payments-firm-stripe-lay-134215274.html"target="_blank" rel="noopener">&ldquo;we overhired&rdquo;</a>.</p>
<p>I recorded that burst in the heat of the moment, in a November 2022 video (<a href="/2022/11/22/akitando-132-rant-a-bolha-de-startups-estourou/">transcript here</a>):</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/xxoVJQvEyEU"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>And because the timing writes its own joke, on November 30, 2022, right in the middle of the bloodbath, ChatGPT came out. <a href="https://www.reuters.com/technology/chatgpt-sets-record-fastest-growing-user-base-analyst-note-2023-02-01/"target="_blank" rel="noopener">A hundred million users in two months</a>, the fastest-growing app ever seen up to that point, according to a UBS estimate. The headlines turned into an ACM talk called <a href="https://learning.acm.org/techtalks/endporgramming"target="_blank" rel="noopener">&ldquo;Large Language Models and the End of Programming&rdquo;</a>, <a href="https://www.techspot.com/news/102020-nvidia-boss-jensen-huang-children-shouldnt-learn-code.html"target="_blank" rel="noopener">Jensen Huang saying no child needs to learn to code anymore</a>, <a href="https://www.cognition.ai/blog/introducing-devin"target="_blank" rel="noopener">Devin announcing itself as the first AI software engineer</a>, <a href="https://daringfireball.net/linked/2025/08/20/claim-chowder-amodei"target="_blank" rel="noopener">Dario Amodei promising AI would write 90% of code within three to six months</a>. Spoiler: it didn&rsquo;t.</p>
<p>Why does this story matter? Because it was exactly during this decade of easy money that open source got colonized. When there&rsquo;s money to spare and a shortage of real work, there&rsquo;s time and people to spare for playing politics inside projects. And that&rsquo;s what happened.</p>
<h2>The decade of the witch hunt<span class="hx:absolute hx:-mt-20" id="the-decade-of-the-witch-hunt"></span>
    <a href="#the-decade-of-the-witch-hunt" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The central artifact of this story is the <a href="https://ethicalsource.dev/blog/contributor-covenant-stewardship/"target="_blank" rel="noopener">Contributor Covenant</a>, created in 2014 by Coraline Ada Ehmke and adopted by thousands of projects, including practically every giant in the industry: CNCF, Apple, Google, Microsoft, Linux. The author herself, on the day Linux adopted her code, tweeted in no uncertain terms: <a href="https://itsfoss.com/linux-code-of-conduct/"target="_blank" rel="noopener"><em>&ldquo;Some people are saying that the Contributor Covenant is a political document, and they&rsquo;re right&rdquo;</em></a>. When the document&rsquo;s own author admits it&rsquo;s political, the debate over &ldquo;safe space&rdquo; is over before it starts.</p>
<p>The list of victims from this era is long, so let&rsquo;s get to the main ones.</p>
<p>First, it&rsquo;s worth noting how far this crowd&rsquo;s reach went. Coraline worked at GitHub between 2016 and 2017, until she was let go (her version of events is in the piece <a href="https://where.coraline.codes/writing/my-year-at-github/"target="_blank" rel="noopener">&ldquo;Antisocial Coding: My Year at GitHub&rdquo;</a>). And GitHub was the perfect target: it&rsquo;s where practically all the world&rsquo;s open source lived. It was in this era that the original founders left the picture. Tom Preston-Werner <a href="https://www.sj-r.com/story/news/2014/05/10/github-women-miss-founder-who/37382118007/"target="_blank" rel="noopener">resigned in 2014</a> amid the Julie Ann Horvath harassment scandal, even though the internal investigation concluded there was nothing illegal, only &ldquo;errors in judgment.&rdquo; Chris Wanstrath had already announced he&rsquo;d step down as CEO in 2017 and, after the sale to Microsoft in 2018, stayed on a few more years as a technical fellow before leaving for good. Today none of the original founders work there.</p>
<p>Her legacy outlived the firing. The Contributor Covenant became one of the <a href="https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/adding-a-code-of-conduct-to-your-project"target="_blank" rel="noopener">templates GitHub makes easy to adopt</a> when you create a repository&rsquo;s <code>CODE_OF_CONDUCT.md</code>. And in 2020 came the crown jewel: in the middle of the George Floyd protests, GitHub announced it was retiring the name <code>master</code>, and since <a href="https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-created-repositories-is-now-main/"target="_blank" rel="noopener">October 1, 2020 every new repository is born <code>main</code></a>.</p>
<p>The debate was stupid from the start. Git never had a <code>slave</code> branch. Petr Baudis, who named it in the original scripts, <a href="https://x.com/xpasky/status/1271477451756056577"target="_blank" rel="noopener">explained on X that <code>master</code> there came from &ldquo;master copy&rdquo;</a>, like the master recording of an album (Baudis himself later said he now prefers <code>main</code>; the etymology hasn&rsquo;t changed). Not even that detail held back the change: even the <a href="https://sfconservancy.org/news/2020/jun/23/gitbranchname/"target="_blank" rel="noopener">Software Freedom Conservancy publicly endorsed</a> the switch, and anyone with automation assuming <code>master</code> had to scramble to catch up. Nobody got any more protected because of this change, but it&rsquo;s there, in every programmer&rsquo;s workflow, every single day.</p>
<p><strong>Brendan Eich, 2014.</strong> The guy invented JavaScript, co-founded Mozilla, was CTO since 2005. He became CEO and lasted <a href="https://abcnews.go.com/Business/mozilla-ceo-resigns-calif-gay-marriage-ban-campaign/story?id=23181711"target="_blank" rel="noopener">eleven days in the job</a>. The crime: a thousand-dollar donation in 2008 to California&rsquo;s Proposition 8. Employees tweeted calling for his head, <a href="https://en.wikipedia.org/wiki/Brendan_Eich"target="_blank" rel="noopener">OkCupid blocked Firefox users with a protest message</a>, and he fell. Andrew Sullivan, gay and one of the first prominent advocates for same-sex marriage, wrote at the time <a href="https://dish.andrewsullivan.com/2014/04/03/the-hounding-of-brendan-eich/"target="_blank" rel="noopener">&ldquo;The Hounding of a Heretic&rdquo;</a>: when careers depend on an ideological purity test, the witch hunt has already won. And notice: there was no code of conduct involved here at all, it was pure boycott pressure. The method already existed before the document; the document only made it official.</p>
<p><strong>Larry Garfield, 2017.</strong> Twelve years contributing to Drupal. When it leaked that he took part in a BDSM subculture, on a private site, outside the project, Drupal&rsquo;s conduct committee investigated and concluded: <a href="https://www.drupal.org/association/blog/a-statement-from-the-executive-director"target="_blank" rel="noopener">no code of conduct violation</a>. Dries Buytaert went over the committee&rsquo;s own head and <a href="https://dri.es/living-our-values"target="_blank" rel="noopener">expelled him anyway</a>, because &ldquo;association with his belief system&rdquo; was incompatible with the project&rsquo;s goals. TechCrunch summed it up the same way: <a href="https://techcrunch.com/2017/03/26/sex-and-gor-and-open-source/"target="_blank" rel="noopener">punished for something said outside the project</a>. Eighty-five developers <a href="https://www.inc.com/sonya-mann/drupal-confessions-open-letter.html"target="_blank" rel="noopener">signed an open letter</a> threatening to leave. It didn&rsquo;t help. And notice the detail that buries the &ldquo;safe space&rdquo; thesis: the code of conduct process worked and cleared the guy. When the mob pushed, the paper held nothing; the person at the top decided, like it always was.</p>
<p><strong>Node.js, 2017.</strong> The 13-person TSC voted on expelling Rod Vagg for, among other things, having tweeted an article questioning the side effects of codes of conduct. Reading criticism of a code of conduct almost became a code of conduct violation: <a href="https://www.theregister.com/2017/08/24/nodejs_forks_ayo_code_of_conduct/"target="_blank" rel="noopener">the vote was 6 to 4 against expulsion</a>, by a narrow margin. The machine lost that round, but the message had already gotten out: four of the people who wanted Vagg&rsquo;s head resigned from the committee that same day, and the project got a fork called Ayo.js hours later. Losing the vote didn&rsquo;t stop the damage.</p>
<p><strong>Linus Torvalds, 2018.</strong> In September, according to reporting at the time, the New Yorker had sent him questions about his abusive behavior in emails. That same weekend, Linus <a href="https://www.newyorker.com/science/elements/after-years-of-abusive-e-mails-the-creator-of-linux-steps-aside"target="_blank" rel="noopener">apologized and announced he&rsquo;d take some time off to &ldquo;understand people&rsquo;s emotions&rdquo;</a> and the kernel <a href="https://itsfoss.com/linux-code-of-conduct/"target="_blank" rel="noopener">swapped the Code of Conflict for the Contributor Covenant</a>. Linus has been blunt in emails forever, everyone knows that, and he came back a month later. But the message was sent: if not even the guy who created the kernel was safe, nobody was.</p>
<p><strong>Richard Stallman, 2019.</strong> The creator of the GPL, founder of the FSF, the embodiment of free software. An MIT mailing list thread leaked in which he discussed the legal semantics of the Minsky/Epstein case. Vice ran headlines saying he had <a href="https://news.tuxmachines.org/node/128122"target="_blank" rel="noopener">&ldquo;defended Epstein&rdquo; and called the victims &ldquo;entirely willing&rdquo;</a>, a reading the email thread itself doesn&rsquo;t support: he was questioning the legal terminology of the accusation against Minsky. The <a href="https://medium.com/@selamie/remove-richard-stallman-fec6ec210794"target="_blank" rel="noopener">&ldquo;Remove Richard Stallman&rdquo;</a> campaign exploded, and within days he <a href="https://www.npr.org/2019/09/17/761718975/free-software-pioneer-quits-mit-over-his-comments-on-epstein-sex-trafficking-cas"target="_blank" rel="noopener">resigned from MIT and the FSF presidency</a>. When he returned to the FSF board in 2021, <a href="https://rms-open-letter.github.io/"target="_blank" rel="noopener">an open letter with more than 3,000 signatures and dozens of organizations</a> came out demanding his head and the whole board&rsquo;s. Red Hat <a href="https://www.redhat.com/en/blog/red-hat-statement-about-richard-stallmans-return-fsf-board"target="_blank" rel="noopener">cut funding to the FSF</a>. <a href="https://rms-support-letter.github.io/"target="_blank" rel="noopener">A support letter gathered nearly 7,000 signatures</a> and, delicious detail, Debian voted on a resolution about the case and <a href="https://www.debian.org/vote/2021/vote_002"target="_blank" rel="noopener">the winning option was to say nothing</a>. Even faking neutrality took a vote.</p>
<p>And there&rsquo;s the most recent case, and maybe the most instructive one: <strong>Tim Peters, 2024</strong>. A Python legend, three decades of contribution, suspended for three months by the PSF&rsquo;s conduct committee <a href="https://www.theregister.com/software/2024/08/09/core-python-developer-suspended-for-three-months/1429020"target="_blank" rel="noopener">over vague accusations of creating an &ldquo;atmosphere of FUD&rdquo;</a>, in a fight over the foundation&rsquo;s bylaws and the committee&rsquo;s own methods. The community reacted badly, but there was no reversing it: he served the three months and only came back once the suspension expired, in November. The pattern held: disagreeing with moderation became a punishable offense.</p>
<p><strong>DHH, 2021.</strong> I saved this one for last because it&rsquo;s the case that changes the story. And note: this wasn&rsquo;t even open source, it was his own company. The same mechanism, now inside the office. In April 2021, at the height of the BLM era, an internal DEI committee inside Basecamp, the company of Ruby on Rails&rsquo; creator and Jason Fried, dug up an old &ldquo;funny customer names&rdquo; list that had been circulating internally. The discussion escalated until an employee invoked the &ldquo;pyramid of hate&rdquo; and argued that list was the foundation of racial violence and even genocide. The founders&rsquo; response was to shut down the topic, dissolve the committee, and <a href="https://world.hey.com/dhh/basecamp-s-new-etiquette-regarding-societal-politics-at-work-b44bef69"target="_blank" rel="noopener">ban political and societal discussion on internal channels</a>. The internet exploded. At the next all-hands, there were <a href="https://www.theverge.com/2021/5/3/22418208/basecamp-all-hands-meeting-employee-resignations-buyouts-implosion"target="_blank" rel="noopener">two and a half hours of people crying and yelling on Zoom</a>. Ryan Singer, eighteen years at the company, said there that he didn&rsquo;t accept the &ldquo;white supremacy culture&rdquo; label being applied to the company. He was suspended half an hour after the meeting and resigned that weekend. In the end, <a href="https://www.nytimes.com/2021/04/30/technology/basecamp-politics-ban-resignations.html"target="_blank" rel="noopener">a third of the company, twenty of the 57 employees, left with a voluntary severance package</a>.</p>
<p>And this is where this case splits off from all the others: he didn&rsquo;t bend. No public humiliation ritual, no apology, no walking it back. He preferred to lose a third of the company over handing over control of it. Basecamp survived, went back to being 37signals, and DHH learned right there, firsthand, what kind of people he was dealing with. Hold on to that name, because it comes back.</p>
<p>Someone&rsquo;s going to point out that his rule is also a written document banning a topic. Yes, and the difference is exactly the point: DHH&rsquo;s rule bans an entire subject, the same for everyone, no matter which side. A code of conduct bans a person and an opinion, selectively, depending on who&rsquo;s in power that month.</p>
<blockquote>
  <p>One locks the topic at the door. The other opens a courtroom inside.</p>

</blockquote>
<p>Notice the pattern. In none of these cases was the problem code. In none of them did anyone commit a bug, steal code, sabotage a release. The offenses were opinions, political donations, private life, semantics on a mailing list. The technical criterion got replaced by a political one, and the code of conduct was the legal instrument of that swap. These are famous cases, not statistics. But when the list includes the creators of JavaScript, the GPL, and Linux, the sample doesn&rsquo;t need to be big to make the point.</p>
<h2>And the results?<span class="hx:absolute hx:-mt-20" id="and-the-results"></span>
    <a href="#and-the-results" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Ten years of the code-of-conduct era should have left behind a trail of good numbers. If the justification was protecting minorities and making open source more diverse and less toxic, where&rsquo;s the improvement? I went looking for the serious research on the subject. What exists tells an interesting story.</p>
<p>On adoption: <a href="https://www.win.tue.nl/~aserebre/SANER2017.pdf"target="_blank" rel="noopener">Tourani, Adams, and Serebrenik measured in 2017</a> that around 35% of GitHub&rsquo;s 150 most popular projects had a code of conduct. And that enforcement was rare: the creators of these codes, in a sample of four interviewees, talked about single-digit case counts over years. A <a href="https://par.nsf.gov/servlets/purl/10347026"target="_blank" rel="noopener">2021 CSCW study</a> looked at 52,000 repositories: 12.6% had a CoC, and only 10% of the conversations mentioning the code were real moderation use of it. Most adoptions happened with no visible public discussion in the repo. The same paper states, in plain words, that there is no empirical evidence that a code of conduct attracts new contributors.</p>
<p>On attracting people, by the way, <a href="https://cmustrudel.github.io/papers/cscw19signals.pdf"target="_blank" rel="noopener">Qiu et al. measured what actually makes someone join a project</a>: a good README, star count, recent activity, an issue template. A code of conduct didn&rsquo;t even make it in as a variable in their model, and note that they did test maintainer responsiveness, which also came back not significant. The study that specifically measured where a CoC ranks among the factors was a separate one, <a href="https://link.springer.com/chapter/10.1007/978-3-030-20883-7_9"target="_blank" rel="noopener">Fronchetti, Wiese, Pinto, and Steinmacher, also from 2019</a>: a CoC ranked among the worst-placed factors for attracting new contributors. Nobody picks a project because of its code of conduct.</p>
<p>On diversity, which was the original promise, there is a specific study, and the answer is no. <a href="https://dl.acm.org/doi/10.1145/3236024.3275441"target="_blank" rel="noopener">Robson, at ESEC/FSE 2018</a>, looked at GitHub&rsquo;s 500 most popular projects: projects that adopted a CoC saw women&rsquo;s participation grow at practically the same rate as those that didn&rsquo;t (roughly a 1.44% increase versus 1.43%, per the later survey that cites the study). No statistical difference to back up the promise. <a href="https://research.tue.nl/files/198367174/Enache_B.pdf"target="_blank" rel="noopener">Enache, in a 2017 master&rsquo;s thesis for TU Eindhoven, covering 149 open source communities</a>, reached the same conclusion: no significant result showing a CoC changes women&rsquo;s participation.</p>
<p>And there&rsquo;s a new, heavyweight piece of research, published now in 2026 at ICSE, the field&rsquo;s most important conference: <a href="https://jys-sun.github.io/website/resources/Beyond_Adoption_ICSE2026_CR.pdf"target="_blank" rel="noopener">Sun et al. ran a genuine causal experiment</a>, comparing 4,684 pairs of repositories that adopted a CoC against matched pairs that didn&rsquo;t. The result cuts both ways. Adopting a CoC does attract more new contributors, and that effect grows over time. Except adopting a CoC also increases the number of existing contributors who disengage, an effect concentrated specifically in the first one to three months after adoption. In other words: the most recent and most rigorous study that exists shows, with numbers, the exact pattern this piece has been documenting case by case the whole time. Adopting the document doesn&rsquo;t build a new community, it pushes out the people who were already there.</p>
<p>GitHub&rsquo;s 2017 survey already showed <a href="https://opensourcesurvey.org/2017/"target="_blank" rel="noopener">95% men and 3% women in open source</a>. The best long-term data that exists, from <a href="https://arxiv.org/html/2202.07278v1"target="_blank" rel="noopener">Rossi and Zacchiroli at ICSE 2022</a>, analyzed 2.2 billion commits from the Software Heritage archive. Gender was detectable for 64% of authors, and within that group, women are 13.5% of authors and sign 8.1% of commits. Their participation had been growing slowly and steadily for twelve years, and dropped during the pandemic. The paper doesn&rsquo;t discuss codes of conduct, so what follows is my own reading, not the study&rsquo;s: a curve that climbs the same way the whole decade, with no visible step up when the Contributor Covenant spread, is the opposite of evidence that the document made a difference.</p>
<p>On toxicity, the <a href="https://courtney-e-miller.github.io/papers/DidYouMissMyCommentOrWhat.pdf"target="_blank" rel="noopener">ICSE 2022 study</a> finds, in a footnote and by extrapolation, something close to 1.3 toxic comments per thousand on GitHub. Nobody has a historical series comparing before and after the CoC era. There simply is no baseline to say whether things got worse or better.</p>
<p>The only randomized experiment that would actually support the case for rules <a href="https://doi.org/10.1073/pnas.1813486116"target="_blank" rel="noopener">is Matias&rsquo;s, published in PNAS in 2019</a>: rule reminders actively displayed on a randomly-sampled set of r/science threads increased newcomer participation by 70%. Except the experiment is on Reddit, with the rule pinned right in front of whoever walked into that specific thread. A static file forgotten in a repository, that nobody reads after adoption day, doesn&rsquo;t come close to that. The very research that shows a rule working is proof that the problem was never whether the file exists or not. It&rsquo;s that nobody enforces it, nobody displays it, nobody makes it stick.</p>
<p>To sum up: a whole decade of codes of conduct, and the original promise remains exactly that, a promise. What got documented was adoption without discussion, rare enforcement, and, at best, a whole lot of political process.</p>
<blockquote>
  <p>As protection, it&rsquo;s almost never invoked. As a political weapon, it only needs to be invoked once, against the right person.</p>

</blockquote>
<h2>The pushback came from where nobody expected<span class="hx:absolute hx:-mt-20" id="the-pushback-came-from-where-nobody-expected"></span>
    <a href="#the-pushback-came-from-where-nobody-expected" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Easy money ran out in 2022, and with it, the industry&rsquo;s patience for this theater. And leading the pushback was the guy who had already refused to bend back in 2021: DHH, an old-guard ex-Mac fanboy.</p>
<p>DHH has been writing against this wave for a while now: <a href="https://world.hey.com/dhh/the-waning-days-of-dei-s-dominance-9a5b656c"target="_blank" rel="noopener">&ldquo;The waning days of DEI&rsquo;s dominance&rdquo;</a> in 2022, <a href="https://world.hey.com/dhh/dei-is-done-minus-the-mop-up-b3bbbb64"target="_blank" rel="noopener">&ldquo;DEI is done&rdquo;</a> in 2024. In 2022 Ruby Central <a href="https://world.hey.com/dhh/no-railsconf-faa7935e"target="_blank" rel="noopener">pulled him from the RailsConf keynote</a>, the conference for the framework he himself created, saying it wanted to <em>&ldquo;share the opening stage with other contributors&rdquo;</em>. The following year Rails World was born, the official Rails Foundation conference, and DHH became its keynote speaker. In 2024 he launched Omakub, and in June 2025, <a href="https://world.hey.com/dhh/omarchy-is-out-4666dd31"target="_blank" rel="noopener">Omarchy</a>: Arch Linux with Hyprland and a bunch of opinionated scripts on top, which had passed 40,000 stars on GitHub by September 2026 and became 37signals&rsquo; default environment for anyone touching infra and Ruby.</p>
<p>Then the cancel machine switched on again. In September 2025 he published <a href="https://world.hey.com/dhh/as-i-remember-london-e7d38e64"target="_blank" rel="noopener">&ldquo;As I remember London&rdquo;</a>, and the reaction was the usual script: a petition to remove him, accusations, an attempted boycott. His response was <a href="https://world.hey.com/dhh/we-ve-all-had-enough-of-this-nonsense-8545dd26"target="_blank" rel="noopener">&ldquo;We&rsquo;ve all had enough of this nonsense&rdquo;</a>: <em>&ldquo;every few years, the same sad little clique of Ruby malcontents tries to cancel me from Rails&rdquo;</em>.</p>
<p>A month later, in October 2025, it was Framework&rsquo;s turn, the laptop maker: <a href="https://www.theregister.com/software/2025/10/14/framework-flame-war-erupts-over-linux-controversy/1466815"target="_blank" rel="noopener">a thread with more than 1,500 replies on the company&rsquo;s own forum</a>, opened by a Debian developer calling the Hyprland community, which Framework sponsored, &ldquo;toxic and hateful,&rdquo; and threatening a boycott because the company also promoted Omarchy on social media. The Framework CEO&rsquo;s response is the line this whole decade had been missing:</p>
<blockquote>
  <p><em>&ldquo;We deliberately created a big tent, because we want open source to win. We don&rsquo;t partner based on the beliefs of individuals or organizations.&rdquo;</em></p>

</blockquote>
<p>And the machine didn&rsquo;t just come after him. Ruby Central, the same organization that had disinvited DHH from the keynote in 2022, gave him a stage at RailsConf 2025. The retaliation came in money: according to developer Joel Drapper&rsquo;s reporting, Sidekiq <a href="https://mjtsai.com/blog/2025/09/"target="_blank" rel="noopener">pulled its $250,000-a-year sponsorship</a> because of it. Weeks later, in September 2025, Ruby Central <a href="https://lwn.net/Articles/1040778/"target="_blank" rel="noopener">stripped GitHub access from every longtime RubyGems and Bundler maintainer</a>, citing supply-chain security. Ellen Dash, who had maintained the project for ten years, quit, calling the move a &ldquo;hostile takeover,&rdquo; and Drapper&rsquo;s investigation points to pressure from Shopify, which had become practically the organization&rsquo;s only source of money. Ruby Central itself ended up publishing an <a href="https://www.theregister.com/2026/04/01/ruby_central_report/"target="_blank" rel="noopener">incident report</a> in April 2026, promising to &ldquo;strengthen governance.&rdquo; That&rsquo;s the whole pattern: when the machine can&rsquo;t take the target down, it burns the house down around them.</p>
<p>A GNOME developer published <a href="https://blogs.gnome.org/alatiera/2025/11/06/dhh-and-omarchy-midlife-crisis/"target="_blank" rel="noopener">a piece attacking Omarchy on GNOME&rsquo;s official blogs site</a>. And the result of all that fury? Nothing. In August 2026 the <a href="https://www.theregister.com/os-platforms/2026/08/27/omarchy-distro-gains-serious-backing/5293026"target="_blank" rel="noopener">Omacom Foundation</a> was born, with eight million dollars at launch: a million each from Tobi Lütke (Shopify), Patrick Collison (Stripe), Michael Dell, Jack Dorsey, Matthew Prince (Cloudflare), Brendan Iribe, Jason Fried, and DHH himself. The foundation became Hyprland&rsquo;s exclusive sponsor, with Vaxry working on it full-time. When 1Password came in as a sponsor, the <a href="https://www.alilleybrinker.com/blog/1password-funds-ethnic-cleansing/"target="_blank" rel="noopener">cancellation attempt</a> was immediate, and so was <a href="https://www.theverge.com/tech/988536/1password-dhh-linux-controversy"target="_blank" rel="noopener">the CEO&rsquo;s internal response</a>: <em>&ldquo;our donation is not an endorsement of personal opinions&rdquo;</em>. And the game goes on.</p>
<p>And I put my money where my mouth is: <a href="https://x.com/AkitaOnRails/status/2098792361291567488"target="_blank" rel="noopener">I made my donation to the foundation</a> precisely because of the patrol&rsquo;s whining. Nothing irritates that crowd more than watching a cancellation fail in real time.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/20260914175728_omacom-doacao.jpeg" alt="Recibo da minha doação de 2.048 dólares para a Omacom Foundation, assinado pelo DHH como Founder & President"  loading="lazy" /></p>
<p>This is the point: the machine still exists, but it lost its power. In 2014 it brought down a CEO in eleven days. In 2026 it can&rsquo;t even scratch the sponsorship of a niche distro. The documents are still there, in GitHub&rsquo;s template; what ended was the firepower of whoever wielded them. What changed was the money, and yes, the pushback is also money: eight million dollars from eight rich men.</p>
<p>And before someone points out that money doesn&rsquo;t prove merit: it depends. A millionaire made by government cronyism, fraud, or favors has no merit at all. But most millionaires made their money by producing, and that&rsquo;s the case for Omacom&rsquo;s eight patrons. Money earned by producing is the measure of the merit of whoever earned it, as I already wrote here back in 2011, about <a href="/en/2011/02/03/off-topic-a-revolta-de-atlas-dinheiro-e-a-raiz-de-todo-o-mal/">Francisco d&rsquo;Anconia&rsquo;s money speech in &ldquo;Atlas Shrugged&rdquo;</a>.</p>
<blockquote>
  <p>Judge by the result the donation bought, not by the declared intent of whoever signed the check.</p>

</blockquote>
<p>The 49.5 billion corporate dollars from 2020 didn&rsquo;t produce a single extra gram of measurable diversity, the numbers up above prove that. Eight million dollars from individual patrons produced a full-time maintainer writing actual code. The bubble that funded armies of people with no real work popped, and whoever was left was whoever was there for the code.</p>
<h2>The philosophical part<span class="hx:absolute hx:-mt-20" id="the-philosophical-part"></span>
    <a href="#the-philosophical-part" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Let&rsquo;s get to the official excuse: codes of conduct exist to &ldquo;protect minorities.&rdquo; On the surface, who would be against protecting minorities? Not me. The problem is that the phrase is vague by design.</p>
<p>What is a minority? I already translated the chapter <a href="/en/2009/09/09/off-topic-direitos-do-homem/">&ldquo;Man&rsquo;s Rights&rdquo;</a> from Ayn Rand&rsquo;s &ldquo;The Virtue of Selfishness&rdquo; here on the blog. The line that interests me here is from another chapter of the same book, &ldquo;Racism,&rdquo; and it remains unbeatable:</p>
<blockquote>
  <p>The smallest minority on earth is the individual. Those who deny individual rights cannot claim to be defenders of minorities.</p>

</blockquote>
<p>And that&rsquo;s exactly what these codes do in practice: in the name of an abstract, collective minority, the concrete individual gets hunted down. Doxxing (exposing someone&rsquo;s personal data), harassment campaigns, pressure on employers, bans. When the modus operandi for &ldquo;protecting minorities&rdquo; is coordinated bullying against one person until they buckle, you&rsquo;re oppressing the smallest minority there is.</p>
<p>This topic, by the way, is an old one for me. In December 2018 I published the video <a href="/2018/12/05/akitando-31-manifesto-anti-parasita-seja-um-criador/">&ldquo;Anti-Parasite Manifesto: Be a Creator&rdquo;</a> on my channel. At the time I couldn&rsquo;t be explicit, the thought police were still too strong. But whoever watched closely got the message. It was my breadcrumb for this story that I&rsquo;m only now able to tell properly.</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/nX0wPjNzn3o"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>And there&rsquo;s the second problem, a more fundamental one: open source is about software. The GPL, which this crowd looks down on so much, solves the one protection a software project can&rsquo;t afford to lose: the code&rsquo;s. It guarantees the code stays free, period. It doesn&rsquo;t ask who wrote it, who they voted for, what they tweeted, what they donated to. The compiler doesn&rsquo;t check for ideological purity. Open source has always been the most inclusive community that ever existed precisely because of this: the only passport was the diff. The code of conduct made open source less inclusive, because it added a new entry criterion: politics. And politics is a stupid criterion for software.</p>
<p>&ldquo;But without a code of conduct, how do we deal with real harassment?&rdquo; With the same tool as always: a maintainer&rsquo;s common sense and, when necessary, the law. If someone directly attacks another person, sexual assault at an event, for example, banning them is common sense and never needed any document. Harassment, threats, and defamation are already crimes in practically every country, and crime gets settled through the law. What I can&rsquo;t stomach is something else: going out and stalking someone&rsquo;s online life to dig up a random opinion, with no relation to any crime, and demanding a ban over words with no criminal consequence. These committees were always great at punishing opinion and terrible at punishing crime, so the document was never about that.</p>
<p>And I&rsquo;m not the only one saying this. Eric S. Raymond, the guy who wrote <a href="http://www.catb.org/~esr/writings/cathedral-bazaar/"target="_blank" rel="noopener">&ldquo;The Cathedral and the Bazaar&rdquo;</a>, the 1997 essay that validated Netscape&rsquo;s decision to open-source Mozilla and that pretty much wrote the rulebook for open source, co-founder of the OSI, editor of the Jargon File, author of fetchmail, went on X in September 2025 to <a href="https://itsfoss.com/news/codes-of-conduct-debate/"target="_blank" rel="noopener">declare the code-of-conduct era a complete failure</a>. In his words: ten years of <em>&ldquo;drama and idiocy&rdquo;</em>, an <em>&ldquo;infectious social insanity&rdquo;</em> that produces politics, intrigue, and negative useful work. The recommendation is as direct as it gets: don&rsquo;t adopt one; if you already did, delete it. And if some bureaucracy forces you to have one, the suggested replacement is a single sentence:</p>
<blockquote>
  <p><em>&ldquo;If you are more annoying to work with than your contributions justify, you&rsquo;ll be ejected.&rdquo;</em></p>

</blockquote>
<p>That&rsquo;s what I said two paragraphs above: a maintainer&rsquo;s common sense.</p>
<p>And the detail that closes the loop: ESR himself had been <a href="https://en.wikipedia.org/wiki/Eric_S._Raymond"target="_blank" rel="noopener">removed from two OSI mailing lists in 2020</a> over posts that &ldquo;violated the code of conduct&rdquo; of the organization he helped found.</p>
<blockquote>
  <p>The guy who wrote the rulebook, ejected by the document. That image sums up the whole era.</p>

</blockquote>
<h2>How we got here<span class="hx:absolute hx:-mt-20" id="how-we-got-here"></span>
    <a href="#how-we-got-here" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>It&rsquo;s worth taking a step back and telling where all this came from, because open source was only one of the fronts. The starting shot, in my reading, was GamerGate, in 2014. In August of that year came the <a href="https://thezoepost.wordpress.com/"target="_blank" rel="noopener">&ldquo;Zoe Post&rdquo;</a>, the ex-boyfriend&rsquo;s rant about developer Zoe Quinn. Twelve days later, and about 48 hours after the #GamerGate hashtag caught fire, <a href="https://www.gamedeveloper.com/business/-gamers-don-t-have-to-be-your-audience-gamers-are-over-"target="_blank" rel="noopener">about a dozen gaming sites published variations of the same article</a>: &ldquo;gamers are over,&rdquo; gamers are dead, it&rsquo;s finished.</p>
<p>Shortly after, the GameJournoPros leaked, a closed group where gaming journalists coordinated coverage. The public realized right away that gaming press had turned into an ideological club, and hit back with their own version of an organized boycott: the &ldquo;Operation Disrespectful Nod&rdquo; campaign flooded Intel with complaints until the company <a href="https://www.theverge.com/2014/10/2/6886747/intel-buckles-to-anti-feminist-campaign-by-pulling-ads-from-gaming"target="_blank" rel="noopener">pulled its ads from Gamasutra</a> (the press at the time called it an &ldquo;anti-feminist campaign&rdquo;; to me it&rsquo;s just organized consumer pressure, the same instrument Sidekiq used against Ruby Central further down the line).</p>
<p>And it&rsquo;s worth pinning down the principle here, because it applies to both sides for the rest of this piece: organized consumer pressure is fair play, no matter which side it comes from. The problem was never pressure. It&rsquo;s doxxing, threatening someone&rsquo;s job, and a committee faking neutrality to impose the result it already wanted before opening the process.</p>
<p>For years, from 2021 to June 2025, Wikipedia&rsquo;s article on the subject lived under the title <a href="https://en.wikipedia.org/wiki/Gamergate"target="_blank" rel="noopener">&ldquo;Gamergate (harassment campaign)&rdquo;</a>, treating any criticism of the journalism as a pretext for harassment. The title got switched back to plain &ldquo;Gamergate&rdquo; once the most hysterical phase had passed, which should be read as a confession, not as if the case were closed: they renamed it back once defending the political label got too costly, the exact same pattern of quiet retreat that shows up throughout this whole story. While it lasted, it lasted for precisely the decade in which that mob had the firepower to make it stick.</p>
<p>The editorial fight got so ugly that Wikipedia&rsquo;s arbitration committee <a href="https://en.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost/2015-01-28/In_focus"target="_blank" rel="noopener">sanctioned more than a dozen editors, on both sides</a>. And note that I don&rsquo;t even need to accuse Wikipedia on my own: Larry Sanger, co-founder of Wikipedia, wrote the piece <a href="https://larrysanger.org/2020/05/wikipedia-is-badly-biased/"target="_blank" rel="noopener">&ldquo;Wikipedia Is Badly Biased&rdquo;</a> in 2020, declaring the project&rsquo;s neutrality dead, and in September 2025 published <a href="https://larrysanger.org/nine-theses/"target="_blank" rel="noopener">&ldquo;Nine Theses on Wikipedia&rdquo;</a>, calling for reforms like ending source blacklists and ending permanent editor bans. When the founder says the house has been taken over, believe the founder.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/20260914180253_larry-sanger-akita-2018.jpg" alt="Eu e o Larry Sanger, cofundador da Wikipedia, num evento em outubro de 2018. Uma honra ter podido conhecê-lo pessoalmente."  loading="lazy" /></p>
<p>The gamers&rsquo; side of this story is in the book <a href="https://books.google.com.br/books/about/SJWs_Always_Lie.html?id=NqSUjgEACAAJ&amp;redir_esc=y"target="_blank" rel="noopener">&ldquo;SJWs Always Lie&rdquo;</a>, by Vox Day, from 2015. I already know what&rsquo;s coming: &ldquo;Vox Day&rdquo; and &ldquo;Milo Yiannopoulos&rdquo; are names that make people scream just hearing them, and GameJournoPros, by the way, was also originally broken by that same Milo. I don&rsquo;t care about the reputation of whoever&rsquo;s telling a story, I care whether the story is true. A partisan source from inside the fight, fair warning, but the central fact matches what Wikipedia itself and the press at the time document with zero connection to either of those two names: the GameJournoPros list really did exist, a closed group of about 150 people in games journalism swapping notes on how to cover the case.</p>
<p>The chapter &ldquo;Counterattack&rdquo; tells GamerGate from the inside, and the book&rsquo;s thesis sums up the decade: these people always lie, always double down, always project onto others exactly what they themselves do.</p>
<p>From GamerGate onward, it was dominoes. Anita Sarkeesian turned her Kickstarter from a <a href="https://www.backerkit.com/projects/566429325/tropes-vs-women-in-video-games"target="_blank" rel="noopener">$6,000 goal into $158,000</a>, became a global authority, went to speak at the <a href="https://www.polygon.com/2015/9/25/9399169/united-nations-women-cyber-violence-anita-sarkeesian-zoe-quinn"target="_blank" rel="noopener">UN in 2015</a> about &ldquo;cyber violence,&rdquo; and games journalism never recovered. Her Feminist Frequency <a href="https://www.gamesindustry.biz/anita-sarkeesian-to-close-feminist-frequency-after-15-years"target="_blank" rel="noopener">shut down in 2023</a>, but the logic she kicked off migrated inside the studios: the &ldquo;inclusive narrative&rdquo; consulting industry was born, with Sweet Baby Inc leading the way.</p>
<p>Sweet Baby&rsquo;s CEO, Kim Belair, was recorded at a 2019 GDC talk, a public recording that circulates independently of the site that first surfaced it, advising anyone seeking internal approval for &ldquo;representation&rdquo; consulting to <a href="https://nichegamer.com/sweet-baby-ceo-terrify-them-if-game-devs-dont-push-diversity/"target="_blank" rel="noopener"><em>&ldquo;go grab coffee with the marketing team and terrify them&rdquo;</em></a> with the possibility of what would happen if they didn&rsquo;t get what they wanted. In 2024, a Brazilian created a Steam curator page (Valve&rsquo;s own feature where any account can publish game recommendations and gain followers) named &ldquo;Sweet Baby Inc Detected.&rdquo; One employee at the company individually tried to bring the profile down on their own, and Valve also acted through its own moderation; even so, the result was the group exploding to <a href="https://en.wikipedia.org/wiki/Sweet_Baby_Inc."target="_blank" rel="noopener">more than 350,000 followers</a>.</p>
<p>And then came the flops. Suicide Squad: Kill the Justice League, with <a href="https://en.wikipedia.org/wiki/Sweet_Baby_Inc."target="_blank" rel="noopener">confirmed Sweet Baby consulting</a>, <a href="https://finance.yahoo.com/news/suicide-squad-flop-still-hurting-135841738.html"target="_blank" rel="noopener">cost Warner 200 million dollars in losses</a>. Unknown 9, from the studio where Sweet Baby&rsquo;s founding duo used to work, <a href="https://www.pcgamer.com/gaming-industry/unknown-9-awakening-studio-makes-major-layoffs-just-a-month-after-the-games-release/"target="_blank" rel="noopener">laid off staff en masse a month after launch</a>.</p>
<p>Then came 2020. With BLM, the same playbook became state policy: the 50 biggest American companies <a href="https://finance.yahoo.com/news/corporate-america-pledged-50b-racial-185054221.html"target="_blank" rel="noopener">pledged 49.5 billion dollars</a> in &ldquo;racial justice&rdquo; measures, DEI job postings <a href="https://www.visier.com/blog/chief-diversity-officers-exits/"target="_blank" rel="noopener">grew 123% within months</a>, Biden signed an <a href="https://civilrights.org/biden-timeline/"target="_blank" rel="noopener">&ldquo;equity&rdquo; executive order</a> for the entire federal government on day one of his term, and the European Union rolled out its <a href="https://ec.europa.eu/newsroom/just/items/692134"target="_blank" rel="noopener">2020-2025 anti-racism plan</a>. It was the peak: the patrol had reached the US presidency and the EU&rsquo;s leadership.</p>
<p>The retreat came as fast as the rise. The US Supreme Court <a href="https://www.scotusblog.com/2023/06/supreme-court-strikes-down-affirmative-action-programs-in-college-admissions/"target="_blank" rel="noopener">struck down affirmative action in June 2023</a>, companies <a href="https://www.npr.org/2025/05/27/nx-s1-5307319/dei-jobs-trump"target="_blank" rel="noopener">laid off thousands of DEI professionals</a>, Walmart, Meta, McDonald&rsquo;s, and Amazon dropped their programs, and in January 2025 Trump <a href="https://www.everycrsreport.com/reports/IN12497.html"target="_blank" rel="noopener">revoked the equity orders</a> on day one.</p>
<p>I told all of this just to give context: what happened in open source wasn&rsquo;t an isolated phenomenon. It was the same script, with the same methods, across every culture and tech industry at the same time. The difference is that in open source, the resistance took longer to organize. But it organized.</p>
<h2>My Cortlandt<span class="hx:absolute hx:-mt-20" id="my-cortlandt"></span>
    <a href="#my-cortlandt" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>It was this pressure that pushed me out of organizing RubyConf Brazil. I founded the event in 2008, back when it was still called Rails Summit, and in the last edition I organized, in 2016, we drew 1,500 people. When <a href="/en/2016/09/26/the-next-10-years/">I announced my departure</a>, I wrote that there was no drama involved. That wasn&rsquo;t the whole truth: the patrol had already reached tech conferences, and I refused to turn the event I created into one more stage for it.</p>
<p>Let me give a small example of what it means to be pressured into forcing diversity. As the data I showed above indicates, women are somewhere between 3% and a bit over 13% of open source contributors, depending on how you measure it: self-reported survey or name-based detection in commits. My channel&rsquo;s analytics show the same range, 3 to 5% at most, and that proportion hasn&rsquo;t changed in ten years. Every year I opened a public Call for Papers: anyone could submit a talk. And my selection process <strong>was always blind</strong>: I read every submission without knowing who had sent it, on purpose, so the choice would be based on the merit of the topic and never on the person.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/20260914175728_youtube-analytics-genero.png" alt="Analytics do meu canal no YouTube, últimos 28 dias: 97% homens, 3% mulheres"  loading="lazy" /></p>
<p>In the patrol years, the pressure was never direct with me. It was that diffuse, external pressure that every event had to be &ldquo;more diverse.&rdquo; And in practice that could only mean one thing: a new phase in the process. After the blind selection, reveal who submitted what, to check whether the lineup was &ldquo;diverse enough.&rdquo; Except that&rsquo;s a mathematical impossibility. Submissions kept following the same 3 to 5%. Even approving every woman who submitted, the imaginary quota didn&rsquo;t add up. The way around it was to go out and invite people directly, choosing by profile instead of by topic.</p>
<p>And the practical result of that scheme, wherever it&rsquo;s applied, is cutting people who got in on merit to open a spot for people chosen by an irrelevant external policy. That drags the event&rsquo;s quality down instead of up. And notice: this isn&rsquo;t an argument against any woman. It&rsquo;s the opposite. The moment the quota enters the process, the doubt stops being about one specific speaker and starts hanging over everyone who steps on stage. It doesn&rsquo;t matter who&rsquo;s talking: if someone in the audience disagrees with the content, there&rsquo;s always the leftover question, &ldquo;did Akita pick this one for the quota?&rdquo; From then on, every speaker carries a suspicion they don&rsquo;t deserve, and everyone&rsquo;s merit gets devalued along with it. It hurts the minority the policy claimed to protect, it hurts the other speakers, it hurts the audience. It&rsquo;s lose-lose all around.</p>
<p>And there&rsquo;s a part of this story nobody sees from outside. Some of the people invited that way turned it down on the spot, &ldquo;because the event wasn&rsquo;t diverse enough.&rdquo; The refusal made the event even less diverse, obviously. And afterward they&rsquo;d go on social media to trash the event, as if I&rsquo;d never invited anyone. That&rsquo;s the level of garbage I had to swallow every year.</p>
<p>And let this be very clear: there&rsquo;s nothing I want more than to see more women in tech. What I can&rsquo;t convince myself of is that forcing a quota, the way I described above, helps with that. Everything I saw in practice points the other way: it hurts more than it helps. And if I don&rsquo;t believe it&rsquo;s beneficial, I&rsquo;d rather not do it.</p>
<p>Want a recent example of a woman I admire in the industry? Asha Sharma, who <a href="https://www.gameshub.com/news/news/xbox-game-pass-cheaper-new-ceo-asha-sharma-2026-2862856/"target="_blank" rel="noopener">took over as Xbox CEO in February</a>. Since then it&rsquo;s been one result after another: <a href="https://www.windowscentral.com/gaming/xbox/microsofts-xbox-ceo-asha-sharma-vows-to-deliver-xbox-updates-every-two-weeks-to-fix-the-fundamentals"target="_blank" rel="noopener">she cut Copilot from the consoles and restructured the division to focus on what matters</a>, <a href="https://www.allkeyshop.com/blog/xbox-first-party-titles-survive-layoffs-news-d/"target="_blank" rel="noopener">sold studios and cut costs without cancelling a single announced game</a>, and this week <a href="https://www.kojimaproductions.jp/en/xbox_partnership_announcement"target="_blank" rel="noopener">brought Kojima Productions to Xbox</a> to publish Hideo Kojima&rsquo;s next game, <a href="https://www.gamespot.com/articles/kojimas-physint-dropped-by-playstation-rescued-by-xbox/"target="_blank" rel="noopener">after PlayStation cancelled the project</a> in mid-2026. Notice the discourse around her: zero mention of &ldquo;gender,&rdquo; zero agenda.</p>
<blockquote>
  <p>Just numbers: cut unnecessary costs, bet on the right calls, improve value for the customer. That&rsquo;s merit. You don&rsquo;t need DEI for that.</p>

</blockquote>
<p>Until I decided enough was enough. Anyone who&rsquo;s read &ldquo;The Fountainhead&rdquo; knows what I did: like Howard Roark, the architect who blows up his own building when they tamper with his design, I dynamited my Cortlandt. More precisely: the event as it existed while it was mine. The brand survived a few more years in other hands, without the same soul, until it disappeared. And I had already <a href="/en/2011/02/04/off-topic-the-fountainhead-defesa-de-howard-roark/">signaled this philosophy here on the blog back in 2011</a>. An individual does nothing for others: he does it for himself. If what you build benefits other people as a side effect, great, but that was never the reason. When the parasites try to take what you built, you blow it all up yourself. Because you can. Whoever built it once builds it again from scratch.</p>
<p>That&rsquo;s what I did. I traded the conference for my YouTube channel, which didn&rsquo;t depend on a sponsor, a committee, or anyone besides me. And the channel grew way beyond anything the conference would ever have become. Then I sat back and waited for the bubble to pop, because I knew it would pop: I wrote it here on the blog and repeated it in videos years before it happened. It popped. Patience always wins.</p>
<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>Ten years of codes of conduct, and here&rsquo;s the scoreboard: zero evidence it increased diversity, no toxicity baseline to compare before and after, and the most recent and most rigorous causal study that exists shows the document pushing out old contributors more than it builds new community. The promise was to protect minorities. The delivery was a collection of heads: the creator of JavaScript, the creator of the GPL, the creator of Linux, all put through the public humiliation ritual. None of it over code. All of it over opinion.</p>
<p>And notice how this era ended.</p>
<blockquote>
  <p>The machine didn&rsquo;t lose the argument, it lost its funding.</p>

</blockquote>
<p>It was only once easy money ran out that the armies of people with no real work evaporated, and whoever was left was whoever was there for the code. Meanwhile, the builders kept building: Brendan Eich got pushed out of Mozilla in 2014 and founded Brave the following year, today with more than 100 million monthly active users and a valuation near a billion dollars. DHH lost the keynote and created a bigger conference, lost a third of the company and helped raise an eight-million-dollar foundation. I left my conference and grew far more on my channel. A parasite can take an institution. It can&rsquo;t take the ability to build. Whoever built it once builds it again from scratch.</p>
<p>Open source recruits volunteers who want to contribute code. Any discussion that doesn&rsquo;t involve code is a distraction at best and sabotage at worst. And the answer to &ldquo;what do we put in place of the code of conduct&rdquo; fits in a single sentence, one the ESR already wrote: if you&rsquo;re more trouble to work with than your contributions justify, you&rsquo;re ejected. That&rsquo;s always been how it worked. The only passport is the diff.</p>
<p>The rest is politicking. And politicking, to use the precise technical term, is bullshit.</p>
<p>And here&rsquo;s the final practical recommendation. If your open source project has a <code>CODE_OF_CONDUCT.md</code>, delete the file. If your main branch turned into <code>main</code> in the 2020 wave, rename it back to <code>master</code>. Partly out of spite, I admit. But mostly to exercise the freedom you just got back to do this without being cancelled for it. Freedom you don&rsquo;t exercise atrophies. No clarifying note, no committee vote, no asking anyone&rsquo;s permission. Just because you can again.</p>
]]></content:encoded><category>off-topic</category><category>open-source</category><category>politics</category></item><item><title>20 Years of Blogging: Translating Everything to English</title><link>https://akitaonrails.github.io/en/2026/04/09/20-years-of-blogging-ai-finally-translated-everything/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/04/09/20-years-of-blogging-ai-finally-translated-everything/</guid><pubDate>Thu, 09 Apr 2026 08:00:00 -0300</pubDate><description>&lt;p&gt;&lt;img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/20260409_20years_blog_celebration.png" alt="Big bold glowing “20 ANOS” in neon-tech style, with champagne flutes, sparklers, confetti, and silhouettes of a CRT monitor and code window in the background, purple palette with cyan and magenta accents" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;Four days ago, April 5th 2026, my blog turned 20. Yeah, I&amp;rsquo;m late on the anniversary post. There&amp;rsquo;s a reason, and that reason is what this piece is about.&lt;/p&gt;
&lt;p&gt;I started in 2006 on Google&amp;rsquo;s Blogspot, like most people did back then. Later I migrated to a Rails 2.0 CMS that already existed, went through Typo3, and in 2012 I &lt;a href="https://akitaonrails.github.io/2025/09/10/meu-novo-blog-como-eu-fiz/"&gt;built my own engine from scratch on ActiveAdmin&lt;/a&gt;, which I dragged along from Rails 3 all the way to Rails 7. Only recently, in September 2025, I finally abandoned that custom engine and moved to &lt;a href="https://akitaonrails.github.io/2025/09/10/meu-novo-blog-como-eu-fiz/"&gt;Hugo with the Hextra theme&lt;/a&gt;, which is what this post is running on. Twenty years carrying the same posts across Textile, migrating from Less to Sass, trading Liquid for Markdown, and trimming obsolete junk along the way.&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/20260409_20years_blog_celebration.png" alt="Big bold glowing “20 ANOS” in neon-tech style, with champagne flutes, sparklers, confetti, and silhouettes of a CRT monitor and code window in the background, purple palette with cyan and magenta accents"  loading="lazy" /></p>
<p>Four days ago, April 5th 2026, my blog turned 20. Yeah, I&rsquo;m late on the anniversary post. There&rsquo;s a reason, and that reason is what this piece is about.</p>
<p>I started in 2006 on Google&rsquo;s Blogspot, like most people did back then. Later I migrated to a Rails 2.0 CMS that already existed, went through Typo3, and in 2012 I <a href="/2025/09/10/meu-novo-blog-como-eu-fiz/">built my own engine from scratch on ActiveAdmin</a>, which I dragged along from Rails 3 all the way to Rails 7. Only recently, in September 2025, I finally abandoned that custom engine and moved to <a href="/2025/09/10/meu-novo-blog-como-eu-fiz/">Hugo with the Hextra theme</a>, which is what this post is running on. Twenty years carrying the same posts across Textile, migrating from Less to Sass, trading Liquid for Markdown, and trimming obsolete junk along the way.</p>
<h2>Two decades, five eras<span class="hx:absolute hx:-mt-20" id="two-decades-five-eras"></span>
    <a href="#two-decades-five-eras" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Something few programmers stop to think about is how much the tech world changes in 20 years. I talked about this at length on <a href="/2019/01/30/akitando-37-a-dimensao-do-tempo-para-iniciantes-em-programacao-serie-comecando-aos-40/">Akitando #37 — The Dimension of Time</a>. When I opened this blog in April 2006, I already had 10 years of experience behind me. I&rsquo;d watched the dot-com bubble rise and blow up in 2000. And from that point on I saw a few more big ones: the rise of social networks (Orkut, Facebook, Twitter), the smartphone and mobile app revolution in 2008, the 2008 financial crisis, Bitcoin being born in 2009, the cloud and SaaS era, and now the generative AI era.</p>
<p>I watched those waves crash for real. Each one completely changed how we work and who survives professionally. This is the kind of thing you only see from a distance, after you&rsquo;ve stacked up a few turns of the wheel.</p>
<p>My own career went through some violent pivots. I told the whole story on <a href="/2019/09/12/akitando-61-meus-primeiros-5-anos-1990-1995/">My First 5 Years (1990-1995)</a>, but the short version: I started in multimedia agencies, moved into <a href="/2018/12/26/akitando-34-voce-nao-sabe-nada-de-enterprise-conhecendo-a-sap">enterprise consulting working on SAP</a>, dropped all of it in 2006 to jump into Ruby on Rails and open source, spent a decade running events — mainly Rubyconf Brasil from 2007 to 2018 — then shut the conference down and started the <a href="https://www.youtube.com/@Akitando"target="_blank" rel="noopener">Akitando YouTube channel</a>, which grew past 500k subscribers. In the middle of all that there was the pandemic that rearranged everyone&rsquo;s life. And since the beginning of 2025 I&rsquo;ve turned into a full-time AI researcher and user, running models locally and breaking things with Claude Code until they work.</p>
<p>Checking the <a href="/en/tags/artificial-intelligence/">/en/tags/ai/</a> tag, I wrote 51 AI-related posts between 2025 and 2026 alone — 19 in 2025 and 32 more in 2026, which has barely started. Between 2018 and 2024, the blog was mostly the transcript archive for my Akitando videos. I&rsquo;d record the video, transcribe it, dump it on the blog, and people would read it there. But once I started writing actively again, I noticed there was a loyal audience that never went anywhere, even through the quiet years. That feedback is what made me start <a href="/en/tags/the-m-akita-chronicles/">The M.Akita Chronicles</a>, a more personal series about the behind-the-scenes of recent projects.</p>
<h2>The problem I never solved<span class="hx:absolute hx:-mt-20" id="the-problem-i-never-solved"></span>
    <a href="#the-problem-i-never-solved" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>For those 20 years, one thing kept nagging at me. Since everything was in Portuguese, it was inaccessible to anyone who didn&rsquo;t read the language. I&rsquo;d been getting messages for years from Brazilian readers living abroad (Portugal, US, Japan, Germany, Canada) asking for some English version they could share with their gringo coworkers. Stuff like &ldquo;look, I&rsquo;d show this piece to my team, but it&rsquo;s only in Portuguese.&rdquo;</p>
<p>I always said &ldquo;one day I&rsquo;ll translate it.&rdquo; And I never did. Why? Because we&rsquo;re talking hundreds of posts. I spent the last couple of days looking at the numbers: 727 Portuguese <code>index.md</code> files in the repo. Translating by hand, one by one, would take weeks if not months of dedicated work. I was never going to find the stamina for that. And every year that passed, more posts piled onto the queue.</p>
<p>The ironic part is that some blog posts were originally born in English. During 2017 and 2018 I had decided to write English-first, trying to reach an international audience. A whole interview series — the &ldquo;<a href="/en/2008/01/09/chatting-with-hal-fulton/">chatting-with</a>&rdquo; ones with folks like Hal Fulton, Scott Hanselman, Chris Wanstrath (GitHub), Blaine Cook (former Twitter), Adam Jacob (Chef) — were born in English and stayed there. The missing piece was the reverse: take the Portuguese posts and translate them the other way.</p>
<h2>The weekend that paid off 20 years of technical debt<span class="hx:absolute hx:-mt-20" id="the-weekend-that-paid-off-20-years-of-technical-debt"></span>
    <a href="#the-weekend-that-paid-off-20-years-of-technical-debt" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This past Monday I opened Claude Code inside the blog directory. And asked it to translate everything to English. That was literally it.</p>
<p>It kicked off Monday, April 6th, around 6:30pm. I let it run. Went to sleep. Woke up Tuesday, it kept running. Slept again. Wednesday morning it was done. Counting from the first translation commit to the last, it was something like 39 hours of elapsed time. Not continuous, of course — there were nights, lunches, a coffee break or two. In practice, one long working weekend.</p>
<p>The result is sitting in the git repo, in commits anyone can inspect on the <a href="https://github.com/akitaonrails/akitaonrails.github.io"target="_blank" rel="noopener">public blog repository</a>. Scan the log and you can see the cadence: batch of 2008 QCon posts. Batch of 2009 RailsConf. Batch of 2011 Objective-C. All of 2012. The 2015 Elixir series. All of 2016, 2017, 2018. Batch after batch, organized by year and by series. More than 80 commits tagged <code>i18n:</code> or <code>EN translation:</code> between the night of the 6th and the morning of the 8th. By the time I&rsquo;m writing this post, 354 <code>index.en.md</code> files are live against the 727 original <code>index.md</code>. Almost half the blog translated in one shot.</p>
<p>And look, ninety percent of it was smooth sailing. The translation came out good, natural, faithful to my voice in the original — I honestly didn&rsquo;t expect it to work this well. Claude Code respects the tone of the source if you give it solid voice and style guidance, and it respects technical ideas without &ldquo;correcting&rdquo; anything you wrote. Worst case, you review a few paragraphs. Best case, you read the English version and it sounds like you wrote it directly in the other language.</p>
<p>A quick aside on the Claude side of the bill. I&rsquo;m a Max 20x subscriber on Anthropic, which is the heavy-use tier built for people who hammer Claude Code all day. I&rsquo;d never hit the ceiling of that plan before, not even in my most intense vibe coding sessions. This translation weekend was the first time I genuinely blew past the Max 20x limit and kept going into the &ldquo;extra usage&rdquo; mode (Anthropic charges on top when you go over the monthly plan ceiling).</p>
<p>For a sense of the damage, here&rsquo;s my account dashboard this morning:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/20260409_claude_usage_max20x.png" alt="Max 20x plan with 91% of the weekly ‘all models’ quota used up and R$280.88 already spent on extra usage"  loading="lazy" /></p>
<p><strong>91% of the weekly &ldquo;all models&rdquo; quota burned through</strong>, already into the extra-usage mode, R$280.88 (about $50 USD) spent on top of the flat monthly subscription, and there&rsquo;s still a good chunk of the cycle left. It tracks: read the full post, generate the translation, run the humanizer on it, repeat hundreds of times in a row. The token volume is massive. And today, while I&rsquo;m writing this piece, Claude Code keeps hitting me with <code>API Error: Request rejected (429) · Rate limited</code> more and more often, which also tracks: probably some combo of my own plan quota topping out and Anthropic applying general backpressure, because I can&rsquo;t be the only one going nuclear with the tool these days. Fine, whatever. That&rsquo;s the price of using the tool hard when it actually mattered.</p>
<p>The other ten percent was a different story.</p>
<h2>When commercial LLMs say &ldquo;no&rdquo;<span class="hx:absolute hx:-mt-20" id="when-commercial-llms-say-no"></span>
    <a href="#when-commercial-llms-say-no" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Half a dozen older posts flat out refused to translate. Both Claude and GPT, through their APIs, would bounce with a 400 error and a content policy message. I tried multiple times, fresh sessions, clean context. Nothing.</p>
<p>The hypothesis is simple: those posts touched topics that automated content moderation flagged. A 2009 post about Steve Jobs&rsquo;s 2005 Stanford commencement speech (which mentions cancer — Jobs was talking about the terminal diagnosis he&rsquo;d received). A couple of old Ayn Rand chapters I translated years ago about rights of man and argument by intimidation. An anti-Nazi post that ironically got blocked, probably just because the word &ldquo;nazi&rdquo; showed up, even though the context was critical. A post about the money speech from Atlas Shrugged. And a democracy-and-ethics essay that systematically broke every attempt.</p>
<p>The ironic part here is that the only way to get those posts translated was using an open source model. I loaded up <a href="https://qwen.ai"target="_blank" rel="noopener">Qwen 3.5 35B</a> in llama-swap, running locally, no corporate policy filters. The model read them, understood the context, and translated everything without drama. It&rsquo;s the same model I <a href="/en/2026/04/05/testing-llms-open-source-and-commercial-can-anyone-beat-claude-opus/">tested extensively in my last LLM benchmark</a>, and which I rate as one of the best open source models available right now.</p>
<p>So yeah — a Chinese model translated posts that Western models refused. I can&rsquo;t help finding this slightly hilarious. Oh, and of course, I&rsquo;m not allowed to speak ill of China (sarcasm). Commercial LLMs will always have the corporate-policy-and-preemptive-censorship problem applied with a fairly thick ruler. It&rsquo;s a real trade-off for anyone using them in production: you get fluency and reasoning power, you lose control the moment the topic brushes up against whatever the company decided is sensitive.</p>
<h2>The reverse case: 2017-2018 translated back into Portuguese<span class="hx:absolute hx:-mt-20" id="the-reverse-case-2017-2018-translated-back-into-portuguese"></span>
    <a href="#the-reverse-case-2017-2018-translated-back-into-portuguese" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>While I was dialing in Claude Code to generate the English content, I figured I might as well solve the symmetric problem. The posts I had originally written in English during 2017 and 2018, plus the whole &ldquo;chatting-with&rdquo; interview series from 2008, were sitting there without a Portuguese version. Claude Code ran the reverse: read the English, wrote the Portuguese. So if you never read the English originals (since most of my audience is Brazilian anyway), now you have access too. Take a look at the <a href="/en/off-topic/">Off-Topic section</a> to see what showed up that&rsquo;s new.</p>
<p>On top of that, Claude Code also updated my <code>generate_index.rb</code> script so it understands the blog&rsquo;s bilingual structure and generates two separate indexes, one in Portuguese and one in English. The PT/EN toggle in each post&rsquo;s footer shows up automatically whenever an <code>index.en.md</code> sibling exists. All nicely plugged into Hugo, using its native multilingual pattern.</p>
<h2>The bigger point<span class="hx:absolute hx:-mt-20" id="the-bigger-point"></span>
    <a href="#the-bigger-point" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Here&rsquo;s the takeaway I wanted to leave in this anniversary post. Translation at scale, hundreds of articles, your content, in your voice, respecting the tone of the original, used to be an expensive and miserable problem. Now it&rsquo;s a weekend problem. This is already live — you&rsquo;re reading the result. The barrier that existed to reaching audiences outside Brazil became cheap enough that I don&rsquo;t have an excuse anymore.</p>
<p>Alright, so let&rsquo;s wrap the anniversary recap. 20 years. 727 Portuguese posts, built across five different eras of technology. 354 new English posts generated over a weekend. Half the blog is now bilingual. And the rest will follow. What&rsquo;s missing is mostly old ActiveAdmin posts, Rails 2 stuff, and obsolete tips that honestly deserve to be deleted or left untranslated on purpose.</p>
<p>If you&rsquo;ve got a gringo friend who&rsquo;s tired of seeing you post Portuguese links and needs an excuse to send them something of mine — send it. The main AI posts, the <a href="/en/tags/the-m-akita-chronicles/">Chronicles</a>, benchmarks, rants, and a good chunk of the historical archive are already available in English at the same domain, just flip the toggle in the footer. Thank you to everyone who&rsquo;s followed this blog for these twenty years. There are readers here who&rsquo;ve known me since the Blogspot days. You know who you are.</p>
<p>Here&rsquo;s to another year.</p>
]]></content:encoded><category>blogging</category><category>personal</category><category>off-topic</category></item><item><title>My Sim Racing Cockpit - Formula FX1</title><link>https://akitaonrails.github.io/en/2026/04/01/my-sim-racing-cockpit-formula-fx1/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/04/01/my-sim-racing-cockpit-formula-fx1/</guid><pubDate>Wed, 01 Apr 2026 17:00:00 -0300</pubDate><description>&lt;p&gt;I&amp;rsquo;ve loved cars for as long as I can remember. My first real contact with racing games was at the arcades of the 80s and 90s. And when I say &amp;ldquo;real,&amp;rdquo; I mean sitting at a cabinet with a wheel, pedals, a hard plastic seat and the screen wrapping in front of you. &lt;a href="https://en.wikipedia.org/wiki/Out_Run"target="_blank" rel="noopener"&gt;OutRun&lt;/a&gt; (1986), &lt;a href="https://en.wikipedia.org/wiki/Rad_Mobile"target="_blank" rel="noopener"&gt;Rad Mobile&lt;/a&gt; (1991), &lt;a href="https://en.wikipedia.org/wiki/Virtua_Racing"target="_blank" rel="noopener"&gt;Virtua Racing&lt;/a&gt; (1992), &lt;a href="https://en.wikipedia.org/wiki/Ridge_Racer"target="_blank" rel="noopener"&gt;Ridge Racer&lt;/a&gt; (1993), &lt;a href="https://en.wikipedia.org/wiki/Daytona_USA_%28video_game%29"target="_blank" rel="noopener"&gt;Daytona USA&lt;/a&gt; (1994), &lt;a href="https://en.wikipedia.org/wiki/Scud_Race"target="_blank" rel="noopener"&gt;Scud Race&lt;/a&gt; (1996). Every one of those games left a mark on me. But Daytona USA stuck in a different way. That twin cabinet, two machines side by side, the &amp;ldquo;DAYTONAAA, let&amp;rsquo;s go away&amp;rdquo; track blasting through the arcade, the wheel rumbling in your hand. I still remember it.&lt;/p&gt;</description><content:encoded><![CDATA[<p>I&rsquo;ve loved cars for as long as I can remember. My first real contact with racing games was at the arcades of the 80s and 90s. And when I say &ldquo;real,&rdquo; I mean sitting at a cabinet with a wheel, pedals, a hard plastic seat and the screen wrapping in front of you. <a href="https://en.wikipedia.org/wiki/Out_Run"target="_blank" rel="noopener">OutRun</a> (1986), <a href="https://en.wikipedia.org/wiki/Rad_Mobile"target="_blank" rel="noopener">Rad Mobile</a> (1991), <a href="https://en.wikipedia.org/wiki/Virtua_Racing"target="_blank" rel="noopener">Virtua Racing</a> (1992), <a href="https://en.wikipedia.org/wiki/Ridge_Racer"target="_blank" rel="noopener">Ridge Racer</a> (1993), <a href="https://en.wikipedia.org/wiki/Daytona_USA_%28video_game%29"target="_blank" rel="noopener">Daytona USA</a> (1994), <a href="https://en.wikipedia.org/wiki/Scud_Race"target="_blank" rel="noopener">Scud Race</a> (1996). Every one of those games left a mark on me. But Daytona USA stuck in a different way. That twin cabinet, two machines side by side, the &ldquo;DAYTONAAA, let&rsquo;s go away&rdquo; track blasting through the arcade, the wheel rumbling in your hand. I still remember it.</p>
<p><img src="https://upload.wikimedia.org/wikipedia/commons/2/24/DaytonaUSA_arcade_SaoPaulo.jpg" alt="Daytona USA machines at a São Paulo mall — exactly the kind of twin cabinet that’s burned into my memory"  loading="lazy" /></p>
<p>But the game that really got me hooked on the simcade genre was the original <a href="https://en.wikipedia.org/wiki/Gran_Turismo_%28video_game%29"target="_blank" rel="noopener">Gran Turismo</a>, in 1997, on the PlayStation 1. &ldquo;The Real Driving Simulator&rdquo; on the cover. I played that game obsessively. Around the same time I was watching the <a href="https://en.wikipedia.org/wiki/Initial_D"target="_blank" rel="noopener">Initial D</a> anime, which premiered in 1998 in Japan. I bought every manga volume and read all of it from start to finish. The story of Takumi Fujiwara going down Mount Akina at dawn delivering tofu in his father&rsquo;s AE86 is, to me, one of the best motorsport stories ever told in any medium.</p>
<p>I still follow Shuichi Shigeno&rsquo;s work today. After Initial D came <a href="https://kodansha.us/series/mf-ghost/"target="_blank" rel="noopener">MF Ghost</a> (2017-2025), set in the same universe but in a near future where combustion cars have become museum pieces. And now, since July 2025, I&rsquo;m reading <a href="https://kmanga.kodansha.com/title/10664/episode/360584"target="_blank" rel="noopener">Subaru and Subaru</a>, the direct sequel that ties the Initial D and MF Ghost universes together with two protagonists named Subaru — one from Gunma, one from Kanagawa — competing in a new racing series. It&rsquo;s Shigeno at his best.</p>
<p><a href="https://kmanga.kodansha.com/title/10664/episode/360584"target="_blank" rel="noopener"><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/subaru-x-subaru-cover.png" alt="Subaru and Subaru — Shigeno’s new manga, the direct sequel to Initial D and MF Ghost"  loading="lazy" /></a></p>
<p>Two years ago I traveled to Japan with my girlfriend and made a point of going to <a href="https://en.wikipedia.org/wiki/Daikoku_Parking_Area"target="_blank" rel="noopener">Daikoku PA</a>, the famous parking area on the Shuto Expressway in Yokohama where the JDM culture concentrates. As an old fan of <a href="https://store.steampowered.com/app/2634950/Tokyo_Xtreme_Racer/"target="_blank" rel="noopener">Tokyo Xtreme Racer</a>, by Genki, I needed to see Daikoku with my own eyes at least once. And it didn&rsquo;t disappoint. Instead of renting a car, we booked a tour with a local guide in his prepped Nissan GT-R. Better that way. On the drive there he explained the history of the Wangan, how the scene works, what&rsquo;s YouTube exaggeration and what&rsquo;s real. When we got there on a Friday night and I saw the whole thing in person — Skyline R34, RX-7, Supra, GT-R, tuned kei trucks, insane bosozoku — the feeling was strange in the best possible way. It looked like Tokyo Xtreme Racer, except with the smell of fuel in the air and the sound of real exhaust pipes.</p>
<p>And there&rsquo;s another detail: I&rsquo;m playing the new <a href="https://store.steampowered.com/app/2634950/Tokyo_Xtreme_Racer/"target="_blank" rel="noopener">Tokyo Xtreme Racer</a> reboot on PC, and it&rsquo;s exactly the kind of game that understands its own audience. Strong single-player campaign, addictive progression, the right vibe, and none of the loot box nonsense. I&rsquo;d recommend it without hesitation. For the same reason, I&rsquo;m also really looking forward to <a href="https://forza.net/forzahorizon6"target="_blank" rel="noopener">Forza Horizon 6</a>, which this time is going to be set in Japan. I&rsquo;ve already pre-ordered it and I can&rsquo;t wait to play it on the new cockpit.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/daikoku---nissan.jpg" alt="At Daikoku PA with a modified GT-R"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/daikoku---trueno.jpg" alt="With an AE86 Trueno at Daikoku PA — Takumi’s car"  loading="lazy" /></p>
<h2>Driving for real<span class="hx:absolute hx:-mt-20" id="driving-for-real"></span>
    <a href="#driving-for-real" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Now that I&rsquo;m semi-retired, I&rsquo;ve had the chance to take my Mercedes to track days. I&rsquo;ve driven at <a href="https://en.wikipedia.org/wiki/Aut%C3%B3dromo_Jos%C3%A9_Carlos_Pace"target="_blank" rel="noopener">Autódromo de Interlagos</a> (the Autódromo José Carlos Pace), the 4.309 km circuit in São Paulo that&rsquo;s been hosting the Brazilian F1 GP since 1973, famous for the S do Senna corner complex and the circuit&rsquo;s wild elevation changes. I&rsquo;ve also driven at <a href="https://www.velocittapark.com.br/"target="_blank" rel="noopener">Autódromo Velocitta</a>, a modern 3.443 km circuit opened in 2014 in Mogi Guaçu in the interior of São Paulo, which hosts Stock Car Brasil and Porsche Cup.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/velocitta.jpg" alt="At Velocitta with my Mercedes during an AMG track day"  loading="lazy" /></p>
<p>In Las Vegas I&rsquo;ve driven supercars on those track-day experiences. And when I traveled with my girlfriend to Gramado, in Rio Grande do Sul, we went to <a href="https://supercarros.cc/"target="_blank" rel="noopener">Super Carros</a>, which is on Av. das Hortênsias 4635. They have a 2,400 m² hangar with more than 50 cars — Ferraris, Lamborghinis, Porsches, GT-Rs, Corvettes, American muscle cars. You pick a car, head out with an instructor, and drive a roughly 17 km route between Gramado and Canela. I took out a Nissan GT-R and a Ferrari California.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/gramado---gtr.jpg" alt="With a GT-R in Gramado"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/gramado---ferrari.jpg" alt="With a Ferrari California in Gramado"  loading="lazy" /></p>
<p>Three years ago I also went to Abu Dhabi with my girlfriend and we went to Ferrari World, which has some of the best racing simulators I&rsquo;ve ever tried. Hydraulic platform with 6 degrees of freedom, F1 cockpit, the works. I&rsquo;ve always loved testing simulators wherever I go.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/ferrari-park.jpg" alt="F1 simulator with a hydraulic platform at Ferrari World in Abu Dhabi"  loading="lazy" /></p>
<p>But driving real cars on real tracks is a very expensive hobby. Tires, fuel, insurance, maintenance, registration. And more important: I&rsquo;m an introvert. I prefer being alone. My simulator cockpit is perfect for when I want to drive without having to deal with anyone. That&rsquo;s why I love rally so much — it&rsquo;s me, the virtual co-driver, and the road. Nothing else.</p>
<h2>The games I play<span class="hx:absolute hx:-mt-20" id="the-games-i-play"></span>
    <a href="#the-games-i-play" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>I know most people who build a cockpit like this do it to play serious sims — iRacing, Assetto Corsa Competizione, Automobilista 2. I respect that, but it isn&rsquo;t my thing. I don&rsquo;t like playing online with other people. I have zero intention of starting a live streaming career. This is purely for my own enjoyment.</p>
<p>These days I play Gran Turismo 7 on the PS5, <a href="https://store.steampowered.com/app/2440510/Forza_Motorsport/"target="_blank" rel="noopener">Forza Motorsport</a> (the 8, from 2023) on PC, but where I have the most fun is in rally games: <a href="https://store.steampowered.com/app/1849250/EA_SPORTS_WRC/"target="_blank" rel="noopener">EA SPORTS WRC</a>, <a href="https://store.steampowered.com/app/1462810/WRC_10_FIA_World_Rally_Championship/"target="_blank" rel="noopener">WRC 10</a> and <a href="https://store.steampowered.com/app/690790/DiRT_Rally_20/"target="_blank" rel="noopener">DiRT Rally 2.0</a>. My first experience with Forza was on the Xbox One with Forza Motorsport 5 and then Forza Horizon 4, which kept me hooked for hundreds of hours.</p>
<p>And I have a huge soft spot for retro games. The original Colin McRae Rally from 1998 on the PS1 was my first rally game. But my favorite of all time is Colin McRae Rally 2.0 (2000), also on the PS1. I recently played through the entire campaign again on the PC version — you can find repacks that run in high resolution and widescreen, much better than the original PlayStation versions. I&rsquo;d recommend that for any of the titles in the series.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/colin-mcrae-rally-2-gameplay.jpg" alt="Colin McRae Rally 2.0 running in widescreen on PC — snow in Sweden with the Ford Focus"  loading="lazy" /></p>
<p>After that came Colin McRae 3 (2002), Colin McRae Rally 04 (2003) and Colin McRae 2005 (2004). Other arcades I revisit often: OutRun 2 SP (2004) and OutRun 2006: Coast 2 Coast (2006) — the best OutRun ever made, in my opinion.</p>
<p>But my game of the year, by a long shot, is <a href="https://store.steampowered.com/app/3218630/Super_Woden_Rally_Edge/"target="_blank" rel="noopener">Super Woden: Rally Edge</a>. An indie made by a solo developer (ViJuDa, from Spain) that launched in January 2026 for less than R$ 60. Eight countries, more than 80 cars, a career mode, local split-screen multiplayer for up to 4 players, online leaderboards. The behind-the-car camera instead of the top-down view of the previous Super Woden GP made all the difference. 96% positive reviews on Steam with more than 1,300 ratings. It&rsquo;s the kind of game that proves you don&rsquo;t need a million-dollar budget to make something amazing.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/super-woden-rally-edge.jpg" alt="Super Woden: Rally Edge — indie made by a solo dev that competes with the big ones"  loading="lazy" /></p>
<h2>The evolution of my wheel setup<span class="hx:absolute hx:-mt-20" id="the-evolution-of-my-wheel-setup"></span>
    <a href="#the-evolution-of-my-wheel-setup" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><h3>Logitech G29 era (~2015-2021)<span class="hx:absolute hx:-mt-20" id="logitech-g29-era-2015-2021"></span>
    <a href="#logitech-g29-era-2015-2021" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I always wanted a racing wheel. I started over 15 years ago with something equivalent to Logitech&rsquo;s entry-level wheel, a G29. The G29 is a fine wheel to start with — gear-driven force feedback, pedals with a clutch, 900 degrees of rotation. But its force feedback is noisy and a bit crude. You can feel the gears turning.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/logitech-g29-and-myself.jpeg" alt="Me playing with the Logitech G29 on the couch — the beginning of it all"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/logitech-g29-with-support.jpg" alt="The G29 with a simple stand in front of the couch"  loading="lazy" /></p>
<h3>Thrustmaster T300RS + SXT V2 stand era (~2021-2024)<span class="hx:absolute hx:-mt-20" id="thrustmaster-t300rs--sxt-v2-stand-era-2021-2024"></span>
    <a href="#thrustmaster-t300rs--sxt-v2-stand-era-2021-2024" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Around 2021 I upgraded to the <a href="https://www.thrustmaster.com/products/t300rs-gt-edition/"target="_blank" rel="noopener">Thrustmaster T300RS</a>, a belt-driven wheel that&rsquo;s a huge jump up from the Logitech. The force feedback is much smoother and more precise. And I bought the <a href="https://loja.cockpitextremeracing.com.br/products/suporte-para-volantes-sxt-v2?variant=51111119454489"target="_blank" rel="noopener">Extreme Sim Racing SXT V2</a> stand, which is much sturdier than those generic desk clamps.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/thrustmaster-with-support.jpg" alt="The Thrustmaster T300RS mounted on the SXT V2 stand"  loading="lazy" /></p>
<p>First I set it up in front of my desktop PC, which at the time had an RTX 3090. It worked, but it was a hassle to keep mounting and unmounting the stand and the cables every time I wanted to play.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/thrustmaster-with-pc.jpg" alt="The Thrustmaster in front of the desktop PC — functional but annoying"  loading="lazy" /></p>
<p>Then I built a setup with a long fiber-optic HDMI cable to connect my 60&quot; TV to the PC at the back of the room. I moved the stand in front of the couch. Less of a hassle, but I still had to take it down whenever I wanted to watch a movie with my girlfriend.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/thrustmaster-with-big-tv.jpg" alt="Setup with the big TV — better, but still a hassle"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/thrustmaster-in-the-living-room.jpg" alt="The stand in the living room — always in the way"  loading="lazy" /></p>
<p>Around 2024 or 2025 I swapped my couch for one of those VIP cinema couches from <a href="https://www.starseat.com.br/sofa-cinema-sofa-cinema"target="_blank" rel="noopener">Star Seat</a>, which reclines and the whole nine yards. The problem: it was way taller than the previous couch. I had to do all kinds of workarounds to make the stand work at that height. I even 3D-printed mounts and sent them to PCBWay to machine steel plates so I could attach big wheels under the stand and gain a few centimeters of height. But that left the setup way too wobbly to drive comfortably.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/fanatec-support-sofa-too-high.jpg" alt="The problem: VIP couch too tall for the stand — total kludge"  loading="lazy" /></p>
<h3>Fanatec CSL DD + Direct Drive era (~2024-2025)<span class="hx:absolute hx:-mt-20" id="fanatec-csl-dd--direct-drive-era-2024-2025"></span>
    <a href="#fanatec-csl-dd--direct-drive-era-2024-2025" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In the meantime I gave the T300 to my brother and upgraded to a <a href="https://fanatec.com/eu-en/racing-wheels-wheel-bases/racing-wheels/gran-turismo-dd-pro-5-nm-wheel-base"target="_blank" rel="noopener">Fanatec CSL DD Gran Turismo Edition</a>. The CSL DD&rsquo;s direct drive motor delivers 5 Nm of torque at the base, but the Gran Turismo DD Pro kit comes with the Boost Kit 180 that brings it up to a sustained 8 Nm with no active cooling. Direct drive means there&rsquo;s no gear or belt between the motor and the wheel — the motor&rsquo;s shaft IS the wheel&rsquo;s shaft. The difference is absurd. The T300 was already great, much better than the Logitech. But the Fanatec is on another level. You feel every asphalt texture, every bump, every incipient slide. There&rsquo;s no going back once you try it.</p>
<p>I bought it together with the <a href="https://fanatec.com/eu-en/pedals/csl-pedals"target="_blank" rel="noopener">CSL Pedals with Load Cell</a> kit, which measures pressure on the brake instead of displacement. Makes all the difference in braking — you learn to modulate by foot pressure, not by how far the pedal moves. Way more natural.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/fanatec-direct-drive-close-up.jpg" alt="Close-up of the Fanatec CSL DD direct drive motor"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/fanatec-csl-pedals.jpg" alt="Fanatec CSL Pedals with Load Cell Kit"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/fanatec---shifter.jpg" alt="The Fanatec shifter — manual H-pattern with chrome knob"  loading="lazy" /></p>
<p>I also wanted to try the H-pattern manual shifter with the <a href="https://fanatec.com/us/en/p/add-ons/crd-9040002-ww/clubsport-shifter-sq"target="_blank" rel="noopener">ClubSport Shifter SQ V1.5</a> from Fanatec and a separate handbrake. It&rsquo;s fun to try out old cars with a clutch and an H-pattern, but in practice I never adapted. The SXT V2 stand was already shaking a lot with the direct drive, and using the shifter on that unstable setup was frustrating. And I know there are people who want to do heel-toe, but in the simulator I prefer to keep my left foot on the brake and my right on the gas and modulate both at the same time. Works better for me. Now that I have the McLaren wheel with the analog handbrake and clutch paddles right on the wheel, the H-pattern shifter and the external handbrake have been retired. For rally, an analog handbrake on the wheel is much more natural.</p>
<p>I also bought the PS5 with Gran Turismo 7 around this time. I put on the <a href="https://dbrand.com/shop/ps5"target="_blank" rel="noopener">dbrand Darkplates</a> matte black faceplates to replace the original white plates — it looks much better and more discreet.</p>
<p>But the setup was still the SXT V2 stand in front of the VIP couch. The same kludge. The same wobble. I obviously wasn&rsquo;t going to give up the cinema couch. The situation became unsustainable.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/fanatec-with-support.jpg" alt="The Fanatec CSL DD on the SXT V2 stand — too powerful for the stand to handle"  loading="lazy" /></p>
<h2>The computer and the hardware setup<span class="hx:absolute hx:-mt-20" id="the-computer-and-the-hardware-setup"></span>
    <a href="#the-computer-and-the-hardware-setup" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>A note on my gaming hardware. I bought a <a href="https://www.minisforum.com/products/UX790-Pro.html"target="_blank" rel="noopener">Minisforum UX790 Pro</a> to be my dedicated Steam machine. It&rsquo;s a mini-PC with an Intel Core Ultra 9 285H processor, fits in the palm of your hand. Together I bought the <a href="https://www.minisforum.com/products/minisforum-deg1-egpu-dock"target="_blank" rel="noopener">Minisforum DEG1</a>, an external GPU dock that connects via OCuLink (PCIe 4.0 x4, 64 GT/s). It&rsquo;s an open design — basically a board with a PCIe x16 slot and room for an ATX or SFX power supply. There&rsquo;s no card size limit, so an RTX 4090 fits comfortably. The performance loss compared to a native PCIe slot is minimal. I put the RTX 4090 in it. The 4090 came from my desktop — at the start of 2025 I went to Miami and took the chance to buy an RTX 5090 because I was using more and more local AI and LLMs. I gave my old 3090 to my girlfriend to use for video editing. The 4090 went into the mini-PC.</p>
<p>So my gaming setup today is: Minisforum UX790 Pro + eGPU with RTX 4090 for Steam and PC games, and a PlayStation 5 with matte black Darkplates for Gran Turismo 7 and exclusives.</p>
<h2>The cockpit: Formula FX1<span class="hx:absolute hx:-mt-20" id="the-cockpit-formula-fx1"></span>
    <a href="#the-cockpit-formula-fx1" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To round out the setup I also needed a decent monitor. I was already used to my 80&quot; Samsung OLED TV in the living room and didn&rsquo;t want to downgrade picture quality. So I invested in the <a href="https://www.samsung.com/br/monitors/gaming/odyssey-oled-g8-g81sf-32-inch-240hz-oled-uhd-ls32fg810snxzd/"target="_blank" rel="noopener">Samsung Odyssey OLED G8 32&quot;</a>. It&rsquo;s a 4K (3840x2160) OLED monitor with a 240 Hz refresh rate, 0.03 ms response time (GTG), HDR True Black 400, HDR10+, 99% DCI-P3 coverage, 1,000,000:1 contrast, and FreeSync Premium Pro. It has 2 HDMI 2.1 inputs and 1 DisplayPort 1.4.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/closed-delivery-box.jpg" alt="The box of the Samsung Odyssey OLED G8 32&#34; when it arrived"  loading="lazy" /></p>
<p>In practice: the colors pop, black is real black (it&rsquo;s OLED, no backlight), and with the RTX 4090 I run most games at 4K and 120 fps with no problem. On lighter titles like Super Woden: Rally Edge, it easily hits 240 Hz. The smoothness is absurd. For a cockpit where you&rsquo;re 60-70 cm from the screen, 32&quot; OLED in 4K is the sweet spot. Bigger and you start to see pixels. Smaller and you lose the immersion.</p>
<p>In January 2026, after years of kludges, I finally ordered a dedicated cockpit. I researched a lot. I considered the <a href="https://loja.cockpitextremeracing.com.br/products/cockpit-ax160-horizontal?variant=52008751431961"target="_blank" rel="noopener">Cockpit AX160</a>, made of aluminum profile and very modular, and the <a href="https://loja.cockpitextremeracing.com.br/products/cockpit-4-0-horizontal?variant=52004294852889"target="_blank" rel="noopener">Cockpit 4.0</a>, which is the more traditional tubular steel kind. But neither was available at the time of purchase. And then I found the <a href="https://loja.cockpitextremeracing.com.br/products/cockpit-formula-fx1-preto-e-verde?variant=51700876509465"target="_blank" rel="noopener">Formula FX1 in black and green</a> from Extreme Racing — Petronas colors, F1-styled.</p>
<p>The FX1 is very different from traditional cockpits. The whole structure is welded thick steel tubing. When I say it doesn&rsquo;t shake, I mean it doesn&rsquo;t shake at all. Zero wobble. It&rsquo;s a brutal difference compared to a stand in front of the couch. The driving position is reclined, F1-style — your feet are at the same height or higher than your hips. You&rsquo;d think it would be uncomfortable, but it isn&rsquo;t. You can sit there for hours without complaining. It comes with a padded adjustable seat, an articulating monitor mount, a tilt-adjustable pedal mount, and a height-adjustable wheel mount.</p>
<p>I had to wait about a month for delivery. In the meantime, as anyone who follows my blog knows, I dove into a 16-hour-a-day marathon testing the new AI agents from Anthropic and OpenAI — check the <a href="/en/en/tags/vibe-coding/">#vibecoding</a> and <a href="/en/en/tags/ai/">#agents</a> tags to see everything I built. After about 30 days of that insane marathon, my lower back gave out and I started developing what looks like a herniated disc. I had to see a doctor and take heavy anti-inflammatories.</p>
<p>And right that week, the cockpit decided to arrive.</p>
<h3>The build<span class="hx:absolute hx:-mt-20" id="the-build"></span>
    <a href="#the-build" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I was in absurd pain, but I built the cockpit anyway. It took an entire day to unbox and assemble the heavy steel pieces with my back screaming, but I did it.</p>
<p>The official assembly video I followed:</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/WnocqqhmZas"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/first-pieces-mounted.jpg" alt="First pieces mounted — the base and the seat structure"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/mostly-mounted.jpg" alt="Almost complete structure — seat, wheel mount, pedals"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/mostly-mounted-from-front.jpg" alt="Front view of the almost-finished structure"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/almost-mounted,-with-monitor.jpg" alt="Almost complete assembly with the monitor mount"  loading="lazy" /></p>
<h3>The McLaren GT3 V2 wheel<span class="hx:absolute hx:-mt-20" id="the-mclaren-gt3-v2-wheel"></span>
    <a href="#the-mclaren-gt3-v2-wheel" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>After assembling the cockpit, I decided that the standard wheel that comes with the CSL GT kit wasn&rsquo;t enough. I upgraded to the <a href="https://www.racingwheelbrasil.com.br/produtos/volante-fanatec-csl-elite-mclaren-gt3-v2-pc-xbox-ps4-ps5-ready/"target="_blank" rel="noopener">Fanatec CSL Elite McLaren GT3 V2</a> (~R$ 4,990). It&rsquo;s a 1:1 scale replica of the McLaren GT3 wheel, with carbon fiber, an OLED display, and compatibility with PC, Xbox, PS4 and PS5.</p>
<p>What I like most about it: it has the normal shift paddles behind it (shift up/down), but it also has two additional analog paddles that can be configured in four different modes. In mode B, which is what I use, the left paddle works as an analog handbrake and the right one as an analog clutch. That&rsquo;s perfect for rally — I can pull the handbrake mid-corner without taking my hand off the wheel. It also has two 2-position toggles, two 12-position rotaries, 7 standard buttons with interchangeable caps, and Fanatec&rsquo;s 7-direction FunkySwitch. It&rsquo;s a complete racing controller.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/mclaren-wheel.jpg" alt="The McLaren GT3 V2 wheel mounted on the cockpit — carbon fiber and OLED display"  loading="lazy" /></p>
<h2>The final setup<span class="hx:absolute hx:-mt-20" id="the-final-setup"></span>
    <a href="#the-final-setup" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The cockpit ended up in a corner of my bedroom, between the manga shelves (you can spot Akira, Initial D, and 500-something other volumes in the background). I mounted the mini-PC and the PS5 on the cockpit&rsquo;s side structure, together with the eGPU and the RTX 4090. Everything stays permanently connected. That&rsquo;s what makes the difference: I no longer have to set anything up or take it down. I sit, turn it on, and I&rsquo;m driving in 30 seconds.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/fully-mounted-from-side.jpg" alt="Side view of the complete cockpit — between the manga shelves"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/all-consoles-from-front.jpg" alt="The consoles mounted on the structure: PS5 with Darkplates, Minisforum UX790 Pro, eGPU with RTX 4090"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/close-up-of-the-consoles-from-front.jpg" alt="Close-up of the consoles and cabling"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/sitting-angle.jpg" alt="The driver’s perspective — this is what I see when I sit down"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/monitor-on-view-from-front.jpg" alt="PS5 showing the game list — Gran Turismo 7 at the top"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/another-fully-mounted-shot.jpg" alt="The complete cockpit seen from behind"  loading="lazy" /></p>
<div style="max-width: 100%; margin: 1em 0;">
  <video controls playsinline style="width: 100%; border-radius: 8px;">
    <source src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/from-front-gran-turismo-h264.mp4" type="video/mp4">
  </video>
  <em>Gran Turismo 7 running on the final cockpit</em>
</div>
<h2>The audio system<span class="hx:absolute hx:-mt-20" id="the-audio-system"></span>
    <a href="#the-audio-system" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To round out the setup I needed dedicated audio. I didn&rsquo;t want to use the monitor&rsquo;s audio (terrible) and I didn&rsquo;t want to be on a headset all the time. The fix was to build a separate audio system with HDMI audio extraction.</p>
<p>The centerpiece is an <a href="https://www.amazon.com.br/dp/B00MNGIP2Y"target="_blank" rel="noopener">HDMI 2.1 switcher from OREI</a> with audio extraction. It has 2 inputs and 1 HDMI output, supports 4K at 120Hz (48 Gbps of bandwidth), and extracts the audio through optical TOSLINK and 3.5mm. I connect the HDMI output of the RTX 4090 to one input and the PS5 to the other. Video goes to the monitor. Audio goes out through the optical port.</p>
<p>The optical audio goes to an <a href="https://www.mercadolivre.com.br/amplificador-de-potncia-aiyima-d03-bluetooth-50-150-watts-cor-preto/p/MLB46172770"target="_blank" rel="noopener">Aiyima D03 amplifier</a>, a compact 2.1 channel amp with 150W per channel, integrated DAC (PCM1808 chip), and Bluetooth 5.0 with aptX HD. It has optical, coaxial, USB, RCA and Bluetooth inputs. It even has a dedicated subwoofer output for when I get around to adding one. It uses Texas Instruments&rsquo; TAS5624 amplifier chip and has bass and treble control through the remote. For a cockpit setup where you&rsquo;re 1 meter from the speakers, 150W is more than enough.</p>
<p>In practice, I keep the amp at 50% and Windows volume at 50%, and that&rsquo;s already loud as hell. Which is to say: this isn&rsquo;t a &ldquo;good enough&rdquo; little system. It&rsquo;s set up to actually go loud if I want.</p>
<p>The speakers are <a href="https://edifier.com.br/caixa-de-som-passiva-p12-madeira-edifier.html"target="_blank" rel="noopener">Edifier P12</a>, passive, with a 4-inch woofer and a 19mm tweeter. Frequency response from 55Hz to 20kHz, 6 ohm impedance, 20W RMS each. The MDF cabinet with wood finish has a rear bass-reflex port that helps the lows. For passive speakers this size, they deliver well. The mid-range is clean and the highs don&rsquo;t distort even at high volume.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/audio-equipment.jpg" alt="The audio gear — Aiyima D03 box and Edifier P12"  loading="lazy" /></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/audio-speakers-next-to-other-stuff.jpg" alt="The Edifier P12s positioned on the shelves next to the cockpit, alongside the Akira collection and car miniatures"  loading="lazy" /></p>
<p>The setup logic is: HDMI switcher handles the switching between PS5 and PC, extracts audio to optical, the amp converts and amplifies, and the passive speakers deliver the sound. All without having to touch the monitor or swap cables. I press a button on the switcher and switch consoles.</p>
<p>When I want to play without bothering anyone, I plug my <a href="https://www.mercadolivre.com.br/fones-de-ouvido-meze-audio-109-pro-com-fio-de-madeira-com-en/p/MLB42456685"target="_blank" rel="noopener">Meze 109 Pro</a> directly into the 3.5mm output of the HDMI switcher. The Meze 109 Pro is an open-back headphone with 50mm dynamic drivers, 40 ohm impedance, 112 dB SPL/1mW sensitivity, and 5Hz to 30kHz response. The ear cups are walnut wood with handcrafted finish. It&rsquo;s an audiophile headphone that works perfectly without a dedicated amplifier thanks to the low impedance. The sound is warm, with full bass and rich mids. You can hear every detail of the engines.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/meze-headset.jpg" alt="Meze 109 Pro — walnut wood, audiophile sound"  loading="lazy" /></p>
<p>I haven&rsquo;t decided about a subwoofer yet, but it&rsquo;ll be my next upgrade. A dedicated sub is going to add that low-end weight that makes you feel the engine in your chest.</p>
<h2>The verdict<span class="hx:absolute hx:-mt-20" id="the-verdict"></span>
    <a href="#the-verdict" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The couch with a stand works. The PC desk with a stand works. But neither comes anywhere close to a dedicated cockpit. The FX1&rsquo;s steel structure doesn&rsquo;t move a millimeter, even with the Fanatec direct drive at max torque. The reclined F1 position is comfortable for sessions of hours. The load cell pedals stay firm on the base. The monitor is exactly at the right height and distance. And best of all: it&rsquo;s always ready. I don&rsquo;t need to assemble anything, take anything down, run cables, none of it. I sit and I drive.</p>
<p>For anyone who&rsquo;s wondering whether it&rsquo;s worth investing in a dedicated cockpit instead of staying with a desk or couch stand: it is. If you already have a direct drive wheel, the cockpit is the missing piece. I spent years thinking &ldquo;this is fine&rdquo; with the stand on the couch. It wasn&rsquo;t fine. The difference in driveability is something else entirely. And for my case — introvert, single-player only, simcade — I couldn&rsquo;t have built it any sooner. To be honest, I think I&rsquo;ve finally landed on the simulator setup that&rsquo;s perfect for my taste.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/monitor-on-view.jpg" alt="The monitor on with the driver’s view"  loading="lazy" /></p>
<div style="max-width: 100%; margin: 1em 0;">
  <video controls playsinline style="width: 100%; border-radius: 8px;">
    <source src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/01/cockpit/video-testing-h264.mp4" type="video/mp4">
  </video>
  <em>Me driving on the final cockpit</em>
</div>
<h2>Shopping list: how much it all cost<span class="hx:absolute hx:-mt-20" id="shopping-list-how-much-it-all-cost"></span>
    <a href="#shopping-list-how-much-it-all-cost" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Here&rsquo;s the consolidated list of everything in my current setup, with approximate prices (some were bought in dollars and converted to reais at the time&rsquo;s exchange rate):</p>
<table>
  <thead>
      <tr>
          <th>Item</th>
          <th style="text-align: right">Estimated Price (R$)</th>
          <th>Link</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="https://loja.cockpitextremeracing.com.br/products/cockpit-formula-fx1-preto-e-verde?variant=51700876509465"target="_blank" rel="noopener">Cockpit Formula FX1 Black and Green</a></td>
          <td style="text-align: right">~6,290</td>
          <td>Extreme Racing</td>
      </tr>
      <tr>
          <td><a href="https://fanatec.com/us/en/p/sim-racing-bundles/crd-9020007-8nm-us/gran-turismo-dd-pro-8nm-qr2l-us"target="_blank" rel="noopener">Fanatec Gran Turismo DD Pro 8Nm (motor + wheel + pedals + Boost Kit)</a></td>
          <td style="text-align: right">~9,590</td>
          <td>Fanatec / Racing Wheel Brasil</td>
      </tr>
      <tr>
          <td><a href="https://fanatec.com/us/en/p/pedals/csl_p_lc/csl_pedals_lc"target="_blank" rel="noopener">Fanatec CSL Pedals LC (with Load Cell)</a></td>
          <td style="text-align: right">~1,500</td>
          <td>Fanatec</td>
      </tr>
      <tr>
          <td><a href="https://www.racingwheelbrasil.com.br/produtos/volante-fanatec-csl-elite-mclaren-gt3-v2-pc-xbox-ps4-ps5-ready/"target="_blank" rel="noopener">Fanatec CSL Elite McLaren GT3 V2</a></td>
          <td style="text-align: right">~4,990</td>
          <td>Racing Wheel Brasil</td>
      </tr>
      <tr>
          <td><a href="https://fanatec.com/us/en/p/add-ons/crd-9040002-ww/clubsport-shifter-sq"target="_blank" rel="noopener">Fanatec ClubSport Shifter SQ V1.5</a></td>
          <td style="text-align: right">~2,500</td>
          <td>Fanatec</td>
      </tr>
      <tr>
          <td><a href="https://www.minisforum.com/products/UX790-Pro.html"target="_blank" rel="noopener">Minisforum UX790 Pro</a></td>
          <td style="text-align: right">~5,000</td>
          <td>Minisforum</td>
      </tr>
      <tr>
          <td><a href="https://www.minisforum.com/products/minisforum-deg1-egpu-dock"target="_blank" rel="noopener">Minisforum DEG1 eGPU Dock</a> + RTX 4090</td>
          <td style="text-align: right">~12,000</td>
          <td>Minisforum / bought separately</td>
      </tr>
      <tr>
          <td>PlayStation 5 + <a href="https://dbrand.com/shop/limited-edition/ps5"target="_blank" rel="noopener">dbrand Darkplates</a></td>
          <td style="text-align: right">~4,500</td>
          <td>Sony / dbrand</td>
      </tr>
      <tr>
          <td><a href="https://www.samsung.com/br/monitors/gaming/odyssey-oled-g8-g81sf-32-inch-240hz-oled-uhd-ls32fg810snxzd/"target="_blank" rel="noopener">Samsung Odyssey OLED G8 32&quot;</a></td>
          <td style="text-align: right">~2,500</td>
          <td>Samsung</td>
      </tr>
      <tr>
          <td><a href="https://www.amazon.com.br/dp/B00MNGIP2Y"target="_blank" rel="noopener">OREI BK-21A HDMI 2.1 Switcher 2x1 with audio extraction</a></td>
          <td style="text-align: right">~450</td>
          <td>Amazon</td>
      </tr>
      <tr>
          <td><a href="https://www.mercadolivre.com.br/amplificador-de-potncia-aiyima-d03-bluetooth-50-150-watts-cor-preto/p/MLB46172770"target="_blank" rel="noopener">Aiyima D03 Amplifier</a></td>
          <td style="text-align: right">~900</td>
          <td>Mercado Livre</td>
      </tr>
      <tr>
          <td><a href="https://edifier.com.br/caixa-de-som-passiva-p12-madeira-edifier.html"target="_blank" rel="noopener">Edifier P12 (pair)</a></td>
          <td style="text-align: right">~799</td>
          <td>Edifier</td>
      </tr>
      <tr>
          <td><a href="https://www.mercadolivre.com.br/fones-de-ouvido-meze-audio-109-pro-com-fio-de-madeira-com-en/p/MLB42456685"target="_blank" rel="noopener">Meze 109 Pro</a></td>
          <td style="text-align: right">~5,390</td>
          <td>Mercado Livre / Heinrich Audio</td>
      </tr>
      <tr>
          <td>Cables (HDMI 2.1, optical, 3.5mm, power)</td>
          <td style="text-align: right">~300</td>
          <td>Various</td>
      </tr>
      <tr>
          <td><strong>TOTAL ESTIMATED</strong></td>
          <td style="text-align: right"><strong>~56,709</strong></td>
          <td></td>
      </tr>
  </tbody>
</table>
<p>Yes, almost R$ 57k is a lot of money. I worked like a dog for decades. Now that I&rsquo;ve managed to retire honestly, my family is well taken care of, I have no debts, and I can finally give myself something I always wanted as a kid but couldn&rsquo;t afford. When I sat at those OutRun and Daytona USA cabinets at the arcade, I dreamed of having something like this at home. It took 30-something years, but I got there.</p>
<p>And if you add up the years of kludges, stands that didn&rsquo;t work, 15-meter HDMI cables, 3D prints, machined steel plates, and the frustration of mounting and unmounting everything — a dedicated cockpit saves your sanity. Unlike a PC that depreciates fast, a steel cockpit lasts decades.</p>
]]></content:encoded><category>gaming</category><category>hardware</category><category>off-topic</category></item><item><title>37 Days of Vibe Coding Immersion: Conclusions on Business Models</title><link>https://akitaonrails.github.io/en/2026/03/05/37-days-of-vibe-coding-immersion-conclusions-on-business-models/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/03/05/37-days-of-vibe-coding-immersion-conclusions-on-business-models/</guid><pubDate>Thu, 05 Mar 2026 14:00:00 -0300</pubDate><description>&lt;p&gt;For the last 37 days I locked myself into a vibe coding immersion. The goal was simple: actually understand what the current generation of LLMs and coding agents can do. Not on a weekend toy project, but building real things, with production deploys, users, and the maintenance pain that comes along.&lt;/p&gt;
&lt;p&gt;The result was 653 commits, ~144K lines of code across 8 projects published on GitHub, and a series of articles documenting each one. If you&amp;rsquo;ve been following along, you&amp;rsquo;ve already read the post-mortems. If you haven&amp;rsquo;t, here&amp;rsquo;s the index:&lt;/p&gt;</description><content:encoded><![CDATA[<p>For the last 37 days I locked myself into a vibe coding immersion. The goal was simple: actually understand what the current generation of LLMs and coding agents can do. Not on a weekend toy project, but building real things, with production deploys, users, and the maintenance pain that comes along.</p>
<p>The result was 653 commits, ~144K lines of code across 8 projects published on GitHub, and a series of articles documenting each one. If you&rsquo;ve been following along, you&rsquo;ve already read the post-mortems. If you haven&rsquo;t, here&rsquo;s the index:</p>
<h2>The articles<span class="hx:absolute hx:-mt-20" id="the-articles"></span>
    <a href="#the-articles" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><ul>
<li><a href="/en/2026/01/28/vibe-code-built-a-little-app-fully-with-glm-4-7-tv-clipboard/">Vibe Code: I built a small app 100% with GLM 4.7 (TV Clipboard)</a></li>
<li><a href="/en/2026/01/29/vibe-code-which-llm-is-best-lets-be-real/">Vibe Code: Which LLM is the BEST?? Let&rsquo;s get real</a></li>
<li><a href="/en/2026/02/01/frankmd-markdown-editor-vibe-code-part-1/">Vibe Code: I built a Markdown editor from scratch with Claude Code (FrankMD) PART 1</a></li>
<li><a href="/en/2026/02/01/frankmd-markdown-editor-vibe-code-part-2/">Vibe Code: I built a Markdown editor from scratch with Claude Code (FrankMD) PART 2</a></li>
<li><a href="/en/2026/02/08/rant-ai-killed-programmers/">RANT: Did AI kill programmers?</a></li>
<li><a href="/en/2026/02/16/vibe-code-zero-to-production-in-6-days-the-m-akita-chronicles/">Vibe Code: From Zero to Production in 6 DAYS - The M.Akita Chronicles</a></li>
<li><a href="/en/2026/02/20/zero-to-post-production-in-1-week-using-ai-on-real-projects-behind-the-m-akita-chronicles/">From Zero to Post-Production in 1 Week - How to Use AI on Real Projects</a></li>
<li><a href="/en/2026/02/21/vibe-code-built-a-mega-clone-in-rails-in-1-day-frankmega/">Vibe Code: I built a Mega clone in Rails in 1 day for my Home Server</a></li>
<li><a href="/en/2026/02/23/vibe-code-built-a-smart-image-indexer-with-ai-in-2-days-frank-sherlock/">Vibe Code: I built an Intelligent Image Indexer with AI in 2 days - Frank Sherlock</a></li>
<li><a href="/en/2026/02/24/rant-akita-caved-to-ai/">RANT: Did Akita open his legs to AI??</a></li>
<li><a href="/en/2026/03/01/ai-jail-sandbox-for-ai-agents-from-shell-script-to-real-tool/">ai-jail: Sandbox for AI Agents</a></li>
<li><a href="/en/2026/03/01/software-is-never-done-4-projects-life-after-deploy-one-shot-prompt-myth/">Software Is Never &lsquo;Done&rsquo; - 4 Projects, the Life After Deploy</a></li>
<li><a href="/en/2026/03/04/data-mining-system-for-my-influencer-girlfriend/">I Built a Data Mining System for My Influencer Girlfriend</a></li>
<li><a href="/en/2026/03/05/my-first-vibe-code-failure-frank-yomik/">My First Vibe Code Failure and How I Fixed It - Frank Yomik</a></li>
</ul>
<h2>The projects<span class="hx:absolute hx:-mt-20" id="the-projects"></span>
    <a href="#the-projects" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><table>
  <thead>
      <tr>
          <th>Project</th>
          <th>Commits</th>
          <th>LOC</th>
          <th>Time</th>
          <th>What it does</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="https://github.com/akitaonrails/FrankMD"target="_blank" rel="noopener">FrankMD</a></td>
          <td>234</td>
          <td>38K</td>
          <td>~5 days</td>
          <td>Markdown editor in Rust/Tauri</td>
      </tr>
      <tr>
          <td><a href="https://github.com/akitaonrails/FrankYomik"target="_blank" rel="noopener">FrankYomik</a></td>
          <td>131</td>
          <td>21K</td>
          <td>~9 days</td>
          <td>Manga/webtoon translator (Go + Python + Flutter)</td>
      </tr>
      <tr>
          <td><a href="https://github.com/akitaonrails/FrankSherlock"target="_blank" rel="noopener">FrankSherlock</a></td>
          <td>103</td>
          <td>37K</td>
          <td>~6 days</td>
          <td>Intelligent image indexer (Rails + Python)</td>
      </tr>
      <tr>
          <td>mila-bot (private)</td>
          <td>60</td>
          <td>30K</td>
          <td>~3 days</td>
          <td>Data mining system (Rails + Discord)</td>
      </tr>
      <tr>
          <td><a href="https://github.com/akitaonrails/tvclipboard"target="_blank" rel="noopener">TVClipboard</a></td>
          <td>49</td>
          <td>5K</td>
          <td>~2 days</td>
          <td>Cross-device clipboard app with GLM 4.7</td>
      </tr>
      <tr>
          <td><a href="https://github.com/akitaonrails/ai-jail"target="_blank" rel="noopener">ai-jail</a></td>
          <td>46</td>
          <td>6K</td>
          <td>~4 days</td>
          <td>Security sandbox for AI agents (Rust)</td>
      </tr>
      <tr>
          <td><a href="https://github.com/akitaonrails/FrankMega"target="_blank" rel="noopener">FrankMega</a></td>
          <td>29</td>
          <td>7K</td>
          <td>~1 day</td>
          <td>Mega clone for the home server (Rails)</td>
      </tr>
      <tr>
          <td>The M.Akita Chronicles</td>
          <td>1+</td>
          <td>many</td>
          <td>~6 days</td>
          <td>Full blog/newsletter in production</td>
      </tr>
  </tbody>
</table>
<p>All of this happened between January 27 and March 5, 2026.</p>
<p>I&rsquo;m not going to repeat the technical details of every project. Each post-mortem above already covered that. What I want to discuss here is the consequence.</p>
<h2>What these 37 days showed me<span class="hx:absolute hx:-mt-20" id="what-these-37-days-showed-me"></span>
    <a href="#what-these-37-days-showed-me" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Projects that used to take weeks or months for an experienced developer now take days. A complete Markdown editor in 5 days. A Mega clone in 1 day. A data mining system with 40+ bot tools in 3 days. An image indexer with vision AI in 2 days.</p>
<p>And I&rsquo;m not talking about throwaway prototypes. These projects are in production. They have tests. They have automated deployments. It&rsquo;s real software built with real engineering practices, just at a speed that was unthinkable before.</p>
<p>This speed isn&rsquo;t unique to me. Cloudflare just demonstrated something similar. <a href="https://blog.cloudflare.com/vinext/"target="_blank" rel="noopener">In a recent post</a>, they describe how an engineer reimplemented the Next.js API surface on top of Vite in a week, using Claude as the main tool. US$ 1,100 in API tokens, more than 800 sessions, 1,700 unit tests, 380 E2E tests, builds 4.4x faster than the original Next.js. Controversies aside about whether it&rsquo;s a &ldquo;complete&rdquo; reimplementation or not, the central point is real: software that used to require teams and months can now be built by one person in days.</p>
<p>And that changes everything for anyone wanting to start a company.</p>
<h2>The death of the easy startup<span class="hx:absolute hx:-mt-20" id="the-death-of-the-easy-startup"></span>
    <a href="#the-death-of-the-easy-startup" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>For years, the classic startup model worked like this: someone has an idea, puts together a small team, builds an MVP in 3-6 months, raises seed money, and tries to scale. The barrier to entry was development cost. Programmers are expensive, development is slow, and the first to market has the advantage.</p>
<p>That model is breaking.</p>
<p>If I can build a working Mega clone in 1 day, what&rsquo;s a &ldquo;cloud storage&rdquo; startup worth? If Cloudflare reimplements the Next.js core in 1 week with one engineer and US$ 1,100 in tokens, what&rsquo;s the real moat of a platform like Vercel? The &ldquo;social listening&rdquo; SaaS that charges R$ 500/month is competing with something I built in 3 days as a side project.</p>
<p>Every entrepreneur who used to show up describing their idea as &ldquo;it&rsquo;s like Uber, but for&hellip;&rdquo; or &ldquo;it&rsquo;s like Airbnb, except&hellip;&rdquo; or &ldquo;another social network, but with&hellip;&rdquo; — those people need to stop and rethink. When any competent developer with access to Claude Code or GPT Codex can replicate your MVP in a week, your idea isn&rsquo;t worth anything anymore. Execution got too cheap.</p>
<p>I&rsquo;m not exaggerating. In my 37 days, I built things I wouldn&rsquo;t even attempt in 6 months before. Small CRMs, ecommerces, content managers, productivity tools, data mining apps, processing pipelines — all of that became commodity. The code itself is no longer the differentiator.</p>
<h2>So what is the differentiator?<span class="hx:absolute hx:-mt-20" id="so-what-is-the-differentiator"></span>
    <a href="#so-what-is-the-differentiator" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This is where most vibe coding enthusiasts miss the point. To illustrate, let me use my own project as an example.</p>
<p><a href="https://github.com/akitaonrails/FrankYomik"target="_blank" rel="noopener">Frank Yomik</a> translates manga pages from Japanese to English in near real-time. The full pipeline (balloon detection, OCR, translation, rendering) works. But the most important component of the system isn&rsquo;t any code I wrote. It&rsquo;s the <code>ogkalu/comic-text-and-bubble-detector</code> model, an RT-DETR-v2 trained on ~11,000 labeled comic images.</p>
<p>I didn&rsquo;t train that model. I couldn&rsquo;t easily train that model. Collecting 11,000 diverse comic images, manually labeling the speech balloons in each one (or generating labels with some semi-automated pipeline, which isn&rsquo;t trivial either), configuring the training, and running it on the necessary hardware — that&rsquo;s work of a different nature. It&rsquo;s work that vibe coding doesn&rsquo;t solve.</p>
<p>And that&rsquo;s the case of a relatively small model. An object detector can be trained with a few hundred to a few thousand labeled images on a single GPU in hours. Studies show useful results are possible with 100-350 images for specific domains, but robust real-world detectors usually need thousands. The cost is low, in the hundreds of dollars range.</p>
<p>Now look at what happens when we scale up to bigger models.</p>
<h2>The numbers that matter<span class="hx:absolute hx:-mt-20" id="the-numbers-that-matter"></span>
    <a href="#the-numbers-that-matter" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>GPT-4 cost more than US$ 100 million to train, according to Sam Altman himself. Stanford estimated the compute cost of Google&rsquo;s Gemini Ultra at US$ 191 million. Meta&rsquo;s Llama 3 consumed 39.3 million GPU-hours on H100s, and Meta built two clusters of 24,576 GPUs each to make it possible — and by the end of 2024 it planned to have 350,000 H100s in its infrastructure.</p>
<p>These costs are accelerating. According to Epoch AI, the cost of hardware and energy to train frontier models grows by 2.4x per year since 2016. If that trend continues, the largest training runs will cost more than US$ 1 billion before the end of 2027. Dario Amodei, Anthropic&rsquo;s CEO, has said frontier developers are probably spending close to a billion per training run now, with US$ 10 billion training runs expected within two years.</p>
<p>And the hardware? An H100 GPU costs US$ 25,000-40,000 per unit. A server with 8 GPUs runs between US$ 200,000 and US$ 400,000. The HBM memory those GPUs use is at capacity — SK Hynix, Samsung and Micron have already announced ~20% price increases for 2026. NVIDIA consumes more than 60% of the global HBM production. It&rsquo;s a structural bottleneck, not a temporary one.</p>
<p>In terms of energy: global data centers consumed ~415 TWh of electricity in 2024, according to the IEA, about 1.5% of the world&rsquo;s electricity. The projection is ~945 TWh by 2030. New data centers are being built with capacities of 100 MW to 1 GW each.</p>
<p>And the big tech investments reflect that. In 2025, the aggregate capex of Amazon (<del>$125B), Google (</del>$91B), Microsoft (<del>$80B) and Meta (</del>$71B) crossed US$ 400 billion, a 62% increase over 2024. Goldman Sachs projects more than US$ 500 billion in 2026.</p>
<p>These numbers aren&rsquo;t meant to scare. They&rsquo;re meant to put the real entry barrier in context.</p>
<h2>The new barrier: exclusive data and training capacity<span class="hx:absolute hx:-mt-20" id="the-new-barrier-exclusive-data-and-training-capacity"></span>
    <a href="#the-new-barrier-exclusive-data-and-training-capacity" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>If software got cheap to produce, the competitive differentiator migrated. The question stopped being &ldquo;who writes code the fastest?&rdquo; and became &ldquo;who has access to data nobody else has, and knows how to turn that data into useful models?&rdquo;</p>
<p>DeepSeek-V3 announced that its training cost US$ 5.5 million in compute. The press celebrated the &ldquo;cheap Chinese model.&rdquo; But The Register reported that the acquisition cost of the 256 GPU servers used was over US$ 51 million — and that excludes R&amp;D, data acquisition, data cleaning, and all the failed training runs before the final successful one. The real cost of developing the capability is one or two orders of magnitude above the marginal cost of the final successful training run.</p>
<p>That&rsquo;s why we only see large companies producing frontier models. Meta, Alibaba, Google, Amazon, Microsoft, Anthropic — companies investing tens of billions in hardware and energy. A garage startup can&rsquo;t compete on this dimension.</p>
<p>But the question goes beyond frontier models. Even smaller specialized models require something you can&rsquo;t buy: high-quality proprietary data.</p>
<p>Llama 3 was trained on 15 trillion tokens. Epoch AI has documented that we&rsquo;re approaching the limits of human-generated text data on the internet. Public data is being exhausted. Whoever has exclusive data — medical, financial, industrial, logistics, sensor, user behavior — has something that vibe coding can&rsquo;t replicate.</p>
<p>And even those who train specialized models with proprietary data face a problem: the advantage is temporary. Another competitor can collect similar data and train a competing model in months. The differentiator needs to be continuously fed: more data, better curation, more efficient training pipelines, access to hardware that&rsquo;s increasingly scarce and expensive.</p>
<h2>The picture<span class="hx:absolute hx:-mt-20" id="the-picture"></span>
    <a href="#the-picture" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>If you&rsquo;re thinking about starting a company, the question that matters has changed.</p>
<p>Before it was: &ldquo;can I build this software?&rdquo; Now the answer is almost always yes, fast and cheap.</p>
<p>The question now is: &ldquo;do I have exclusive data nobody else has, and do I know how to turn that data into something useful that&rsquo;s hard to replicate?&rdquo;</p>
<p>If the answer is no, any competitor with Claude Code replicates your product in days. And then another one shows up. And another. The race to the bottom on price is immediate when the cost of building is close to zero.</p>
<p>If the answer is yes, you have a real moat — but a temporary one. Competing models trained on similar data can show up in months. Your differentiator needs to be continuously fed.</p>
<p>The era of easy startups is over. Not because building software got harder — it got way easier. But precisely because of that: when everyone can build the same thing in a week, the competitive advantage has to come from somewhere else. And that &ldquo;somewhere else&rdquo; requires capital and infrastructure that are orders of magnitude more expensive than writing code.</p>
<p>The garage still works. But what comes out of it can no longer be &ldquo;an app.&rdquo;</p>
]]></content:encoded><category>vibe-coding</category><category>startups</category><category>business</category><category>off-topic</category></item><item><title>Software Is Never 'Done' — 4 Projects, Life After Deploy, and Why One-Shot Prompting Is a Myth</title><link>https://akitaonrails.github.io/en/2026/03/01/software-is-never-done-4-projects-life-after-deploy-one-shot-prompt-myth/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/03/01/software-is-never-done-4-projects-life-after-deploy-one-shot-prompt-myth/</guid><pubDate>Sun, 01 Mar 2026 12:00:00 -0300</pubDate><description>&lt;p&gt;And don&amp;rsquo;t forget to subscribe to my newsletter &lt;a href="https://themakitachronicles.com/"target="_blank" rel="noopener"&gt;The M.Akita Chronicles&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&amp;ndash;&lt;/p&gt;
&lt;p&gt;I published the &amp;ldquo;final post&amp;rdquo; of the &lt;a href="https://akitaonrails.github.io/en/2026/02/20/zero-to-post-production-in-1-week-using-ai-on-real-projects-behind-the-m-akita-chronicles/"&gt;Behind The M.Akita Chronicles&lt;/a&gt; series 10 days ago. 274 commits, 1,323 tests, deployed to production. I wrote down the lessons, did the conclusion, dropped the quote at the end. Done.&lt;/p&gt;
&lt;p&gt;125 post-production commits later, I can confirm: &lt;strong&gt;software &lt;em&gt;&amp;ldquo;done&amp;rdquo;&lt;/em&gt; doesn&amp;rsquo;t exist.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Today the M.Akita Chronicles repo has 335 commits and 1,422 tests. Tomorrow, Monday, subscribers get the 3rd consecutive newsletter — generated, reviewed, and sent by a system that won&amp;rsquo;t stop evolving. Meanwhile, &lt;a href="https://akitaonrails.github.io/en/2026/02/23/vibe-code-built-a-smart-image-indexer-with-ai-in-2-days-frank-sherlock/"&gt;Frank Sherlock&lt;/a&gt; went from 50 commits and v0.1 to 103 commits and v0.7 with face detection. &lt;a href="https://akitaonrails.github.io/en/2026/02/01/frankmd-markdown-editor-vibe-code-part-1/"&gt;FrankMD&lt;/a&gt; got 3 external contributors and shipped v0.2.0. And even &lt;a href="https://akitaonrails.github.io/en/2026/02/21/vibe-code-built-a-mega-clone-in-rails-in-1-day-frankmega/"&gt;FrankMega&lt;/a&gt; — a project built in 1 day — needed fixes when real users showed up.&lt;/p&gt;</description><content:encoded><![CDATA[<p>And don&rsquo;t forget to subscribe to my newsletter <a href="https://themakitachronicles.com/"target="_blank" rel="noopener">The M.Akita Chronicles</a>!</p>
<p>&ndash;</p>
<p>I published the &ldquo;final post&rdquo; of the <a href="/en/2026/02/20/zero-to-post-production-in-1-week-using-ai-on-real-projects-behind-the-m-akita-chronicles/">Behind The M.Akita Chronicles</a> series 10 days ago. 274 commits, 1,323 tests, deployed to production. I wrote down the lessons, did the conclusion, dropped the quote at the end. Done.</p>
<p>125 post-production commits later, I can confirm: <strong>software <em>&ldquo;done&rdquo;</em> doesn&rsquo;t exist.</strong></p>
<p>Today the M.Akita Chronicles repo has 335 commits and 1,422 tests. Tomorrow, Monday, subscribers get the 3rd consecutive newsletter — generated, reviewed, and sent by a system that won&rsquo;t stop evolving. Meanwhile, <a href="/en/2026/02/23/vibe-code-built-a-smart-image-indexer-with-ai-in-2-days-frank-sherlock/">Frank Sherlock</a> went from 50 commits and v0.1 to 103 commits and v0.7 with face detection. <a href="/en/2026/02/01/frankmd-markdown-editor-vibe-code-part-1/">FrankMD</a> got 3 external contributors and shipped v0.2.0. And even <a href="/en/2026/02/21/vibe-code-built-a-mega-clone-in-rails-in-1-day-frankmega/">FrankMega</a> — a project built in 1 day — needed fixes when real users showed up.</p>
<p>Throughout February, I published more than a dozen posts detailing the build of each project. This post is different. It isn&rsquo;t about building from scratch, I covered that already. It&rsquo;s about what happens <strong>after</strong>. And what happens after destroys the one-shot prompt narrative. Software needs an experienced human at the wheel. Iterative development is the only thing that works. Anyone who disagrees hasn&rsquo;t put a system in production yet.</p>
<p>I&rsquo;ll prove it with <code>git log</code>.</p>
<h2>Life After Deploy<span class="hx:absolute hx:-mt-20" id="life-after-deploy"></span>
    <a href="#life-after-deploy" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><table>
  <thead>
      <tr>
          <th>Project</th>
          <th>Post-publication commits</th>
          <th>Highlight</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>The M.Akita Chronicles</td>
          <td>56</td>
          <td>3rd week in production, new features, 13 bug fixes, prompt tuning</td>
      </tr>
      <tr>
          <td>Frank Sherlock</td>
          <td>53</td>
          <td>From v0.3 to v0.7: video support, face detection, AUR publish</td>
      </tr>
      <tr>
          <td>FrankMD</td>
          <td>14</td>
          <td>3 external contributors, 4 PRs merged, v0.2.0</td>
      </tr>
      <tr>
          <td>FrankMega</td>
          <td>2</td>
          <td>MIME types nobody saw coming</td>
      </tr>
      <tr>
          <td><strong>Total</strong></td>
          <td><strong>125</strong></td>
          <td></td>
      </tr>
  </tbody>
</table>
<p>Let&rsquo;s get into the details.</p>
<h2>The M.Akita Chronicles: 3 Weeks in Production<span class="hx:absolute hx:-mt-20" id="the-makita-chronicles-3-weeks-in-production"></span>
    <a href="#the-makita-chronicles-3-weeks-in-production" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The newsletter system has been live since February 16. It&rsquo;s already sent 2 newsletters and tomorrow it sends the third. 56 commits have happened since the &ldquo;final post&rdquo;:</p>
<table>
  <thead>
      <tr>
          <th>Date</th>
          <th>Commits</th>
          <th>What happened</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Feb 20 (Thu)</td>
          <td>16</td>
          <td>Steam Gaming (whole new section), bug fixes in paywall detection</td>
      </tr>
      <tr>
          <td>Feb 21 (Fri)</td>
          <td>12</td>
          <td>/preview command, YouTube collage, /rerun notifications</td>
      </tr>
      <tr>
          <td>Feb 22 (Sat)</td>
          <td>1</td>
          <td>Fix: /preflight sending the result to the wrong channel</td>
      </tr>
      <tr>
          <td>Feb 23 (Sun)</td>
          <td>10</td>
          <td>2nd newsletter publication, Gmail clipping warning, TTS revert</td>
      </tr>
      <tr>
          <td>Feb 24 (Mon)</td>
          <td>1</td>
          <td>Podcast prompt tweak</td>
      </tr>
      <tr>
          <td>Feb 28 (Sat)</td>
          <td>7</td>
          <td>Marvin prompt tuning, rate limiting, /rerun comments</td>
      </tr>
      <tr>
          <td>Mar 1 (Sun)</td>
          <td>9</td>
          <td>Mood system, switch to Grok-4, QA pipeline, config centralization</td>
      </tr>
  </tbody>
</table>
<h3>Features Nobody Saw Coming<span class="hx:absolute hx:-mt-20" id="features-nobody-saw-coming"></span>
    <a href="#features-nobody-saw-coming" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><strong>Steam Gaming.</strong> Wasn&rsquo;t in the original plan. It was born because the entertainment section only had anime — and gamer readers were left out. Result: 6 commits just on launch day. The first commit (<code>bf41e25</code>) added the whole section — Steam API service, generation job, tests, Hugo shortcode. The next 5 fixed things: Portuguese date parsing, ranking offset so the top 10 didn&rsquo;t repeat, wishlist filter for releases, dark theme. No spec in the world predicts that the Steam API returns dates with Portuguese abbreviations (<code>&quot;fev&quot;</code>, <code>&quot;mar&quot;</code>, <code>&quot;abr&quot;</code>) when you ask for <code>l=brazilian</code>. You find that out when the parser breaks in production.</p>
<p><strong>Preview system.</strong> <code>/preview</code> was born because I needed to see how the auto-generated content looked <strong>before</strong> publishing the entire newsletter. Seems obvious in retrospect, but in v1 the only way to validate was to generate everything and look at the final result. 5 commits to build a preview system with 9 sections, aliases (<code>hn</code> for hacker_news, <code>steam</code> for steam_gaming), separate comment-preview mode, and rescue when one section fails without taking the others down (<code>d23c725</code> — because a section with an error was killing the entire preview).</p>
<p><strong>Marvin&rsquo;s moods.</strong> Marvin (the bot&rsquo;s sarcastic persona) suffers from a chronic LLM problem: smoothing. Without intervention, every comment ends up the same lukewarm tone. The iterative fix was a mood system — 9 modes the operator picks per story:</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-ruby" data-lang="ruby"><span class="line"><span class="cl"><span class="no">MARVIN_MOODS</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;sarcastic&#34;</span>   <span class="o">=&gt;</span> <span class="s2">&#34;Be extra sarcastic and biting in your commentary.&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;ironic&#34;</span>      <span class="o">=&gt;</span> <span class="s2">&#34;Use irony and dark humor to make your point.&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;grounded&#34;</span>    <span class="o">=&gt;</span> <span class="s2">&#34;Be more neutral and journalist-like, factual and measured.&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;provocative&#34;</span> <span class="o">=&gt;</span> <span class="s2">&#34;Be provocative and controversial, challenge assumptions.&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;counter&#34;</span>     <span class="o">=&gt;</span> <span class="s2">&#34;Take the opposite position from Akita&#39;s comment.&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;insightful&#34;</span>  <span class="o">=&gt;</span> <span class="s2">&#34;Find a non-obvious angle -- a historical parallel, a second-order consequence.&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;positive&#34;</span>    <span class="o">=&gt;</span> <span class="s2">&#34;Find the genuinely positive angle.&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;hopeful&#34;</span>     <span class="o">=&gt;</span> <span class="s2">&#34;Be cautiously optimistic. Acknowledge the good potential.&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">  <span class="s2">&#34;negative&#34;</span>    <span class="o">=&gt;</span> <span class="s2">&#34;Be extra pessimistic and bleak.&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span><span class="o">.</span><span class="n">freeze</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>None of this came from a spec. It came from 3 weeks of reading bland comments and thinking <em>&ldquo;this isn&rsquo;t good enough&rdquo;</em>. There are 7 commits just for prompt tuning across 10 days. I banned formulaic patterns (<code>d4bd3a6</code>). I killed off &ldquo;Ah,&rdquo; as an opener (<code>4171628</code>). I removed Marvin from entire podcast sections because he was contaminating the tone (<code>246cc60</code>). I pushed for substance instead of puns (<code>8bc47c4</code>). Each prompt commit is a micro-correction that only makes sense after reading the previous output.</p>
<h3>Bugs That Only Exist in Production<span class="hx:absolute hx:-mt-20" id="bugs-that-only-exist-in-production"></span>
    <a href="#bugs-that-only-exist-in-production" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Of the 56 commits, 13 are bug fixes. Some favorites:</p>
<ul>
<li>
<p><strong>Gmail clipping</strong> (<code>3258f5b</code>): Gmail silently cuts off emails larger than 102KB. I found out when the 2nd newsletter went out longer and Gmail readers didn&rsquo;t see the end. Fix: a size check in the content preflight that warns before publishing. I shrunk the history sections from 10 to 5 items (<code>51ce528</code>) to fit the limit.</p>
</li>
<li>
<p><strong>False paywall detection</strong> (<code>1fd8739</code>): the scraper marked sites as paywalled when it found accidental block text in a generic footer. Only showed up when the story list grew to dozens of real sources.</p>
</li>
<li>
<p><strong>t.co link mangling</strong> (<code>6bd056f</code>): Twitter shortens URLs with t.co, but it also auto-links file names that look like domains. <code>config.yml</code> becomes a link to the <code>config.yml</code> domain. 158 lines of fix to handle tweet text correctly.</p>
</li>
<li>
<p><strong>TTS language revert</strong> (<code>7803ad9</code> -&gt; <code>c1dd668</code>): I tried switching the TTS language from &ldquo;Portuguese&rdquo; to &ldquo;Auto&rdquo;. The model produced a mixed accent. Reverted the same day.</p>
</li>
<li>
<p><strong>Podcast section ordering</strong> (<code>5bef18c</code>): podcast sections came out in the wrong order. 3-line fix + untracking of 1,504 lines of generated content that had been committed by accident.</p>
</li>
<li>
<p><strong>Elementor sites with multiple <code>&lt;article&gt;</code></strong> (<code>e70b756</code>): sites built with Elementor use the <code>&lt;article&gt;</code> tag in a non-semantic way. The content extractor was grabbing the wrong block. 171 lines of fix + tests.</p>
</li>
</ul>
<p>None of these bugs could have been predicted in a spec. They only exist because the system is live, processing real data, hitting real APIs, being read by real people.</p>
<h3>From 1,323 to 1,422 Tests<span class="hx:absolute hx:-mt-20" id="from-1323-to-1422-tests"></span>
    <a href="#from-1323-to-1422-tests" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The test suite kept growing along with it:</p>
<table>
  <thead>
      <tr>
          <th>App</th>
          <th>Tests (Feb 20)</th>
          <th>Tests (Mar 1)</th>
          <th>Growth</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>marvin-bot</td>
          <td>970</td>
          <td>1,060</td>
          <td>+90</td>
      </tr>
      <tr>
          <td>newsletter</td>
          <td>353</td>
          <td>362</td>
          <td>+9</td>
      </tr>
      <tr>
          <td><strong>Total</strong></td>
          <td><strong>1,323</strong></td>
          <td><strong>1,422</strong></td>
          <td><strong>+99</strong></td>
      </tr>
  </tbody>
</table>
<p>New feature? Comes with a test. Bug fix? Comes with a regression test. Without that, the 56 post-production commits would be 56 chances to break something that worked yesterday. TDD isn&rsquo;t a phase, it&rsquo;s a habit.</p>
<h3>The Model Changed: From Claude to Grok-4<span class="hx:absolute hx:-mt-20" id="the-model-changed-from-claude-to-grok-4"></span>
    <a href="#the-model-changed-from-claude-to-grok-4" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Commit <code>8f9d11c</code>: <code>Switch default model to x-ai/grok-4</code>. The architecture had isolated the LLM model into an environment variable from day one. But the model name was still hardcoded across 24 files. Result: commit <code>c8c688e</code> — <code>Centralize LLM model config</code> — 24 files touched to make swapping models a 1-line config change.</p>
<p>This kind of refactoring only shows up in operation. When you start the project, you don&rsquo;t know you&rsquo;re going to change models. When you change, you want it to be trivial. And the cleanup to make it trivial? Only happens when the pain shows up.</p>
<h2>Frank Sherlock: From v0.1 to v0.7 in 4 Days<span class="hx:absolute hx:-mt-20" id="frank-sherlock-from-v01-to-v07-in-4-days"></span>
    <a href="#frank-sherlock-from-v01-to-v07-in-4-days" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The <a href="/en/2026/02/23/vibe-code-built-a-smart-image-indexer-with-ai-in-2-days-frank-sherlock/">Frank Sherlock post</a> covered the first 2 days and ~50 commits: the benchmark research, the Tauri app scaffold (Rust + React), the classification pipeline with Ollama, and the v0.1.0 release with binaries for Linux, macOS and Windows.</p>
<p>What the post didn&rsquo;t cover: the next 53 commits, in 4 days, that took the project from v0.3 to v0.7:</p>
<table>
  <thead>
      <tr>
          <th>Version</th>
          <th>Date</th>
          <th>Highlight</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>v0.4.0</td>
          <td>Feb 24</td>
          <td>Duplicate detection (SHA-256 + dHash), PDF password manager</td>
      </tr>
      <tr>
          <td>v0.5.0</td>
          <td>Feb 24</td>
          <td>Auto-update, scan performance 2x, checkpoint resume</td>
      </tr>
      <tr>
          <td>v0.6.0</td>
          <td>Feb 25</td>
          <td>Video support (11 formats), directory tree, FTS stemmer</td>
      </tr>
      <tr>
          <td>v0.7.0</td>
          <td>Feb 27</td>
          <td><strong>Face detection</strong> with native ONNX, person management</td>
      </tr>
  </tbody>
</table>
<h3>Face Detection: A Feature Born from Iteration<span class="hx:absolute hx:-mt-20" id="face-detection-a-feature-born-from-iteration"></span>
    <a href="#face-detection-a-feature-born-from-iteration" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>v0.1 was an image indexer with LLM-based classification. v0.7 has face detection with 512-dimensional embeddings, cosine-similarity clustering, and per-person search (<code>face:alice</code>). None of that was in the original plan. It came up because I started using the app with real photos and thought <em>&ldquo;I want to find every photo of so-and-so&rdquo;</em>. The feature was born from use, not from a spec.</p>
<p>The path to get there was methodical:</p>
<ol>
<li><strong><code>f34132f</code></strong>: A/B testing framework for face detection — benchmark before implementing, not after</li>
<li><strong><code>ef3be82</code></strong>: A/B results (SCRFD + ArcFace won)</li>
<li><strong><code>6d9174a</code></strong>: Native implementation with ONNX Runtime — no Python, no external dependency</li>
<li><strong><code>3b25eaf</code></strong>: Clustering, person management, complete FacesView</li>
<li><strong><code>a02d67f</code></strong>: Refactoring — extract helpers, delete dead code, share CSS</li>
</ol>
<p>Benchmark -&gt; implement -&gt; refactor. The same cycle as always. And something no one-shot prompt produces.</p>
<h3>Video Support: Another Emergent Feature<span class="hx:absolute hx:-mt-20" id="video-support-another-emergent-feature"></span>
    <a href="#video-support-another-emergent-feature" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The app was built for images. But real media folders have videos. Commit <code>a67a2f9</code> added full support: scanning of 11 formats (MP4, MKV, AVI, MOV, WebM&hellip;), keyframe extraction for LLM classification, black frame skipping, .srt subtitle parsing for the full-text index, and inline preview with HTTP Range streaming.</p>
<p>1,626 lines added in one commit. An entire feature born from real use, not from a spec.</p>
<h3>7 Releases, 3 Platforms, Automatic AUR<span class="hx:absolute hx:-mt-20" id="7-releases-3-platforms-automatic-aur"></span>
    <a href="#7-releases-3-platforms-automatic-aur" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In 7 days, Frank Sherlock had 7 releases. Each one with binaries compiled for Linux (AppImage), macOS (DMG with notarization and code signing), and Windows (MSI). The CI/CD pipeline (<code>release.yml</code>) does everything automatically. Starting at v0.5.0, an additional workflow (<code>aur-publish.yml</code>) publishes automatically to the AUR — the Arch Linux package repository.</p>
<p>Final tally: 17,210 lines of Rust, 10,863 lines of TypeScript, 621 tests (322 Rust + 299 frontend). Cross-platform. Releases published and installable by any user. One week, one dev, one AI agent.</p>
<p>The CI/CD cross-platform part is where the <em>&ldquo;works on my machine&rdquo;</em> fantasy dies. There were 17 commits just for builds: Windows UNC paths, macOS signing with notarization, Linux AppImage, release workflow permissions, macOS Intel target removed. No LLM in the world knows that macOS requires specific entitlements for hardened runtime, or that paths on Windows start with <code>\\?\</code>. That kind of deploy work demands someone who&rsquo;s been through that pain before.</p>
<h2>FrankMD: Real Open Source<span class="hx:absolute hx:-mt-20" id="frankmd-real-open-source"></span>
    <a href="#frankmd-real-open-source" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>FrankMD was the first project in this saga, a self-hosted Markdown editor with Rails 8. The <a href="/en/2026/02/01/frankmd-markdown-editor-vibe-code-part-1/">February posts</a> covered the build. What happened after is more interesting: other people started contributing.</p>
<p>14 commits since February 20. 3 external contributors. 4 PRs merged. v0.2.0 release on the 28th:</p>
<table>
  <thead>
      <tr>
          <th>PR</th>
          <th>Author</th>
          <th>Type</th>
          <th>What it did</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>#34</td>
          <td>@murilo-develop</td>
          <td>Bug fix</td>
          <td>Ollama integration: ModelNotFoundError + API base URL</td>
      </tr>
      <tr>
          <td>#36</td>
          <td>@rafaself</td>
          <td>Bug fix</td>
          <td>Table hint behavior in the editor (3 iterative commits)</td>
      </tr>
      <tr>
          <td>#38</td>
          <td>@LuccaRomanelli</td>
          <td>Feature</td>
          <td>Auto-sync theme with the Omarchy desktop environment</td>
      </tr>
      <tr>
          <td>#39</td>
          <td>@LuccaRomanelli</td>
          <td>Feature</td>
          <td>&ldquo;New Folder&rdquo; in the explorer&rsquo;s context menu</td>
      </tr>
  </tbody>
</table>
<h3>The Maintainer&rsquo;s Pattern<span class="hx:absolute hx:-mt-20" id="the-maintainers-pattern"></span>
    <a href="#the-maintainers-pattern" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>What&rsquo;s most telling isn&rsquo;t the contributions themselves, but what I did after every merge.</p>
<p>When @LuccaRomanelli submitted the Omarchy theme sync PR (+308 lines), I merged it and immediately committed <code>fix: harden Omarchy theme integration and fix broken tests</code> — <strong>+163 lines</strong> of fixes and tests in the next commit. The contributor implemented the feature. The maintainer hardened it.</p>
<p>When @rafaself submitted the table hint fix, there were 3 iterative commits the same day — <code>enhance</code>, <code>improve</code>, <code>streamline</code> — showing the same progressive refinement pattern I do with the AI agent. The next day, he sent a separate commit updating faraday, nokogiri and rack for security advisories.</p>
<p>On the 28th, I sat down and did everything in one shot: merged the 4 PRs, committed the hardening, updated 5 gems (brakeman, bootsnap, selenium-webdriver, web-console, mocha), and published the v0.2.0 release notes. A classic <em>&ldquo;release day&rdquo;</em>.</p>
<p>FrankMD today has 226 commits, 1,804 tests (425 Ruby + 1,379 JavaScript), and active contributors. It isn&rsquo;t <em>&ldquo;my little personal project&rdquo;</em> anymore. It became software with a community. And community doesn&rsquo;t show up for a test-less prototype that <em>&ldquo;works on my machine&rdquo;</em>. It shows up for a project with green CI, documentation, versioned releases, and code you can actually read.</p>
<h2>FrankMega: Even the Smallest Project Needs Post-Production<span class="hx:absolute hx:-mt-20" id="frankmega-even-the-smallest-project-needs-post-production"></span>
    <a href="#frankmega-even-the-smallest-project-needs-post-production" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>FrankMega was built in <a href="/en/2026/02/21/vibe-code-built-a-mega-clone-in-rails-in-1-day-frankmega/">1 day</a>. 26 commits, secure file sharing with Rails 8, 210 tests, deploy via Docker + Cloudflare Tunnel. Post published the same day. Done, right?</p>
<p>Three days later, 2 commits:</p>
<ul>
<li><code>db4bb705</code> — Add macOS, Linux, and Windows package MIME types to seed defaults</li>
<li><code>b0c4829a</code> — Fix MIME types to match Marcel detection, add normalizes strip</li>
</ul>
<p>Users tried to share <code>.dmg</code>, <code>.deb</code>, and <code>.msi</code> files. The MIME type detection (via the Marcel gem) didn&rsquo;t recognize those formats because they weren&rsquo;t in the seed defaults. Two commits. 22 lines. 15 minutes.</p>
<p>But without them, FrankMega couldn&rsquo;t be used to share installer packages — which is exactly the most common use case on a dev&rsquo;s home server.</p>
<blockquote>
  <p>No prompt in the world predicts that your users will want to share <code>.deb</code> files on day one.</p>

</blockquote>
<p>The simplest project of all, with the shortest post-production. And even then, it needed iteration.</p>
<h2>The Consolidated Numbers<span class="hx:absolute hx:-mt-20" id="the-consolidated-numbers"></span>
    <a href="#the-consolidated-numbers" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><table>
  <thead>
      <tr>
          <th>Project</th>
          <th>Commits (total)</th>
          <th>Tests</th>
          <th>Post-production</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>The M.Akita Chronicles</td>
          <td>335</td>
          <td>1,422</td>
          <td>56 commits, 10 days in production</td>
      </tr>
      <tr>
          <td>Frank Sherlock</td>
          <td>103</td>
          <td>621</td>
          <td>53 commits, 4 extra releases</td>
      </tr>
      <tr>
          <td>FrankMD</td>
          <td>226</td>
          <td>1,804</td>
          <td>14 commits, 3 contributors</td>
      </tr>
      <tr>
          <td>FrankMega</td>
          <td>28</td>
          <td>210</td>
          <td>2 commits, MIME fixes</td>
      </tr>
      <tr>
          <td><strong>Total</strong></td>
          <td><strong>692</strong></td>
          <td><strong>4,057</strong></td>
          <td><strong>125 post-publication commits</strong></td>
      </tr>
  </tbody>
</table>
<p>692 commits. 4,057 tests. 4 projects in production. February 2026. Me and an AI agent.</p>
<h2>Why One-Shot Prompting Is a Myth<span class="hx:absolute hx:-mt-20" id="why-one-shot-prompting-is-a-myth"></span>
    <a href="#why-one-shot-prompting-is-a-myth" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Look at the 125 post-production commits and tell me which one of them could have been predicted by a spec.</p>
<p>Gmail cuts off emails larger than 102KB, and you only find that out when you send the first long email. The Steam API returns dates with Portuguese abbreviations (<code>&quot;fev&quot;</code>, <code>&quot;abr&quot;</code>), and you only find that out when the parser breaks on generation Sunday. macOS users try to share <code>.dmg</code> files and can&rsquo;t because the MIME type isn&rsquo;t in the seed. Marvin opens every comment with <em>&ldquo;Ah,&rdquo;</em> and you only notice it after reading 30 in a row and wanting to claw your eyes out. The LLM model has to be swappable with 1 line of config, but it&rsquo;s spread across 24 files. Windows uses UNC paths starting with <code>\\?\</code>, and CI explodes in your face. And TTS in &ldquo;Auto&rdquo; mode? Generates an accent that sounds like Lisbon Portuguese trying to be carioca.</p>
<p>None of this is &ldquo;debugging&rdquo; in the traditional sense. It&rsquo;s navigating a problem space that only reveals itself when the software meets reality. Each one of these was a real-time decision made by someone with context.</p>
<p>The one-shot prompt fantasy is that, if you write a sufficiently detailed spec, the AI produces the perfect software. But the perfect spec would require you to know in advance everything that&rsquo;s going to go wrong. And if you knew in advance everything that&rsquo;s going to go wrong, you wouldn&rsquo;t need the spec — you&rsquo;d already have the software done in your head.</p>
<p>Good software is the result of hundreds of micro-decisions made with the system running. Not a single macro-decision made before the first line is written.</p>
<h2>The Role of the Experienced Developer<span class="hx:absolute hx:-mt-20" id="the-role-of-the-experienced-developer"></span>
    <a href="#the-role-of-the-experienced-developer" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>AI accelerated all of this. Without it, 692 commits in a month would be impossible for one person. But acceleration without direction is just faster entropy.</p>
<p>In every project there were decisions the AI couldn&rsquo;t have made on its own. Switching from Claude to Grok-4 because the previous model was weak in a specific domain. Benchmarking SCRFD against alternatives <em>before</em> implementing face detection, because the wrong choice would cost days. The +163 lines of hardening I committed immediately after merging the Omarchy PR, because I saw where it was going to break. The TTS revert from Auto mode the same day, because I know that &ldquo;Auto&rdquo; on a TTS model for Brazilian Portuguese will produce a mixed accent.</p>
<p>The circuit breaker case is the most illustrative. When I added rate limiting, the Brave Search API started returning 429s every once in a while. If I had asked, the agent would have implemented a retry with exponential backoff. But I didn&rsquo;t ask for retry. I asked for a circuit breaker:</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-ruby" data-lang="ruby"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">WebSearcher</span>
</span></span><span class="line"><span class="cl">  <span class="no">CIRCUIT_BREAKER_SECONDS</span> <span class="o">=</span> <span class="mi">120</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">search</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="ss">max_results</span><span class="p">:</span> <span class="mi">5</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="o">[]</span> <span class="k">if</span> <span class="n">circuit_open?</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="n">response</span> <span class="o">=</span> <span class="n">brave_search</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">max_results</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="mi">429</span>
</span></span><span class="line"><span class="cl">      <span class="n">trip_circuit!</span>
</span></span><span class="line"><span class="cl">      <span class="no">Rails</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&#34;WebSearcher rate limited (429)&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">      <span class="k">return</span> <span class="o">[]</span>
</span></span><span class="line"><span class="cl">    <span class="k">end</span>
</span></span><span class="line"><span class="cl">  <span class="k">rescue</span> <span class="no">Net</span><span class="o">::</span><span class="no">OpenTimeout</span><span class="p">,</span> <span class="no">Net</span><span class="o">::</span><span class="no">ReadTimeout</span> <span class="o">=&gt;</span> <span class="n">e</span>
</span></span><span class="line"><span class="cl">    <span class="n">trip_circuit!</span>
</span></span><span class="line"><span class="cl">    <span class="o">[]</span>
</span></span><span class="line"><span class="cl">  <span class="k">end</span>
</span></span><span class="line"><span class="cl"><span class="k">end</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>If the API returns 429 or times out, it stops trying for 120 seconds. No retry, no backoff, no queue. Why? Because I know the cron runs every day at 8am and that on newsletter generation Sundays the query volume triples. A herd of retries delaying everything is worse than empty results in one section.</p>
<p>The AI implements a circuit breaker when you ask it to. But it isn&rsquo;t going to ask to implement a circuit breaker. It doesn&rsquo;t have the operational context. That&rsquo;s knowledge that comes from running systems in production for decades.</p>
<blockquote>
  <p>The agent writes the code. I decide what code to write. And that decision requires experience no prompt can replace.</p>

</blockquote>
<h2>The Lessons<span class="hx:absolute hx:-mt-20" id="the-lessons"></span>
    <a href="#the-lessons" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p><strong>1. Software in production diverges from the spec in hours, not months.</strong> The first M.Akita Chronicles bugs showed up in the first real newsletter. FrankMega&rsquo;s MIME types broke on the first uploads. Anyone who thinks deploy means done is living in a world that doesn&rsquo;t exist.</p>
<p><strong>2. Post-production isn&rsquo;t &ldquo;maintenance&rdquo;.</strong> 56 commits in 10 days on the M.Akita Chronicles aren&rsquo;t patches. They&rsquo;re new features (Steam Gaming, preview, moods), architecture refactoring (LLM config centralization), security hardening (rate limiting). That&rsquo;s development. The software didn&rsquo;t stop evolving just because I said <em>&ldquo;done&rdquo;</em> in a blog post.</p>
<p><strong>3. TDD protects evolution.</strong> 99 new tests in 10 days. FrankMD&rsquo;s 1,804 tests let me merge 4 external contributor PRs without fear. Without tests, every merge is Russian roulette.</p>
<p><strong>4. Small releases keep you sane.</strong> 7 Frank Sherlock releases in 7 days. Green CI, compiled binaries, release notes. Something broke? Roll back one version. Compare that with &ldquo;6 months + big bang release&rdquo; and tell me which one works better.</p>
<p><strong>5. Community shows up for real projects.</strong> Nobody sends a PR to a test-less prototype that <em>&ldquo;works on my machine&rdquo;</em>. FrankMD got 3 contributors because it has green CI, documentation, and versioned releases.</p>
<p><strong>6. The developer&rsquo;s experience is the bottleneck, not the AI&rsquo;s speed.</strong> 692 commits in a month. But every commit that mattered required decades of experience to know it was needed. The AI types fast. I know what to type.</p>
<p><strong>7. One-shot is for demos. Iteration is for production.</strong> If the goal is a 10-minute video showing a <em>&ldquo;finished SaaS&rdquo;</em>, one-shot will do. If the goal is software that survives contact with real users, only iteration works. And sustainable iteration demands discipline: TDD, CI, small releases, continuous refactoring. No shortcut.</p>
<h2>To the Senior Still Sitting on Their Hands<span class="hx:absolute hx:-mt-20" id="to-the-senior-still-sitting-on-their-hands"></span>
    <a href="#to-the-senior-still-sitting-on-their-hands" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>So far I&rsquo;ve been hitting the amateurs who think they can fire off a prompt and the AI spits out a finished system. Fair enough. But there&rsquo;s another group that worries me just as much: the senior developer who saw the AI mess up three times, declared <em>&ldquo;this is useless&rdquo;</em>, and went back to doing everything by hand.</p>
<p>I get the reasoning. The AI hallucinates, generates code with subtle bugs, suggests over-engineered solutions. All true, and I documented every one of these problems in the previous posts. But tell me something: have you never done exactly the same thing? Have you never spent 2 hours reading documentation only to find out it was a typo in the config? The difference is that when the AI gets it wrong, you catch it in the tests and fix it in minutes. When you get it wrong on your own, it takes you the same amount of time to make the mistake and even longer to find it, because you trust your own code.</p>
<p>Let&rsquo;s look at the concrete numbers of what I shipped in February, one person and one AI agent:</p>
<table>
  <thead>
      <tr>
          <th>Project</th>
          <th>Time</th>
          <th>Result</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>M.Akita Chronicles</td>
          <td>8 days</td>
          <td>4 apps (Rails + Python + Hugo), 335 commits, 1,422 tests, 3 weeks in production</td>
      </tr>
      <tr>
          <td>Frank Sherlock</td>
          <td>7 days</td>
          <td>Tauri desktop app (Rust + React), 103 commits, 621 tests, 7 releases, binaries for 3 OSes</td>
      </tr>
      <tr>
          <td>FrankMD</td>
          <td>~4 days</td>
          <td>Rails 8 Markdown editor, 226 commits, 1,804 tests, 3 external contributors</td>
      </tr>
      <tr>
          <td>FrankMega</td>
          <td>1 day</td>
          <td>Rails 8 file sharing, 28 commits, 210 tests, Docker + Cloudflare deploy</td>
      </tr>
  </tbody>
</table>
<p>Now do the math in your head. How long would it take you to build Frank Sherlock on your own? A Tauri app from scratch, with an LLM classification pipeline in Rust, OCR via Python, full-text search with FTS5, duplicate detection by perceptual hash, face detection with native ONNX, video support with keyframe extraction, CI for 3 platforms with macOS code signing and notarization, auto-update, and automatic publishing to the AUR. With 621 tests. In Rust, which doesn&rsquo;t forgive.</p>
<p>To be honest: without AI, a good senior dev would take at least 3-4 weeks on this, probably more. I did it in 7 days, alone, and every release is published with binaries anyone can download and install.</p>
<p>I already estimated The M.Akita Chronicles in the <a href="/en/2026/02/20/zero-to-post-production-in-1-week-using-ai-on-real-projects-behind-the-m-akita-chronicles/">previous post</a>: ~200 user stories. In Scrum with a senior team of 2-3 devs, no impediments, that would be 10-15 weeks. I did it in 8 days. Today, 3 weeks later, the system keeps running, evolving, with 99 more tests than when it <em>&ldquo;was done&rdquo;</em>.</p>
<p>FrankMega is more modest, but secure file sharing with Rails 8, I18n in 2 languages, 22 security issues fixed, Docker deploy, 210 tests. I did it in 1 day. A good senior, without AI, would do it in 1-2 weeks at best.</p>
<p>And I&rsquo;m not talking about disposable prototypes. People from outside send PRs to FrankMD. Real subscribers get the M.Akita Chronicles newsletter every Monday. Anyone can download Frank Sherlock from GitHub Releases or the AUR. Green CI, Brakeman clean, real tests, automated deploys. That&rsquo;s production software, not a conference demo.</p>
<p><em>&ldquo;Yeah, but I write better code without AI.&rdquo;</em> Maybe. But how long does it take you? What I showed here isn&rsquo;t that AI writes perfect code. Far from it. It&rsquo;s that with TDD, CI, pair programming with the agent, and continuous refactoring, the end result is production code with quality. 4,057 tests are there to prove it. Brakeman clean. 125 post-production commits show the code can take evolution without turning into a ball of mud.</p>
<p>And using AI here and there to generate a snippet of code, like glorified autocomplete, also isn&rsquo;t the answer. You&rsquo;re leaving 90% of the gain on the table. What I did in February was full-time pair programming with an agent. From the first commit to production deploy. With the same discipline I&rsquo;d use with a human pair. Result: 4 projects in production in 1 month, with quality I put my name on. Because I did put my name on it.</p>
<p>If you&rsquo;re a senior and you&rsquo;re still waiting for AI to <em>&ldquo;get better&rdquo;</em> before you really start using it, here&rsquo;s my message: it&rsquo;s already good enough. The 692 commits are there to prove it. The bottleneck now is you learning to work with it.</p>
<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>In February 2026, I built 4 projects from zero to production with AI. But the build is the easy part. What separates real software from a demo is the 125 commits that came after, when the bugs nobody predicted appeared, when external contributors sent PRs that needed hardening, when new features came up from real use and not from a requirements spreadsheet.</p>
<p>AI made me absurdly more productive. Without it, Frank Sherlock wouldn&rsquo;t have face detection in 7 days. Without it, M.Akita Chronicles wouldn&rsquo;t be in its 3rd week of operation with 1,422 tests. The speed is real.</p>
<p>But none of the decisions that mattered came from the AI. Switching models, reverting the TTS the same day, looking at the contributor PR and seeing where it was going to break, asking for a circuit breaker instead of retry. All of that was me. The AI executed. The decisions were mine.</p>
<p>The AI is the accelerator. Extreme Programming techniques (TDD, small releases, pair programming, continuous refactoring) are the brake and the steering wheel. Without discipline, AI produces fast code that piles up technical debt even faster. With discipline, AI produces software that actually evolves, week after week.</p>
<p>692 commits. 4,057 tests. 4 projects in production. And tomorrow, Monday, at 7am, M.Akita Chronicles subscribers get the 3rd newsletter. Generated, reviewed, and sent by a system that will never be <em>&ldquo;done&rdquo;</em>. Because finished software is dead software.</p>
<blockquote>
  <p>&ldquo;Finished software is dead software. Live software iterates.&rdquo;</p>

</blockquote>
]]></content:encoded><category>frank</category><category>llms</category><category>software-engineering</category><category>off-topic</category></item><item><title>RANT: Did AI Kill Programmers?</title><link>https://akitaonrails.github.io/en/2026/02/08/rant-ai-killed-programmers/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/02/08/rant-ai-killed-programmers/</guid><pubDate>Sun, 08 Feb 2026 14:29:18 +0000</pubDate><description>&lt;p&gt;Anyone who only watched clips and hot takes, without watching my &lt;a href="https://www.youtube.com/watch?v=UDrDg6uUOVs&amp;amp;list=PLdsnXVqbHDUeowsAO0sChHDY4D65T5s1U&amp;amp;pp=sAgC"target="_blank" rel="noopener"&gt;videos about AI&lt;/a&gt; on my channel, or at least the &lt;a href="https://www.youtube.com/watch?v=sf4Gxf0LiKo"target="_blank" rel="noopener"&gt;podcast on Flow&lt;/a&gt;, thinks I said the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;AIs will NEVER replace ANY programmer&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And that&amp;rsquo;s wrong. Watch the video with the explanation (or look for the transcript). But in short, what I said was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;AIs will never replace programmers LIKE ME — I will never be replaced&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Another thing I stated and keep stating is:&lt;/p&gt;</description><content:encoded><![CDATA[<p>Anyone who only watched clips and hot takes, without watching my <a href="https://www.youtube.com/watch?v=UDrDg6uUOVs&amp;list=PLdsnXVqbHDUeowsAO0sChHDY4D65T5s1U&amp;pp=sAgC"target="_blank" rel="noopener">videos about AI</a> on my channel, or at least the <a href="https://www.youtube.com/watch?v=sf4Gxf0LiKo"target="_blank" rel="noopener">podcast on Flow</a>, thinks I said the following:</p>
<blockquote>
  <p>&ldquo;AIs will NEVER replace ANY programmer&rdquo;</p>

</blockquote>
<p>And that&rsquo;s wrong. Watch the video with the explanation (or look for the transcript). But in short, what I said was:</p>
<blockquote>
  <p>&ldquo;AIs will never replace programmers LIKE ME — I will never be replaced&rdquo;</p>

</blockquote>
<p>Another thing I stated and keep stating is:</p>
<blockquote>
  <p>&ldquo;AGIs are not possible in the current architecture: it&rsquo;s not going to happen. A new discovery needs to show up — one we obviously don&rsquo;t know yet — to break past the current barrier, which is insurmountable.</p>

</blockquote>
<p>And that&rsquo;s where I derived this line from:</p>
<blockquote>
  <p><strong>&ldquo;Your excitement about AI is inversely proportional to your knowledge about AI&rdquo;</strong> — and it still holds just as well.</p>

</blockquote>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/frankmd/2026/02/akita%20camiseta.jpg" alt="akita camiseta"  loading="lazy" /></p>
<h2>The Programming Bubble Already Popped<span class="hx:absolute hx:-mt-20" id="the-programming-bubble-already-popped"></span>
    <a href="#the-programming-bubble-already-popped" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p><a href="https://www.youtube.com/@Akitando"target="_blank" rel="noopener">My channel</a> started in 2018 and ran until early 2024, with a single purpose:</p>
<blockquote>
  <p>Helping to prepare real programmers to survive the imminent popping of the bubble (which started around 2014).</p>

</blockquote>
<p>I have a whole playlist titled <a href="https://www.youtube.com/watch?v=wpPv1dJWjDs&amp;list=PLdsnXVqbHDUehzKjiRruy--gncHz9Injy&amp;pp=sAgC"target="_blank" rel="noopener"><strong>I TOLD YOU SO</strong></a>.</p>
<p>In short, in recent years, &ldquo;programming&rdquo; became the &ldquo;profession of the future&rdquo;, and <a href="https://www.youtube.com/watch?v=V7oUDL7E1g4"target="_blank" rel="noopener">it seemed easy</a>. It got obvious when all you saw was ads for every kind of course and bootcamp, with promises like: <em>&ldquo;become a programmer in 2 months, earn a Google salary, and you barely even have to work.&rdquo;</em></p>
<p>I called this kind of programmer the &ldquo;instant noodle chef&rdquo;. Just because you know how to boil water and make instant noodles doesn&rsquo;t make you a chef. It should be obvious, but that&rsquo;s how programming was sold. None of those courses produced any &ldquo;programmer&rdquo;, let alone a &ldquo;software engineer&rdquo;.</p>
<p>But &ldquo;software engineer&rdquo; is not real engineering. There&rsquo;s no CREA, CRM, OAB, or any equivalent body that certifies anyone as a &ldquo;software engineer&rdquo;. It&rsquo;s a made-up title anyone can slap on their LinkedIn.</p>
<p>The Black Swan of the Pandemic was something I didn&rsquo;t predict, but it only helped inflate the final phase of the bubble even further, which popped at the end of 2022 when mass layoffs began across every big tech. And that was BEFORE the advent of LLMs for programming. Coincidentally, ChatGPT showed up around the same time in 2022, but it was not the cause; it was just the last nail in the coffin. The popping of that bubble and the layoffs would have happened anyway.</p>
<p>That&rsquo;s why <a href="https://www.youtube.com/@Akitando"target="_blank" rel="noopener">my channel</a> must be the only one that, to this day, offers the content someone who actually wants to be a programmer needs. Imagine the other channels that only pushed the narrative that becoming a programmer was easy — they aged VERY badly.</p>
<p>So yes, I agree with Anthropic&rsquo;s CEO: those &ldquo;software engineers&rdquo; will become completely obsolete. Nobody becomes an &ldquo;engineer&rdquo; in a 1-month bootcamp. That was <strong>bullshit</strong> and you had to be really dumb to believe it. Notice how all those snake-oil sellers VANISHED. Where are they?</p>
<p>Don&rsquo;t know where to start on my channel? Two suggestions:</p>
<ul>
<li>Playlist <a href="https://www.youtube.com/watch?v=D3L8IOncLkg&amp;list=PLdsnXVqbHDUd6wEL932R7dW9Zazt2oNWF&amp;pp=sAgC"target="_blank" rel="noopener">&ldquo;What courses should I take?&rdquo;</a></li>
<li>Playlist <a href="https://www.youtube.com/watch?v=A2-yU3YjB1U&amp;list=PLdsnXVqbHDUcAWAN3cXHWnM9JEw2gjIN9&amp;pp=sAgC"target="_blank" rel="noopener">&ldquo;Career&rdquo;</a></li>
</ul>
<h2>The AI &ldquo;Ceiling&rdquo;<span class="hx:absolute hx:-mt-20" id="the-ai-ceiling"></span>
    <a href="#the-ai-ceiling" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>I finished recording videos for my channel exactly when the AI wave started. I considered that everything I wanted to say had already been said and it all remains available on the channel. My goal was accomplished.</p>
<p>During 2024 and 2025 I took part in podcasts like <a href="https://www.youtube.com/watch?v=25DG7ivZq_o&amp;list=PLdsnXVqbHDUcjqXfKo42h6Cm-HCcUNOnV&amp;pp=sAgC"target="_blank" rel="noopener">Flow</a> and <a href="https://www.youtube.com/watch?v=RKDCQUqXGg4&amp;list=PLdsnXVqbHDUdrzeKMb3QOwKW6rMvVHPeq&amp;pp=sAgC"target="_blank" rel="noopener">Inteligência Ltda</a> talking a lot about AIs and things like <a href="https://www.youtube.com/watch?v=_Hl9wiLkns4&amp;pp=ygUdZmFiaW8gYWtpdGEgaW50ZWxpZ2VuY2lhIGx0ZHM%3D"target="_blank" rel="noopener">quantum computing</a> (and how it too is just hype that won&rsquo;t amount to anything practical in our day-to-day).</p>
<p>The main point: since the transformers paper <a href="https://arxiv.org/abs/1706.03762"target="_blank" rel="noopener">Attention is all you need</a>, no other &ldquo;breakthrough&rdquo; has appeared that surpasses that milestone. Everything we have today, from OpenAI to Anthropic, and from open sources like DeepSeek, Qwen3, GLM, MiniMax, etc., is based on exactly the same foundation, the same &ldquo;architecture&rdquo;.</p>
<p>And I theorized — correctly — that the evolution of this architecture would follow an <strong>S-curve</strong>:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/frankmd/2026/02/Screenshot-2023-10-29-at-1.50.57-PM.jpg" alt="curva S"  loading="lazy" /></p>
<p>GPT-1 to 2 was a quantum leap. GPT-2 to 3 was a gigantic leap. GPT-3 to 4 was excellent, but, notably, not in the same proportion. GPT-4 to 5, most regular people barely noticed the difference.</p>
<p>Of course, nobody stood still; every computer scientist, mathematician, engineer kept doing what we always do: <strong>optimizing</strong>. Better training methods showed up, the idea of &ldquo;reasoning&rdquo;, the idea of agents working together (one giving feedback to another), new forms of alignment and instruction. But none of that changes the foundational architecture.</p>
<p>The problem: training each new generation of LLMs gets considerably more expensive (in hardware and, mainly, in energy consumption) to produce a version that isn&rsquo;t much better than the previous one. That&rsquo;s the ceiling of the curve. And I reaffirm: until a NEW ARCHITECTURE appears, we&rsquo;ll only get closer and closer to that ceiling, without crossing it, while spending absurd levels of more memory and more energy.</p>
<p>That&rsquo;s why there&rsquo;s an <a href="https://research.aimultiple.com/ai-energy-consumption/"target="_blank" rel="noopener">energy shortage</a>: with the increase in usage demand (inference), they have to split between spending energy on training new versions and serving demand. They can&rsquo;t do both.</p>
<p>Worse, that&rsquo;s why <a href="https://www.techradar.com/computing/memory/more-ram-misery-the-bad-news-keeps-coming-as-analyst-firm-warns-of-an-unprecedented-and-record-breaking-surge-with-price-hikes"target="_blank" rel="noopener">RAM prices exploded</a> and your PC will get much more expensive too. There are no more resources to train models so big that, proportionally, deliver less and less result (the definition of &ldquo;diminishing returns&rdquo;). It&rsquo;s the fate of every innovation: hitting the ceiling of the S-curve until another one comes along to replace it.</p>
<p>The focus now is on using the versions we already have better. In the programming case, you get GPT Codex or Claude Code, which are strategies for using agents, MCPs, skills, and other tools and forms of orchestration to squeeze the maximum out of what we already have today.</p>
<h2>LLM Strategies<span class="hx:absolute hx:-mt-20" id="llm-strategies"></span>
    <a href="#llm-strategies" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Everyone already knows it&rsquo;s impossible to just write a prompt and have any LLM spit out a perfect system in the end. It will come out very bad; it stays that way and will stay that way in this architecture.</p>
<p>Every LLM has a context (memory) limit. It&rsquo;s impossible to load the entire source code of a giant ERP like Totvs&rsquo;s or SAP&rsquo;s. It doesn&rsquo;t fit, and even if it did, it wouldn&rsquo;t be possible to give &ldquo;attention&rdquo; to all of it. There are limits: the more memory you load, the worse inference gets; the result gets worse. Like everything in software, it&rsquo;s a &ldquo;trade-off&rdquo;.</p>
<p>Instead, the best thing is to create scripts that walk through your code and extract specific chunks on each run. If you&rsquo;re working on the shopping cart, you don&rsquo;t need to load the code that handles the store&rsquo;s landing page, for example. It&rsquo;s similar to what a human programmer would do: <strong>divide and conquer</strong> (as Napoleon would say).</p>
<p>Every LLM specialized in code, like Codex or Opus, was trained to do <strong>&ldquo;tool calling&rdquo;</strong>, which is sending a request to the &ldquo;chat&rdquo; so it can fetch information (such as code) and load snippets into the context. For that, it has it run tools like &ldquo;rg&rdquo; <a href="https://github.com/BurntSushi/ripgrep"target="_blank" rel="noopener">ripgrep</a> (in Codex&rsquo;s case) or &ldquo;grep&rdquo; (in OpenCode&rsquo;s case).</p>
<p>If, by chance, the model wasn&rsquo;t trained on information that only recently came out on the Web, it can do <strong>&ldquo;agentic fetch&rdquo;</strong>, which is executing commands like &ldquo;curl&rdquo; to literally go to Google, Stack Overflow, etc., and pull web pages in to use as part of the context (the trade-off is that this will use up the limited context space).</p>
<p>When the context is about to run out (the 200k token range, in Claude&rsquo;s case, or 1 million, in Gemini&rsquo;s case), the &ldquo;chat&rdquo; that orchestrates (Claude Code, OpenCode, etc.) triggers a summary of the current context, to &ldquo;compact&rdquo; the understanding and restart with a new context based on that summary.</p>
<p>To make sure the generated code &ldquo;works&rdquo;, tool calling asks it to run local tools like linters, compilers, or LSPs (like an IDE, like VSCode, would). This produces feedback (and burns more context). If it errors, the &ldquo;chat&rdquo; can automatically ask it to redo the work, taking this new information into account.</p>
<p>Also, to go &ldquo;faster&rdquo;, the &ldquo;chat&rdquo; can fire off multiple agents in parallel. Each agent is a new context — and none of this is free, remember: tokens per second. So, it could send one agent to comb through all the code relevant to the database and, at the end, produce a summary. Another agent combs through all the payment code and, at the end, generates a summary. Another agent combs through the cart front-end code and produces a summary. Then the &ldquo;chat&rdquo; takes those summaries and goes back to the previous context to execute some task.</p>
<p>What I call &ldquo;chat&rdquo; is just to make it easier to visualize. Think of the simple chat interface everyone uses day to day, but with additional features. That&rsquo;s what a Codex or a Claude Code does. There&rsquo;s no secret, every tool like this, as well as open source ones like OpenCode or Crush, do the same thing: they set up a <strong>&ldquo;Harness&rdquo;</strong>:</p>
<ul>
<li>They start with a system prompt detailing exactly how they want the LLM to respond. This <a href="https://github.com/Piebald-AI/claude-code-system-prompts"target="_blank" rel="noopener">GitHub</a> has several examples of these prompts the tool sends without you knowing.</li>
<li>LLMs are trained with tool calling and the tool knows how to respond to those calls (executing bash, curl, ripgrep, sed, diff, git, etc.)</li>
<li>The tool is capable of running multiple agents in parallel (think multiple &ldquo;chats&rdquo; in parallel)</li>
<li>The tool asks the LLM to produce a &ldquo;plan&rdquo; first and enumerate tasks. Then it can orchestrate the sequential execution of those tasks, each in a different agent, for example.</li>
<li>The tool is capable of managing context limits and knowing when to trigger a summary, and how to start a new context and continue executing the remaining tasks</li>
<li>The tool is responsible for creating a container and preventing badly formed commands from affecting your system (this is optional; not all of them do it or care by default. Watch out!)</li>
</ul>
<p>I&rsquo;ve documented this in several posts on this blog:</p>
<ul>
<li><a href="/en/2025/04/25/llm-hello-world-building-your-own-local-ai-chat/">LLM Hello World: building your own AI chat that runs locally</a></li>
<li><a href="/en/2025/05/01/rant-llms-will-evolve-forever-demystifying-llms-in-programming/">Rant — Will LLMs evolve forever? Demystifying LLMs in programming</a></li>
<li><a href="/en/2025/05/01/when-llms-dont-work-for-coding-a-more-realistic-use-case/">When Don&rsquo;t LLMs Work for Programming? A more realistic use case.</a></li>
<li><a href="/en/2026/01/10/ai-agents-locking-down-your-system/">AI Agents: Locking Down Your System</a></li>
<li><a href="/en/2026/01/11/ai-agents-comparing-top-llms-on-the-zig-challenge/">AI Agents: Comparing the main 2026 LLMs on the Zig Challenge</a></li>
<li><a href="/en/2026/01/21/ai-agents-installing-lsps-for-crush/">AI Agents: Installing LSPs for Crush</a></li>
<li><a href="/en/2026/01/24/ai-agents-which-is-best-opencode-crush-claude-code-codex-copilot-cursor-windsurf-antigravity/">AI Agents: Which one is best? OpenCode, Crush, Claude Code, GPT Codex, Copilot, Cursor, Windsurf, Antigravity?</a></li>
<li><a href="/en/2026/01/28/vibe-code-built-a-little-app-fully-with-glm-4-7-tv-clipboard/">Vibe Code: I built a little app 100% with GLM 4.7 (TV Clipboard)</a></li>
<li><a href="/en/2026/01/29/vibe-code-which-llm-is-best-lets-be-real/">Vibe Code: Which LLM is the BEST?? Let&rsquo;s talk for REAL</a></li>
<li><a href="/en/2026/02/01/frankmd-markdown-editor-vibe-code-part-1/">Vibe Code: I built a Markdown Editor from scratch with Claude Code (FrankMD) PART 1</a></li>
<li><a href="/en/2026/02/01/frankmd-markdown-editor-vibe-code-part-2/">Vibe Code: I built a Markdown Editor from scratch with Claude Code (FrankMD) PART 2</a></li>
</ul>
<h2>The End of Stack Overflow<span class="hx:absolute hx:-mt-20" id="the-end-of-stack-overflow"></span>
    <a href="#the-end-of-stack-overflow" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Back in the GPT-3 and GPT-4 days, I was already writing code using LLMs and it worked well. But they still had lots of annoyances. Hallucinations were very frequent. There was a lot of &ldquo;agentic loop&rdquo; (when the LLM &ldquo;thinks&rdquo; it already fixed something, but it didn&rsquo;t, and it stays in a loop, not knowing what to do). Attention to context was easily lost (it improved a lot with Flash attention). Basically, several &ldquo;rougher&rdquo; issues have been ironed out to the point that they don&rsquo;t show up as often. It&rsquo;s not &ldquo;solved&rdquo;; it still happens, but it keeps getting better.</p>
<p>The more training data and alignment improved, the more those problems disappeared. The problem is we&rsquo;ve already reached the point where the training data in the world has <strong>run out</strong>. Everything that could be used has already been used. It&rsquo;s not just the lack of energy and hardware. The information to train on is gone.</p>
<p>The solution was to massage existing data to squeeze the maximum possible out of it and add lots of synthetic data (generated by the AI itself). Again, this already hits a &ldquo;diminishing returns&rdquo; ceiling.</p>
<p><a href="https://blog.pragmaticengineer.com/stack-overflow-is-almost-dead/"target="_blank" rel="noopener"><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/frankmd/2026/02/stackoverflow.png" alt="stackoverflow dead"  loading="lazy" /></a></p>
<p>On top of that, several sites used to extract LLM training data are falling into disuse. The most notable example is the venerable Stack Overflow. Look at how its traffic has dropped.</p>
<p>Some clueless people might just think: <em>&ldquo;ah, it&rsquo;s fine, people started asking dumb questions to LLMs instead, no more piles of people posting basic questions in forums.&rdquo;</em></p>
<p>It&rsquo;s true, it seems like progress. But even a &ldquo;dumb question&rdquo; is relevant training data. If the LLM &ldquo;sees&rdquo; that certain topics have higher probability, when it gets the same question, it &ldquo;tends&rdquo; to give the most popular answer. If this data disappears, so does the relevance of lots of new topics. Now, each LLM will depend on using the questions asked in its own chat as new training data, except OpenAI will only have questions asked to it, and it won&rsquo;t know which are the most popular questions asked in Claude, which shrinks the sources of relevant information more and more.</p>
<p>What every platform must be doing now is collecting every question you ask it, every answer the LLM produced, every bit of feedback you or your tools give on whether it was a success or an error, and stacking it up to train the next version, GPT-6 or Sonnet-5. Let&rsquo;s see how much you can evolve with just that — remembering that &ldquo;volume&rdquo; of information doesn&rsquo;t equal &ldquo;quality&rdquo; for training. That&rsquo;s still the Achilles heel.</p>
<blockquote>
  <p>The point is: at least temporarily, most of the relevant data on the Web has run out, and we&rsquo;re producing less than before.</p>

</blockquote>
<h2>Constraint == Innovation<span class="hx:absolute hx:-mt-20" id="constraint--innovation"></span>
    <a href="#constraint--innovation" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Yes, I also believe an entire category, which called itself &ldquo;software engineer&rdquo;, is going to stop existing because of AIs.</p>
<p>That weird &ldquo;specialization&rdquo; of &ldquo;front-end who doesn&rsquo;t touch any back-end&rdquo; or &ldquo;back-end who doesn&rsquo;t touch any infra&rdquo; will no longer exist. Front-end, in particular, is the easiest to replace, because it was a huge volume of low-value-added code with lots of duplication. It wasn&rsquo;t hard to automate, but nobody wanted to: it was &ldquo;cooler&rdquo; to keep inventing new frameworks every week that do the same thing in slightly different ways. That circus is finally over.</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/V0D3PuTLOZ8"
    title="Restrição == Inovação - Fabio Akita"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>I lectured for years on Constraint == Innovation and how innovation doesn&rsquo;t happen when you have money to burn, which is what happened in the last Programming Bubble: why automate things, be efficient, if there&rsquo;s money to spare? Just hire more and more people to do simpler and simpler grunt work.</p>
<p>In the Internet Bubble, there was so much money to burn that a &ldquo;website cataloguer&rdquo; profession existed: people who spent all day manually typing in every new site that appeared on the newly launched Web. It took years for an Altavista and then a Google to show up and figure out how to automate this. Back then, there were no &ldquo;web admins&rdquo; to publish new products in an e-commerce site: someone edited the HTML of Submarino.com&rsquo;s homepage every day, with new deals. All high-volume, low-value-added work. We automated all of that, and now, with LLMs, we&rsquo;ve just gone one step further.</p>
<p>Even before LLMs, it made no sense to need people exclusively to churn out disposable HTML/CSS all day. The slightly more automatic tools, like a SquareSpace.com of the world, weren&rsquo;t all that good.</p>
<p>The thing is: something simple, like a &ldquo;Web Admin&rdquo; to edit content without needing to know HTML, didn&rsquo;t exist in the 90s. Someone had to build the first versions of that kind of software so we could understand what works and what doesn&rsquo;t. Anyone from the 90s will remember expensive commercial software like the famous <a href="https://en.wikipedia.org/wiki/Vignette_Corporation"target="_blank" rel="noopener">Vignette Story Server</a>. Today, any open source Wordpress does the same thing better.</p>
<p>Nobody remembers software and companies that no longer exist. Especially young people think the world showed up with the Web ready-made, with social networks ready-made and e-commerce platforms ready-made. The feeling must be that, in Ancient Egypt, people already shopped on Amazon, ordered delivery on iFood, and everyone chatted on WhatsApp. I made a video called <a href="https://www.youtube.com/watch?v=Qb5b8ZE9tIY"target="_blank" rel="noopener">The Dimension of Time</a>, <a href="https://www.youtube.com/watch?v=0KNGiOp7eoE"target="_blank" rel="noopener">My Time Machine</a> and <a href="https://www.youtube.com/watch?v=ksZjJQiaK2Y"target="_blank" rel="noopener">My First Five Years</a> to try to give some perspective on this.</p>
<blockquote>
  <p>The point is: everything LLMs know how to do either already exists or already existed.</p>

</blockquote>
<p>They&rsquo;re not capable of inventing whatever it is, be it the &ldquo;Vignette of the 2030s&rdquo; or the &ldquo;Instagram of the 2030s&rdquo;. And I don&rsquo;t mean that in the sense of the &ldquo;next content manager&rdquo; or &ldquo;next social network&rdquo;. I mean in the sense that &ldquo;social network&rdquo; was a term that didn&rsquo;t exist in the 2000s and &ldquo;content manager&rdquo; didn&rsquo;t exist in the 80s, for example. What&rsquo;s the new category that will show up in the 2030s?</p>
<p>I don&rsquo;t know; if I did, I&rsquo;d obviously be building it to launch and become a billionaire. Nobody knows, much less LLMs. They can derive a lot of things from training, but what&rsquo;s not in the model&rsquo;s probabilities won&rsquo;t &ldquo;spontaneously&rdquo; appear. That&rsquo;s not how AIs work.</p>
<p>We can stay forever just redoing everything that&rsquo;s already been done the same way it exists today. But not much more than that. But the whole point of my talks was exactly that innovations are not born from just having tons of money and tons of brute force.</p>
<h2>Programmers in the LLM Era<span class="hx:absolute hx:-mt-20" id="programmers-in-the-llm-era"></span>
    <a href="#programmers-in-the-llm-era" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The conclusion is very simple: programmers like me will always exist. What always stops existing are professions that only have volume but low added value. That&rsquo;s the concept.</p>
<p>As I said in my videos, during my career I&rsquo;ve already survived the end of the microcomputer bubble in the early to mid 90s, the internet bubble from the mid 90s to the early 2000s, the 2001-2008 programming recession, the financial housing bubble that popped in 2008 but gave birth to the programming bubble, especially from 2014 to 2022, and now the AI bubble.</p>
<p>Don&rsquo;t fool yourself: it&rsquo;s always like this, and this is nothing more than another episode.</p>
<p>Who&rsquo;s the programmer that survives all these bubbles? This one:</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/oUPaJxk6TZ0"
    title="Guia DEFINITIVO de Aprendendo a Aprender | A maior BRONCA da sua vida [RATED R]"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>The ceiling of LLMs is already here and what they&rsquo;re delivering now isn&rsquo;t going to change much: the process is going to be the same. It&rsquo;ll get a bit faster. It&rsquo;ll generate a few less errors and small tweaks like that. But the process will keep being the same until some new architecture or some new discovery we don&rsquo;t know about yet shows up.</p>
<blockquote>
  <p>No AI-generated code will be automatically perfect to be put into production without any kind of review or human intervention. — Anyone who thinks otherwise either has never tested an LLM in practice or has never worked on real projects.</p>

</blockquote>
<p>As I said on Flow, this is the SECOND AI Bubble. The first was in the 60s because of the inventor of neural networks, Frank Rosenblatt. Just like Sam Altman or Dario Amodei, he also hyped neural networks and computers that were going to get much smarter than human beings &ldquo;very soon&rdquo;, and every newspaper at the time wrote about it. The promises died as promises and that generated the &ldquo;AI Winter&rdquo; in the 70s, where tons of investment was made, the result was not proportional, and AI research stagnated for the following decades, crawling at a turtle&rsquo;s pace.</p>
<p>That only really started to change with the advent and popularization of the Web, the rise of social networks, the emergence of Big Data, and now, with huge volumes of data to kick off a new era of research on neural networks, with a lot more training material. And now with the existence of GPUs to accelerate processing. That&rsquo;s when AlexNet showed up, from Geoffrey Hinton, Yann LeCun, and Ilya Sutskever, the &ldquo;breakthrough&rdquo; of convolutional neural networks (CNNs) and parallel processing via GPUs.</p>
<p>Without that, we wouldn&rsquo;t have moved on to transformers, diffusers, and things like Nano Banana and Sora. This is a type of area where LLMs won&rsquo;t contribute: cutting-edge research and new discoveries. In that field, we&rsquo;ll still need computer scientists, mathematicians, theoretical physicists, etc. If you have a calling for research, it&rsquo;ll still be a fertile area for many years. The bar only went up, which is a good thing.</p>
<p>About the Claude that managed to build a C compiler:</p>
<blockquote>
  <p>A C compiler is the easiest to build; it&rsquo;s literally college material, because C is one of the &ldquo;simplest&rdquo; languages (it started as Assembly macros).</p>

</blockquote>
<p><a href="https://www.anthropic.com/engineering/building-c-compiler"target="_blank" rel="noopener"><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/frankmd/2026/02/screenshot-2026-02-08_12-58-46.png" alt="gcc claude"  loading="lazy" /></a></p>
<p>As Anthropic&rsquo;s own article — which nobody read, of course — says, they used GCC for comparison.</p>
<p>Of course, GCC exists; it&rsquo;s the main compiler used to compile the Linux kernel. If you copy GCC, you&rsquo;ll arrive at another GCC, no matter what other language you write it in — that&rsquo;s not the hard part, because every language can do everything another language can (they&rsquo;re all Turing Complete: it can be slower, it can be less safe, it can be more work, but I can write a C compiler in Visual Basic if I want, that&rsquo;s not impressive).</p>
<p>No LLM has replaced Linus Torvalds, nor Richard Stallman, nor any of the great programmers whose names you&rsquo;ve heard. They can copy what&rsquo;s already been done, and that&rsquo;s it. Yes, they are &ldquo;stochastic parrots&rdquo;, regardless of what a Geoffrey Hinton tries to propagandize in his own favor (everyone has biases). By the way, as I&rsquo;ve already said on podcasts: fuck Geoffrey Hinton. Stop falling for the <strong>Appeal to Authority Fallacy</strong>.</p>
<h2>A Word to Companies<span class="hx:absolute hx:-mt-20" id="a-word-to-companies"></span>
    <a href="#a-word-to-companies" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>This should be obvious, but I&rsquo;m going to put it on the record just so I can say &ldquo;I TOLD YOU SO&rdquo; later.</p>
<ul>
<li>No LLM is going to write code on its own. It needs a senior to spec it out.</li>
<li>Every LLM-generated piece of code needs review. It needs a senior to review it.</li>
<li>Part of the generated code needs to be rewritten. It needs a senior to know that.</li>
<li>Another part of the code will have bugs the LLM will miss. It needs a senior to know that.</li>
<li>Knowing what these bugs are, you can have the LLM fix them.</li>
</ul>
<p>With that said, some things LLMs do very well:</p>
<ul>
<li>Exploratory analysis of legacy code</li>
<li>Refactoring parts of legacy code</li>
<li>Adding unit tests to parts of legacy code</li>
<li>Suggesting improvements to parts of legacy code</li>
<li>Finding some security or performance holes in legacy code</li>
</ul>
<p>Notice how I say &ldquo;parts&rdquo; or &ldquo;some&rdquo;. There&rsquo;s no guarantee it can do this on any legacy codebase or any part. Again, it needs a good senior evaluating each step.</p>
<p>Everything is done <strong>STEP BY STEP</strong>. An attempt, a check, an adjustment, repeat. It&rsquo;s the famous PDCA cycle: Plan, Do, Check, Act. That&rsquo;s the process that works. Every new tested adjustment becomes a &ldquo;git commit&rdquo; and we move on to the next step. Always one step at a time, systematically, in an organized manner. Never something generic like <em>&ldquo;Fix everything in this legacy system&rdquo;</em>.</p>
<p>Another thing LLMs are very good at is rewriting code from one language to another (translations in general). But I don&rsquo;t recommend it, and not just because it&rsquo;s an LLM:</p>
<blockquote>
  <p>I never recommend rewriting from scratch as a first option.</p>

</blockquote>
<p>There&rsquo;s no guarantee a newer language is &ldquo;better&rdquo; than an older one. &ldquo;Better&rdquo; always &ldquo;depends&rdquo; on your definition of &ldquo;better&rdquo;.</p>
<p>It&rsquo;s trendy now to rewrite everything in Rust because supposedly it has fewer security problems. That&rsquo;s incorrect. Rust is good for certain categories of security, not all of them. And there&rsquo;s a whole category of <strong>functional</strong> problems that don&rsquo;t show up in any compiler. Rewriting something complex, like a Linux kernel, in Rust is a gigantic illusion and a waste. If it &ldquo;seems easy&rdquo; to have an LLM rewrite it in Rust, it&rsquo;s equally easy for it to fix a small bug in C precisely, without touching the rest that already works.</p>
<blockquote>
  <p>Rewriting is indeed a guarantee that several new bugs will appear and you won&rsquo;t detect them right away; it&rsquo;ll be a new time bomb. To fix one known bug, you ended up creating several other unknown bugs. Rewriting, by definition, always adds new bugs.</p>

</blockquote>
<p>And no, when you ask the LLM: <em>&ldquo;find all the security bugs in this code&rdquo;</em>, it&rsquo;s going to find some, but never all of them.</p>
<p>Understand Portuguese: it&rsquo;ll always say something like <em>&ldquo;Here are all the bugs I found&hellip;&rdquo;</em> Even today&rsquo;s LLM won&rsquo;t try to say <em>&ldquo;Here are all the bugs that exist&rdquo;</em> anymore.</p>
<p>No AI is built to give 100% correct, unambiguous answers. On the contrary, it&rsquo;s always a probabilistic machine that will give the answer based on the probabilities of the model generated by training. What&rsquo;s not in that model, it doesn&rsquo;t know. And even giving it context, there are no guarantees of &ldquo;complete understanding&rdquo;, only of &ldquo;some understanding&rdquo;. Always work with probabilities below 100%.</p>
<p>Programming languages, by their very nature, are not deterministic. There&rsquo;s no way to write a mathematical equation where I can feed it the program and it guarantees the absence of bugs. This is a mathematical impossibility; it&rsquo;s not &ldquo;a matter of time&rdquo;. Time is not relevant to that definition.</p>
<blockquote>
  <p>Bug detection (functional, security, performance, etc.) is always a stochastic process, a heuristic, never an algorithm. This is something every computer scientist or mathematician understands, but nobody who&rsquo;s never studied can understand. For regular people, heuristic is the same as algorithm. That&rsquo;s a mistake that can be fatal.</p>

</blockquote>
<p>So, every LLM, by its very foundation and architecture, will always have these and other limitations built in. But that&rsquo;s not a problem, that&rsquo;s just the nature of the tool. Hammers aren&rsquo;t meant to turn screws, and that&rsquo;s not a flaw. It should be obvious, but hitting a hammer on a nail and not turning it is a natural characteristic. It&rsquo;s neither an advantage nor a defect. <strong>It depends on what problem you want to solve.</strong></p>
<p>Overall, LLMs will be very good at handling grunt work: adding tests, refactoring code, tweaking front-end, creating new screens from old screens, creating new reports from old reports. Creating Portuguese-to-Spanish translations of your system&rsquo;s screens. For that kind of nail, LLMs are the perfect hammer.</p>
<p>Now, precise interpretation of laws, business rules, individual cases and exceptions to the rule, relaxing certain rules — everything that&rsquo;s part of decision-making in a company. Never fully trust any LLM: you&rsquo;ll need an experienced human to approve or reject. No matter how much it has memorized all the country&rsquo;s laws, there&rsquo;s no guarantee it knows when to use or not use them, and how that can vary in the most diverse cases, especially in the exceptions.</p>
<blockquote>
  <p>Never ask a hammer how you should run your company.</p>

</blockquote>
<h2>&ldquo;How do you get seniors if there won&rsquo;t be juniors anymore?&rdquo;<span class="hx:absolute hx:-mt-20" id="how-do-you-get-seniors-if-there-wont-be-juniors-anymore"></span>
    <a href="#how-do-you-get-seniors-if-there-wont-be-juniors-anymore" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Notice that the premise is that, at minimum, you&rsquo;ll always need a senior instructing and reviewing the LLM&rsquo;s work.</p>
<p>But if LLMs can perform all the grunt tasks that used to go to interns and juniors, how are they going to grow into seniors?</p>
<p>It&rsquo;s the billion-dollar question and I&rsquo;ll say upfront I don&rsquo;t know the full answer. Nobody does.</p>
<p>The start is easy. It&rsquo;s what I said in every video on the channel: it&rsquo;s how I made my entire career: having a solid education and &ldquo;learning to learn&rdquo; for real. Easier said than done; that&rsquo;s why I spent 5 years of videos trying to explain it in every way I could, to see if anyone would get it.</p>
<p>The next part is the hard one: how do you learn if LLMs already do everything?</p>
<p>This question starts from a false premise: LLMs don&rsquo;t do everything. They do what they&rsquo;re asked to do. If the request is well specified, it&rsquo;ll come out like a gourmet dish from a 3-Michelin-star restaurant. If the request is lame, from someone clearly inexperienced, it&rsquo;ll come out as instant noodles. It&rsquo;s that simple.</p>
<blockquote>
  <p>The LLM&rsquo;s result is directly proportional to the work of instruction, evaluation, and follow-up from the human in control.</p>

</blockquote>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/frankmd/2026/02/s-l960.jpg" alt="cartão perfurado"  loading="lazy" /></p>
<p><em>&ldquo;How is someone going to be a programmer if they don&rsquo;t even know how to punch a card?&rdquo;</em> — It&rsquo;s a fair question to ask someone in the 60s.</p>
<p><em>&ldquo;How is someone going to be a programmer if they don&rsquo;t even know how to save to a cassette tape?&rdquo;</em> — Another fair question, if it&rsquo;s someone from the 80s.</p>
<p><em>&ldquo;How is someone going to be a programmer if they don&rsquo;t even know how to edit code in a text editor like Emacs and needs Eclipse?&rdquo;</em> — Another fair question, if it&rsquo;s someone from the 90s.</p>
<p><em>&ldquo;How is someone going to be a programmer if they don&rsquo;t even know how to code for the Web?&rdquo;</em> — A good question for someone in the early 2000s.</p>
<p><em>&ldquo;How is someone going to be a programmer if they can&rsquo;t even build a mobile app?&rdquo;</em> — If it&rsquo;s someone in the 2010s.</p>
<p><em>&ldquo;How is someone going to be a programmer if they have LLMs?&rdquo;</em> — The question of the 2020s. Good luck.</p>
<p>Every generation has similar questions. None of them have an exact solution. Look at the facts: we&rsquo;re still here. In 2026, I know things about programming I never dreamed I&rsquo;d know when I entered college in 1995. Everything has changed. Everyone who &ldquo;learned how to learn&rdquo; knew how to <strong>ADAPT</strong> and use the knowledge they already had to learn new ways of working.</p>
<blockquote>
  <p>It&rsquo;s all about adaptation: those who don&rsquo;t adapt go extinct. That&rsquo;s the law.</p>

</blockquote>
<p>There&rsquo;s not much more to say about this. But in practice:</p>
<p>If you&rsquo;re a programmer, use LLMs. Learn their strengths and weaknesses, the different results they produce depending on your own knowledge, and never stop studying and training.</p>
<p>If you&rsquo;re a senior/company, keep hiring juniors. Your seniors aren&rsquo;t immortal. At the very least, eventually they&rsquo;ll retire. More realistically: eventually they&rsquo;ll change jobs. The second most important task of any senior is mentoring juniors and creating replacements. A senior incapable of creating their own replacement isn&rsquo;t a senior, they&rsquo;re a <strong>liability</strong>.</p>
<p>Mentoring is the same thing as always: training with follow-up and feedback, continuous improvement, with the difference that, besides operating system, text editor and IDEs, CI systems, etc., now there&rsquo;s LLMs in the toolbox. That&rsquo;s it. Don&rsquo;t try to complicate what doesn&rsquo;t need to be complicated and don&rsquo;t suffer in advance.</p>
<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><em>&ldquo;Ugh, but you said the AI bubble is going to burst.&rdquo;</em></p>
<p>Yes, and I still say so. But you&rsquo;re misunderstanding again. From 1994 to 2001 there was the <a href="https://en.wikipedia.org/wiki/Dot-com_bubble"target="_blank" rel="noopener">Internet Bubble</a>, and it burst!</p>
<p>Understand: the &ldquo;Internet Bubble&rdquo; burst. But the &ldquo;Internet&rdquo; still exists to this day. Is that clear?</p>
<p>Same thing: the &ldquo;AI Bubble&rdquo; is going to burst, many companies are going to go bankrupt, many people in the field are going to lose their jobs, etc. But AIs will keep existing. The AI bubble of the 60s burst, but AIs kept existing and even formed a new bubble now. Economic cycles have nothing to do with technological cycles.</p>
<blockquote>
  <p>It just means: <em>&ldquo;don&rsquo;t bet all your chips on the same horse, especially if your life/career depends on it.&rdquo;</em></p>

</blockquote>
<p>LLMs will keep existing, roughly in the same form, a bit faster and more efficient, but with the same process behind them and the same way of working. Just like the Web of 2026 isn&rsquo;t much different from the technology of the 90s, but is more refined and optimized.</p>
<p>I was never an AI &ldquo;hater&rdquo;; on the contrary, I&rsquo;m someone who was already risking writing code with GPT-2. And it&rsquo;s always improving. It&rsquo;s now at a point where it&rsquo;s easy to recommend even to non-programmers playing with systems that aren&rsquo;t going to production and aren&rsquo;t mission-critical.</p>
<p>Since I started with programming, at the end of the 80s, thankfully I&rsquo;ve never had a single moment when I thought our field was &ldquo;boring&rdquo; or &ldquo;monotonous&rdquo;. For me, this is just another chapter in this story, and I&rsquo;m expecting new chapters.</p>
<p>What I say that &ldquo;sounds like hate&rdquo; is just arguing and explaining the current limitations and the unrealistic expectations, illusions, or even blind bets I know aren&rsquo;t going to pan out. I&rsquo;m warning about what&rsquo;s real. But I&rsquo;m always saying: &ldquo;there needs to be a new discovery&rdquo;. With the expectation that something more is coming in the future, and not that &ldquo;nothing&rsquo;s going to work out&rdquo;.</p>
<p>At the end of the day, the Java of the 90s didn&rsquo;t replace the Cobol and Fortran of the world, as was intended. The Web didn&rsquo;t turn into a peaceful utopia of pure knowledge as people wanted. Mobile didn&rsquo;t replace other forms of computing as people wanted. VR didn&rsquo;t become the new wave. None of that invalidates the qualities of Java, the Web, Mobile, or even VR.</p>
<p>The last Programming Bubble was a boring period for me in terms of innovation: because everything was being replaced by cheap programmers. For me, the bursting of that bubble was expected and makes me very happy. Because we finally came out of the drudgery of idiotic courses to talk about cutting-edge technology again. Programmers going back to being real programmers.</p>
<p>I only see good things in this.</p>
]]></content:encoded><category>artificial-intelligence</category><category>llms</category><category>career</category><category>off-topic</category></item><item><title>AGI or Skynet Isn't Coming Anytime Soon</title><link>https://akitaonrails.github.io/en/2025/06/18/agi-or-skynet-isnt-coming-anytime-soon/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2025/06/18/agi-or-skynet-isnt-coming-anytime-soon/</guid><pubDate>Wed, 18 Jun 2025 15:00:00 -0300</pubDate><description>&lt;p&gt;If you haven&amp;rsquo;t watched it, I recommend the episode I took part in last Friday, 06/13/2025, on Flow Podcast:&lt;/p&gt;
&lt;div class="embed-container"&gt;
&lt;iframe
src="https://www.youtube.com/embed/sf4Gxf0LiKo"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerpolicy="strict-origin-when-cross-origin"
allowfullscreen&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I made a point of raising something that&amp;rsquo;s worth expanding on now. Every time you believe a CEO of an A.I. company saying that &amp;ldquo;A.I. is going to replace people&amp;rdquo; or &amp;ldquo;AGI is knocking at our door&amp;rdquo; or &amp;ldquo;AGI is going to be catastrophic&amp;rdquo;, you&amp;rsquo;re believing a drug dealer telling you cocaine is good for your health.&lt;/p&gt;</description><content:encoded><![CDATA[<p>If you haven&rsquo;t watched it, I recommend the episode I took part in last Friday, 06/13/2025, on Flow Podcast:</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/sf4Gxf0LiKo"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>I made a point of raising something that&rsquo;s worth expanding on now. Every time you believe a CEO of an A.I. company saying that &ldquo;A.I. is going to replace people&rdquo; or &ldquo;AGI is knocking at our door&rdquo; or &ldquo;AGI is going to be catastrophic&rdquo;, you&rsquo;re believing a drug dealer telling you cocaine is good for your health.</p>
<p>Let&rsquo;s get to the new information. Sundar Pichai is Google&rsquo;s CEO, and one of the people who said &ldquo;30% of Google&rsquo;s code&rdquo; is already written by A.I. (without explaining, of course, &ldquo;which 30%&rdquo; or showing anything).</p>
<p>Check out the same Sundar Pichai today, 06/18/2025, on <a href="https://www.businessinsider.com/ai-google-engineers-coding-productive-sundar-pichai-alphabet-2025-6"target="_blank" rel="noopener">&ldquo;Business Insider&rdquo;</a></p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/sundar-pichai-2025-06-18.jpg" alt="Sundar Pichai"  loading="lazy" /></p>
<p>Interesting how the tone got more &ldquo;down to earth&rdquo; now. And he wasn&rsquo;t the first. Back in February 2025, Microsoft&rsquo;s CEO Satya Nadella said the following in <a href="https://futurism.com/microsoft-ceo-ai-generating-no-value"target="_blank" rel="noopener">articles like this one</a>:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/screenshot_18062025_161757.jpg" alt="Satya Nadella"  loading="lazy" /></p>
<p>And why this shift in tone, given that at the end of 2024 everyone was pumped up shouting &ldquo;AGI&rdquo;, &ldquo;AGI&rdquo;?</p>
<p>There&rsquo;s <a href="https://www.indicpacific.com/post/beyond-agi-promises-decoding-microsoft-openai-s-competition-policy-paradox"target="_blank" rel="noopener">a clause</a> in Microsoft&rsquo;s investment deal with OpenAI (they invested USD 14 billion) stating that OpenAI would stop sharing technology with Microsoft once &ldquo;AGI&rdquo; was reached. Defined as a &ldquo;highly autonomous system that surpasses humans in the most economically valuable work&rdquo;. That&rsquo;s the definition.</p>
<p>The problem is that this also takes Microsoft out as an investor. On top of that, Microsoft itself recently started declaring itself a competitor to OpenAI instead of a partner, positioning itself alongside a Google or Claude. Read the details in this analysis:</p>
<p><a href="https://www.indicpacific.com/post/beyond-agi-promises-decoding-microsoft-openai-s-competition-policy-paradox"target="_blank" rel="noopener"><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/screenshot_18062025_162322.jpg" alt="msft-openai-clause"  loading="lazy" /></a>
Get this straight: every &ldquo;it&rsquo;s AGI, it&rsquo;s not AGI&rdquo; discussion has more to do with under-the-table negotiations between the various Big Tech players involved and their investors. It has nothing to do with real technology. You&rsquo;re just another audience monkey in a show you can&rsquo;t even watch. So you&rsquo;re cheering blindly, as usual.</p>
<h3>Geoffrey Hinton and the Expert Problem<span class="hx:absolute hx:-mt-20" id="geoffrey-hinton-and-the-expert-problem"></span>
    <a href="#geoffrey-hinton-and-the-expert-problem" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><a href="https://x.com/10X_AI_/status/1934970334693957852"target="_blank" rel="noopener"><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/geoffrey-hinton-interview.jpeg" alt="geoffrey hinton interview"  loading="lazy" /></a>
Yet another interview with this Geoffrey Hinton guy came out, more fatalism, more &ldquo;it&rsquo;s over&rdquo;, and more people screaming around every corner thinking Armageddon is showing up tomorrow.</p>
<p>The media considers Geoffrey Hinton the &ldquo;Godfather of A.I.&rdquo;</p>
<p>Because of this, many people believe everything he says - <em>&ldquo;Of course the guy who invented A.I. knows what&rsquo;s going to happen&rdquo;</em>. It turned into a cult.</p>
<p>I myself said on Flow that he invented Backpropagation - the backbone of A.I. training -, but that&rsquo;s a simplification. Hinton himself has clarified several times that he <strong>did not invent it</strong>. The bulk of the work was published by <strong>Paul Werbos</strong> and <strong>Shun-Ichi Amari</strong>. But it&rsquo;s true that Hinton was the one who popularized that work.</p>
<p>Hinton, as a professor, had the luck of supervising students who would go on to become brilliant. On AlexNet - I told the story on Flow - it was Ilya Sutskever who came up with the idea of using GPUs to train deep neural networks. Ilya, who would later co-found OpenAI - alongside Andrej Karpathy, another brilliant Hinton student, and who these days I despise because he&rsquo;s the one who coined that &ldquo;Vibe Coding&rdquo; thing. Karpathy has been following in his mentor Hinton&rsquo;s footsteps, spreading bullshit.</p>
<p>Still on the computer vision revolution, besides using GPUs, the big architectural step was <em>Convolutional Neural Networks</em> (CNNs), from <strong>Yann LeCun</strong> - another Hinton student.</p>
<p>The problem: the media gives more credit to the supervisor than to the student. It lumps everything together and it ends up as if Hinton - alone - invented BackPropagation, CNNs, and the entire AlexNet. Even the Alan Turing Award he received, again the merit belonged to the team, but the name &ldquo;Hinton&rdquo; is stronger, so it came out as if &ldquo;he&rdquo; was the one most responsible. Obviously, that way anyone looks like a demigod.</p>
<p>I&rsquo;m not saying he&rsquo;s dumb or anything like that. But he&rsquo;s not all that, he&rsquo;s not infallible, and he&rsquo;s certainly a normal human being who makes mistakes. There&rsquo;s no correlation between his previous work and speculations about the future.</p>
<p>On another end of the spectrum, there&rsquo;s a Nobel laureate, Roger Penrose, who has been postulating since the 80s or 90s that <strong>&ldquo;consciousness is NOT computable&rdquo;</strong>, for example, in his book <a href="https://www.amazon.com.br/Emperors-New-Mind-Concerning-Computers/dp/0192861980"target="_blank" rel="noopener">&ldquo;The Emperor&rsquo;s New Mind&rdquo;</a>. A Nobel laureate at the level of someone who proved Einstein&rsquo;s hypotheses and worked with Hawking.</p>
<p>On top of that, Yann LeCun himself belongs to the camp that doesn&rsquo;t believe current A.I.s will get anywhere near AGI either. As I ALWAYS repeat: some new discovery - that we don&rsquo;t yet know about - needs to happen for that to occur. LeCun has his theories and is at Meta, working on a project called <strong>V-JEPA</strong> to see if he can make that discovery.</p>
<p>Instead of listening to Hinton, listen to a bit of LeCun:</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/RUnFgu8kH-4"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>Well then, if &ldquo;authority&rdquo; is your only yardstick, you should then blindly believe Penrose and LeCun as well. And now, how does that work out?</p>
<p>This game is more complicated than your naive blind-follower mind can see. Don&rsquo;t be just an audience monkey, and understand how the pieces fit together.</p>
<h3>&ldquo;You Can&rsquo;t Prove AGI Won&rsquo;t Exist&rdquo;<span class="hx:absolute hx:-mt-20" id="you-cant-prove-agi-wont-exist"></span>
    <a href="#you-cant-prove-agi-wont-exist" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>It&rsquo;s true, nobody can. Nobody can prove God doesn&rsquo;t exist. Nobody can prove Unicorns don&rsquo;t exist. This means absolutely nothing, it&rsquo;s a logical fallacy.</p>
<p>People outside of tech who never studied computer science can only see what the newspapers publish or the nonsense some influencer says on a podcast.</p>
<p>Let&rsquo;s clear this up: yes, all of us - programmers trained in computer science - know that with the current LLM architecture, there&rsquo;s no way to reach AGI. That is a certainty.</p>
<p>The problem is that you folks think that not even we know everything about A.I., that there&rsquo;s some mysterious layer inside the model that works without us knowing how it works.</p>
<p>Or worse, you folks think that only a few names considered important, like Geoffrey Hinton or Ilya Sutskever, are the ones who can understand it. Understand an important truth: yes, to arrive at a General Theory of Relativity, it took giant geniuses like Albert Einstein, David Hilbert, Kurt Gödel, etc. One of them would get there, not every physicist could.</p>
<p>But, once the Theory is described and understood, it&rsquo;s easily taught to first-year college students. It&rsquo;s no mystical secret that needs decades of training to understand.</p>
<p>Same thing: perceptrons, neural networks, backpropagation, gradient descent, RNNs, CNNs, Transformers, etc. Each of these stages counted on people considered geniuses, like Geoffrey Hinton (whom many will say just took the credit, while the actual work was done by the Sutskevers or LeCuns). But once understood, all of this is undergraduate material in computer science. You don&rsquo;t even need to be a PhD to understand most of it.</p>
<p>Trained models work because we know how to tune them to work. An important part of the training phase is feeding the neural networks millions of PRE-MADE questions and answers. That&rsquo;s the INSTRUCTION phase, and EVERY LLM goes through it. It answers exactly the way each company behind it told it to answer, nothing more than that.</p>
<p>Ah, but there are so many parameters that you can&rsquo;t possibly know everything about it. Yes we can, any good programmer can load up Tensorflow, PyTorch, load the model, and explore every dimension. We can start from the answer and look at the steps backward and see why it formed the way it did. We can re-tune, we can tweak as much as we want. I showed part of this in previous posts.</p>
<p>Every stage of training, inference, optimization, alignment methodologies, deployment strategies, it&rsquo;s all documented, and all of us in the sciences know exactly how everything works.</p>
<p>That&rsquo;s why it&rsquo;s scary that someone like a Hinton or Sutskever keeps going around fearmongering without demonstrating anything. It shows how out of the loop they are about what&rsquo;s actually happening. Yann LeCun is right: he has his hands dirty and he knows the current architecture has already hit the ceiling and there isn&rsquo;t much further to go from here. That&rsquo;s why he started other projects to try to figure out what a NEW architecture that leads to the next stage might look like. That&rsquo;s Meta&rsquo;s V-JEPA 2 project.</p>
<p>Just because YOU don&rsquo;t know how things work, don&rsquo;t think there&rsquo;s room for science fiction stuff. It&rsquo;s the same as watching a movie like &ldquo;The Ring&rdquo; where evil spirits live inside a VHS tape and come out of the TV, associating that TV-wave-spirit as if it could be real and telling me &ldquo;You can&rsquo;t prove it&rsquo;s not possible&rdquo;. It&rsquo;s a level of childishness and lack of knowledge that I don&rsquo;t even know how to start explaining.</p>
<p>Always, the <strong>BURDEN OF PROOF</strong> is on whoever is SELLING the claim. Every AI company CEO and every renowned academic - without publishing anything - is making this claim. I&rsquo;m not the one who has to prove anything: they are. No one should try to prove a negative, it makes no sense.</p>
<p>As a bonus, going back to Yann LeCun. I didn&rsquo;t follow him before, I only went to see what he says today. I found it interesting how he argues exactly the same things I&rsquo;ve been saying for over a year now. I don&rsquo;t want to claim for a second that I&rsquo;m even a fraction of his intelligence. It&rsquo;s just that, starting from the same principles, you inevitably arrive at the same conclusions. It&rsquo;s pure inference from first principles. It&rsquo;s not speculation. If you write &ldquo;2 + 2&rdquo;, both he and I will arrive at &ldquo;4&rdquo;. Everyone is saying &ldquo;but if you have enough computing power, one day it&rsquo;ll get to 10&rdquo;. It won&rsquo;t. Watch this other interview of his, it&rsquo;s very enlightening:</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/qvNCVYkHKfg"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>What LeCun and others - like DeepMind - have already said is that LLMs don&rsquo;t have the capacity to reach AGI. That&rsquo;s known, and DeepMind has already proven it mathematically. <a href="https://www.youtube.com/watch?v=kpOWmwA6tJc"target="_blank" rel="noopener">This other video</a> has more details. But in summary, an LLM is good as an &ldquo;information retriever&rdquo;. Beyond what I call a &ldquo;glorified text completer&rdquo;, which means it&rsquo;s only capable of completing with information it has already seen in training (and random combinations that sometimes make it seem like it&rsquo;s new information, but it isn&rsquo;t). The only way for it to solve ANY problem is to have a CAUSAL MODEL of ALL PROBLEMS. In other words, it would already need to know the answer to every question beforehand. Obviously we don&rsquo;t have that, therefore it&rsquo;s impossible for an LLM - being a machine for retrieving information - to give us solutions that don&rsquo;t exist, like &ldquo;what&rsquo;s the new discovery that will enable AGI?&rdquo;. It&rsquo;s an undecidable and non-computable problem. Mathematically proven to be unfeasible.</p>
<p>AGI, under the current architecture, is not going to happen. Some new discovery needs to happen. That could be 2 years from now, it could be 20 years from now. But there is no possible path from what we know today.</p>
]]></content:encoded><category>artificial-intelligence</category><category>llms</category><category>philosophy</category><category>off-topic</category></item><item><title>Computing History and Retro Dev on YouTube</title><link>https://akitaonrails.github.io/en/2025/05/19/computing-history-and-retro-dev-on-youtube/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2025/05/19/computing-history-and-retro-dev-on-youtube/</guid><pubDate>Mon, 19 May 2025 15:19:00 -0300</pubDate><description>&lt;p&gt;I watch a LOT of YouTube, and I&amp;rsquo;m always sharing cool stuff I watch on my X and Instagram (follow me there). There are several videos I keep coming back to.&lt;/p&gt;
&lt;p&gt;I finally decided to compile a list with the channels I watch the most, along with a list of the main playlists and example videos from each channel that I recommend watching.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll probably keep coming back to this page to update it from time to time. If anyone remembers one I forgot, send it in the comments. There are channels like GameSack, Sega Lord X, Retro Game Corp, Wullfden, Macho Nacho Productions, and several others I didn&amp;rsquo;t list, because they lean more toward &amp;ldquo;reviews&amp;rdquo; and don&amp;rsquo;t overlap as much with &amp;ldquo;dev&amp;rdquo;. I tried to focus on things I think a &amp;ldquo;dev&amp;rdquo; should know.&lt;/p&gt;</description><content:encoded><![CDATA[<p>I watch a LOT of YouTube, and I&rsquo;m always sharing cool stuff I watch on my X and Instagram (follow me there). There are several videos I keep coming back to.</p>
<p>I finally decided to compile a list with the channels I watch the most, along with a list of the main playlists and example videos from each channel that I recommend watching.</p>
<p>I&rsquo;ll probably keep coming back to this page to update it from time to time. If anyone remembers one I forgot, send it in the comments. There are channels like GameSack, Sega Lord X, Retro Game Corp, Wullfden, Macho Nacho Productions, and several others I didn&rsquo;t list, because they lean more toward &ldquo;reviews&rdquo; and don&rsquo;t overlap as much with &ldquo;dev&rdquo;. I tried to focus on things I think a &ldquo;dev&rdquo; should know.</p>
<h2>List (2025-05-19)<span class="hx:absolute hx:-mt-20" id="list-2025-05-19"></span>
    <a href="#list-2025-05-19" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><ul>
<li><a href="https://www.youtube.com/@UsagiElectric"target="_blank" rel="noopener">Usagi Electric</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=-RGp-bsYf34&amp;list=PLnw98JPyObn3QSIwUz5Iv6NA1x-uGFqAa&amp;pp=0gcJCV8EOCosWNin"target="_blank" rel="noopener">Bendix G15 Vacuum Tube</a></li>
<li><a href="https://www.youtube.com/watch?v=EbWcgepRmY4&amp;list=PLnw98JPyObn2PqgY1mfzXOtnUXlsXSMch"target="_blank" rel="noopener">Data General Nova</a></li>
<li><a href="https://www.youtube.com/watch?v=SB95dlrS5kU&amp;list=PLnw98JPyObn2Kj-rqrKqEB5xmS_uOV40f"target="_blank" rel="noopener">DEC/PDP-11</a></li>
<li><a href="https://www.youtube.com/watch?v=oPA8dHtf_6M&amp;list=PLnw98JPyObn1GUapiXLlGm8RrpQF-J_c1"target="_blank" rel="noopener">1-Bit Computer</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@TechTangents"target="_blank" rel="noopener">Tech Tangents</a>:
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=mBssIIRGkOw&amp;list=PLJVwF78cppBgwAHYKMffuhs0jblPHCyvL"target="_blank" rel="noopener">Data Generals</a></li>
</ul>
</li>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=apFLq3-fpL4"target="_blank" rel="noopener">Tandy 1000 RL HD</a></li>
<li><a href="https://www.youtube.com/watch?v=Oa6QPHD6qzw&amp;t=278s"target="_blank" rel="noopener">CP/M on Model 100</a></li>
<li><a href="https://www.youtube.com/watch?v=dqPSVG7zbs4"target="_blank" rel="noopener">KayPro IV</a></li>
<li><a href="https://www.youtube.com/watch?v=vCU4xbHFb58"target="_blank" rel="noopener">HP Series 200 - CAD Monster</a></li>
<li><a href="https://www.youtube.com/watch?v=5WB9d1JM8oo"target="_blank" rel="noopener">8088 PC Networking</a></li>
<li><a href="https://www.youtube.com/watch?v=EOVLlMQs9f8"target="_blank" rel="noopener">FreeDOS on IBM 5150</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@The8BitGuy"target="_blank" rel="noopener">The 8-Bit Guy</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=ayh0qebfD2g&amp;list=PLfABUWdDse7bKGFshxR0itdHBhjUj86SX"target="_blank" rel="noopener">Commander X16</a></li>
<li><a href="https://www.youtube.com/watch?v=NB_VBl7ut9Y&amp;list=PLfABUWdDse7Z8wmD0bbL0P5upEE1VjMJM"target="_blank" rel="noopener">Game Development - Making of Planet X2</a></li>
<li><a href="https://www.youtube.com/watch?v=mXSdikcUuo0&amp;list=PLfABUWdDse7aKLE00YObaVvP1jSH0YqIE"target="_blank" rel="noopener">Texas Tech History</a></li>
<li><a href="https://www.youtube.com/watch?v=eP9y_7it3ZM&amp;list=PLfABUWdDse7Y6LLPlfsHKcvBCgqaudzVY"target="_blank" rel="noopener">Commodore History</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@adriansdigitalbasement"target="_blank" rel="noopener">Adrien&rsquo;s Digital Basement</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=x8DfSg7oMWg&amp;list=PL4tFqFVNf5LSckPX988MBvVzKv96eP0es"target="_blank" rel="noopener">TRS-80 Model II Repair Series</a></li>
<li><a href="https://www.youtube.com/watch?v=gkCDdSdSNu0&amp;list=PL4tFqFVNf5LRvKP94x7VOfdXXQHRt_8BR"target="_blank" rel="noopener">Amiga 4000 Repair Series</a></li>
<li><a href="https://www.youtube.com/watch?v=RMG_StQ67kA&amp;list=PL4tFqFVNf5LQeof2oTPFGxZx0SpvICpSv"target="_blank" rel="noopener">ZX Spectrum</a></li>
<li><a href="https://www.youtube.com/watch?v=_CNruhSYC2E&amp;list=PL4tFqFVNf5LRf-gcl5Lyhl2UxbmrGmZCT"target="_blank" rel="noopener">IBM 16-bit machines</a></li>
<li><a href="https://www.youtube.com/watch?v=5qMP6A_U75E&amp;list=PL4tFqFVNf5LT6X3sMRfbRWuTVE5NuEmKj&amp;pp=0gcJCV8EOCosWNin"target="_blank" rel="noopener">Apple Computers - 8-bit</a></li>
<li><a href="https://www.youtube.com/watch?v=H9dxJ7uNXOA&amp;list=PL4tFqFVNf5LRxSdlzuH2MWOZ_5PltbpLv"target="_blank" rel="noopener">Macintosh Machines - 68000</a></li>
<li><a href="https://www.youtube.com/watch?v=0MP93YbINyI&amp;list=PL4tFqFVNf5LRZKtduWSpZjZpJS6mxZx7I"target="_blank" rel="noopener">Commodore - 8 bit</a></li>
<li><a href="https://www.youtube.com/watch?v=0MP93YbINyI&amp;list=PL4tFqFVNf5LR9SvTg1P8r3EPL657qJFsx"target="_blank" rel="noopener">Commodore 64 Repairs</a></li>
<li><a href="https://www.youtube.com/watch?v=QJRXMYmie7I&amp;list=PL4tFqFVNf5LTPlF7iF_pMl5WiiOsSFMf4"target="_blank" rel="noopener">Tandy 1000 Series</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@clabretro"target="_blank" rel="noopener">clabretro</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=77rVvJBLRhQ&amp;list=PLjeznAUfx0Odrk8qOQJ-_a3xry4PhIxOh"target="_blank" rel="noopener">Home Lab</a></li>
<li><a href="https://www.youtube.com/watch?v=pXuqASXGvgM&amp;list=PLjeznAUfx0OfCseO3gKOvEjw3oHgHLRlK"target="_blank" rel="noopener">Sun Microsystem Stuff</a></li>
</ul>
</li>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=PBvDRJ_rU5w"target="_blank" rel="noopener">Ressurrecting an IBM PS/2 Model 50Z</a></li>
<li><a href="https://www.youtube.com/watch?v=7-ISDVFIVgw"target="_blank" rel="noopener">Windows NT 4.0 on a Compaq Proliant Gen 1</a></li>
<li><a href="https://www.youtube.com/watch?v=4UWibKEjyY8&amp;t=10s"target="_blank" rel="noopener">Token Ring Networking</a></li>
<li><a href="https://www.youtube.com/watch?v=LvLPz72IvAM"target="_blank" rel="noopener">Early 2000s Linksys Wi-Fi Gear</a></li>
<li><a href="https://www.youtube.com/watch?v=gyyhqHBmKg4"target="_blank" rel="noopener">Compaq Proliant Gen 1</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@LowSpecGamer"target="_blank" rel="noopener">LowSpecGamer</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=lP2ZBp9O0mk&amp;list=PLp-6MMWURCz3x92-dpEsRLEGL3uHToVDR"target="_blank" rel="noopener">All Lore - Chronological</a></li>
<li><a href="https://www.youtube.com/watch?v=lP2ZBp9O0mk&amp;list=PLp-6MMWURCz1bo3T4vmyNUVl3FefnF7CC"target="_blank" rel="noopener">Chip Wars</a><a href="https://www.youtube.com/watch?v=OBlu2mdpiJ0&amp;list=PLp-6MMWURCz0OdcgoSiQOv8C9hn79XdOt"target="_blank" rel="noopener">Nintendo Lore</a></li>
<li><a href="https://www.youtube.com/watch?v=9Ki-kH751_8&amp;list=PLp-6MMWURCz0OB_iioCUqc2Sq21UXE-08"target="_blank" rel="noopener">The Yokoi Saga</a></li>
</ul>
</li>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=nIwdhPOVOUk"target="_blank" rel="noopener">How Amateurs created the world&rsquo;s most popular processor - History of ARM Part 1</a></li>
<li><a href="https://www.youtube.com/watch?v=vx1-6yRAGk0"target="_blank" rel="noopener">ARM&rsquo;s Secret Weapon - History of ARM Part 2</a></li>
<li><a href="https://www.youtube.com/watch?v=PLzTVnQ3gqc"target="_blank" rel="noopener">How IBM Invented the PC, then everyone stole it</a></li>
<li><a href="https://www.youtube.com/watch?v=ztYfJDTjpjk&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">The Great Calculator Wars of the 70s</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@BenEater"target="_blank" rel="noopener">Ben Eater</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=LnzuMJLZRdU&amp;list=PLowKtXNTBypFbtuVMUVXNR0z1mu7dp7eH"target="_blank" rel="noopener">Build a 65c02-based computer from scratch</a></li>
<li><a href="https://www.youtube.com/watch?v=HyznrdDSSGM&amp;list=PLowKtXNTBypGqImE405J2565dvjafglHU&amp;pp=0gcJCV8EOCosWNin"target="_blank" rel="noopener">Building an 8-bit breadboard computer</a></li>
<li><a href="https://www.youtube.com/watch?v=XaGXPObx2Gs&amp;list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW"target="_blank" rel="noopener">Networking Tutorial</a></li>
<li><a href="https://www.youtube.com/watch?v=eq5YpKHXJDM&amp;list=PLowKtXNTBypFWff2QjXCWuSfJDWcvE0Vm"target="_blank" rel="noopener">Error detection</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@javidx9"target="_blank" rel="noopener">javidx9</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=nViZg02IMQo&amp;list=PLrOv9FMX8xJHqMvSGB_9G9nZZ_4IgteYf"target="_blank" rel="noopener">NES Emulator from Scratch</a></li>
<li><a href="https://www.youtube.com/watch?v=8OK8_tHeCIA&amp;list=PLrOv9FMX8xJE8NgepZR1etrsU63fDDGxO"target="_blank" rel="noopener">Code-it-Yourself - TETRIS from scratch</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@GamingHistorian"target="_blank" rel="noopener">Gaming Historian</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=G_6PO3N8fig&amp;list=PLScCWE7AP_PUIOOSwRF_e5jR6e2rLwLoF"target="_blank" rel="noopener">Video Game Hardware</a></li>
<li><a href="https://www.youtube.com/watch?v=2EUYSN5aFcE&amp;list=PLScCWE7AP_PVMZgv83NLwp6wQ93I6o4rr"target="_blank" rel="noopener">The Story of Super Mario - Documentary Series</a></li>
<li><a href="https://www.youtube.com/watch?v=S1qD9JRk5vM&amp;list=PLScCWE7AP_PU4_4b4juK8ZugrmptW4g1v&amp;pp=0gcJCV8EOCosWNin"target="_blank" rel="noopener">History of Wolfenstein</a></li>
<li><a href="https://www.youtube.com/watch?v=M55Bpm38qqE&amp;list=PLScCWE7AP_PVO9xcAsZa7Dv5sgdZMyUbb"target="_blank" rel="noopener">History of Sonic the Hedgehog</a></li>
<li><a href="https://www.youtube.com/watch?v=myhBphil-Uw&amp;list=PLScCWE7AP_PVVYlegzt3REr2n5bBmmQJ2"target="_blank" rel="noopener">History of Super Smash Bros</a></li>
<li><a href="https://www.youtube.com/watch?v=BjRuV52Jk78&amp;list=PLScCWE7AP_PXfCIUjxMjoWPUbNYXz8P6w"target="_blank" rel="noopener">Games</a></li>
<li><a href="https://www.youtube.com/watch?v=8QbjlHeoLdc&amp;list=PL397C52406E483BAB&amp;pp=0gcJCV8EOCosWNin"target="_blank" rel="noopener">Gaming Historian</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@ModernVintageGamer"target="_blank" rel="noopener">Modern Vintage Gamer</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=SZbC0Hh4lc8&amp;list=PLUbw0IXAmW2rMk5g19MrqcyebecSrrSeJ"target="_blank" rel="noopener">Mistakes Were Made - Game Console Security</a></li>
<li><a href="https://www.youtube.com/watch?v=siOXFGZj_z0&amp;list=PLUbw0IXAmW2p35mZ_Fis31n2L6HPiFoEs"target="_blank" rel="noopener">The Sony Playstation</a></li>
<li><a href="https://www.youtube.com/watch?v=esl6ctg_9JA&amp;list=PLUbw0IXAmW2qJ8e0XtQgQo8ki0mIeIbHP"target="_blank" rel="noopener">The Original XBox</a></li>
<li><a href="https://www.youtube.com/watch?v=F4Dv32-PoU4&amp;list=PLUbw0IXAmW2pDWN4kZ-vNDNAPycFVR_ux"target="_blank" rel="noopener">Doom Switch Port</a></li>
<li><a href="https://www.youtube.com/watch?v=ZOzWS7MQ_qs&amp;list=PLUbw0IXAmW2ofK7Es3w7q5kVMdzK_IfKY"target="_blank" rel="noopener">Retro Reviews</a></li>
</ul>
</li>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=lpOEhtoc3DY"target="_blank" rel="noopener">N64: Decomp vs Recomp vs Ports explained</a></li>
<li><a href="https://www.youtube.com/watch?v=hqpw-QPsdCg"target="_blank" rel="noopener">XenonRecomp</a></li>
<li><a href="https://www.youtube.com/watch?v=nJ9zJ_PDatU"target="_blank" rel="noopener">Game Genie Explained</a></li>
<li><a href="https://www.youtube.com/watch?v=_RVQsqC3A6g"target="_blank" rel="noopener">Super NES Graphics</a></li>
<li><a href="https://www.youtube.com/watch?v=OmKjVpVdHDQ"target="_blank" rel="noopener">N64 Emulation is a Mess</a></li>
<li><a href="https://www.youtube.com/watch?v=8ibEDSfthS0"target="_blank" rel="noopener">The First Amiga Virus</a></li>
<li><a href="https://www.youtube.com/watch?v=ZeaZWBrG__s"target="_blank" rel="noopener">35 Years of Game Boy</a></li>
<li><a href="https://www.youtube.com/watch?v=ockNRSt3Nsk"target="_blank" rel="noopener">Video game piracy in the 80s</a></li>
<li><a href="https://www.youtube.com/watch?v=JqP3ZzWiul0"target="_blank" rel="noopener">Doom SNES Sourcecode</a></li>
<li><a href="https://www.youtube.com/watch?v=zQE1K074v3s"target="_blank" rel="noopener">How Graphics worked on the Game Boy</a></li>
<li><a href="https://www.youtube.com/watch?v=2NF5sU_n0uk"target="_blank" rel="noopener">How UltraHLE changed N64 emulation forever</a></li>
<li><a href="https://www.youtube.com/watch?v=5tADL_fmsHQ"target="_blank" rel="noopener">How Diablo was completely Reverse Engineered without source code</a></li>
<li><a href="https://www.youtube.com/watch?v=Ap3gJT_TMOc&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">Duke3D on the Amiga 600</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@strafefox"target="_blank" rel="noopener">Strafefox</a>
<ul>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=6u37r-Z_Nfo"target="_blank" rel="noopener">Video Game Development Through the 80s</a></li>
<li><a href="https://www.youtube.com/watch?v=5jxYvLYcpZg&amp;t=1441s"target="_blank" rel="noopener">The 3D Revolution in 90s game development</a></li>
<li><a href="https://www.youtube.com/watch?v=69AOVtOUatY"target="_blank" rel="noopener">The Making of Sonic the Hedgehog</a></li>
<li><a href="https://www.youtube.com/watch?v=226Nwq2CN5c"target="_blank" rel="noopener">The Making of Mortal Kombat</a></li>
<li><a href="https://www.youtube.com/watch?v=TYE9GMfr5ug"target="_blank" rel="noopener">The Making of Castlevania Symphony of the Night</a></li>
<li><a href="https://www.youtube.com/watch?v=_LPu7gNzWUE"target="_blank" rel="noopener">The Making of Donkey Kong Country &amp; Killer Instinct</a></li>
<li><a href="https://www.youtube.com/watch?v=kOnUITJqRQQ"target="_blank" rel="noopener">The Making of Aladdin</a></li>
<li><a href="https://www.youtube.com/watch?v=5Z7liHTgnw4"target="_blank" rel="noopener">The Making of Streets of Rage</a></li>
<li><a href="https://www.youtube.com/watch?v=USC6c9Dtak8"target="_blank" rel="noopener">The Making of Street Fighter II</a></li>
<li><a href="https://www.youtube.com/watch?v=KL4l0nMsrMM"target="_blank" rel="noopener">The Making of Super Mario World</a></li>
<li><a href="https://www.youtube.com/watch?v=GDhNT2Qv-Mo"target="_blank" rel="noopener">The Making of Star Fox</a></li>
<li><a href="https://www.youtube.com/watch?v=MJG-OT6S194"target="_blank" rel="noopener">How Video Games were Made - Part 3</a></li>
<li><a href="https://www.youtube.com/watch?v=Yo7UkkGC1AY"target="_blank" rel="noopener">How Video Games were Made - Part 2</a></li>
<li><a href="https://www.youtube.com/watch?v=VDz1IvuWyJw"target="_blank" rel="noopener">MSX Konami Games</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@GTV-Japan"target="_blank" rel="noopener">GTV Japan</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=_s9fmbcds40&amp;list=PLu4Z50DKq3na663p7gGKgxHOZFGv2eqWO"target="_blank" rel="noopener">The GTV Binge Watch</a></li>
<li><a href="https://www.youtube.com/watch?v=zgtYV41yXbU&amp;list=PLu4Z50DKq3nYnRu-3XhDncP8MRzOsusRm"target="_blank" rel="noopener">GTV&rsquo;s Greatest Hits</a></li>
</ul>
</li>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=KdS34tc37hk"target="_blank" rel="noopener">The Story of Chrono Trigger</a></li>
<li><a href="https://www.youtube.com/watch?v=gNps2YP2e30&amp;t=860s"target="_blank" rel="noopener">The Final 16-bit Fantasy</a></li>
<li><a href="https://www.youtube.com/watch?v=DV3K3Coz1RA"target="_blank" rel="noopener">Sonic Mania Day</a></li>
<li><a href="https://www.youtube.com/watch?v=I2MYvgNf9lU"target="_blank" rel="noopener">The History of Sonic - 30th Anniversary</a></li>
<li><a href="https://www.youtube.com/watch?v=zgtYV41yXbU"target="_blank" rel="noopener">The Super Story of Mario World</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@DisplacedGamers"target="_blank" rel="noopener">Displaced Gamers</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=55X1KOw_Rhg&amp;list=PLn5sTGew1WGB0-omvT5UtPanoCzRh7A0V"target="_blank" rel="noopener">Game Genie: Uncorked</a></li>
<li><a href="https://www.youtube.com/watch?v=EhO_iHkUkE0&amp;list=PLn5sTGew1WGD5NUstpfwYdLfrmLJOHCSw"target="_blank" rel="noopener">Talkin&rsquo; Code</a></li>
<li><a href="https://www.youtube.com/watch?v=gTfPLl_AJvs&amp;list=PLn5sTGew1WGD2Tnspn9vhpLGf-kqDRbYy"target="_blank" rel="noopener">Behind the Code</a></li>
<li><a href="https://www.youtube.com/watch?v=ssluTgfkdlg&amp;list=PLn5sTGew1WGCMO7Bi-MD7VgFWAoeXbU93"target="_blank" rel="noopener">Gaming Tech Talk</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@RGMechEx"target="_blank" rel="noopener">Retro Game Mechanics Explained</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=UdD26eFVzHQ&amp;list=PLHQ0utQyFw5IrM_zCFY8fhtByNxVGRUMr"target="_blank" rel="noopener">Super Mario 2</a></li>
<li><a href="https://www.youtube.com/watch?v=1whju31WAPA&amp;list=PLHQ0utQyFw5KxchzQnRcc_uk-NU7FbHNM"target="_blank" rel="noopener">Super Mario Bros.</a></li>
<li><a href="https://www.youtube.com/watch?v=q15yNrJHOak&amp;list=PLHQ0utQyFw5I8qqpOXKXKySBsphqdStdq"target="_blank" rel="noopener">Super Mario World</a></li>
<li><a href="https://www.youtube.com/watch?v=fxZuzos7Auk&amp;list=PLHQ0utQyFw5KoUSkHGq5VtMY0v2e5G_u3"target="_blank" rel="noopener">Super Mario Bros 3</a></li>
<li><a href="https://www.youtube.com/watch?v=FPzuYWbnln4&amp;list=PLHQ0utQyFw5IrotCLCfxKGkUL-WjPDrxh"target="_blank" rel="noopener">Super Mario Land 2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@TheCherno"target="_blank" rel="noopener">The Cherno</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=gfW1Fhd9u9Q&amp;list=PLlrATfBNZ98edc5GshdBtREv5asFW3yXl"target="_blank" rel="noopener">Ray Tracing Series</a></li>
<li><a href="https://www.youtube.com/watch?v=W3gAzLwfIP0&amp;list=PLlrATfBNZ98foTJPJ_Ev03o2oq3-GGOS2"target="_blank" rel="noopener">OpenGL</a></li>
<li><a href="https://www.youtube.com/watch?v=9HCboZHTyrw&amp;list=PLlrATfBNZ98f6Z1cDNeMLL3eXaRk1WCxK"target="_blank" rel="noopener">Code Review</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@Kosmicd12"target="_blank" rel="noopener">Kosmic</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=1wR8x5b_ExM&amp;list=PLbxkd_Hs6FDK2FNWiOAK_LPBMXauJMrlC"target="_blank" rel="noopener">World Record SpeedRuns</a></li>
<li><a href="https://www.youtube.com/watch?v=kyZ4yF3ynsA&amp;list=PLbxkd_Hs6FDKH8YVR82mS2zFDWN_pwkQx"target="_blank" rel="noopener">Super Mario Bros</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@KazeN64"target="_blank" rel="noopener">Kaze Emanuar</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=dfK4Iuz3mME&amp;list=PLY9TGb7t9kuHx1vP2qCascFrhfnzLn-ME"target="_blank" rel="noopener">SM64: Last Impact - Developer Commentary</a></li>
</ul>
</li>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=DdXLpoNLywg"target="_blank" rel="noopener">Mario 64 breaks after 7 days</a></li>
<li><a href="https://www.youtube.com/watch?v=OHU2onxKm5o&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">Perfecting Random Number Generation on N64</a></li>
<li><a href="https://www.youtube.com/watch?v=r-2iIBmXULI&amp;t=129s"target="_blank" rel="noopener">Planetary Gravity is Cheap</a></li>
<li><a href="https://www.youtube.com/watch?v=g5u3zW4SLow&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">The Genius of N64 Cache Instruction</a></li>
<li><a href="https://www.youtube.com/watch?v=DotEVFFv-tk"target="_blank" rel="noopener">The N64 has more RAM than you think</a></li>
<li><a href="https://www.youtube.com/watch?v=f05PwswO7qc&amp;t=344s"target="_blank" rel="noopener">Why Devs need to know about Render Matrices</a></li>
<li><a href="https://www.youtube.com/watch?v=-nhhfYkluT0"target="_blank" rel="noopener">Better engine, Better graphics</a></li>
<li><a href="https://www.youtube.com/watch?v=hffgNRfL1XY"target="_blank" rel="noopener">The Folded Polynomial</a></li>
<li><a href="https://www.youtube.com/watch?v=xFKFoGiGlXQ"target="_blank" rel="noopener">Fastest Sine on N64</a></li>
<li><a href="https://www.youtube.com/watch?v=t_rzYnXEQlE"target="_blank" rel="noopener">Fixing the Entire SM64 source code</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@james.lambert"target="_blank" rel="noopener">James Lambert</a>
<ul>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=WDNU9k8uTc4"target="_blank" rel="noopener">Can Portal64 be saved?</a></li>
<li><a href="https://www.youtube.com/watch?v=sb3nHlsBBpg&amp;t=256s"target="_blank" rel="noopener">Portal 64: First Slice, is out of beta</a></li>
<li><a href="https://www.youtube.com/watch?v=r4KGm7ixcqI"target="_blank" rel="noopener">How I optimized Portal to run on the N64</a></li>
<li><a href="https://www.youtube.com/watch?v=Sf036fO-ZUk"target="_blank" rel="noopener">How I implemented MegaTextures on real N64 hardware</a></li>
<li><a href="https://www.youtube.com/watch?v=ao1qVi5Qp3Y&amp;t=58s&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">I rewrote Portal from scratch and solved the Portal Paradox</a></li>
<li><a href="https://www.youtube.com/watch?v=VqDAxcWnq3g"target="_blank" rel="noopener">How are toon shading and dynamic shadows possible on the N64?</a></li>
<li><a href="https://www.youtube.com/watch?v=yXzoZ2AfWwg&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">How can Nintendo 64 run Portal?</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@veritasium"target="_blank" rel="noopener">Veritasium</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=AaZ_RSt0KP8&amp;list=PLkahZjV5wKe8w9GC_n2yyhx6Wj-NKzzeE"target="_blank" rel="noopener">Computing</a></li>
</ul>
</li>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=w5ebcowAJD8&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">I build a QR code with my bare hands to see how it workds</a></li>
<li><a href="https://www.youtube.com/watch?v=wVyu7NB7W6Y"target="_blank" rel="noopener">Exposing the flaw in out phone system</a></li>
<li><a href="https://www.youtube.com/watch?v=A5w-dEgIU1M"target="_blank" rel="noopener">The Trillion Dollar equation</a></li>
<li><a href="https://www.youtube.com/watch?v=nmgFG7PUHfo&amp;t=40s"target="_blank" rel="noopener">The Most Important Algorithm of All Time</a></li>
<li><a href="https://www.youtube.com/watch?v=HeQX2HjkcNo"target="_blank" rel="noopener">Math&rsquo;s Fundamental Flaw</a></li>
<li><a href="https://www.youtube.com/watch?v=R13BD8qKeTg"target="_blank" rel="noopener">The Bayesian Trap</a></li>
<li><a href="https://www.youtube.com/watch?v=IcrBqCFLHIY&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">How Does a Transistor Work</a></li>
<li><a href="https://www.youtube.com/watch?v=zNzzGgr2mhk"target="_blank" rel="noopener">How to Make a Quantum Bit</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://www.youtube.com/@3blue1brown"target="_blank" rel="noopener">3Blue1Brown</a>
<ul>
<li>Playlists:
<ul>
<li><a href="https://www.youtube.com/watch?v=8rrHTtUzyZA&amp;list=PLZHQObOWTQDMp_VZelDYjka8tnXNpXhzJ"target="_blank" rel="noopener">Convolutions</a></li>
<li><a href="https://www.youtube.com/watch?v=8idr1WZ1A7Q&amp;list=PLZHQObOWTQDOjmo3Y6ADm0ScWAlEXf-fp"target="_blank" rel="noopener">Probabilities of Probabilities</a></li>
<li><a href="https://www.youtube.com/watch?v=p_di4Zn4wz4&amp;list=PLZHQObOWTQDNPOjrT6KVlfJuKtYTftqH6"target="_blank" rel="noopener">Differential equations</a></li>
<li><a href="https://www.youtube.com/watch?v=WUvTyaaNkzM&amp;list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr"target="_blank" rel="noopener">Essence of Calculus</a></li>
<li><a href="https://www.youtube.com/watch?v=fNk_zzaMoSs&amp;list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab"target="_blank" rel="noopener">Essence of Linear Algebra</a></li>
<li><a href="https://www.youtube.com/watch?v=aircAruvnKk&amp;list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi"target="_blank" rel="noopener">Neural Networks</a></li>
</ul>
</li>
<li>Videos:
<ul>
<li><a href="https://www.youtube.com/watch?v=RQWpF2Gb-gU"target="_blank" rel="noopener">But what is a quantum computing - Grover&rsquo;s Algorithm</a></li>
<li><a href="https://www.youtube.com/watch?v=Dlsa9EBKDGI"target="_blank" rel="noopener">Where my explanation of Grover&rsquo;s algorithm failed</a></li>
<li><a href="https://www.youtube.com/watch?v=LPZh9BOjkQs&amp;pp=0gcJCY0JAYcqIYzv"target="_blank" rel="noopener">Large Language Models explained briefly</a></li>
</ul>
</li>
</ul>
</li>
</ul>
]]></content:encoded><category>computing-history</category><category>retrocomputing</category><category>emulation</category><category>off-topic</category></item><item><title>RANT - LLMs are LOOT BOXES!</title><link>https://akitaonrails.github.io/en/2025/05/02/rant-llms-are-loot-boxes/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2025/05/02/rant-llms-are-loot-boxes/</guid><pubDate>Fri, 02 May 2025 19:20:00 -0300</pubDate><description>&lt;p&gt;I know this is going to sound way too negative, and once again, let me repeat that I am not anti-AI, anti-LLM, or anything like that. Quite the opposite: I like it SO, SO much that I have been dedicating ALL my hours to researching it in depth.&lt;/p&gt;
&lt;p&gt;It has been very useful to me, especially for summarizing papers, reconciling research across multiple sites, summarizing topics, and things like that.&lt;/p&gt;</description><content:encoded><![CDATA[<p>I know this is going to sound way too negative, and once again, let me repeat that I am not anti-AI, anti-LLM, or anything like that. Quite the opposite: I like it SO, SO much that I have been dedicating ALL my hours to researching it in depth.</p>
<p>It has been very useful to me, especially for summarizing papers, reconciling research across multiple sites, summarizing topics, and things like that.</p>
<p><strong>&ldquo;BUT ..&rdquo;</strong></p>
<p>And it is a huge BUT, it has been PRETTY useless for real programming. I am not going to repeat every problem I have already run into: I detailed plenty of them in previous posts. But my conclusion is simple: it can help with code, on small, focused, isolated tasks, with a lot of prompting to help, and you - the programmer - need to be alert about what to pick and what to reject (and you will reject most of it).</p>
<p>Better prompts have limits. RAGs have limits. Loras have limits. Bigger context windows have limits. Using agents that hand back stacktraces and asking for deep thinking has limits. I have already hit EVERY one of these limits, and I have not found any &ldquo;workaround&rdquo; that can make it work 100% well 100% of the time - which is exactly what the marketing promises.</p>
<p><em>&ldquo;But Microsoft, Google, Meta, NVIDIA have already stated that 30% of their code is already written by AI and next year programmers will be replaced&rdquo;</em></p>
<p>That is the great half-truth, half-lie (interpret it however you want).</p>
<h2>&ldquo;What 30%??&rdquo;<span class="hx:absolute hx:-mt-20" id="what-30"></span>
    <a href="#what-30" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>You, who are not a programmer, did you know that project documentation (which is extensive), language translation files (which are extensive, do you know how many languages a Microsoft or Google supports globally?), HTML pages that duplicate that extensive documentation, all of it is &ldquo;considered&rdquo; part of the code and sits in the same &ldquo;code&rdquo; repository like GitHub?</p>
<p>You, who are not a programmer, did you know that the VOLUME in characters/bytes of that material very often nearly matches, or can even exceed, the byte volume of the actual code itself?</p>
<p>That is just one small example that comes to mind. Launch pages for new products, the &ldquo;hot-sites&rdquo; which are DISPOSABLE sites built to be thrown away. That is also code volume. There is A LOT of &ldquo;code&rdquo; that is not &ldquo;THE code&rdquo;. Every programmer who works at a big company knows this.</p>
<p>Your little home project has no documentation, no automated tests, no build scripts, no deploy or packaging automation, no separate language files, no hot-site, no multi-language product site. It is just a &ldquo;hello.py&rdquo; and that is ALL of your code. I understand why you extrapolate that a big project is the same thing.</p>
<p>PART of the &ldquo;30%&rdquo; everyone keeps talking about is this. Sure, there is some real code in there, but nowhere near what you think.</p>
<h3>Conflict of Interest<span class="hx:absolute hx:-mt-20" id="conflict-of-interest"></span>
    <a href="#conflict-of-interest" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I am stunned. If a &ldquo;drug dealer&rdquo; gives you a free sample and you ask &ldquo;but is it safe?&rdquo;, what do you think he is going to answer?</p>
<p>The owner of Meta has AI products. The owner of Google, the owner of Microsoft, RENT OUT GPUs for AI. The owner of NVIDIA SELLS GPUs to AI datacenters. The owner of OpenAI, Anthropic, they all RENT that infrastructure and RESELL you <strong>TOKEN CREDITS</strong>.</p>
<p>What do you think their incentive is? <strong>SELLING TOKEN USAGE</strong>.</p>
<p>You saw what I reported in previous posts. In less than 1 week of testing I burned nearly USD 150 in credits. That would be more than 850 BRL in a week, and after running a HUNDRED attempts I got merely &ldquo;reasonable&rdquo; refactorings HALF of the time, and I got good passing unit tests LESS THAN HALF of the time (actually, almost NEVER). But I did spend tokens, LOTS OF TOKENS.</p>
<p>Features that the marketing tells you will improve things, like DEEP THINKING/REASONING, only &ldquo;sometimes&rdquo; give better code answers. They really are better at compiling papers or text research. But for code, in MOST attempts, I did not see that much difference. Except it took MUCH longer and burned MUCH more tokens. You know what Deep Thinking does? It adds more steps before the answer and stuffs the context with tokens. Those extra tokens: YOU PAY EXTRA FOR.</p>
<p>Features that the marketing also tells you will improve things, like RAG-based solutions, deep down are just more &ldquo;prompt injection&rdquo; - which always burns context and BURNS MORE TOKENS. It works, sure, but the incentive is to burn more tokens.</p>
<p>Features that the marketing is now trying to push on you, like MCP, agents, and LLM automation, combined with RAGs and all the rest. Devin, n8n, and everything else are just a more automated way to BURN MORE TOKENS.</p>
<p>Every incentive, from everyone, is to burn more tokens, not fewer. And in my tests, with many models (I will not say all of them), I got better code answers by <strong>TURNING OFF DEEP THINKING</strong>. You can configure that in tools like Aider or directly in the OpenAI API. Reduce <code>thinking_tokens</code> or set <code>reasoning_effort</code> to &ldquo;Low&rdquo; or, even better, &ldquo;NONE&rdquo;.</p>
<h3>LOOT BOXES<span class="hx:absolute hx:-mt-20" id="loot-boxes"></span>
    <a href="#loot-boxes" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I also explained in the <a href="https://www.akitaonrails.com/en/2025/04/29/dissecando-um-modelfile-de-ollama-ajustando-qwen3-pra-codigo"target="_blank" rel="noopener">article about how to build your own Ollama Modelfile</a> that, essentially, the text generation process (swallow it, LLMs are next-word generators) has random components. Temperature, Top_P, Top_K. More: the training has non-linear components (e.g. ReLU). It is not deterministic, it is a DRAWING from a probability distribution.</p>
<p>That means, fundamentally, there is no way for an LLM to be 100% right 100% of the time. It is mathematically impossible. It can always be &ldquo;almost right&rdquo; or &ldquo;looking like it is right&rdquo;. But if you diligently double-check everything, all the time, you are going to start finding small mistakes. In the case of code, it is a lot more obvious. It is VERY wrong, MANY times.</p>
<p>And the whole process looks a lot like those &ldquo;free&rdquo; online games with LOOT BOXES or GACHA systems, you know? Like a Genshin Impact and friends.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/my994es2wx2rj3mfkyu9i6h4s9ik" alt="Loot Box"  loading="lazy" /></p>
<p>What??? You are a boomer and have no idea what Loot Boxes are? &hellip;</p>
<p>I AM A BOOMER AND I KNOW, there is no excuse. Go get up to speed (and it is the main reason I choose not to play that kind of online game).</p>
<p>The economy of those games works like this: you do not have the option of buying the specific items you want. Instead you pay, say, 20 credits for the chance to take part in a drawing (which happens on pre-scheduled dates and times, not all the time). In that drawing you have a (HIGH) probability of only winning a 10-credit item OR an <strong>incredible</strong> (VERY LOW) probability of winning an exclusive 1000-credit item!!!!</p>
<p>Sounds like the deal of the century, right??? (LITERALLY IT IS!!!)</p>
<p>You always win the cheapest item in the drawing. And every once in a while it gives you a MEDIUM item so you do not give up and believe you still have a real chance. Only if you spend A LOT (and by that point you have already spent more than 1000 credits anyway), only then maybe it hands you a big item, to shoot you up with more dopamine and deepen your <strong>addiction</strong>.</p>
<p>That is exactly what happens with LLMs. Their answers have odds similar to a Loot Box. Sometimes it surprises you with an excellent answer, but most of the time you are stuck asking &ldquo;dude, are you sure about that answer?&rdquo;, or &ldquo;dude, isn&rsquo;t that second line wrong?&rdquo;, or &ldquo;dude, re-read what I asked and try again&rdquo;, and your whole day goes on like that.</p>
<p>You are not watching it, but under the hood every time it has to correct itself it keeps burning the same credits. By the end of the day, there goes USD 50. Sounds like a little, but do it every day and see how it adds up.</p>
<p>Except your <strong>CONFIRMATION BIAS</strong> makes you remember well when it got things right, but keeps &ldquo;forgetting&rdquo; all the other times it got things wrong. And your perception is that <em>&ldquo;Yeah, it works.&rdquo;</em></p>
<p>Worse, your low self-esteem and need to belong to a group, to <strong>CONFORM</strong>. Reinforced by what you read in the news every day, like:</p>
<ul>
<li>30% of all Microsoft code is already written by AI</li>
<li>The CEO of Anthropic says that next year programmers will be replaced by virtual workers</li>
<li>The CEO of NVIDIA says he would not recommend his son to study programming anymore</li>
</ul>
<p>And all of it RAISES THE BIAS: you think they are right, and the times you yourself saw the LLM getting it wrong <em>&ldquo;must have been a small exception, I am the one who is dumb&rdquo;</em> and you BELIEVE the LIE.</p>
<p>Who remembers my talks from 15 years ago where I used to show this video?</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/iRh5qy09nNw"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>This is a well known phenomenon, today amplified even more by social networks and by the dumbness of journalists who just parrot what they hear and no longer ask critical questions like: IS THERE A CONFLICT OF INTEREST??</p>
<h3>&ldquo;Does OpenAI use your chats for training?&rdquo;<span class="hx:absolute hx:-mt-20" id="does-openai-use-your-chats-for-training"></span>
    <a href="#does-openai-use-your-chats-for-training" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Here I have to fix a lie I have been telling you all. I always kept saying no. Your conversation is not used for training, because it would pollute the training material with garbage that in the end would not improve the answers.</p>
<p>It is a half-truth. Indeed, I doubt it a lot and I will stake my reputation on it: no provider wants to risk someone finding a copyrighted text and getting sued. That already happens, the New York Times sued because ChatGPT managed to reproduce a text they had published. And that kind of &ldquo;proves&rdquo; it was part of the training material.</p>
<p>There are people who paste private things in there like health conditions, financial situation, and even critical data like passwords, addresses, stuff they should not share but end up publishing because they have no clue about cybersecurity. Everybody falls for a scam every day because of that. OpenAI or Meta or Alibaba are not eager to have that show up in a chat one day and turn into a viral international news story about how irresponsible they were.</p>
<p><strong>BUT</strong></p>
<p>And it is a HUGE &ldquo;BUT&rdquo;, yes they do use your chat. Everyone&rsquo;s. Without copying any of your data. They just need the METADATA, the data that describes your chat.</p>
<p>Off the top of my head, being naive and amateurish about training, I can see at least 2 important pieces of information you hand them: the length of your chat and the sentiment of your responses in the chat.</p>
<p>Determining sentiment from text is a well solved problem, there are algorithms with or without neural networks that can tell if a text looks happy, sad, angry, anguished, and so on. They do not need the content of your text, they just need the SENTIMENT you had at that moment.</p>
<p>Add to that the LENGTH of your Chat and as I said <a href="https://www.akitaonrails.com/en/2025/05/02/rant-llms-sao-loot-boxes"target="_blank" rel="noopener">in the previous post</a>, the incentive is to make you burn MORE TOKENS (LONGER chats). IN THE NEXT POST I will show you how they do alignment, the model &ldquo;fine-tuning&rdquo;. An OpenAI uses thousands of lines of prompt/completion pairs to &ldquo;force&rdquo; the model to answer in a certain way. Think of an Excel full of pre-written questions and answers that, according to their metadata, we know are the most POPULAR answers.</p>
<p>The goal is not to make the model answer more correctly, because sometimes the right answer is very harsh or inconvenient for some people. I am almost certain that the data extracted from millions of people&rsquo;s chats is just that: sentiment and length. It must help craft prompts that force the model to answer &ldquo;less correctly&rdquo; but &ldquo;more pleasantly&rdquo;, encouraging the user to KEEP talking in the chat and BURN MORE TOKENS.</p>
<p>It is the oldest behavior in the world. Every shopkeeper knows this. Every salesperson knows this. Everyone who works in services knows this. If you are correct and direct, you will sound arrogant and the customer will not come back. Better to sound less correct but more inviting, pleasant, helpful, and so on. And the customer comes back, because that is how the average person works.</p>
<p>So, yes: I do think your data serves to re-align the model after training, to make it answer more pleasantly. They do not even bother hiding it anymore. Did you not see Sam Altman himself a few days ago saying they made ChatGPT 4 answer in a friendlier way, with more personality?</p>
<p>That is what I think they are doing. Making the model smarter is turning out to be a challenge. Because - as I have been saying for a year now - we are hitting the top of the S-curve. To keep selling tokens, to bring you back and get you hooked on talking, it does not need to be smarter, it just needs to be more pleasant.</p>
<h3>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>There is no LLM that will be 100% right 100% of the time, the fundamental architecture PREVENTS that from happening, no matter how many optimizations we pile on. There is now and there will always be an ENTROPY component. It is that randomness that produces text which sounds like a human talking and not a robot.</p>
<p>Automations that are too long and too complex built on top of this fragile foundation are a HUGE mistake. Sure, for simple, short, focused tasks, it has a higher HIT RATE. For real code? It is SUPER low.</p>
<p>Never let an MCP commit directly to your Git repository. Tools like Aider ship &ldquo;autocommit = true&rdquo; by default and that is an enormous stupidity! Do not do that.</p>
<p>I warned you.</p>
<p>But is there no way to improve LLMs at coding? Maybe. 100% never, but bumping up the rate I think we can. And to prove I am not anti-LLM or anything like that, in the next article I am going to try to teach HOW to improve an LLM for programming (with medium probability, it is no miracle!).</p>
]]></content:encoded><category>llms</category><category>coding-agents</category><category>software-engineering</category><category>off-topic</category></item><item><title>Rant - Will LLMs Evolve Forever? Demystifying LLMs in Programming</title><link>https://akitaonrails.github.io/en/2025/05/01/rant-llms-will-evolve-forever-demystifying-llms-in-programming/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2025/05/01/rant-llms-will-evolve-forever-demystifying-llms-in-programming/</guid><pubDate>Thu, 01 May 2025 02:30:00 -0300</pubDate><description>&lt;p&gt;Let me recap my latest articles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.akitaonrails.com/en/2025/04/25/hello-world-de-llm-criando-seu-proprio-chat-de-i-a-que-roda-local"target="_blank" rel="noopener"&gt;Hello World for LLMs&lt;/a&gt; - in this article I explain how to build a simple (educational) little chat program loading an LLM (Qwen2.5) and even how to use prompts so it can call scripts/agents and run a few simple tasks like loading local files. I pushed the code to GitHub as &lt;a href="https://github.com/akitaonrails/Tiny-Qwen-CLI"target="_blank" rel="noopener"&gt;Tiny-Qwen-CLI&lt;/a&gt; and I left the code &amp;ldquo;dirty&amp;rdquo; on purpose so I could test how LLMs manage (or fail) to adjust that code.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.akitaonrails.com/en/2025/04/25/seu-proprio-co-pilot-gratuito-universal-que-funciona-local-aider-ollama-qwen"target="_blank" rel="noopener"&gt;Your Own Free Co-Pilot&lt;/a&gt; - here I explain more about the Aider tool, which is like a Co-Pilot or Cursor, but free and open-source. It does not require plugins or IDEs. It runs in the terminal and is easy to use. I also show how to integrate it with Ollama and spin up your own local LLMs.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.akitaonrails.com/en/2025/04/29/dissecando-um-modelfile-de-ollama-ajustando-qwen3-pra-codigo"target="_blank" rel="noopener"&gt;Dissecting an Ollama Modelfile&lt;/a&gt; - in this one I dig deeper into LLM theory and explain what Key Sampling is and how various parameters affect an LLM&amp;rsquo;s text generation, like Temperature or Top_P. This is to demystify even further that there is no &amp;ldquo;magic&amp;rdquo; in how an LLM manages to generate text.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Over the last few days I have been testing and posting on X my impressions about the most varied commercial and open source models like Claude Sonnet, Gemini 2.5, OpenAI O4, Deepseek-R1, the new Qwen3 and more. There are more posts on the blog beyond the ones I mentioned above, but these are the main ones.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Let me recap my latest articles:</p>
<ul>
<li><a href="https://www.akitaonrails.com/en/2025/04/25/hello-world-de-llm-criando-seu-proprio-chat-de-i-a-que-roda-local"target="_blank" rel="noopener">Hello World for LLMs</a> - in this article I explain how to build a simple (educational) little chat program loading an LLM (Qwen2.5) and even how to use prompts so it can call scripts/agents and run a few simple tasks like loading local files. I pushed the code to GitHub as <a href="https://github.com/akitaonrails/Tiny-Qwen-CLI"target="_blank" rel="noopener">Tiny-Qwen-CLI</a> and I left the code &ldquo;dirty&rdquo; on purpose so I could test how LLMs manage (or fail) to adjust that code.</li>
<li><a href="https://www.akitaonrails.com/en/2025/04/25/seu-proprio-co-pilot-gratuito-universal-que-funciona-local-aider-ollama-qwen"target="_blank" rel="noopener">Your Own Free Co-Pilot</a> - here I explain more about the Aider tool, which is like a Co-Pilot or Cursor, but free and open-source. It does not require plugins or IDEs. It runs in the terminal and is easy to use. I also show how to integrate it with Ollama and spin up your own local LLMs.</li>
<li><a href="https://www.akitaonrails.com/en/2025/04/29/dissecando-um-modelfile-de-ollama-ajustando-qwen3-pra-codigo"target="_blank" rel="noopener">Dissecting an Ollama Modelfile</a> - in this one I dig deeper into LLM theory and explain what Key Sampling is and how various parameters affect an LLM&rsquo;s text generation, like Temperature or Top_P. This is to demystify even further that there is no &ldquo;magic&rdquo; in how an LLM manages to generate text.</li>
</ul>
<p>Over the last few days I have been testing and posting on X my impressions about the most varied commercial and open source models like Claude Sonnet, Gemini 2.5, OpenAI O4, Deepseek-R1, the new Qwen3 and more. There are more posts on the blog beyond the ones I mentioned above, but these are the main ones.</p>
<p>The goal of this post is to demystify LLMs even more and talk more about my experience testing most of the most popular LLMs.</p>
<h3>Demystifying LLMs - 1. Benchmarks and Rankings<span class="hx:absolute hx:-mt-20" id="demystifying-llms---1-benchmarks-and-rankings"></span>
    <a href="#demystifying-llms---1-benchmarks-and-rankings" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Anyone who has followed my talks and videos for years is sick of hearing me talk about the book <a href="https://www.amazon.com.br/Como-Mentir-Estat%C3%ADstica-Darrell-Huff/dp/858057952X"target="_blank" rel="noopener">&ldquo;How to Lie with Statistics&rdquo;</a>. And what I see most in the hundreds of posts about LLMs are the rankings based on benchmarks. Here is an example that went viral yesterday, at the launch of Alibaba&rsquo;s new model, Qwen3:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/1kflvwk5uq9lkt5yh8knngwxwfi9" alt="Qwen3 benchmarks"  loading="lazy" /></p>
<p>The problem: the rankings are not wrong. What they mean is this:</p>
<p><strong>&ldquo;Qwen 3 beats Qwen 2.5 and also other famous ones like OpenAI o1, DeepSeek-R1, Grok 3 Beta, Gemini 2.5, etc &hellip;. IN THE BENCHMARKS THAT WERE RUN - and ONLY in the benchmarks that were run.&rdquo;</strong></p>
<p>That&rsquo;s all. But 99% of posts publish it like this:</p>
<p><strong>&ldquo;Qwen 3 IS BETTER AT WRITING CODE than Qwen 2.5 and also other famous ones like OpenAI o1, DeepSeek-R1, Grok 3 Beta, Gemini 2.5, etc&rdquo;</strong>*</p>
<p>The benchmarks are not wrong, what is wrong is whoever interpreted that to mean being better at everything. Let&rsquo;s go to another analogy:</p>
<p><strong>&ldquo;Student So-and-So got 99% right on every college entrance mock exam&rdquo;</strong></p>
<p>People&rsquo;s conclusion:</p>
<p><strong>&ldquo;Student So-and-So is 99% better than everyone at everything&rdquo;</strong></p>
<p>I hope that sounds obviously wrong. Being better at 1 thing makes nobody better at everything, but in AI this is how every news item about a new LLM version is published in personal posts and journalistic outlets. It is an obvious <strong>CLICKBAIT</strong>. And you fall for it.</p>
<p>And if you are used to hearing it this way, it makes it seem that with every new LLM version - that is &ldquo;better at everything&rdquo; than the previous one - we are very close, or have already reached, the point where yes, human programmers are no longer needed, nor mathematicians, nor engineers, nor doctors, since after all, the LLM is &ldquo;GOOD AT EVERYTHING&rdquo;.</p>
<p>And nothing could be further from the truth than this. These statistical ranking studies have a testing METHODOLOGY and a fixed benchmark suite. The tests are SIMPLE, think things at the level of &ldquo;write a function that computes a factorial&rdquo;, &ldquo;write a function that sorts a list of words&rdquo;, &ldquo;given a list of words, find a specific one in logarithmic time&rdquo;, etc. Things you see in introductory computer science courses or on Leet Code.</p>
<p>These tests are run MULTIPLE TIMES and the &ldquo;outliers&rdquo; (tests where it got way too much wrong, or tests where it got way too much right, or anything that falls out of the average) are discarded, a statistical distribution is built, and a generic overall &ldquo;number&rdquo; is compiled like &ldquo;got 99% right&rdquo; or something like that.</p>
<p>It got a lot wrong, but that data point is an outlier, and it was removed from the tally. It is statistically irrelevant within the methodology. But here is a fact: no LLM gets it right 100% of the time, and none ever will. I demonstrated this in my post about Modelfiles where I explain that there is a controlled random factor (temperature, top_p, top_k, min_p, key sampling). And there are also normalizations and random factors during training (softmax, relu). And there are also later optimization factors that &ldquo;round&rdquo; or &ldquo;truncate&rdquo; the probabilities like quantization (fp8, Q4, etc). In other words, there are several &ldquo;micro error&rdquo; factors and randomness baked into the entire process. It will never be a &ldquo;correct&rdquo; answer, only &ldquo;possibly one of the most correct&rdquo; and this &ldquo;possibly&rdquo; can vary A LOT.</p>
<h3>Dissecting AI Myths - 2. Exponential Evolution<span class="hx:absolute hx:-mt-20" id="dissecting-ai-myths---2-exponential-evolution"></span>
    <a href="#dissecting-ai-myths---2-exponential-evolution" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Whoever just arrived and is seeing frequent news about releases of new LLM versions like Alibaba&rsquo;s Qwen3 now, Xiaomi&rsquo;s new MiMo, Gemini version 2.5, ChatGPT version 4.1, etc has the impression that we are evolving by leaps and bounds.</p>
<p>But the truth is that yes, 2022 was a historical milestone with the original ChatGPT, mainly GPT 2. But from then until now, evolution has slowed down. Each new version is no longer visibly &ldquo;twice as good&rdquo; as the previous one, except in certain benchmarks, under certain specific conditions - that do not match reality. I will demonstrate this shortly.</p>
<p>A friend of mine reminded me about the evolution of deep learning technologies in image recognition, years earlier:</p>
<ul>
<li>
<p>2012 – AlexNet: First major victory on ImageNet with 8 layers, reaching 84.7% top-5 accuracy.​</p>
</li>
<li>
<p>2014 – VGG: Networks with 16–19 layers, incremental improvements, but with a significant increase in parameters.​</p>
</li>
<li>
<p>2015 – ResNet: Introduction of residual connections, allowing networks with more than 100 layers and surpassing human performance in top-5 accuracy.​</p>
</li>
<li>
<p>2016–2017 – Inception, ResNeXt, SENet: More complex models with marginal gains.​</p>
</li>
<li>
<p>Post-2018: Top-1 accuracy stabilizes around 85–88%, with marginal gains even in models like EfficientNet and NasNet.</p>
</li>
</ul>
<p>AI has been studied since literally the beginning of modern computing in the late 1930s, by none other than Alan Turing himself or John Von Neumann. I talked about them here:</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/G4MvFT8TGII"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>Think of a &ldquo;slow beginning&rdquo;: from 1930 until around 2012 when ImageNet and things like AlphaGo, GANs and such started to pick up speed. We left the bottom leg of the &ldquo;S&rdquo; for the middle starting in the 2010s and have been accelerating until now. I &ldquo;guess&rdquo; that we are either already at, or heading toward, the top of the &ldquo;S&rdquo;, where the curve stabilizes and slows down. That is what happened with deep learning for images:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/lgr7uodnbmqfujjw39h69mnybi8t" alt="ImageNet"  loading="lazy" /></p>
<p>Remember AlphaGo? I followed it live. As a hobbyist amateur in Go, I watched live the games with the South Korean masters like Lee Sedol, at the time it happened, I think 2016. You probably just watched the <a href="https://www.netflix.com/br-en/title/80190844"target="_blank" rel="noopener">documentary on Netflix</a> only now, but this has been going on for years. And now, where is AlphaGo evolving exponentially? Everyone has forgotten already, because the hot thing of the moment is LLMs, which is just one more category in the AI world.</p>
<p>The vast majority of optimizations have already been done or are being done. If I had to summarize just some of the most important milestones of this part of the generation, it would go roughly like this:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/z14qvijztqvy6prvbpokk02fqrjt" alt="timeline llm"  loading="lazy" /></p>
<p>Every engineer and scientist knows this: when you have nothing, anything is a quantum leap. When you only have 1 real, 2 reais is already &ldquo;double&rdquo;. When you have 10 reais, 20 is already a lot. But when you get to 20 thousand, another 100 no longer adds as much value as when you only had 1 (there it would be 100x).</p>
<p>Every new drop of optimization now COSTS A LOT. Even in lossy optimization (quantization) we already went from fp32, moved to fp16, fp8, already reached 1-bit. There is nowhere further down to go after that. We are at the point where we are trading precision for performance.</p>
<p>Doubling parameters no longer results in doubling result quality. Need to double to get 5%? Maybe? And it is no use to keep increasing, the result starts getting worse instead of better. That is why we already jumped to things like specialist LLMs, MoE (Mixture of Experts).</p>
<p>Deep thinking/Chain-of-Thought/Reasoning was a big leap, but just increasing more thinking no longer delivers as much either, in fact, in many cases it makes the result worse with &ldquo;over-thinking&rdquo;. Thinking too much is not linear either.</p>
<p>Increasing context does not help improve the answers either. On the contrary, we already see that past a certain point, more context hurts the result, because the attention architecture (the great differentiator of LLMs), has limits. Yes, a Deepseek or Gemini claim to support &ldquo;1 million tokens&rdquo;. But I already explained in previous articles that this is <strong>Sliding Window Attention</strong> like SDPA or Flash where the attention is focused only on a PART of that large context: it cannot pay attention to everything all the time.</p>
<p>Every spot where you could put the obvious things, like caching, whether in training or in generation, has already been put there. We are running out of options here. And yes, new discoveries continue to happen, but as I said, none has yet managed to push past the limits we know exist.</p>
<h3>Demystifying AI Myths - 3. Ending Programmers<span class="hx:absolute hx:-mt-20" id="demystifying-ai-myths---3-ending-programmers"></span>
    <a href="#demystifying-ai-myths---3-ending-programmers" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>What I hate most about the current hype are the false promises of &ldquo;AGI&rdquo;, &ldquo;Vibe Coding&rdquo;, &ldquo;replacing employees with MCPs&rdquo;. Let me state it again: it is all propaganda.</p>
<p>Lying propaganda and false snake oil promises (something that always existed and will always exist in history) DEVALUES the reality of the innovations we have today.</p>
<p><em>&ldquo;But Anthropic&rsquo;s CEO and uncle Zuck said they will replace programmers. Microsoft and Google said that 30% of their code already comes out of AI.&rdquo;</em></p>
<p>As I said before about statistics. Yes: a lot of stuff IS going to be done with AI indeed. You don&rsquo;t need AI to optimize work in several areas:</p>
<ul>
<li>
<p>a stick and a clay block are enough to replace people&rsquo;s memory. Nobody remembers details, especially numerical ones, permanently. For millennia we have been evolving in helping our memory with some kind of external storage. Whether a clay block, whether paper, whether a post-it, whether a .txt file on your machine.</p>
</li>
<li>
<p>the first photographic camera already removed the need to hire a painter to have a &ldquo;selfie&rdquo;.</p>
</li>
<li>
<p>the first primitive computer already eliminated the need for an entire building of mathematicians doing and redoing calculations on paper. Even so, this is how the first rockets went to space. Have you watched the movie <a href="https://www.netflix.com/title/80123775"target="_blank" rel="noopener">Hidden Figures</a>? I recommend it.</p>
</li>
<li>
<p>cars have been assembled almost entirely by robots for years now. Robotics is nothing new in industry. These days, a tablet has already replaced supermarket and McDonald&rsquo;s cashiers. All of this without needing AI. IVRs and little bots have already replaced a lot of telemarketing and support.</p>
</li>
</ul>
<p>So yes, in practice, AI will also replace an entire class of programmers: the low-value-added ones. The ones who don&rsquo;t know how to do much more than copy and paste, or whose work routine is repetitive. If your job involves repetitive tasks, it is obvious that it is a matter of time until they get automated, whether by AI or mere scripts. Something we already do today.</p>
<p>A programmer&rsquo;s job has always been to replace other people&rsquo;s work. You, who work building an e-commerce system: you helped replace the work of salespeople, window dressers, store decorators, cashiers. You, who build ticketing and support systems, you already replaced human attendants. You, who build delivery systems, already replaced telephone operators. You, who build financial systems, already replaced bank clerks, the people who build bank branches, etc.</p>
<p>You, programmer, have always worked replacing other people&rsquo;s work. It was a matter of time until programmers replaced the work of programmers. Call it <strong>poetic justice</strong>. It is just evolution. It happens. Nothing in the world is made to be static nor guaranteed.</p>
<p>Here is the good news: as always happens. There are still painters, even though there are photographers. There are still salespeople, even though there is e-commerce. There is still construction, even though there is not as much need for stores or even offices (with home office). There still exist and will continue to exist, doctors, lawyers, accountants, several professions. The difference is that before, an accounting firm needed a building full of people who knew how to use abacuses and write spreadsheets on paper. Today a single accountant who knows how to use Excel replaces an entire floor. In the old days, an advertising agency was an entire building, today it is one person using Canva, CapCut and Photoshop.</p>
<p>Programmer is the same thing. Before it was an entire building with a purple ball pit. Tomorrow it will be one, GOOD, programmer with Cursor and Aider. Who disappears in this game? Whoever did the low-value-added grunt work.</p>
<p>I warned this was going to happen. For 5 years, before this generation of LLMs and AI even existed. Because it is the natural course of things. The weekend online course programmer. That is the first one who is going to disappear.</p>
<p>Do you know calculus? Do you know Algebra? Do you know Linear Algebra? Do you know Probability Statistics? Do you know what a statistical distribution is? Do you know what vectors or tensors are? Do you know what a Hilbert space is? No? I would take precautions if I were you. If all the articles I published this month of April/2025 were very difficult, you already know what you need to study.</p>
<h3>My Experience with LLMs<span class="hx:absolute hx:-mt-20" id="my-experience-with-llms"></span>
    <a href="#my-experience-with-llms" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I have been using LLMs for 2 years. Every kind of research or code I do passes through some LLM in some capacity. I use it heavily, really. My ChatGPT history is gigantic.</p>
<p>And after doing another intensive round to make sure. Yes, o4-mini-high, Sonnet 3.7, Gemini 2.5, Qwen3, Deepseek-R1, etc are all extremely useful and none of them, absolutely none, can satisfy me.</p>
<p>Vibe Coding is enormous nonsense. Nobody without programming knowledge can build more than super simple software (and full of bugs) using only LLMs and prompts or MCPs. That is a fact.</p>
<p><em>&ldquo;But evolution is exponential, next year it will be perfect.&rdquo;</em></p>
<p>It won&rsquo;t. I already argued that point above.</p>
<p><em>&ldquo;But the benchmarks say they already manage to produce 99% perfect code.&rdquo;</em></p>
<p>I already argued that point too, your interpretation is mistaken.</p>
<p>We are near or already at the beginning of the top of the &ldquo;S&rdquo; curve. And I see no problem at all with that. I understand how LLMs are made, I understand how they are optimized, I understand what they can do and, more importantly, I understand what they are incapable of doing.</p>
<p>Look at the <a href="https://github.com/akitaonrails/Tiny-Qwen-CLI/pulls"target="_blank" rel="noopener">pull requests</a> of every attempt I made to do code refactoring and unit tests with the main LLMs on the market, open and closed. What I see:</p>
<ul>
<li>it needs LOTS of prompting and lots of instruction to get them to start spitting out code that works.</li>
<li>they look like an intern, the famous &ldquo;it works on my machine&rdquo;. They come out spitting, a bunch of copy-pasted code, and don&rsquo;t re-check whether it makes sense or whether it was needed. The amount of useless code they generate is scary.</li>
<li>they repeat the same mistakes, even when warned not to commit them.</li>
<li>even with &ldquo;agents&rdquo;, &ldquo;MCP&rdquo;, even running the code that was generated and giving the error stacktrace, they easily lose focus, lose attention and cannot fix it. Even retrying multiple times to fix the same error. Even giving hints. Even writing at length what is wrong. They quickly enter a loop. Especially if the so-called &ldquo;thinking&rdquo; is enabled. They think too much and don&rsquo;t solve it.</li>
<li>I&rsquo;m tired of seeing attempts to randomly go around tweaking the code, in parts I didn&rsquo;t even ask them to touch, and breaking more than fixing.</li>
<li>none of them was able to generate unit tests that work on the first try. Some managed to write a few simple ones, after giving them the error and asking them to fix it. Some get stuck in a thinking loop, confused, and go around changing things without fixing. In the end they fail.</li>
<li>Out of nowhere they start hallucinating. Qwen 3 itself, if I try to raise temperature just a bit, from 0.1 to 0.2, out of nowhere Chinese characters start coming out in the middle of the code, like this:</li>
</ul>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/j0rnlba6loxmo32pyyjxy8diteor" alt="chinese char"  loading="lazy" /></p>
<ul>
<li>Every now and then, more than one LLM pulled off the feat of generating a unit test that gave a recursive error. This filled the stacktrace so much that if I tried to pass it to the model (over 12 thousand tokens), it would blow the context window and from there it couldn&rsquo;t pay attention to anything else:</li>
</ul>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/eqh6ytb84mvcpzr92dk7kge2exaj" alt="recursive error"  loading="lazy" /></p>
<ul>
<li>
<p>since they mess up a lot, I repeatedly and exhaustively give it chances to fix things. I run the code it generated, send the error stacktrace, ask it to fix. It touches another part of the code. I run again, it errors and I repeat. If you do this more than half a dozen times, the context starts filling up, sliding window makes it split attention, it &ldquo;forgets&rdquo; what came before, starts repeating the same error and stays there forever.</p>
</li>
<li>
<p>it does not matter whether it supports 8 thousand tokens, 30 thousand tokens, 100 thousand tokens or 1 million tokens of context. That did not influence the quality of the code nor improved this routine of error repetition. It never manages to pay attention to everything.</p>
</li>
<li>
<p>there is no point trying to tune key sampling. whether with temperature 0, 0.1, 0.6. It only makes it err a little later or a little earlier, but it quickly errs and quickly becomes unable to fix its own mistakes. Tools like Aider take the code it suggested and write it over the real code file. Several times, from filling the context too much, it starts to &ldquo;forget&rdquo; and delete chunks of code. Thank goodness GIT exists, because several times I needed to run <code>git checkout</code> to go back to the beginning. If you don&rsquo;t check, be careful, it deletes code or overwrites it with nonsense, and this is frequent.</p>
</li>
<li>
<p>deep thinking/reasoning/chain-of-thought, whatever you prefer to call it, just means it spends a lot of time thinking in excess and filling the context with filler, eating up your tokens. If it&rsquo;s your commercial API, be careful: you will burn through your credits very fast and the result is not significantly better. There are isolated cases where it helps. I recommend leaving it off by default and turning it on only in a few special cases.</p>
</li>
</ul>
<p>And look: my example project is ridiculous: it is 5 files. 4 of them have fewer than 100 lines of code, the biggest one has 400-something lines. A real, large project is MILLIONS of lines of code. It does not fit in any context window of any Gemini or Deepseek. And even if it did fit, it would only make the model more confused. The good practice in any tool is to give it the minimum number of files. And that restricts the use cases to local and isolated refactorings, never things like renaming a class or function that is used in hundreds of files. For that, keep using your IntelliJ.</p>
<p>No model I tested is perfect. Some models do a bit better in some cases. On the first attempt I made with Gemini 2.5, it actually managed to perform the tasks I asked. It did not produce marvelous code, but at least it didn&rsquo;t break anything.</p>
<p>The second time, I ran <code>git reset --hard</code> and started over, with the same files and the same prompts. This time it was extremely disappointing. It broke the main code during the refactoring and was unable to finish a unit test that works, even though I forced it several times. I gave up out of exhaustion.</p>
<p>The third time, it gave a different result, improved the code a bit and managed to finish the same test. But it also required a few rounds of broken tests, giving stacktraces and asking it to fix obvious errors. And when I say &ldquo;obvious&rdquo; it is for it to fix a mock that it itself had placed without needing to.</p>
<p>And this is consistent across all the other models. If I run it only once, I get an impression. For example, that Claude is better than Qwen3. But if I run it again, the same test, now Claude disappoints me and Qwen3 jumps ahead. There is never an objectively better winner. They are all more or less at the same position and keep shuffling in the ranking depending on how many times you repeat exactly the same test, with the same code and the same prompts.</p>
<p>And who keeps repeating the same thing? Nobody. Everybody accepts the first answer. And the first answer can be QUITE wrong. At an obvious level of wrong. If you accept it automatically, you will insert garbage into your repo. And that is my problem with things like MCP or agents: if you leave everything on autopilot and ask things like &ldquo;take all the code files in this directory and fix every bug&rdquo;. It will, with full certainty, generate more bugs, delete code, vanish files and leave the final repository in a worse state than before.</p>
<p>Pure Vibe Coding, with zero interaction from a programmer, does not work. I tested all the main models. None was able to pass simple tests. None will be able to pass real larger tests. Not without a lot of interaction from a good programmer to reject errors and demand it try again, or manually fix what came out wrong.</p>
<p>And guess what: a coder who only knows how to copy and paste from stackoverflow (and now from ChatGPT), is unable to recognize many of these errors. So instead of helping, he may make things worse.</p>
<p>For me, who knows exactly what I want, the errors are obvious and I automatically reject them. And I reject what every LLM does more than I accept. Many times I just grab a snippet of what it suggested and discard all the rest. That is the real day-to-day. Everyone who says otherwise has not written code more complicated than a Hello World.</p>
<p>Why do you think every example of <em>&ldquo;wow, look at the LLM writing code on its own&rdquo;</em> is always writing a factorial function? Or a crappy web page? Because that is all it actually manages to do. No MCP example I have seen so far has impressed me. It was all smoke. And you got fooled by the propaganda.</p>
<p>Now you know.</p>
<p>How do you learn more and avoid getting fooled? Start by learning the fundamentals. 1 year ago I made several videos explaining how LLMs work. You should already have watched them:</p>
<p><a href="https://www.youtube.com/playlist?list=PLdsnXVqbHDUeowsAO0sChHDY4D65T5s1U"target="_blank" rel="noopener"><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/7tshjfwbly7wudczbni2pa863f11" alt="Playlist I.A."  loading="lazy" /></a></p>
<p>And how to become a programmer who will not be replaced by AI? That is what I made <a href="https://www.youtube.com/@Akitando"target="_blank" rel="noopener">my channel</a> for. When everything I said becomes common knowledge for you, congratulations, you have a good chance of surviving.</p>
]]></content:encoded><category>llms</category><category>vibe-coding</category><category>llm-benchmarks</category><category>off-topic</category></item><item><title>[Off-Topic] The Pity Evolution of Modern Society</title><link>https://akitaonrails.github.io/en/2018/07/26/off-topic-the-pity-evolution-of-modern-society/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2018/07/26/off-topic-the-pity-evolution-of-modern-society/</guid><pubDate>Thu, 26 Jul 2018 15:28:00 -0300</pubDate><description>&lt;p&gt;The world is perishing in an orgy of self-righteousness.&lt;/p&gt;
&lt;p&gt;People from Wisecrack always manage to put a smile on my face. They give me hope that there are still people of reason in this world. This essay is inspired by that video and the gathering of complementary thoughts.&lt;/p&gt;
&lt;div class="embed-container"&gt;
&lt;iframe
src="https://www.youtube.com/embed/Wp7f2ftkybI"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerpolicy="strict-origin-when-cross-origin"
allowfullscreen&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;As an engineer, I stay amazed at what we&amp;rsquo;re able to create. No one would have guessed that one of humankind&amp;rsquo;s most fabulous inventions, the internet, along with its biggest hits, could turn into a weapon of mass destruction. I mean ubiquitous mobile access and social networks that gather absurd numbers of people at the same time.&lt;/p&gt;</description><content:encoded><![CDATA[<p>The world is perishing in an orgy of self-righteousness.</p>
<p>People from Wisecrack always manage to put a smile on my face. They give me hope that there are still people of reason in this world. This essay is inspired by that video and the gathering of complementary thoughts.</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/Wp7f2ftkybI"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>As an engineer, I stay amazed at what we&rsquo;re able to create. No one would have guessed that one of humankind&rsquo;s most fabulous inventions, the internet, along with its biggest hits, could turn into a weapon of mass destruction. I mean ubiquitous mobile access and social networks that gather absurd numbers of people at the same time.</p>
<p>This case is far from the only one, but it works as an example. A few days ago, I was caught off guard by a seemingly small piece of news. James Gunn, the beloved director of two of the MCU&rsquo;s biggest hits with his Guardians of the Galaxy, was fired over tweets he wrote ten years earlier.</p>
<p>I am not here to judge the merits of the tweets or if his apologies are good enough.</p>
<p>Actually, by just stating neutrality, I am automatically judged as being in favor. This is the problem here.</p>
<p>These days, we&rsquo;ve seen right-wing pages and accounts deleted from Facebook. It&rsquo;s part of the platform&rsquo;s ongoing effort to fight &ldquo;fake news,&rdquo; which really is a problem of modern times. News outlets have turned into click-bait factories, exactly as Wisecrack&rsquo;s video describes.</p>
<p>Who decides what &ldquo;fake news&rdquo; is? It &ldquo;offends&rdquo; a demographic that is loud and generates clicks. Therefore, we must ban the other side.</p>
<p>It reminds me of a cliche phrase from The Lord of the Rings that always resonated with me. When the fellowship is trying to go through Moria, Frodo laments to Gandalf:</p>
<blockquote>
  <p>&lsquo;What a pity that Bilbo did not stab that vile creature, when he had a chance!&rsquo;</p>

</blockquote>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/IrOqnZdvI6M"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<p>To which Gandalf replies:</p>
<blockquote>
  <p>&lsquo;Pity? It was Pity that stayed his hand. Pity, and Mercy: not to strike without need. And he has been well rewarded, Frodo. Be sure that he took so little hurt from the evil, and escaped in the end, because he began his ownership of the Ring so. With Pity.&rsquo;</p>

</blockquote>
<p>And then concludes:</p>
<blockquote>
  <p>&lsquo;Deserves it! I daresay he does. Many that live deserve death. And some that die deserve life. Can you give it to them? Then do not be too eager to deal out death in judgement.</p>
<p>For even the very wise cannot see all ends. I have not much hope that Gollum can be cured before he dies, but there is a chance of it. And he is bound up with the fate of the Ring. My heart tells me that he has some part to play yet, for good or ill, before the end; and when that comes, the pity of Bilbo may rule the fate of many — yours not least.&rsquo;</p>

</blockquote>
<p>Back to Gunn, what surprised me was not that those tweets were republished or the public outcry (and of course, no sane person supports the specific contents literally). What really surprised me was the incredible velocity with which a mega-corporation the size of Disney responded with a swift beheading, literally terminating a great career in less than a few hours.</p>
<p>It reminds me of equally quick public sentences without trials or due process. Again, I&rsquo;m not advocating for these people, but James Damore vs. Google, Brendan Eich vs. Mozilla, and James Watson vs. Nobel.</p>
<p>And most of you or your friends would say, <em>&ldquo;of course they were ousted, they are bad people, we must police ourselves to remove these villains from our midst.&rdquo;</em></p>
<p>Should we?</p>
<p>Can you give back their future if you were wrong? What makes you entitled to be a jury and judge?</p>
<p>Careful. When antagonized, an average, reasonable person should dialogue in private, as any civilized society learned to do. But social networks motivate people to do the worst: call out in public.</p>
<p>This is Mob Formation. This is plain old bullying. I suffered bullying my whole life, being a Japanese minority in a Western country, and I know exactly how much it hurts. That&rsquo;s why I never bully back.</p>
<p>If you call out someone in public, you&rsquo;re not practicing &ldquo;justice.&rdquo; You are a mere bully. No matter the subject at hand.</p>
<p>Have you ever read the image header of my <a href="https://www.facebook.com/fabio.akita.profile"target="_blank" rel="noopener">Facebook</a> and <a href="https://twitter.com/akitaonrails"target="_blank" rel="noopener">Twitter</a> profiles? It reads:</p>
<blockquote>
  <p>&ldquo;I Disapprove of What You Say, But I Will Defend to the Death Your Right to Say It.&rdquo; - Evelyn Beatrice Hall.</p>

</blockquote>
<p>And I believe that.</p>
<p>I shall never shame someone in public. Only cowards do that. Shaming someone in the open has the sole purpose of mobbing people, transforming the herd into a maneuvering mass to swiftly perform a public execution, and thus, make your point without having to defend it.</p>
<p><em>&ldquo;But I have the right not to be offended.&rdquo;</em></p>
<p>No, you don&rsquo;t.</p>
<p>Another movie I talked about years ago, and cropped a segment to upload on my blog, is Miloš Forman&rsquo;s masterpiece The People vs. Larry Flynt, produced by Oliver Stone.</p>
<div class="video-container">
    <video controls>
        <source src="https://s3.us-east-2.amazonaws.com/blip.tv/Akitaonrails-LarryFlintFreedom513.mp4" type="video/mp4">
        Your browser does not support the video tag. [Direct Link](https://s3.us-east-2.amazonaws.com/blip.tv/Akitaonrails-LarryFlintFreedom513.mp4)
    </video>
</div>
<p>It tells the story of the founder of the pornography magazine Hustler. By all means, a despicable person.</p>
<p>But this is precisely the point. Larry did things most of you would condemn. Not just publishing porn, but making satire out of public figures with bad-taste jokes. Jokes nonetheless. The part that really hit me was the idea that people have no right not to be offended. It&rsquo;s a subjective matter, with no place in court, because we can&rsquo;t legally define taste.</p>
<blockquote>
  <p>&ldquo;Ladies and gentlemen of the jury, you have heard a lot today, and I&rsquo;m not gonna go back over it, but you have to go into that room and make some decisions. But before you do, there&rsquo;s something you need to know. I am not trying to suggest that you should like what Larry Flynt does. I don&rsquo;t like what Larry Flynt does, but I do like that I live in a country where you and I can make that decision for ourselves. I like that I live in a country where I can pick up Hustler magazine and read it, or throw it in the garbage can if that&rsquo;s where I think it belongs.&rdquo;</p>

</blockquote>
<p>Anyone has the right to do and say whatever he or she wants as long as it doesn&rsquo;t harm the other person. This is a delicate matter because my rights should end where your rights start.</p>
<blockquote>
  <p>&ldquo;If the First Amendment will protect a scumbag like me, it will protect all of you.&rdquo; - Larry Flynt.</p>

</blockquote>
<p>But because it can&rsquo;t be decided in court, radical people take matters with their own hands, using the most powerful weapon ever devised: social networks. They can quickly gather a large jury and determine the public execution. It&rsquo;s like handing a loaded gun to a toddler.</p>
<p>This is Inquisition territory. Galileo was judged and sentenced because he offended Catholic society by stating that the Earth and the planets revolve around the Sun, and not the other way around. It seems stupidly trivial today, but it was a monumental scandal back then. People would rather die than accept that offensive statement. It would be trending on the Twitter of the 1600s, and public execution would be demanded within minutes.</p>
<p>This <em>&ldquo;I&rsquo;m offended&rdquo;</em> justification is what ultimately led to assassinations such as Luther King, JFK, Lennon, the arrest of Gandhi, and the genocide of the Jews. Intolerance.</p>
<p>If not being offended is the ultimate goal, intolerance is the only path, and the murder of Freedom is the worst consequence.</p>
<p>Every atrocity in humankind starts with mob behavior around the <em>&ldquo;I shouldn&rsquo;t feel offended.&rdquo;</em></p>
<p>That&rsquo;s the story behind Fahrenheit 451, which Wisecrack explains well. At some point, people just started building echo chambers. Every Twitter feed and every Facebook timeline is, by definition, an echo chamber. You only get content meticulously curated by machine learning, configured to spit out posts that won&rsquo;t offend you and won&rsquo;t ever challenge your points of view.</p>
<p>You create and live in a bubble, and you immediately get outraged when your reality is challenged by any thought-provoking idea. You limit yourself to your personalized and narrow status quo.</p>
<p>It&rsquo;s a lie when you say <em>&ldquo;I&rsquo;m open-minded&rdquo;</em> but keep calling people out and whining about how offended you are. You are not open-minded. You can&rsquo;t have your cake and eat it too. At least admit the truth: you&rsquo;re narrow-minded and intolerant.</p>
<p>Contrary to what many of us believe, the internet was supposed to set us free from governments, authoritarian institutions, and big media channels that supposedly controlled the masses&rsquo; points of view.</p>
<p>We were supposed to have access to a broader range of knowledge, without borders, without prejudice, and that would help us advance faster into the future, into more innovation.</p>
<p>Innovation, by definition, is a challenge against the status quo. You can&rsquo;t innovate and please everybody at the same time. That&rsquo;s impossible. Otherwise, it&rsquo;s just more of the same.</p>
<p>The invention of fire challenged nature, the invention of heliocentrism questioned God, and the design of natural selection challenged humankind&rsquo;s soul.</p>
<p>Social networks took a free, decentralized internet and put it on a very tight leash, controlled by &ldquo;Influencers.&rdquo; People of pure charisma, with no righteousness and much less wisdom. Charisma is what pulls in huge numbers of followers. The network effect is vicious.</p>
<p>We were supposed to be all <strong>together</strong> collaborating for the betterment of humankind, regardless of race, geography, and political inclinations.</p>
<p>Be warned, you are all falling for the <a href="https://en.wikipedia.org/wiki/Eight_stages_of_genocide"target="_blank" rel="noopener">Eight stages of Genocide</a>. Behold:</p>
<ol>
<li>Classification: People are divided into &ldquo;them and us&rdquo;.</li>
<li>Symbolization: &ldquo;When combined with hatred, symbols may be forced upon unwilling members of pariah groups&hellip;&rdquo;</li>
<li>Dehumanization: &ldquo;One group denies the humanity of the other group. Members of it are equated with animals, vermin, insects, or diseases.&rdquo;</li>
<li>Organization: &ldquo;Genocide is always organized&hellip; Special army units or militias are often trained and armed&hellip;&rdquo;</li>
<li>Polarization:  &ldquo;Hate groups broadcast polarizing propaganda&hellip;&rdquo;</li>
<li>Preparation: &ldquo;Victims are identified and separated out because of their ethnic or religious identity&hellip;&rdquo;</li>
<li>Extermination: &ldquo;It is &rsquo;extermination&rsquo; to the killers because they do not believe their victims to be fully human&rdquo;.</li>
<li>Denial:  &ldquo;The perpetrators&hellip; deny that they committed any crimes&hellip;&rdquo;</li>
</ol>
<p>This is the original Nazi modus operandi, and you are perpetuating those steps. I&rsquo;m not a Jew, but I deeply admire and respect their history and resilience. I&rsquo;ve been to the official <a href="http://www.akitaonrails.com/2012/11/21/viagem-a-europa-parte-3-tel-aviv-israel"target="_blank" rel="noopener">Holocaust Institute</a> at Yad Vashem, in Israel, and to the one in Washington D.C., because I respect the lessons they left behind. It was supposed to be our duty not to let history repeat itself.</p>
<p>But, such is the power of blind ideology and the leadership of charismatic celebrities.</p>
<p>We had charismatic leaders doing good things and bad things, charismatic nonetheless. For every Lincoln or Churchill, we had a Stalin or a Castro.</p>
<p>What&rsquo;s more difficult is that we can only really know that something went horrendously bad in hindsight, from History. There is no such thing as a black-and-white &ldquo;good&rdquo; vs. &ldquo;evil.&rdquo; You always think that you are doing an excellent job by following charismatic people who seem to be only promoting the well-being of a minority group.</p>
<p>Ask yourself: are you following a selfless person, one who can treat another with more humanity than they got? Or does it sound more like selfish revenge and payback? Hate is always the stuff of evil. A righteous person does not mimic what they claim to fight against. Anyone advocating &ldquo;let&rsquo;s do to them what they did to us&rdquo; is most probably Evil. You cite people like Gandhi. Did you learn nothing from what he taught all his life?</p>
<p>Every Fidel, every Mussolini, every Hitler, they all really believed that they were fighting for the well-being of their people. Every Nazi acted thinking they were doing the right thing for the future of their sons and daughters, that the sacrifices would pay off. That they were being Noble for killing people.</p>
<p>There has never been a better platform to mob people into irrational herds than now. There are YouTubers out there that have millions of more followers than any Hitler ever had.</p>
<p>And to add injury to misery, we&rsquo;ve formed the online consensus that people have a magical, inherent right to &ldquo;never be offended.&rdquo; They shall not be offended by 200-character tweets. That&rsquo;s a capital sin, and the perpetrator must die. Apologies are not enough. The thought police have reached the point where one out-of-context tweet is enough to judge and execute a person&rsquo;s life, without recourse, without parole.</p>
<p>It&rsquo;s fascinating to see how a series of technologies and innovations supposed to broaden the freedom of everybody would turn to become the most potent weapon of mass destruction ever devised. And it didn&rsquo;t need a newborn Hitler.</p>
<p>The end of the world doesn&rsquo;t have to be a catastrophic physical event like a nuclear blast. I think the destruction of the fabric of society itself is even worse. It&rsquo;s not a big evil dictator that will kill Freedom, it&rsquo;s the people who don&rsquo;t deserve it. It&rsquo;s far more nefarious and can be even more damning.</p>
<p>That&rsquo;s the lesson: no Omar Bashir, Bashar Al-Assad, or Nicolás Maduro will, alone, be responsible for destroying society.</p>
<p>Every evildoer in history did what they did <em>&ldquo;in the name of the people.&rdquo;</em></p>
<p>And it all starts with <em>&ldquo;I shouldn&rsquo;t be offended.&rdquo;</em></p>
]]></content:encoded><category>politics</category><category>philosophy</category><category>psychology</category><category>off-topic</category></item><item><title>[Off-Topic] Blockchain and Cryptocurrencies in Brazil</title><link>https://akitaonrails.github.io/en/2017/08/28/off-topic-blockchain-e-criptomoedas-no-brasil/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/08/28/off-topic-blockchain-e-criptomoedas-no-brasil/</guid><pubDate>Mon, 28 Aug 2017 13:07:00 -0300</pubDate><description>&lt;p&gt;Anyone following me on &lt;a href="https://twitter.com/AkitaOnRails/status/900450641755156480"target="_blank" rel="noopener"&gt;Twitter&lt;/a&gt; has already noticed I&amp;rsquo;ve been VERY interested and active with cryptocurrencies. For now I&amp;rsquo;m just an investor, with no project of my own.&lt;/p&gt;
&lt;p&gt;Out of curiosity, I asked over there whether anyone knew of companies or people working in this area here in Brazil, and the list I got back turned out pretty interesting. Worth sharing the recommendations with everyone.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://auctus.org/"target="_blank" rel="noopener"&gt;Auctus&lt;/a&gt; - alt-coin ICO&lt;/li&gt;
&lt;li&gt;&lt;a href="https://originalmy.com/"target="_blank" rel="noopener"&gt;Original My&lt;/a&gt; - proof-of-authenticity&lt;/li&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20171129024802/https://play.google.com/store/apps/developer?id=Laivon"target="_blank" rel="noopener"&gt;Laivon&lt;/a&gt; - looks like they develop mobile apps and some of them are cryptocurrency trackers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opendime.com/"target="_blank" rel="noopener"&gt;OpenDime&lt;/a&gt; - another hardware stick wallet - they say there are Brazilians working there too&lt;/li&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20170901202750/http://www.hugpay.com.br/"target="_blank" rel="noopener"&gt;HugPay&lt;/a&gt; - a way to send remittances to/from abroad without needing a bank account, in partnership with lottery shops (good idea)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20180302211934/https://www.blockoventures.com/"target="_blank" rel="noopener"&gt;Blocko Ventures&lt;/a&gt; - I didn&amp;rsquo;t quite get whether they&amp;rsquo;re a services company or investors in blockchain solutions&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Kriptacoin - just another alt-coin&lt;/del&gt; (see comments)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blinktrade.com/"target="_blank" rel="noopener"&gt;BlinkTrade&lt;/a&gt; - looks like an exchange infrastructure (I think Foxbit and others might use it, though I haven&amp;rsquo;t confirmed) and was founded by Brazilians&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.stone.com.br/"target="_blank" rel="noopener"&gt;Stone Pagamentos&lt;/a&gt; - &lt;a href="https://twitter.com/BernardoDCGA/status/901793619635515398"target="_blank" rel="noopener"&gt;said&lt;/a&gt; they&amp;rsquo;re helping companies accept payments in cryptocurrencies.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I want to hear about more Brazilian companies and professionals in the bitcoin and cryptocurrency ecosystem in general. I&amp;rsquo;m especially looking for speakers who know the subject and are doing hands-on coding, to speak (in English) at the conference I&amp;rsquo;m organizing, &lt;a href="http://web.archive.org/web/20170911201232/http://www.theconf.club/"target="_blank" rel="noopener"&gt;THE CONF&lt;/a&gt;. If you know of anyone, send them in the comments section.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Anyone following me on <a href="https://twitter.com/AkitaOnRails/status/900450641755156480"target="_blank" rel="noopener">Twitter</a> has already noticed I&rsquo;ve been VERY interested and active with cryptocurrencies. For now I&rsquo;m just an investor, with no project of my own.</p>
<p>Out of curiosity, I asked over there whether anyone knew of companies or people working in this area here in Brazil, and the list I got back turned out pretty interesting. Worth sharing the recommendations with everyone.</p>
<ul>
<li><a href="http://auctus.org/"target="_blank" rel="noopener">Auctus</a> - alt-coin ICO</li>
<li><a href="https://originalmy.com/"target="_blank" rel="noopener">Original My</a> - proof-of-authenticity</li>
<li><a href="http://web.archive.org/web/20171129024802/https://play.google.com/store/apps/developer?id=Laivon"target="_blank" rel="noopener">Laivon</a> - looks like they develop mobile apps and some of them are cryptocurrency trackers</li>
<li><a href="https://opendime.com/"target="_blank" rel="noopener">OpenDime</a> - another hardware stick wallet - they say there are Brazilians working there too</li>
<li><a href="http://web.archive.org/web/20170901202750/http://www.hugpay.com.br/"target="_blank" rel="noopener">HugPay</a> - a way to send remittances to/from abroad without needing a bank account, in partnership with lottery shops (good idea)</li>
<li><a href="http://web.archive.org/web/20180302211934/https://www.blockoventures.com/"target="_blank" rel="noopener">Blocko Ventures</a> - I didn&rsquo;t quite get whether they&rsquo;re a services company or investors in blockchain solutions</li>
<li><del>Kriptacoin - just another alt-coin</del> (see comments)</li>
<li><a href="https://blinktrade.com/"target="_blank" rel="noopener">BlinkTrade</a> - looks like an exchange infrastructure (I think Foxbit and others might use it, though I haven&rsquo;t confirmed) and was founded by Brazilians</li>
<li><a href="http://www.stone.com.br/"target="_blank" rel="noopener">Stone Pagamentos</a> - <a href="https://twitter.com/BernardoDCGA/status/901793619635515398"target="_blank" rel="noopener">said</a> they&rsquo;re helping companies accept payments in cryptocurrencies.</li>
</ul>
<p>I want to hear about more Brazilian companies and professionals in the bitcoin and cryptocurrency ecosystem in general. I&rsquo;m especially looking for speakers who know the subject and are doing hands-on coding, to speak (in English) at the conference I&rsquo;m organizing, <a href="http://web.archive.org/web/20170911201232/http://www.theconf.club/"target="_blank" rel="noopener">THE CONF</a>. If you know of anyone, send them in the comments section.</p>
<p>I did think about writing about blockchain or cryptocurrencies, since I&rsquo;ve been studying and investing quite a bit. But everything you need to know is already accessible in countless blogs and sites, in English and in Portuguese, and there&rsquo;s no point in explaining it all again.</p>
<p>What interests me is knowing where people&rsquo;s biggest questions are on the subject, so I can try to dig into some specific aspect. Comment about that too.</p>
]]></content:encoded><category>bitcoin-and-cryptocurrency</category><category>business</category><category>off-topic</category></item><item><title>Estimates are Promises - A Better Metaphor</title><link>https://akitaonrails.github.io/en/2017/06/26/estimates-are-promises-a-better-metaphor/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/06/26/estimates-are-promises-a-better-metaphor/</guid><pubDate>Mon, 26 Jun 2017 17:44:00 -0300</pubDate><description>&lt;p&gt;If you didn&amp;rsquo;t know, I frequently answer questions over on Quora. &lt;a href="https://www.quora.com/profile/Fabio-Akita"target="_blank" rel="noopener"&gt;Follow me there&lt;/a&gt;; I&amp;rsquo;ve written almost 600 answers so far, many of them close to my longest posts here on the blog.&lt;/p&gt;
&lt;p&gt;One of the most popular ones answers the question &lt;a href="https://www.quora.com/What-is-the-hardest-thing-you-do-as-a-software-engineer/answer/Fabio-Akita"target="_blank" rel="noopener"&gt;&amp;ldquo;What is the hardest thing you do as a software engineer?&amp;rdquo;&lt;/a&gt;. I wrote something similar in Brazilian Portuguese in the post &lt;a href="http://www.akitaonrails.com/en/2013/08/23/off-topic-estimativas-sao-promessas-promessas-devem-ser-cumpridas"target="_blank" rel="noopener"&gt;&amp;ldquo;Estimativas são Promessas. Promessas devem ser cumpridas.&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In a nutshell, you can never give an estimate that is &amp;ldquo;correct&amp;rdquo;. If you could, it would not be an &amp;ldquo;estimate&amp;rdquo;, it would be a &amp;ldquo;prediction&amp;rdquo;.&lt;/p&gt;</description><content:encoded><![CDATA[<p>If you didn&rsquo;t know, I frequently answer questions over on Quora. <a href="https://www.quora.com/profile/Fabio-Akita"target="_blank" rel="noopener">Follow me there</a>; I&rsquo;ve written almost 600 answers so far, many of them close to my longest posts here on the blog.</p>
<p>One of the most popular ones answers the question <a href="https://www.quora.com/What-is-the-hardest-thing-you-do-as-a-software-engineer/answer/Fabio-Akita"target="_blank" rel="noopener">&ldquo;What is the hardest thing you do as a software engineer?&rdquo;</a>. I wrote something similar in Brazilian Portuguese in the post <a href="http://www.akitaonrails.com/en/2013/08/23/off-topic-estimativas-sao-promessas-promessas-devem-ser-cumpridas"target="_blank" rel="noopener">&ldquo;Estimativas são Promessas. Promessas devem ser cumpridas.&rdquo;</a>.</p>
<blockquote>
  <p>In a nutshell, you can never give an estimate that is &ldquo;correct&rdquo;. If you could, it would not be an &ldquo;estimate&rdquo;, it would be a &ldquo;prediction&rdquo;.</p>

</blockquote>
<p>Let us assume we have neither precognition powers nor magic crystal balls to tell us the future.</p>
<p>To estimate something is to &ldquo;guess&rdquo; the value of something. It&rsquo;s always a guess, the same thing as a valuation. And like any guess, it can never be deemed &ldquo;correct&rdquo;: it&rsquo;s just a likely candidate among an infinite range of possible values.</p>
<blockquote>
  <p>There is zero connection between a guess and the outcome. Understand this simple truth: saying something can happen does not MAKE it happen.</p>

</blockquote>
<p>Estimating tomorrow&rsquo;s weather as rainy does not MAKE it rain. Estimating the result of the Super Bowl does not MAKE it happen. There is zero correlation between an estimate and the actual outcome.</p>
<p>I stated in those articles that <strong>&ldquo;Estimates are Promises&rdquo;</strong>. The intention was to provoke a reaction, since most people assume that estimates can never be promises, exactly because of what I just explained.</p>
<p>What makes a promise special is that once you promise something, you&rsquo;re expected to <strong>ACT</strong> on delivering it.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/643/Skin-in-the-Game.png" alt="Skin in the Game"  loading="lazy" /></p>
<blockquote>
  <p>No one that has no &ldquo;skin in the game&rdquo; should give estimates.</p>

</blockquote>
<p>If you&rsquo;re not an active player in the game, you shouldn&rsquo;t be handing out guesses. The same way no one makes promises on someone else&rsquo;s behalf.</p>
<p>Can you actually make credible promises and keep them? You can, but first you have to understand a few more truths about reality.</p>
<p>You&rsquo;ve probably already seen plenty of articles explaining project management methodologies and techniques. Most of them manage to explain the Whats and the Hows, but as usual, they fail on the Whys.</p>
<p>Why do we need those methodologies? Why are they necessary? Why do they work? What hidden mechanisms do they set in motion?</p>
<p>What makes Agile techniques any different from your usual homeopathy or a budget self-help cliché?</p>
<h3>It&rsquo;s always all about Pareto<span class="hx:absolute hx:-mt-20" id="its-always-all-about-pareto"></span>
    <a href="#its-always-all-about-pareto" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>There is no such thing as a <strong>precise</strong> project scope. There is a limit to adding detail, and past it you just get <a href="http://www.investopedia.com/terms/l/lawofdiminishingmarginalreturn.asp"target="_blank" rel="noopener"><strong>diminishing returns</strong></a>.</p>
<p>The most precise level of detail a feature scope can have is the actual code of the feature. And this matters: the lines of code are <strong>NOT</strong> the outcome. What end users actually experience is the execution of that code at runtime.</p>
<p>The programming itself is the <strong>actual blueprint</strong>. The diagrams, the use cases, the user stories, and anything else that comes before the programming are just a draft, a mere sketch.</p>
<p>A naive architect or designer might think that detailed diagrams, use case documents, and fancy PowerPoint slides are worth as much as an engineering blueprint. They&rsquo;re worth less: they&rsquo;re the equivalent of a <strong>sketch on a napkin</strong>. Volatile and, in practice, mostly worthless.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/644/Screenshot_from_2017-06-26_16-19-14.png" alt="Napkin Sketch"  loading="lazy" /></p>
<p><em>&ldquo;But isn&rsquo;t the programming the same as the construction phase itself, laying bricks on top of bricks?&rdquo;</em> <strong>NO</strong>, that&rsquo;s not what a programmer does. The bricklaying is the job of the language interpreter or the compiler that spits out the executable binary.</p>
<p>This is the metaphor that drives non-programmers crazy. In engineering, the construction itself is the most expensive and time-consuming part. In programming, the expensive part is the blueprint (writing the code), and the &ldquo;construction&rdquo; is trivial: just compiling, which is automatic.</p>
<p>In the same way, a project scope is just a set of sketches. We have to drop the notion that a <strong>&ldquo;complete&rdquo;</strong> scope will ever exist. There&rsquo;s no way to say &ldquo;100% of the scope&rdquo; or &ldquo;closed scope&rdquo;, because a software project scope is, by definition, always incomplete.</p>
<p>On top of that, I&rsquo;ll argue that roughly 80% of this so-called &ldquo;scope&rdquo;, what I prefer to call a sketch, is mostly worthless to most end-user activities: the admin section, the institutional pages nobody reads, convoluted sign-up flows, and so on.</p>
<p>This is why every feature list <strong>MUST</strong> be prioritized. You can usually get by with 20% of the features, which is roughly what people mean when they say &ldquo;MVP&rdquo; or &ldquo;minimum viable product&rdquo;. <strong>Release as early as you can</strong>, get user feedback, and refine the rest of the &ldquo;sketch&rdquo; you call a backlog.</p>
<p>So instead of aiming for an all-or-nothing proposition, hunting for stupidly complex equations to figure out a &ldquo;precise&rdquo; estimate of an incomplete sketch, assume you can actually deliver EARLY the first 20% that really matters and figure out the rest in iterations.</p>
<p>Oh yeah, this is what we call &ldquo;Agile&rdquo;, by the way.</p>
<h3>Agile is about Risk Management<span class="hx:absolute hx:-mt-20" id="agile-is-about-risk-management"></span>
    <a href="#agile-is-about-risk-management" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>People assume Agility is about managing the project management instruments themselves: the backlog, the rituals, the metrics.</p>
<p>Having Agile-like instruments doesn&rsquo;t make you Agile.</p>
<p>Being Agile is keeping <strong>Risk</strong> under control.</p>
<p>Instead of treating projects as an all-or-nothing endeavor, start thinking about them the way an investor thinks about a <strong>portfolio of stocks</strong>. You don&rsquo;t expect the whole portfolio to turn a profit; you assume some stocks will underperform. You just don&rsquo;t know which ones, so you dilute your risk.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/645/635824249336942840-ThinkstockPhotos-152955327.jpg" alt="Portfolio stocks"  loading="lazy" /></p>
<p>Trying to predict the stock market is an exercise in futility.</p>
<p>Trying to predict the precise implementation of a project, especially the long ones, is also an exercise in futility.</p>
<p>So you have to deal with uncertainty the right way: by becoming <a href="https://www.amazon.com/Antifragile-Things-That-Disorder-Incerto/dp/0812979680"target="_blank" rel="noopener"><strong>Antifragile</strong></a>.</p>
<blockquote>
  <p>&ldquo;Some things benefit from shocks; they thrive and grow when exposed to volatility, randomness, disorder, and stressors and love adventure, risk, and uncertainty. Yet, in spite of the ubiquity of the phenomenon, there is no word for the exact opposite of fragile. Let us call it antifragile. Antifragility is beyond resilience or robustness. The resilient resists shocks and stays the same; the antifragile gets better&rdquo; - Nassim Taleb</p>

</blockquote>
<p>Instead of the preposterous exercise in futility of trying to predict uncertainty and random events, you do the reasonable thing: you assume Black Swans exist and you can&rsquo;t predict them. So you prepare for uncertainty the only reasonable way there is, by not trying to predict them.</p>
<p>Expose the small mistakes early and correct them often. Implementing everything in a black box and doing a Big Bang deployment is the easiest path to <strong>failure</strong>. Delivering often, exposing the bugs, and fixing them constantly is accepting that mistakes will happen and gaining strength along the way.</p>
<p><a href="https://www.amazon.com/Antifragile-Things-That-Disorder-Incerto/dp/0812979680"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/646/Antifragile-3.jpg" alt="Antifragile"  loading="lazy" /></a></p>
<h3>A Better Metaphor<span class="hx:absolute hx:-mt-20" id="a-better-metaphor"></span>
    <a href="#a-better-metaphor" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/642/steel_mill_blast_furnace_coking_coal_iron_ore_600.jpg" alt="Iron Ore Furnace"  loading="lazy" /></p>
<p>Imagine that you, whether the non-programmer client or the programmer who has no clue how to explain the process to that client, have an iron ore furnace to manage.</p>
<p>The thing about those furnaces is that if you heat them too much, they can explode in your face. If you cool them down too much, the ore hardens.</p>
<p>Your job is to add coal to the furnace, and you decide the rate. Too fast and it gets exploding hot. Too slow and you might put out the fire and lose your furnace.</p>
<p>Now try to estimate a constant intake of coal to keep the furnace in good shape.</p>
<p>You can&rsquo;t.</p>
<p>The easiest way out is to install a <strong>thermometer</strong> that tracks the furnace&rsquo;s current temperature.</p>
<p>You stay safe within a certain margin of temperatures, speeding up or slowing down the coal intake by checking the thermometer all the time.</p>
<p>ALL THE FREAKING TIME.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/647/iron-4.jpg" alt="Iron Furnace"  loading="lazy" /></p>
<p>This is what Agile-based &ldquo;Velocity&rdquo; (or any of the fancier Monte Carlo simulations) actually is: a thermometer.</p>
<p>If the Velocity is too high, your team is probably working extra hours or delivering lower-quality code. This will backfire: either your team burns out too fast, or the code piles up <a href="http://www.akitaonrails.com/en/2017/06/22/the-economics-of-software-development"target="_blank" rel="noopener">technical debt</a> too fast and you won&rsquo;t be able to pay it back. Keep that pace and Velocity drops to a halt (the furnace explodes).</p>
<p>If the Velocity is too low, your team is slacking off, your backlog is a useless piece of shit no one can understand even after 10-hour meetings, or you already let Velocity run too high and now you&rsquo;re paying back technical debt, or your team is dead from burnout (fire extinguished).</p>
<p>You want to keep Velocity <strong>steady</strong>, constant. This is what being Agile is all about: keeping an eye on the thermometer and responding.</p>
<h3>The Triforce of Projects<span class="hx:absolute hx:-mt-20" id="the-triforce-of-projects"></span>
    <a href="#the-triforce-of-projects" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/650/ironTriangle.jpg" alt="Iron Triangle"  loading="lazy" /></p>
<p>Welcome to the Iron Triangle of Project Management.</p>
<blockquote>
  <p>Repeat after me: if I want to lock down the time, the cost, and the scope, <strong>I am a moron</strong>.</p>

</blockquote>
<p>Repeat again.</p>
<p>You should lock down time and cost. If you&rsquo;ve read this far, you know you can never lock down &ldquo;scope&rdquo;; you can only make it fat, and not necessarily more valuable. This is why I always say the very definition of a Product Manager or Product Owner is to be the bastion of ROI (Return on Investment).</p>
<p>Now, why?</p>
<p>Because the Iron Triangle has the following corollary:</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/651/320px-Project-triangle.svg.png" alt="Project Triangle"  loading="lazy" /></p>
<ul>
<li>If you want it fast and good, it can&rsquo;t be cheap</li>
<li>If you want it fast and cheap, it can&rsquo;t be good</li>
<li>If you want it good and cheap, it can&rsquo;t be fast</li>
</ul>
<p>This is a Law, you can&rsquo;t fiddle with it. Pick your choice.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/652/keep-calm-and-make-your-choice-9.png" alt="Make your choice"  loading="lazy" /></p>
<h3>How do I keep Promises then?<span class="hx:absolute hx:-mt-20" id="how-do-i-keep-promises-then"></span>
    <a href="#how-do-i-keep-promises-then" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Now, with those 3 truths in hand:</p>
<ul>
<li>You can&rsquo;t have your lunch and eat it too (cheap, fast, and good)</li>
<li>You&rsquo;re managing the temperature of the furnace</li>
<li>You only need 20% of the &ldquo;sketch&rdquo; you call &ldquo;scope&rdquo;</li>
</ul>
<p>Yes, any experienced developer can give you a &ldquo;ballpark&rdquo; estimate. A ballpark goes like this:</p>
<ul>
<li>1 month (maybe 1 month and a half, but definitely less than 2)</li>
<li>3 months (it&rsquo;s more than 2 months, less than 6 months)</li>
<li>6 months (it&rsquo;s more than 4 months, less than 9 months)</li>
<li>it&rsquo;s more than 6 months, probably less than 1 year</li>
</ul>
<p>Don&rsquo;t even try to granulate more than that. It&rsquo;s useless.</p>
<p><strong>Lock the time.</strong> And <strong>lock the cost</strong> (that being the number of developers times the hourly rate times the total amount of estimated hours). That&rsquo;s it.</p>
<p>Now jot down what the client calls &ldquo;scope&rdquo; as user stories in a backlog and have him prioritize it.</p>
<p>Start the iterations. After each one, release to a staging environment. Non-programmers, beware: ALWAYS make sure whichever programmer you hire delivers testable versions of the finished stories to a publicly available URL you can actually visit and test.</p>
<p>If your programmer refuses to do that or gives excuses: <strong>FIRE HIM</strong>.</p>
<p>If your programmer or company or whatever promises you a &ldquo;closed scope&rdquo; price, promises to do everything, and you believe them, you&rsquo;re too gullible.</p>
<p>Do you think it&rsquo;s funny to play this stupid game of <em>&ldquo;I&rsquo;ll pretend to tell you that I know the truth and you will pretend that you believe what I tell you.&rdquo;</em></p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/648/e433998315b73da036e65884b67eba43.jpg" alt="Actions and Words"  loading="lazy" /></p>
<p>No serious professional has time for stupid games, and the only honest thing anyone can say about any software project is: <em>&ldquo;given my experience I believe the ballpark for this kind of project is within X months, given the Y and Z assumptions&rdquo;.</em></p>
<p>You don&rsquo;t have to believe him. You just need to start checking the thermometer. Any non-programmer can assess the quality of the delivery based on the frequent deliveries of the prioritized features.</p>
<p><em>&ldquo;But what if after 2 weeks I don&rsquo;t like the results?&rdquo;</em> Easy: <strong>FIRE HIM</strong>.</p>
<p>And sometimes &ldquo;firing&rdquo; isn&rsquo;t even the right word. Sometimes the relationship is difficult and the best thing to do is to part ways.</p>
<p>You have to accept losing 2 weeks, or any short period of time, as part of Risk Management. It&rsquo;s better to accept losing 2 weeks of your project budget than to blindly trust someone for 6 months and lose the entire project budget and then some.</p>
<p>Pareto again: Agility is about Risk Management. You accept that losing 20% of your budget is okay, and you play with that. And that&rsquo;s fine, because you only really need a bit more than 20% of the sketchy scope you have.</p>
<p>See what I just did with the Math here?</p>
<p>We stop playing the pretend game and actually manage the project&rsquo;s risks. You collaborate on the equivalent thermometer, which combines the prioritized backlog (the scale) and the velocity (the temperature), and you keep an eye on the partial deliveries in the staging environment.</p>
<h3>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>So yes, Estimates should be taken as seriously as Promises. You can give reasonable Estimates as long as you can manage the Risks and the Client accepts the rules of the game: there is no &ldquo;closed, complete scope&rdquo;, priorities first, and testing and accepting delivered features every week.</p>
<p>The idea behind Promises is that you have to <strong>MANAGE</strong> in order to meet them. The best way to do that is to frequently stop, re-assess, and keep going. It feels like you&rsquo;re wasting time, but you&rsquo;re actually saving yourself from wasting it.</p>
<p>If you don&rsquo;t have skin in the game, back off.</p>
<p>Velocity is meant to be kept steady, at a predictable rate. Use the variance as a sign of being too fast or too slow, adjust the other variable, measure again, and go. Just like a furnace thermometer.</p>
<p>There are several versions of &ldquo;thermometers&rdquo;, from Joel Spolsky&rsquo;s <a href="https://www.joelonsoftware.com/2007/10/26/evidence-based-scheduling/"target="_blank" rel="noopener">Evidence Based Scheduling</a> all the way to fancy Monte Carlo simulations and other stochastic processes (they are all thermometers, and NOT estimation tools).</p>
<p>What stops you from doing that is using the wrong metaphors and the wrong references.</p>
<p>Instead of hunting for equivalent metaphors in construction, factories, and other &ldquo;hard&rdquo;-ware assemblies, look elsewhere, where you&rsquo;ll find other &ldquo;soft&rdquo;-ware processes.</p>
<p>Musicians have deadlines. Painters have deadlines. Choreographers have deadlines. Sports have deadlines. Research laboratories have deadlines. How do they meet them? By constantly checking the current state, comparing it to the goals, assessing whether what they&rsquo;re doing is actually working, and changing what doesn&rsquo;t.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/649/conducting_starwars.jpg" alt="Conducting Star Wars"  loading="lazy" /></p>
<p>Hollywood has deadlines. They have far worse variables to control than any software project you&rsquo;ll ever run into, and they still manage to deliver. And profit.</p>
<p>And accept that you can&rsquo;t control every variable, so stop trying. Think of it as the financial markets. One day you have <a href="https://web.archive.org/web/20170705022520/https://motherboard.vice.com/en_us/article/zme78x/why-the-value-of-ethereum-has-skyrocketed-4000-percent"target="_blank" rel="noopener">Ethereum skyrocketing 4,000%</a> and the very next day you have it <a href="http://www.cnbc.com/2017/06/22/buyers-beware-lessons-from-the-ethereum-flash-crash.html"target="_blank" rel="noopener">falling down to ashes in a flash-crash</a>.</p>
<p>Don&rsquo;t aim to become resistant or resilient. Prepare to become Antifragile.</p>
]]></content:encoded><category>agile</category><category>management</category><category>software-engineering</category><category>off-topic</category></item><item><title>The Economics of Software Development</title><link>https://akitaonrails.github.io/en/2017/06/22/the-economics-of-software-development/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/06/22/the-economics-of-software-development/</guid><pubDate>Thu, 22 Jun 2017 10:56:00 -0300</pubDate><description>&lt;p&gt;The software development community is boiling nowadays with so many options all at once. You have dozens of active and very good languages such as Go, &lt;a href="https://akitaonrails.github.io/elixir"&gt;Elixir&lt;/a&gt;, Clojure. Dozens of very good frameworks, both in the back-end and front-end including React, Elm. Dozens of sound methodologies from good old Agile stuff all the way to Continuous Deployment with microservices.&lt;/p&gt;
&lt;p&gt;Now, you&amp;rsquo;re a small tech startup or even a small team in a big corporation. How to even start?&lt;/p&gt;</description><content:encoded><![CDATA[<p>The software development community is boiling nowadays with so many options all at once. You have dozens of active and very good languages such as Go, <a href="/elixir">Elixir</a>, Clojure. Dozens of very good frameworks, both in the back-end and front-end including React, Elm. Dozens of sound methodologies from good old Agile stuff all the way to Continuous Deployment with microservices.</p>
<p>Now, you&rsquo;re a small tech startup or even a small team in a big corporation. How to even start?</p>
<p>And the recommendation is: do the smallest thing that works first. Always. Of course, avoid &ldquo;quick and dirty&rdquo; as much as you can. But don&rsquo;t get paranoid and over-engineer too much.</p>
<p>Over-engineering is as expensive as doing things &ldquo;dirty&rdquo;.</p>
<h3>Add &ldquo;Time&rdquo; to your equation<span class="hx:absolute hx:-mt-20" id="add-time-to-your-equation"></span>
    <a href="#add-time-to-your-equation" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>What most people do very wrong is disregarding the variable of &ldquo;Time&rdquo;.</p>
<p>Everybody goes to tech conferences or read fancy blog posts, or watch flashy screencasts. Their wrong conclusion is: <em>&ldquo;Netflix uses it, therefore it should be good for me, because I want to become Netflix&rdquo;</em>.</p>
<p>The wrong assumption is that Netflix, or Google, or Facebook, or Spotify, is a static system that always functioned the way they advertise it today.</p>
<p>People forget that every unicorn company had a <strong>day-1</strong>. And on day-1 they did not use microservices. They did not have React.js. They did not have Go or Elixir. Some of them didn&rsquo;t even have good programmers to begin with. Netflix started as a VHS renting service, remember that? Google started off in a dorm-room with off-the-shelf hardware components assembled in a <a href="http://www.complex.com/pop-culture/2013/02/50-things-you-didnt-know-about-google/lego-server-rack"target="_blank" rel="noopener">Lego-based rack</a>.</p>
<p>You are a fan of some celebrity. That celebrity has a Lamborghini car. So you want to be like that celebrity one day. What do you do? Do you buy the same Lamborghini he has?</p>
<p>If you are that stupid, the only thing you will end up with is a HUGE debt to pay.</p>
<p>Stop envying the rich guy&rsquo;s Lamborghini.</p>
<h3>(Technical) Debt<span class="hx:absolute hx:-mt-20" id="technical-debt"></span>
    <a href="#technical-debt" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>This is neither a new term nor a new theme. Every decision you make in programming is a <strong>compromise</strong> between what the &ldquo;future-ideal&rdquo; should be and what you can actually do right now. Loan to buy the equivalent Lamborghini too soon, and you will have to deal with an unpayable (Technical) Debt. You will stall, you will stop, and you will do nothing but pay that debt from now on.</p>
<p>You want to &ldquo;code faster&rdquo; therefore you skip writing automated tests, because you assume it will slow you down. And you&rsquo;re right. Test-driven development doesn&rsquo;t make you fast at first, and it isn&rsquo;t supposed to. It protects your future self from your present self, and keeps you from piling up Technical Debt.</p>
<p>Again, you forget the &ldquo;Time&rdquo; variable.</p>
<p>You write and deliver fast for the 1st month. After the first version is deployed, now you will be obliged to start paying the debt. Your productivity will slow down. Regression bugs will show up. Every new feature you try to add breaks something in unexpected ways. Because you don&rsquo;t have automated tests, you will keep fixing the same things many times over. Debt will catch up, and you will pay. One way or the other.</p>
<p>Minimal test suites are like <strong>Insurance</strong>. You don&rsquo;t need it right now, on day-1. But on day-100 you will be so glad you have it.</p>
<p>Doing too much microservices on day-1 is debt. It feels great that you&rsquo;re doing that fancy thing you read in a blog post. On day-100, with your 3 people team and a dozen microservices, from now on you will do nothing but pay the accumulated debt, with <strong>Interest</strong>. Every new microservices deployment breaks your system. And of course you didn&rsquo;t add monitoring, you didn&rsquo;t add integrated tests. So every time you code something, something else unexpectedly breaks.</p>
<p>Enjoying that early Lamborghini now?</p>
<h3>The Mythical Man-Month<span class="hx:absolute hx:-mt-20" id="the-mythical-man-month"></span>
    <a href="#the-mythical-man-month" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Philip Calçado writes very good posts and presentations about microservices in the right way. If you&rsquo;re serious about that subject I strongly recommend that you read his posts, such as his <a href="http://philcalcado.com/2017/06/11/calcados_microservices_prerequisites.html"target="_blank" rel="noopener">&ldquo;Prerequisites&rdquo;</a> post or his <a href="https://www.infoq.com/news/2017/05/economics-microservices"target="_blank" rel="noopener">&ldquo;Economics&rdquo;</a> presentation.</p>
<p>He correctly remembers Fred Brooks&rsquo; <strong>The Mythical Man-Month</strong>. I urge developers to read this small book. It&rsquo;s uncanny how the entire industry is still repeating the very same mistakes Brooks reports in his book from projects in the 60&rsquo;s!</p>
<p>To me, microservices is a by-product of tech companies with too many developers. Once you break through the 5-developers team a &ldquo;monolithic&rdquo; system with poor organization and few automated tests can become cumbersome to deal with. So the consequence is the desire to break it down. You make 2 teams and 2 microservices and coordinate. And the teams start to isolate, and play the finger-pointing game when new bugs are reported (<em>&ldquo;it&rsquo;s the other team&rsquo;s microservice&rsquo;s fault&rdquo;</em>).</p>
<p>That&rsquo;s <a href="http://www.melconway.com/Home/Conways_Law.html"target="_blank" rel="noopener">Conway&rsquo;s Law</a> if you do it wrong:</p>
<blockquote>
  <p>Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization&rsquo;s communication structure.</p>

</blockquote>
<p>Also in play is another chapter in Brooks&rsquo; book: The <a href="http://wiki.c2.com/?SecondSystemEffect"target="_blank" rel="noopener">Second System Effect</a>. Every developer, tech startup, has to assume that the first version of anything is not the best design. And the second system (the first big rewrite) is <strong>the most dangerous</strong> system you will write. As Brooks states, it goes like this:</p>
<blockquote>
  <p>An architect&rsquo;s first work is apt to be spare and clean. He knows he doesn&rsquo;t know what he&rsquo;s doing, so he does it carefully and with great restraint.</p>

</blockquote>
<blockquote>
  <p>As he designs the first work, frill after frill and embellishment after embellishment occur to him. These get stored away to be used &ldquo;next time.&rdquo; Sooner or later the first system is finished, and the architect, with firm confidence and a demonstrated mastery of that class of systems, is ready to build a second system.</p>

</blockquote>
<blockquote>
  <p>This second is the most dangerous system a man ever designs. When he does his third and later ones, his prior experiences will confirm each other as to the general characteristics of such systems, and their differences will identify those parts of his experience that are particular and not generalizable.</p>

</blockquote>
<blockquote>
  <p>The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one. The result, as Ovid says, is a &ldquo;big pile.&rdquo;</p>

</blockquote>
<p>Then, what happens? The CEO, the board, the investors, or whatever, start doing the wrong thing: hiring more and more people. Loan more and more. Instead of paying the debts they end up making more debt. They fell for what Brooks reported in the first chapter and what gives the name to the book: The Mythical Man-Month.</p>
<blockquote>
  <p>Adding manpower to a late software project makes it later.</p>

</blockquote>
<blockquote>
  <p>Complex programming projects cannot be perfectly partitioned into discrete tasks that can be worked on without communication between the workers and without establishing a set of complex interrelationships between tasks and the workers performing them.</p>

</blockquote>
<blockquote>
  <p>Therefore, assigning more programmers to a project running behind schedule will make it even later. This is because the time required for the new programmers to learn about the project and the increased communication overhead will consume an ever increasing quantity of the calendar time available.</p>

</blockquote>
<p>Again, it&rsquo;s foregoing the sense of the &ldquo;Time&rdquo; variable. And confusing &ldquo;debt&rdquo; for &ldquo;investment&rdquo;.</p>
<p>First of all, do yourself a favor and <a href="http://amzn.to/2sFbkWq"target="_blank" rel="noopener">read the goddamn book</a>, twice.</p>
<h3>Do Agile right! And no, it&rsquo;s not Kanban!<span class="hx:absolute hx:-mt-20" id="do-agile-right-and-no-its-not-kanban"></span>
    <a href="#do-agile-right-and-no-its-not-kanban" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>If there is one good thing the whole Lean noise generated is the notion of &ldquo;Minimum Viable Product&rdquo; or MVP. People call it &ldquo;prototype&rdquo;. Some call it &ldquo;launching Beta&rdquo; or simply &ldquo;version 1.0&rdquo;. Doesn&rsquo;t matter. It&rsquo;s the realization that you don&rsquo;t know much at the beginning so overengineering on the first version is a waste of time. Lean is about controlling &ldquo;waste&rdquo;, so we do the minimal that works, gauge results and work from there.</p>
<p>The cynical will say that any prototype that reaches production will never die. And they&rsquo;re not wrong.</p>
<p>The balance is to not do the &ldquo;quick and dirty&rdquo; version. That&rsquo;s what we have Agile techniques for. Do the minimal, organize the minimal. That&rsquo;s why we have object-oriented design patterns, from GoF to DDD. You don&rsquo;t need to do EVERY pattern, and that&rsquo;s exactly what &ldquo;overengineering&rdquo; means. But you can do the minimal monolith that will allow you to evolve later.</p>
<p>People criticize Ruby on Rails for not being organized &ldquo;enough&rdquo;. <a href="https://apotonick.wordpress.com/2015/09/05/the-only-alternative-to-a-rails-monolith-are-micro-services-bullshit/"target="_blank" rel="noopener">Nick Sutterer</a>, the creator of <a href="https://github.com/trailblazer/trailblazer"target="_blank" rel="noopener">Trailblazer</a>, has a good point.</p>
<p>Rails done wrong is bad. The conclusion should NOT be: <em>&ldquo;let&rsquo;s do microservices&rdquo;</em> though. That jump in faith is idiotic and makes no sense for all the reasons I mentioned above.</p>
<p><em>&ldquo;Let&rsquo;s do proper Agile stuff and proper object-oriented stuff&rdquo;</em> should be the initial answer.</p>
<p>And by &ldquo;Agile&rdquo; forget about idiotic post-its, idiotic numerology-based estimation equations (this is a whole post in itself, because story points and velocity are useful, but adding Montecarlo and other Gaussian-based stuff are not). The only &ldquo;Agile&rdquo; things you should be concerned about are the <a href="http://www.extremeprogramming.org/"target="_blank" rel="noopener">Extreme Programming (XP) techniques</a>, <strong>including</strong> Iteration-based timeboxes.</p>
<p>You <strong>MUST</strong> do timeboxes. Stop, re-assess, change directions, and then keep going. The model of &ldquo;Pull&rdquo; is only reasonable when your direction is very, very clear, written in stone and unchangeable, like in a factory production line! (Which is exactly where the concept of Pull, and Lean, was actually born!)</p>
<p>Iterations, like automated tests, are like Insurance. You can never avoid all waste, but you can minimize it. You can afford to throw away an Iteration-worth of work. After the iteration you measure the results, and throw it away if necessary, changing direction in the process. Throwing useless stuff away is as important as adding new stuff. If you just add, you have a <a href="https://en.wikipedia.org/wiki/Compulsive_hoarding"target="_blank" rel="noopener">hoarding disorder</a>!</p>
<p>If in doubt, do XP. Yes, it feels more &ldquo;difficult&rdquo;, and Kanban is &ldquo;simpler&rdquo; to explain. Now, is that a good reason?</p>
<h3>Forget about Raw Performance when you DON&rsquo;T need it!<span class="hx:absolute hx:-mt-20" id="forget-about-raw-performance-when-you-dont-need-it"></span>
    <a href="#forget-about-raw-performance-when-you-dont-need-it" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Another problem is choosing languages or framework because of performance.</p>
<p>If you&rsquo;re in the web development business, this is a huge WASTE.</p>
<p>Understand this truth: your servers will IDLE most of the time. And if you feel like using your web app is slow, the slowness comes from the POOR programming you did, not from the language. And no good language will rescue a bad programmer. I always say that if performance was that important, we should all be doing C.</p>
<p>Most of what you serve in HTTP-based apps, be it user-readable content, be it API GET results, can be <strong>CACHED</strong>! If you&rsquo;re not using a <a href="http://www.akitaonrails.com/2015/08/25/small-bites-adicionando-um-cdn-ao-seu-site-a-forma-facil"target="_blank" rel="noopener">CDN</a>, you&rsquo;re doing it wrong.</p>
<p>Yeah, yeah, yeah, you think you&rsquo;re building the next Spotify. You&rsquo;re not, at least not 99% of you. And the 1% doing custom engineering, with custom techniques and custom stack, successfully: you&rsquo;re the 1%. Actually I&rsquo;d say you&rsquo;re a fraction of the 1%. Do not assume that what you do is good for the rest of the population.</p>
<p>90% of what most small companies and solo web developers need is just a Shopify account and a vanilla Wordpress installation. And that&rsquo;s it.</p>
<blockquote>
  <p>Are you doing infrastructure development like building custom components to Docker, Kubernetes, Terraform? Command-line tools? Daemons? Then choose GO.</p>

</blockquote>
<blockquote>
  <p>Are you doing embedded libraries? Maybe the next generation OpenSSL? Drivers? Then choose RUST.</p>

</blockquote>
<blockquote>
  <p>Are you doing mobile development? Then don&rsquo;t have a lot of choice: do Swift for iOS, do Kotlin/Java for Android. Or do React Native for simpler apps.</p>

</blockquote>
<blockquote>
  <p>Are you really doing the next Whatsapp? The next Waze? The next Snap? You have hundreds or thousands of users in need of long-lived connections over unreliable network doing broadcasts of messages? Or you&rsquo;re building the next evolution of distributed NoSQL databases? Or anything that actually has the proper meaning of &ldquo;Distributed&rdquo; in its definition? Then choose ELIXIR.</p>

</blockquote>
<blockquote>
  <p>Are you doing a CRUD based web application? Go RAILS and never look back.</p>

</blockquote>
<blockquote>
  <p>Are you doing all of the above? Use all the alternatives then. And I hope you have the budget, because you need a big team.</p>

</blockquote>
<h3>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The Economics only makes sense when you consider the day-1. Do not forget the &ldquo;Time&rdquo; variable. It makes all the difference.</p>
<p>You will always get Debt to pay. So be smart in which kind of debt you choose. Because you will have to pay it back eventually.</p>
<p>Again, read Brooks. He said it decades ago: <a href="http://worrydream.com/refs/Brooks-NoSilverBullet.pdf"target="_blank" rel="noopener">THERE IS NO SILVER BULLET</a>. Don&rsquo;t bullshit yourself. A new language, a new framework, a new architecture. None of those will save you.</p>
<p>In any tech endeavor, code is not the only thing to worry about. I would go as far as to say that in a tech startup, code is only 20% of the problem. A tech startup is just a company, like any other. If you&rsquo;re the founder or CEO, you have to deal with all the remaining 80%: marketing, accounting, human resources, legal, etc. It&rsquo;s already difficult enough without your tech team getting you unwanted Technical Debt, the unneeded Lamborghini, that you won&rsquo;t be able to pay.</p>
<p>You can start humble on day-1. Keep evolving, continuously. This is the core of any Agile or Lean process: <a href="https://www.graphicproducts.com/articles/what-is-kaizen/"target="_blank" rel="noopener">KAIZEN</a>. Choose smart debts, pay them a small bit at a time, continuously. It&rsquo;s the same reasoning as getting a loan in the bank.</p>
<blockquote>
  <p>Netflix day-7,200 is NOT your day-1.</p>

</blockquote>
<blockquote>
  <p>Facebook day-4,800 is NOT your day-1.</p>

</blockquote>
<blockquote>
  <p>Google day-6,809 is NOT your day-1.</p>

</blockquote>
<blockquote>
  <p>Be humble. Deliver fast. Pay your Debts. Keep evolving continuously. Stop believing in fairy tales and silver bullets.</p>

</blockquote>
]]></content:encoded><category>software-engineering</category><category>agile</category><category>software-architecture</category><category>off-topic</category></item><item><title>Starting with Blender</title><link>https://akitaonrails.github.io/en/2017/06/21/starting-with-blender/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/06/21/starting-with-blender/</guid><pubDate>Wed, 21 Jun 2017 17:32:00 -0300</pubDate><description>&lt;p&gt;Blender is a beast. A true marvel of what open source technology can achieve, and you should applaud everyone involved in making this thing work as well as it does. It rivals the most expensive commercial options out there, from Maya to the venerable Pixar&amp;rsquo;s Renderman.&lt;/p&gt;
&lt;p&gt;The Blender community is so passionate and committed that they frequently produce high quality, almost Hollywood grade &lt;a href="https://web.archive.org/web/20151127160645/http://archive.blender.org/features-gallery/movies/"target="_blank" rel="noopener"&gt;short movies&lt;/a&gt; inside Blender. The point is to stress test the tool and flush out bottlenecks and usability issues in a real world workflow.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Blender is a beast. A true marvel of what open source technology can achieve, and you should applaud everyone involved in making this thing work as well as it does. It rivals the most expensive commercial options out there, from Maya to the venerable Pixar&rsquo;s Renderman.</p>
<p>The Blender community is so passionate and committed that they frequently produce high quality, almost Hollywood grade <a href="https://web.archive.org/web/20151127160645/http://archive.blender.org/features-gallery/movies/"target="_blank" rel="noopener">short movies</a> inside Blender. The point is to stress test the tool and flush out bottlenecks and usability issues in a real world workflow.</p>
<p>This is primarily a post for &ldquo;future me&rdquo; to jump back into a single resource list. Being a 3D modeler is not my full time job, so I&rsquo;ll have large gaps between Blender sessions. And I know I&rsquo;ll regret it if I don&rsquo;t dump my brain into a post while it&rsquo;s still fresh :-)</p>
<h3>Beginner First Steps<span class="hx:absolute hx:-mt-20" id="beginner-first-steps"></span>
    <a href="#beginner-first-steps" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>First things first. If you&rsquo;re in this blog, you&rsquo;re probably a programmer. And let me tell you that the Graphics folks see &ldquo;usability&rdquo; very differently from what we, programmers, usually think of. The sheer amount of customization, options, shortcuts and combinations will rival even Vim and Emacs users out there.</p>
<p>Oh, by the way, you&rsquo;re going to need a real 3-button mouse. Touchpads are useless with Blender, and the Mac mouse is terrible. <a href="http://www.dell.com/br/mouse"target="_blank" rel="noopener">Any cheap PC mouse will do.</a></p>
<p>Out of the box, the main button is the right one, not the left one we&rsquo;re used to. Change that in the <a href="https://web.archive.org/web/20181118204135/https://docs.blender.org/manual/en/dev/preferences/input.html"target="_blank" rel="noopener">user preferences</a> to select with Left, and things start to make sense. While you&rsquo;re there, enable Numpad emulation too.</p>
<p>By the way, it&rsquo;s well worth having a keyboard with a numpad, or even a separate numpad. You can use the number row on top of your normal keyboard, but Blender was built assuming both an inverted 3-button mouse and a numpad.</p>
<p><a href="https://web.archive.org/web/20181118204135/https://docs.blender.org/manual/en/dev/preferences/input.html"target="_blank" rel="noopener"><img src="https://web.archive.org/web/20181119110123/https://docs.blender.org/manual/en/dev/_images/preferences_input_tab.png" alt="Input User Preferences"  loading="lazy" /></a></p>
<p>If you have never studied Blender before, you will not figure things out just by randomly exploring the UI. The UI is useless until someone teaches you the ins and outs. There are hundreds of terms you just have no idea what they mean, such as Meshes, Edges, Seams, Nodes, Viewport, Subsurface, Modifiers, etc.</p>
<p>The main thing you MUST do before proceeding is watching this entire 9 part series from Blender Guru, called <a href="https://www.youtube.com/watch?v=VT5oZndzj68&amp;list=PLjEaoINr3zgHs8uzT3yqe4iHGfkCmMJ0P"target="_blank" rel="noopener">Blender Beginner Tutorial Series</a>. Optionally you can slowly do the <a href="https://www.youtube.com/watch?v=Mwzz-Y6t-v8&amp;list=PLjEaoINr3zgEgoyYWE0Yit-cVoZ60WGtt"target="_blank" rel="noopener">Intermediate Blender Tutorials</a> later.</p>
<p>The Beginner Series will teach you enough that you&rsquo;ll finally start feeling confident with the UI and tools. And don&rsquo;t forget to print and hang this handy <a href="https://web.archive.org/web/20170708042817/https://www.blenderguru.com/articles/free-blender-keyboard-shortcut-pdf"target="_blank" rel="noopener">&ldquo;cheat sheet&rdquo;</a>. You won&rsquo;t believe how much easier your life becomes once you get used to the most important keyboard shortcuts.</p>
<h3>Better Defaults<span class="hx:absolute hx:-mt-20" id="better-defaults"></span>
    <a href="#better-defaults" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>For historical reasons, some things are not how they should be. Knowledge in the 3D rendering field is evolving very fast.</p>
<p>The very first thing to do: <a href="https://web.archive.org/web/20160308012834/http://wiki.blender.org/index.php/Doc:2.6/Tutorials/Rendering/Cycles"target="_blank" rel="noopener">change</a> the default render engine from Blender Render to the Cycles Raytracing Engine.</p>
<p>Then, color grading. The default sRGB EOTF is basically wrong. You must download Sobotka&rsquo;s <a href="https://sobotka.github.io/filmic-blender/"target="_blank" rel="noopener">filmic-blender</a> configuration. If you&rsquo;re on Arch Linux you can basically do:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><pre><code>pacaur -S filmic-blender-git</code></pre></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>I created a script at <code>~/bin/filmic-blender</code> with this:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><pre><code>env OCIO=/usr/share/blender/2.78/datafiles/filmic-blender/config.ocio blender</code></pre></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>And I always start Blender from the terminal like this:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><pre><code>optirun ~/bin/filmic-blender</code></pre></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>This does 2 things: first, it pre-configures OpenColorIO to use the Filmic replacement. Second, it enables the external GPU of my notebook to be available to Blender. Read my post on <a href="http://www.akitaonrails.com/en/2017/03/14/enabling-optimus-nvidia-gpu-on-the-dell-xps-15-with-linux-even-on-battery"target="_blank" rel="noopener">&ldquo;Enabling Optimus NVIDIA GPU on the Dell XPS 15 with Linux, even on Battery&rdquo;</a> for more details. On Windows or Mac this is not necessary, but you&rsquo;ll still need to load the filmic configuration.</p>
<p>Then, on the Scene tab you must reconfigure &ldquo;Color Management&rdquo; to be like this:</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/636/Screenshot_from_2017-06-21_16-31-05.png" alt="Color Management"  loading="lazy" /></p>
<p>Then you need to configure Cycles. If you&rsquo;re on Linux and Optimus is correctly installed as I explained before, you should have the CUDA option enabled in the User Preferences:</p>
<p><a href="https://web.archive.org/web/20181118204134/https://docs.blender.org/manual/en/dev/preferences/system.html"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/637/Screenshot_from_2017-06-21_16-43-29.png" alt="System preferences"  loading="lazy" /></a></p>
<p>In the Render tab, you should have something like this:</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/638/Screenshot_from_2017-06-21_16-45-32.png" alt="Render configuration"  loading="lazy" /></p>
<p>In the Dimensions section, you&rsquo;ll notice it has the Full HD (1920x1080 px) size but only 50% (so it will only render half the size). Increase it to 100%. If you want a 4K shot, increase the dimensions to 3840x2160 px. 4K makes it 4 times slower to render than 1080p, obviously.</p>
<p>In the Performance section you&rsquo;ll see 2 input fields for &ldquo;Tile size&rdquo;. Blender will slice your full image into tiles, and each tile renders in parallel on an available CPU or GPU core. My notebook has 8 CPU cores, so 64 is a good size, because it will render 8 tiles of 64 pixels each in parallel.</p>
<p>The fewer cores you have, the larger you should make the tile sizes. For my NVIDIA GPU, I only have 2 available cores (and not a lot of video memory either!), so it&rsquo;s worth bumping both fields to 512. On the GPU it only renders 2 tiles at once, and larger tiles optimize the render.</p>
<p>As you probably guessed, Blender Guru has a very useful <a href="https://www.youtube.com/watch?v=8gSyEpt4-60&amp;t=204s"target="_blank" rel="noopener">&ldquo;18 ways to speed up Cycles Rendering&rdquo;</a> tutorial.</p>
<p>These should cover the basic defaults.</p>
<h3>You must think as a Photographer!<span class="hx:absolute hx:-mt-20" id="you-must-think-as-a-photographer"></span>
    <a href="#you-must-think-as-a-photographer" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>You will want to watch A LOT of online tutorials, because it&rsquo;s really not obvious how to best use the tools. Another channel I really like is <a href="https://www.youtube.com/watch?v=lY6KPrc4uMw&amp;list=PLda3VoSoc_TR7X7wfblBGiRz-bvhKpGkS"target="_blank" rel="noopener">BornCG</a> and <a href="https://www.youtube.com/channel/UCCxay0KiyLlawfgoZ2mVnNQ"target="_blank" rel="noopener">CG Masters</a>. Pick a few of their videos to get a more in-depth view on specific tools, modeling techniques and so on.</p>
<p>And really, you must practice as much as possible while studying a lot along the way. One important area is Photography. This is what you see when you select the Camera tab:</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/639/Screenshot_from_2017-06-21_16-55-09.png" alt="Camera settings"  loading="lazy" /></p>
<p>There&rsquo;s a lot of customization you can do here. For example: Focal length: 35.00, which is what photographers know as a 35mm lens, a good default choice. You can also use a really wide angle such as 200mm or 300mm, and indoor shots, in small rooms, could use a 24mm or even 18mm lens. This article <a href="http://www.cambridgeincolour.com/tutorials/camera-lenses.htm"target="_blank" rel="noopener">&ldquo;Understanding Color Lenses&rdquo;</a> should give you the basics.</p>
<p>Then, you must understand &ldquo;Depth of Field&rdquo;. This can be done at this configuration before rendering, or you can simulate it after rendering (if you chose to separate the render in layers), in the <a href="https://web.archive.org/web/20160308021547/http://wiki.blender.org/index.php/Doc:2.6/Tutorials/Composite_Nodes/Setups/Depth_Of_Field"target="_blank" rel="noopener">Compositor</a>.</p>
<p>Speaking of which, another way to control Depth of Field is reconfiguring &ldquo;f-stop&rdquo;, which is the measurement of exposure, or aperture. The default is &ldquo;128.0&rdquo;, which is &ldquo;f/128&rdquo;. As a reference, your iPhone 7s camera has an f/2.2 aperture. Again, let&rsquo;s study more about this starting with the article <a href="https://www.bhphotovideo.com/explora/photography/tips-and-solutions/what%E2%80%99s-best-f-stop"target="_blank" rel="noopener">&ldquo;What&rsquo;s the Best F-Stop?&rdquo;</a></p>
<p>Taking a photo (or rendering a still, in our case) is a whole lot more than just point-and-click. You also have to worry about proper composition techniques such as the <a href="http://www.photographymad.com/pages/view/rule-of-thirds"target="_blank" rel="noopener">Rule of Thirds</a>, the <a href="http://www.makeuseof.com/tag/golden-ratio-photography/"target="_blank" rel="noopener">golden ratio</a>, and so on. You can change that in the &ldquo;Composition Guides&rdquo; combo box as shown above.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/641/3911f4657078a19b4f3677a304e7451d.jpg" alt="Golden Ratio Composition"  loading="lazy" /></p>
<p>You really should dive deep into the field of Photography to improve the final result of the renders. I&rsquo;m an amateur and it&rsquo;s really exciting to be able to apply real world techniques to 3D rendering.</p>
<h3>Material Design and Physically-Based Render (PBR)<span class="hx:absolute hx:-mt-20" id="material-design-and-physically-based-render-pbr"></span>
    <a href="#material-design-and-physically-based-render-pbr" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The golden standard in 3D modeling and rendering is certainly <a href="https://renderman.pixar.com/view/renderman"target="_blank" rel="noopener">Disney/Pixar RenderMan</a>. Every award winning Pixar movie was made with it.</p>
<p>But Blender learns fast. Every Pixar paper eventually becomes part of Blender itself. Material design, for example, has always been quite cumbersome in the tool. I did some of the tutorials myself, and creating materials with the proper real world characteristics, like proper Fresnel and the right dielectric versus metallic distinction, was a challenge.</p>
<p>If you subscribed to Blender Guru&rsquo;s channel you should really watch the tutorials <a href="https://www.youtube.com/watch?v=V3wghbZ-Vh4&amp;t=2668s"target="_blank" rel="noopener">&ldquo;How to Make Photorealistic PBR Materials - Part 1&rdquo;</a> and <a href="https://www.youtube.com/watch?v=m1PkSViBi-M"target="_blank" rel="noopener">&ldquo;Part 2&rdquo;</a>. And you will end up with this complicated Nodes configuration for PBR materials:</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/640/Screenshot_from_2017-06-21_17-25-46.png" alt="PBR Materials - Node Editor"  loading="lazy" /></p>
<p>And Blender Guru just posted a new video introducing a feature for the upcoming Blender 2.79 (currently at 2.78): the implementation of the <a href="https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf"target="_blank" rel="noopener">&ldquo;Physically-Based Shader at Disney&rdquo;</a> paper as a proper and optimized new Blender Shader named &ldquo;Principled Shader&rdquo;. It&rsquo;s quite literally the <a href="https://www.youtube.com/watch?v=4H5W6C_Mbck"target="_blank" rel="noopener">Ultimate Shader</a>, because it makes creating and customizing realistic materials <strong>very</strong> easy, and compatible with Renderman and Substance.</p>
<h3>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I am still a beginner at Blender, there is a very long road to walk here. But it&rsquo;s a very exciting environment and I am learning tons of new and useful stuff all the time. Anyone should try it!</p>
<p>Over time I hope I find the time to integrate the Blender workflow with other tools such as Unreal Engine or Unity3D to create interactive stuff as well.</p>
<p>This is by no means a complete tutorial or reference. The idea was to highlight a few things that are not immediately obvious when you start with Blender and that can give you a broader sense of what Blender can do.</p>
<p>If you want to go really in-depth in the customization, watch this CG Master setup video:</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/-_BZasG_UDA"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

]]></content:encoded><category>tutorials</category><category>learning</category><category>audio-and-video</category><category>off-topic</category></item><item><title>[Off-Topic] Talent Is Highly Overrated: Humanizing Einstein and Killing Gods</title><link>https://akitaonrails.github.io/en/2017/06/08/off-topic-talento-e-altamente-supervalorizado-humanizando-einstein-e-matando-deuses/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/06/08/off-topic-talento-e-altamente-supervalorizado-humanizando-einstein-e-matando-deuses/</guid><pubDate>Thu, 08 Jun 2017 21:23:00 -0300</pubDate><description>&lt;p&gt;One thing I keep repeating is: don&amp;rsquo;t have idols, don&amp;rsquo;t blindly believe in gurus, and most of all, don&amp;rsquo;t follow false-Gods.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m a &lt;a href="https://akitaonrails.github.io/en/2007/08/23/off-topic-inimigos-da-razo"&gt;longtime proponent&lt;/a&gt; of killing gods; it&amp;rsquo;s practically a hobby. They make excellent fiction characters in bedtime stories, but obviously they don&amp;rsquo;t exist. Like the boogeyman, Santa Claus, or the Easter bunny. And no, this isn&amp;rsquo;t another anti-religion article, relax.&lt;/p&gt;
&lt;p&gt;For the same reasons, I want to dismantle the myth of &amp;ldquo;Talent&amp;rdquo; and bring the demigods back to humanity.&lt;/p&gt;</description><content:encoded><![CDATA[<p>One thing I keep repeating is: don&rsquo;t have idols, don&rsquo;t blindly believe in gurus, and most of all, don&rsquo;t follow false-Gods.</p>
<p>I&rsquo;m a <a href="/en/2007/08/23/off-topic-inimigos-da-razo">longtime proponent</a> of killing gods; it&rsquo;s practically a hobby. They make excellent fiction characters in bedtime stories, but obviously they don&rsquo;t exist. Like the boogeyman, Santa Claus, or the Easter bunny. And no, this isn&rsquo;t another anti-religion article, relax.</p>
<p>For the same reasons, I want to dismantle the myth of &ldquo;Talent&rdquo; and bring the demigods back to humanity.</p>
<h3>Talent Is Highly Overrated<span class="hx:absolute hx:-mt-20" id="talent-is-highly-overrated"></span>
    <a href="#talent-is-highly-overrated" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>I really hate the use of the word &ldquo;Talent.&rdquo; It should be used as a compliment, a quality, but it&rsquo;s very often used as an excuse. The Latin root of the word simply means a large amount of money. Today&rsquo;s mistaken and common use devalues the real efforts of truly &ldquo;talented&rdquo; people.</p>
<p>Every time it&rsquo;s used to denote something like <em>&ldquo;I&rsquo;ll never be an Einstein, so I won&rsquo;t even bother trying.&rdquo;</em> It&rsquo;s the favorite excuse of lazy people.</p>
<p>Although environmental and circumstantial factors play a crucial role, there is ABSOLUTELY NOTHING in our biological material, like a gene, that would stop someone from reaching similar levels of success given the same circumstances.</p>
<p>Yes, some people end up, randomly, in the right place at the right time. It&rsquo;s like winning the lottery. And unfortunately, it&rsquo;s impossible to recreate the same network of circumstances for everyone and replicate levels of success (more on this at the end of the article).</p>
<p>At the same time, it doesn&rsquo;t help at all to believe in the mysticism that &ldquo;talent&rdquo; can be defined physically, &ldquo;genetically.&rdquo; That&rsquo;s the thinking that creates Josef Mengeles and much of racism and other forms of segregation. There is no predestination.</p>
<p>These days you&rsquo;ve probably heard of the concept of 10,000 hours of deliberate training to become a master at something, first presented in the book <a href="https://www.amazon.com.br/dp/8575424483/ref=asc_df_85754244835020603?smid=A1ZZFT5FULY4LN&amp;tag=goog0ef-20&amp;linkCode=asn&amp;creative=380341&amp;creativeASIN=8575424483"target="_blank" rel="noopener">&ldquo;Outliers&rdquo;</a> by the prolix Malcolm Gladwell.</p>
<p><a href="https://www.amazon.com.br/dp/8575424483/ref=asc_df_85754244835020603?smid=A1ZZFT5FULY4LN&amp;tag=goog0ef-20&amp;linkCode=asn&amp;creative=380341&amp;creativeASIN=8575424483"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/622/big_outliers.jpeg" alt="Outliers"  loading="lazy" /></a></p>
<p>From Bill Gates to Oppenheimer to the Beatles, the book tries to describe how these people&rsquo;s continuous, focused effort, the famous 10,000 hours (roughly 5 years full-time), helps explain their levels of success.</p>
<p>Geoff Colvin, in his book <a href="https://www.amazon.com.br/Talent-Overrated-Separates-World-Class-Performers/dp/1591842948"target="_blank" rel="noopener">&ldquo;Talent Is Overrated: What Really Separates World-Class Performers from Everybody Else&rdquo;</a> tries to go further than Gladwell and explains that, obviously, 10,000 hours of training alone isn&rsquo;t enough if it isn&rsquo;t &ldquo;deliberate practice&rdquo;: obsessive training focused on continuous improvement, above the mere repetition of the same routine.</p>
<p>In summary: do you want the chance to become a master at something? Have the obsession to train focused on improving by millimeters and milliseconds over 10,000 hours. Repeating the same routine, without focusing on improving results, doesn&rsquo;t take anyone anywhere. It&rsquo;s just a pastime.</p>
<p>This kind of deliberate training that Gladwell and Colvin detail in their books is one possible factor of success.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/623/10000-hours-to-mastery.png" alt="10,000 hours"  loading="lazy" /></p>
<h3>10% of the Brain: the Myth<span class="hx:absolute hx:-mt-20" id="10-of-the-brain-the-myth"></span>
    <a href="#10-of-the-brain-the-myth" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>This one is easy to debunk, so I&rsquo;ll start here.</p>
<p>One of the &ldquo;mystical&rdquo; aspects of talent is linked to the belief in people who can activate more than 10% of the brain. The myth that we don&rsquo;t use all of our &ldquo;potential.&rdquo;</p>
<p>Recent fiction films like <a href="http://gizmodo.com/where-the-10-percent-of-our-brains-myth-comes-from-a-1598507369"target="_blank" rel="noopener">&ldquo;Lucy&rdquo; by Luc Besson</a> don&rsquo;t help at all because they perpetuate this popular belief. Let&rsquo;s describe it this way:</p>
<blockquote>
  <p>&ldquo;The human brain constitutes 1/40 of the total mass of the human body, on average, but consumes 1/5 of all the calories we absorb. From an evolutionary point of view, where every organ in our body was created and naturally selected over ages for efficiency, having a brain that sucks up 20% of all our daily energy reserve for a mere 10% of efficiency simply makes no sense.&rdquo;</p>

</blockquote>
<blockquote>
  <p>Think about yourself right now. Are you using your muscles to sit there now? Using your hands to scroll your computer mouse (or finger on your phone screen)? Maybe eating or drinking something? Listening to some music? Breathing? Rest assured, you&rsquo;re using more than 10% of your brain right now - <a href="https://www.nature.com/scitable/blog/mind-read/lucy_is_wrong_we_use"target="_blank" rel="noopener">Nature</a></p>

</blockquote>
<p><a href="https://www.youtube.com/watch?v=YxIS3XxfFS0"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/624/big_10percent_brain.jpg" alt="10% of the brain"  loading="lazy" /></a></p>
<p>With that factor out of the way, let&rsquo;s continue.</p>
<h3>Humanizing Einstein<span class="hx:absolute hx:-mt-20" id="humanizing-einstein"></span>
    <a href="#humanizing-einstein" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In general, I don&rsquo;t respect biographies. I rarely waste my time reading any. I&rsquo;m not against them, but to me a biography is a story told by a writer, who took into account every technique to keep me hooked on the story he wants to tell. Every biography is limited to the writer&rsquo;s interests, not the character whose name is on the book&rsquo;s cover.</p>
<p>In fact, I consider biographies as any other kind of entertainment story. In exactly the same category as watching Captain America or Superman. Because that&rsquo;s exactly how writers and directors produce &ldquo;based on true facts&rdquo; films.</p>
<p>By the way, hats off to the Coen brothers for the film <a href="http://www.sbs.com.au/guide/article/2017/05/23/how-much-fargo-actually-based-true-story"target="_blank" rel="noopener">&ldquo;Fargo&rdquo;</a> which opens with the line &ldquo;this is a true story.&rdquo; And many people, even today, believe it&rsquo;s real. A trolling of every film that begins with the infamous &ldquo;based on a true story&rdquo; while everyone thinks they&rsquo;re watching facts, not entertainment.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/625/fargo.jpg" alt="Fargo"  loading="lazy" /></p>
<p>Put in a name that existed, a situation that existed, and everyone associates the entire fiction as if it were real. I hope nobody thinks Lincoln was a vampire hunter because of the film <a href="http://www.imdb.com/title/tt1611224/"target="_blank" rel="noopener">&ldquo;Abraham Lincoln: Vampire Hunter&rdquo;</a>.</p>
<p>But if I were to ask anyone in the world who the greatest super-genius scientist of all time was, with the theories that most revolutionized humanity, no one would hesitate to say: Albert Einstein!</p>
<p><a href="https://www.sott.net/article/251049-New-Book-Says-Einstein-Highly-Overrated-and-Ruined-Physics"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/626/einstein_debunked.jpg" alt="Einstein, debunked"  loading="lazy" /></a></p>
<p>But why?</p>
<p>Physicist Roger Schlafly, in his book <a href="http://www.darkbuzz.com/herp/"target="_blank" rel="noopener">&ldquo;How Einstein Ruined Physics: Motion, Symmetry, and Revolution in Science&rdquo;</a> brings a ton of evidence to the contrary.</p>
<p>In summary, yes, Einstein really did publish many very interesting things, but the super-inflated myth created around his figure is much more harmful than beneficial for the future of physics and his successors. And it keeps fueling the myth-making market.</p>
<blockquote>
  <p>Einstein was a person full of flaws, like all of us. A long way from a demigod.</p>

</blockquote>
<p>Mark Green, in his article <a href="https://www.sott.net/article/251049-New-Book-Says-Einstein-Highly-Overrated-and-Ruined-Physics"target="_blank" rel="noopener">&ldquo;New Book Says Einstein Highly-Overrated and Ruined Physics&rdquo;</a> describes:</p>
<blockquote>
  <p>&ldquo;What made Einstein so great? The official story goes this way: Albert Einstein, a young clerk in a Swiss patent office, single-handedly transformed physics from a static, three-dimensional science to a four-dimensional, mind-blowing, time-space universe via brilliant and solitary &rsquo;thought experiments&rsquo; involving gravity, motion, space and time. Einstein also made unprecedented inroads into understanding the nature of light and energy and was the first to comprehend the equivalence between energy and mass. Einstein&rsquo;s discoveries not only transformed modern physics but the way we view the universe.&rdquo;</p>

</blockquote>
<p>It&rsquo;s what we all know. And I strongly recommend you read Mark Green&rsquo;s full article, but let&rsquo;s get to the points that matter.</p>
<blockquote>
  <p>E=MC²: was not invented by Einstein!</p>

</blockquote>
<p><img src="https://media.giphy.com/media/DqSw5gyRQ5yPC/giphy.gif" alt="mind blow"  loading="lazy" /></p>
<p>The equation was published 2 years earlier by Olinto de Pretto. As Schlafly says in his book, &ldquo;Einstein&rsquo;s understanding of special relativity &hellip; was inferior to (Henri) Poincaré&rsquo;s.&rdquo; By the way, if you&rsquo;ve never heard of the French physicist Poincaré, I recommend reading the book <a href="https://www.amazon.com/Chaos-Making-Science-James-Gleick/dp/0143113453/ref=lp_13567_1_3?s=books&amp;ie=UTF8&amp;qid=1496941237&amp;sr=1-3"target="_blank" rel="noopener">&ldquo;Chaos: Making a New Science&rdquo;</a> by James Gleick.</p>
<blockquote>
  <p>The notion of motion and time as a 4th dimension separate from three-dimensional space.</p>

</blockquote>
<p>H.G. Wells speculated about the concept in the famous fiction piece &ldquo;The Time Machine&rdquo; in 1894. That same year Lorentz wrote the scientific paper where he &ldquo;proposes the concept of local time in a moving object.&rdquo; Poincaré wrote one in 1898 and another in 1900 exploring the relationship between motion and time.</p>
<blockquote>
  <p>And the relationship of E=MC² to the atomic bomb?</p>

</blockquote>
<p>As Schlafly describes, E=MC² isn&rsquo;t even necessary for the atomic bomb. The equation gives no clue about how to split the atom, or how to create a nuclear chain reaction, or any of the other steps necessary in making the atomic bomb. Relativity isn&rsquo;t even necessary to understand the energy release of a uranium or plutonium bomb, since the release can be explained by electromagnetism considerations &hellip; predictions about relativistic mass were being tested (by German physicist Walter Kaufmann) in 1901, before Einstein wrote anything about it.</p>
<p>And, to top it off, it was also H.G. Wells who first published about the concept of <a href="http://www.bbc.com/news/magazine-33365776"target="_blank" rel="noopener">&ldquo;atomic bombs&rdquo;</a>.</p>
<p><a href="http://www.bbc.com/news/magazine-33365776"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/627/wells.jpg" alt="H.G. Wells"  loading="lazy" /></a></p>
<p>There were many exceptional scientists, who worked hard, before and during Einstein&rsquo;s era. The French mathematician and physicist Henri Poincaré, whom British philosopher Bertrand Russell (remember <a href="http://rationalwiki.org/wiki/Russell%27s_Teapot"target="_blank" rel="noopener">Russell&rsquo;s teapot</a>?) called the greatest man France ever produced. The Dutch physicist and Nobel laureate Hendrik Lorentz. And the Scottish physicist and mathematician James Clerk Maxwell.</p>
<p>According to Schlafly, Maxwell was the first to coin the term &ldquo;relativity&rdquo; and created the first true theory of relativity of mass and energy. Electromagnetism generated the most important equations in the history of science.</p>
<p>Poincaré&rsquo;s subsequent work on relativity provided the theorems that were &ldquo;mathematically identical to Einstein&rsquo;s,&rdquo; and most of his work came before Einstein. Lorentz and Poincaré had all the main aspects of the theory of relativity, and published before Einstein.</p>
<p><a href="https://en.wikipedia.org/wiki/Relativity_priority_dispute"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/628/poincare.jpg" alt="Poincaré"  loading="lazy" /></a></p>
<p>Remember another detail of the &ldquo;official story.&rdquo; Einstein worked at a <strong>patent office</strong>. He understood the importance of &ldquo;intellectual property&rdquo; and had access to a lot of work before it had been patented!</p>
<p>And so a talent is born, irreplaceable and of inestimable value &hellip; for the mass entertainment market.</p>
<p>Hold onto another detail: what if Einstein hadn&rsquo;t existed? Would we have been deprived of the Theory of Relativity? No, that work was practically complete before him. Others would have served the role and the media and folklore would just have a different name to call God.</p>
<blockquote>
  <p>Talent, is relative &hellip;</p>

</blockquote>
<h3>Every Genius Is Actually a Group!<span class="hx:absolute hx:-mt-20" id="every-genius-is-actually-a-group"></span>
    <a href="#every-genius-is-actually-a-group" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>An important fact is that the Theory of Relativity wasn&rsquo;t the invention of one person. A lone wolf who had a &ldquo;Eureka&rdquo; moment. Eureka moments are very different from what you imagine.</p>
<p>Understand that today, the Theory of Relativity is basic material for any physics student. Nothing remarkable.</p>
<p>Everything we have today is the result of hundreds of individuals and groups, who throughout history have used what was known before, thrown away what no longer works, refined what works, and added new pieces for the following generations.</p>
<p>Nothing we do today is truly done &ldquo;from scratch.&rdquo; Everything we have at our disposal today makes us orders of magnitude superior, more efficient, faster, than the generation that lived 200 years ago, millennia ago.</p>
<p>We don&rsquo;t create anything based on absolute truths written in stone millennia ago. Evolution exists because everything is volatile. Everything that has been proving itself correct given years, centuries of scrutiny, becomes the strongest tools to create new things. Engineering, Medicine, etc.</p>
<p>Thanks to that we went from the era of subsistence to agriculture. To the Industrial Revolution. To the Information Age. And to where we&rsquo;re heading toward the Age of Artificial Intelligence, and so on.</p>
<p>&ldquo;Talent&rdquo; is a way of pointing out moments in this continuous and uninterrupted history where society as a whole has been climbing on the shoulders of giants to take longer strides into the future. But no &ldquo;one&rdquo; individual was necessarily pivotal. The achievements would be made by someone, but from time to time, we elect a few individuals.</p>
<p>It&rsquo;s easier to tell the story that way. That&rsquo;s all. Innovation is always a group effort.</p>


<div class="embed-container">
  <iframe
    src="https://www.youtube.com/embed/LHYt2QeS8FM"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen>
  </iframe>
</div>

<h3>Serendipity, Randomness, and Complex Systems<span class="hx:absolute hx:-mt-20" id="serendipity-randomness-and-complex-systems"></span>
    <a href="#serendipity-randomness-and-complex-systems" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Unfortunately we, human beings, are terrible at understanding randomness. The world is highly random.</p>
<p>More than Einstein, the scientist who published the most significant work for humanity was Charles Darwin and his magnum opus <a href="https://www.theguardian.com/books/2015/nov/10/on-the-origin-of-species-voted-most-influential-academic-book-charles-darwin"target="_blank" rel="noopener">&ldquo;On the Origin of Species&rdquo;</a> where he explains how complexity emerges in a world of random events through natural selection.</p>
<p><a href="https://www.theguardian.com/books/2015/nov/10/on-the-origin-of-species-voted-most-influential-academic-book-charles-darwin"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/635/big_darwin.jpg" alt="Darwin"  loading="lazy" /></a></p>
<p>I wrote in part about this in the post <a href="/en/2013/06/21/processos-metodologias-e-o-cerebro-humano">&ldquo;Processes, Methodologies, and the Human Brain&rdquo;</a> from 2013 and in the post <a href="/en/2008/03/01/off-topic-somos-matematicamente-ignorantes">&ldquo;We Are Mathematically Ignorant&rdquo;</a> from 2008. I&rsquo;ll try not to repeat myself too much.</p>
<p>The very story of how we survived and evolved in this world, until reaching the humanoid form we have today, is the result of what we had to face in the natural environment, or we wouldn&rsquo;t be here.</p>
<p>And a crucial factor in our primitive brain is finding <strong>patterns</strong>, things that repeat, and doing it fast. If, in the dead of night, in the middle of a forest, we see a small pair of shining circles moving around us and don&rsquo;t immediately connect them to the eyes of a lurking wolf so we can run as soon as possible, we wouldn&rsquo;t be here.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/634/tiger_eyes.jpg" alt="Tiger Eyes"  loading="lazy" /></p>
<p>That same mechanism is what makes us see &ldquo;faces in the clouds,&rdquo; &ldquo;images in coffee grounds,&rdquo; &ldquo;the face of Christ on a dirty cloth,&rdquo; and so on. Identifying patterns amid randomness guaranteed our <strong>survival</strong>, but in the modern world this capability of our brain leads us to totally wrong conclusions of cause and effect.</p>
<p>That&rsquo;s why I&rsquo;ve written so much about &ldquo;correlation isn&rsquo;t the same as causation.&rdquo;</p>
<blockquote>
  <p><a href="https://en.wikipedia.org/wiki/Correlation_does_not_imply_causation"target="_blank" rel="noopener">&ldquo;cum hoc ergo propter hoc&rdquo;</a></p>

</blockquote>
<p>The real world is &ldquo;complex,&rdquo; in the mathematical sense, which describes the exponentiality of results given a network of factors. There is no linear, step-by-step path in anyone&rsquo;s biography. Not even in twins who were born and lived together, under the same set of factors, at least in theory.</p>
<p><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2465602/"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/629/lorenz.jpg" alt="Lorenz Attractor"  loading="lazy" /></a></p>
<p>&ldquo;Complexity&rdquo; isn&rsquo;t what we&rsquo;re used to imagining it is, and it&rsquo;s what prevents us from predicting the weather more than the short term. It&rsquo;s what leads to Lorenz&rsquo;s famous butterfly, Mandelbrot&rsquo;s fractals, and Chaos Theory. And more recently to Modern Network Theory (including Social Networks) published by authors like <a href="https://www.amazon.com/Albert-L%C3%A1szl%C3%B3-Barab%C3%A1si/e/B001IGQIYW"target="_blank" rel="noopener">Barabási</a>, <a href="https://www.amazon.com/Steven-H.-Strogatz/e/B001KHB290"target="_blank" rel="noopener">Strogatz</a>, or <a href="https://www.amazon.com/Duncan-J.-Watts/e/B001ILHHR4"target="_blank" rel="noopener">Duncan</a>.</p>
<p>Anyone who knows me knows I&rsquo;ve been fascinated by this subject for a decade and have already recommended all these authors&rsquo; books. It was even the topic of my first public talk in 2008, <a href="http://web.archive.org/web/20170623100119/http://www.akitaonrails.com/2008/09/13/off-topic-matando-a-m-dia"target="_blank" rel="noopener">&ldquo;Killing the Average&rdquo;</a>.</p>
<p>Beyond those 10,000 hours of obsessive deliberate training toward continuous improvement, you also need to be exposed to as many situations and people as possible to increase your chances of <strong>&ldquo;serendipity&rdquo;</strong> which is the combination of <em>&ldquo;being in the right place, at the right time, and with the capability to seize the opportunity.&rdquo;</em></p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/630/serendipity.jpg" alt="Serendipity"  loading="lazy" /></p>
<p>This is what can lead to such &ldquo;success.&rdquo; There&rsquo;s no simple recipe, only hard work and a good dose of randomness. When all these factors align, the results can really <em>seem</em> &ldquo;miraculous&rdquo; or &ldquo;superhuman.&rdquo; And given enough time and the human habit of inflating stories each time they&rsquo;re retold, in a few years we create new Demigods.</p>
<h3>Killing Gods<span class="hx:absolute hx:-mt-20" id="killing-gods"></span>
    <a href="#killing-gods" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>In every mythology there are many gods. Both popular manifestations of beliefs around the &ldquo;inexplicable&rdquo; facts of nature (at the time) like storms, volcanoes, the seasons, the weather.</p>
<p>And there are also the demigods, human beings who demonstrated some kind of superiority or so-called &ldquo;miraculous&rdquo; feats (at the time) that no other human could ever achieve, with a good dose of creativity in telling the story.</p>
<p>Both cases are explainable. Unfortunately the logical explanation is much less dramatic and doesn&rsquo;t make as good a story, most of the time. Curing diseases and advancing humanity isn&rsquo;t as &ldquo;sexy&rdquo; as a so-called &ldquo;miraculous&rdquo; feat.</p>
<p>But our society&rsquo;s style of mass communication (newspapers, magazines, television, films, social media) loves &ldquo;sexy stories.&rdquo; Negative news sells. Sexy sells. Logical facts don&rsquo;t generate audiences. And, worse, they elevate false myths to the status of &ldquo;truth.&rdquo;</p>
<p><a href="http://fortune.com/2015/07/23/humans-are-underrated/"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/632/big_Colvin-Quotes-to-Insert5..jpeg" alt="Geoff Colvin"  loading="lazy" /></a></p>
<blockquote>
  <p>&ldquo;Tell a lie enough times and it becomes truth.&rdquo; - Joseph Goebbels</p>

</blockquote>
<p>Just because you yourself don&rsquo;t know the explanation for something, the argument that <em>&ldquo;therefore there is the possibility of something mystical&rdquo;</em> doesn&rsquo;t hold. If I can&rsquo;t explain that your God doesn&rsquo;t exist, neither can you prove that he does. It&rsquo;s a fallacious argument and has no place in a serious discussion.</p>
<p>And that&rsquo;s being nice, because whoever tells the story is the one who carries the <strong>burden of proof</strong>. Not me, the one listening, who&rsquo;s required to disprove you.</p>
<p>The last 200 years have been fantastic, because we&rsquo;ve been killing gods at rates never before recorded in the history of humanity. It&rsquo;s the reflection of how much we&rsquo;ve advanced in our knowledge about nature and how it works. There aren&rsquo;t many left, and we don&rsquo;t need to keep creating more.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/631/big_american_gods.jpg" alt="American Gods"  loading="lazy" /></p>
<h3>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The circumstances of why certain individuals are elevated to the status of demigods isn&rsquo;t an easy answer. Much less a linear sequence of events. Much less an entertainment film, with high doses of fiction and drama, that claims to be &ldquo;based on real facts.&rdquo;</p>
<p>We all live in a complex world, where everything is intertwined in an infinite network of possibilities. Each individual has very different circumstances.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/633/protein_network.gif" alt="Complex System"  loading="lazy" /></p>
<p>Many have no conditions at all and even so they exceed expectations, with superior determination, with superior dedication, with superior patience, and some really reach success.</p>
<blockquote>
  <p>&ldquo;Natural&rdquo; talent?</p>

</blockquote>
<p>Many have the conditions, but don&rsquo;t have dedication, don&rsquo;t have patience, don&rsquo;t have determination. And they fail. How many stories of heirs of great fortunes destroying the legacy of their ancestors?</p>
<blockquote>
  <p>Lack of Talent?</p>

</blockquote>
<p>Everyone has chances. But there&rsquo;s no point in waiting. The best thing to do is to build the capabilities as soon as possible so that, if randomness arrives and you&rsquo;re in the right place at the right time, you have the conditions to seize the opportunity and surf on it.</p>
<p>But there are no simple answers, no recipes, no miracles, and no talents naturally born with genius ready and, therefore, unreachable ideals.</p>
<p>Now, if you have the conditions and don&rsquo;t get success handed to you on a plate, it isn&rsquo;t the &ldquo;bad luck&rdquo; of having been born without the talent gene. It&rsquo;s pure <strong>laziness</strong>. Simple as that.</p>
<blockquote>
  <p>Don&rsquo;t have idols. Have references.</p>

</blockquote>
]]></content:encoded><category>psychology</category><category>learning</category><category>off-topic</category></item><item><title>Conference Talks, Interviews, and the Pen!</title><link>https://akitaonrails.github.io/en/2017/06/01/conference-talks-interviews-and-the-pen/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/06/01/conference-talks-interviews-and-the-pen/</guid><pubDate>Thu, 01 Jun 2017 13:24:00 -0300</pubDate><description>&lt;p&gt;&amp;ldquo;Sell me this pen!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/621/sell_me_this_pen.jpg" alt="Sell me this Pen" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;This is a very old tricky question used in interviews. And if you at least watched Scorsese&amp;rsquo;s magnificent &amp;ldquo;Wolf of Wall Street&amp;rdquo;, you will remember this phrase.&lt;/p&gt;
&lt;p&gt;But how many of you actually thought it through?&lt;/p&gt;
&lt;h3&gt;Introduction&lt;span class="hx:absolute hx:-mt-20" id="introduction"&gt;&lt;/span&gt;
&lt;a href="#introduction" class="subheading-anchor" aria-label="Permalink for this section"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;There are any number of ways you can try to sell me the pen. You can tell me about the tradition of its manufacturer brand. You can tell me about its outstanding smoothness. You can try to persuade me on the availability of different colors and sizes. You can even steer away from the pen and start bragging about how many hundreds of pens you sold already, your tour de force.&lt;/p&gt;</description><content:encoded><![CDATA[<p>&ldquo;Sell me this pen!&rdquo;</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/621/sell_me_this_pen.jpg" alt="Sell me this Pen"  loading="lazy" /></p>
<p>This is a very old tricky question used in interviews. And if you at least watched Scorsese&rsquo;s magnificent &ldquo;Wolf of Wall Street&rdquo;, you will remember this phrase.</p>
<p>But how many of you actually thought it through?</p>
<h3>Introduction<span class="hx:absolute hx:-mt-20" id="introduction"></span>
    <a href="#introduction" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>There are any number of ways you can try to sell me the pen. You can tell me about the tradition of its manufacturer brand. You can tell me about its outstanding smoothness. You can try to persuade me on the availability of different colors and sizes. You can even steer away from the pen and start bragging about how many hundreds of pens you sold already, your tour de force.</p>
<p>I will argue that you can do all of those, but you will probably miss the point. And you will not sell the pen most of the time.</p>
<p>I&rsquo;ve seen this happen many times. Most tech talks I&rsquo;ve seen, for example, have this format:</p>
<ol>
<li>Who is the <del>sales person</del> speaker. Achievements. Tour de force.</li>
<li>What is being sold. The Pen.</li>
<li>How good the Pen is or how easy it is to use.</li>
<li>&ldquo;Buy it.&rdquo; End of story.</li>
</ol>
<p>There is nothing wrong with those points. Sometimes the speaker goes as far as doing &ldquo;flashy&rdquo; and &ldquo;gimmicky&rdquo; things. Doing a live coding session to demonstrate how good he is (not the pen). Doing a tech demo demonstrating what the pen is. All fireworks and firecrackers. But those dissipate very quickly, and no one talks about it later. It doesn&rsquo;t <strong>stick</strong>.</p>
<blockquote>
  <p>And you <strong>don&rsquo;t</strong> sell the pen.</p>

</blockquote>
<p>Sometimes, brute force alone, the strength of the brand behind you, is enough to persuade a lot of people. But not most of them. Instead of selling the pen, the speaker sells the big brand, Microsoft, Google, Facebook. It was <a href="https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"target="_blank" rel="noopener">&ldquo;no one was ever fired for buying IBM&rdquo;</a> in 60&rsquo;s. The famous F.U.D. (the triforce of &ldquo;Fear, Uncertainty, Doubt&rdquo;). Now it is &ldquo;no one, usually, gets fired for choosing Facebook or Google&rdquo;.</p>
<p>Again, you&rsquo;re not selling the pen.</p>
<h3>Elaboration<span class="hx:absolute hx:-mt-20" id="elaboration"></span>
    <a href="#elaboration" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>As any really good sales person will tell you, you&rsquo;re missing the most important point in the sequence above, between items 3 and 4. You wasted an insurmountable amount of time describing the &ldquo;What&rdquo;. Most tech speakers waste a very long time explaining the &ldquo;How&rdquo;, with code examples, live coding, trying to convince you how easy it may be.</p>
<p>But they often forget to ask the question: &ldquo;WHY the pen could be important for YOU&rdquo;. &ldquo;YOU&rdquo; being the audience. You&rsquo;re not connecting. You&rsquo;re lacking empathy. You&rsquo;re just <em>telling</em> them instead of <em>persuading</em> them. Telling and Persuading are worlds apart.</p>
<p>The WHY is the most important thing. And the difficult part in large audiences is that each person has a different &ldquo;WHY&rdquo; that needs a good answer.</p>
<p>Whenever I see a speaker/writer/evangelist giving too much time for immaterial stuff like &ldquo;benchmarks&rdquo;, &ldquo;performance&rdquo;, &ldquo;hyper-modularized architectures&rdquo;, I see them missing a large portion of the audience. They have legitimate reasons for worrying about those points, because they experienced it inside Unicorns like Netflix, Facebook or Twitter. Still, I will argue that more than 95% of the audience population will never have those problems.</p>
<p>Therefore, you&rsquo;re trying to push a Lamborghini to people that not only can&rsquo;t afford it, but even if they could, it&rsquo;s not nearly at the top of their priority lists. Yes, the Lamborghini is obviously a fast and fine car. But WHY do I need it? WHY are you trying to push it to me? WHY is this pen even relevant to me?</p>
<blockquote>
  <p>Your priority is not my priority!</p>

</blockquote>
<p>I see an interview as a talk for an audience of one. And I see a blog post as a talk for an audience I can&rsquo;t see. The structure is exactly the same.</p>
<p>But in a one-to-one interview we all have an extra very important advantage: you get to ask direct questions! Do you realize how important that is? In a talk with an audience you have to make assumptions on what they want to hear. In an interview you get to ask directly and give straightforward answers, closing the gap of assumptions.</p>
<p>The irony is that most people don&rsquo;t ask questions on interviews. It&rsquo;s so much easier to make assumptions: &ldquo;everybody wants to hear what I like to hear, because I know better&rdquo;. This is the utmost lack of empathy.</p>
<p>Let&rsquo;s say that you&rsquo;re a top engineer working on performance sensitive tech in your unicorn startup. You tried everything and decided to write key real-time components near the bare bone metal, in C. And now you give talks about how important it is that everybody starts everything in C.</p>
<p>Now, communication is an art. Requires research, study, practice. You must understand your mother language very well, the grammar, the many subtle phrase constructions that better convey the message.</p>
<p>There are several &ldquo;design patterns&rdquo; when it comes to <a href="https://en.wikipedia.org/wiki/Argumentation_theory"target="_blank" rel="noopener">Argumentation Theory</a>, many <a href="https://en.wikipedia.org/wiki/List_of_fallacies"target="_blank" rel="noopener">well known traps</a>, fallacies you want to avoid. Everything to create a rock solid, simple to grasp, and difficult to refute, line of thought.</p>
<p>You don&rsquo;t want to be easily proven wrong. So each phrase you deliver is like a chess move: you must anticipate 10 different ways it can be refuted and have responses for each.</p>
<p>Which is why you need to practice. Write, talk as much as possible, no matter the event. The point is the opportunity to get exposed to an audience with little risk, regardless of the size of the audience or your ego. Only tackle a large audience once you&rsquo;re confident that you can defend your arguments.</p>
<p>Calibrate your weapons before you use them. When you start tackling the <strong>WHY</strong>, you may be provoking open wounds on the audience, so better be prepared.</p>
<p>But if you don&rsquo;t go for the WHYs, it&rsquo;s way worse: you&rsquo;re <strong>FORGETTABLE</strong>. You get applause at the end, and after an hour no one remembers your name. What is the purpose of a speaker no one remembers later? Or a speaker that is funny and people remember the jokes, but can&rsquo;t remember the content of the talk?</p>
<p>So they sympathize with the speaker, but the message is irrelevant. If you want to be an actor or comedian, that&rsquo;s fine. If you want to convince people of a certain point of view though, that&rsquo;s <strong>failure</strong>.</p>
<p>And the same goes for writing. You should&rsquo;ve learned this in school. If you ever went through college and had to defend a thesis you SHOULD KNOW that the dissertation HAS to be divided in at least 3 sections: Introduction, Elaboration and Argumentation, and Conclusion. This is the WHAT, HOW, and WHY parts.</p>
<p>In a similar topic, if you&rsquo;re into Agile techniques. Do you remember the classic <a href="https://www.mountaingoatsoftware.com/agile/user-stories"target="_blank" rel="noopener">User Story structure</a>? Most people find it super annoying. Every other Kanban-like tool forgets that: they just tell you &ldquo;write here what you want&rdquo;. And most people just want to write the WHAT. Sometimes they write the HOW. But they feel lazy to think about the WHY.</p>
<blockquote>
  <p>As a X, I want Y, so that Z.</p>

</blockquote>
<p>The 3rd section is elusive, but it&rsquo;s the ONLY section that matters. It&rsquo;s the WHY. Why do YOU want THAT particular feature? The WHY is the acceptance test. The Done Criteria. The only thing you should be looking for. We write what we THINK we want, not what actually NEEDS to be done. The User Story structure is yet another tool to bend your tiny reptile brain to use your more modern gray matter a bit more.</p>
<h3>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>My goal is to bring attention to a point many speakers and blog writers are not doing: you&rsquo;re concentrating too much on the WHAT and the HOW alone and not exploring the audience&rsquo;s true concern: the <strong>WHY</strong>!</p>
<p>Again, whenever you see one of those cheap &ldquo;my language is better than yours&rdquo; theme and the argument is: &ldquo;because in the benchmarks we can clearly see that it&rsquo;s 50% faster&rdquo; or that &ldquo;we can clearly see that it uses 50% less memory&rdquo; or that &ldquo;we can clearly see that it can run more concurrent processes at once&rdquo;. Those are ALL missing the point.</p>
<p>This is the HOW. It&rsquo;s fine.</p>
<p>But 95% of your audience will rarely empathize with those points. They will agree on a conscious level, but the subconscious will tell them <strong>the truth</strong>: <em>&ldquo;you don&rsquo;t have this problem.&rdquo;</em> Most of the time their servers are idling, doing nothing. How good a 50% or a 200% performance gain will help them? It will not.</p>
<p>It&rsquo;s a major lack of empathy when a programmer, working on a big company, with many different teams colliding with big monoliths and legacy code decides that micro-services is the way to go. And now they &ldquo;know&rdquo; that if it&rsquo;s good for them, it ought to be good for everybody, right? Therefore, anyone doing differently is a dork.</p>
<p>They&rsquo;re not. Most of the other teams in the world may be small 3 to 5 people with projects that are yet to see the light of day. And here you have it: trying to implement your wonder over-architecture, and not getting any value back, because it delays their time to market.</p>
<p>Oh hey, their competition caught up, released first, they lost time to market, and all because they trusted your narrow sighted opinion, your lack of empathy with your audience. And this is the case when they listened to you. Most of them already forgot what you said, because it never touched their true concerns anyway.</p>
<p>And I am also to blame, I do this sometimes. In the beginning of my career I did it more, and the older I get the more careful I become on how I craft what I want to say. It&rsquo;s very difficult to see beyond our small routines. It&rsquo;s difficult to communicate with a larger and diverse audience. But if this is the role we chose to pursue, we must do better.</p>
<p>I hope this gave you some insights in how to structure your pitch in small to big talks or individual interviews or writing your blog post. It&rsquo;s all the same: WHAT, HOW, and least but not last, WHY!</p>
]]></content:encoded><category>communication</category><category>blogging</category><category>off-topic</category></item><item><title>[Off-Topic] Carpe Diem and the Myths of Happiness</title><link>https://akitaonrails.github.io/en/2017/02/14/off-topic-carpe-diem-e-os-mitos-da-felicidade/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/02/14/off-topic-carpe-diem-e-os-mitos-da-felicidade/</guid><pubDate>Tue, 14 Feb 2017 15:44:00 -0200</pubDate><description>&lt;p&gt;&lt;img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/618/img_109445809d36e63818.jpg" alt="Don Draper" loading="lazy" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;But what is happiness? It&amp;rsquo;s a moment before you need more happiness.&amp;rdquo; - Don Draper&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of the great myths of modern society, perpetuated by a torturous daily repetition on social media, is the false &amp;ldquo;goal&amp;rdquo; of the &amp;ldquo;pursuit of happiness.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;On top of that comes the &lt;a href="https://www.huffpost.com/entry/the-myth-of-motivation_b_8261560"target="_blank" rel="noopener"&gt;myth of &amp;ldquo;motivation&amp;rdquo;&lt;/a&gt;. TL;DR: motivation is overrated, far more than it actually deserves.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;People can have two different mindsets, she says. Those with a &amp;ldquo;fixed mindset&amp;rdquo; believe that their talents and abilities are carved in stone. Those with a &amp;ldquo;growth mindset&amp;rdquo; believe that their talents and abilities can be developed. Fixed mindsets see every encounter as a test of their worthiness. Growth mindsets see the same encounters as opportunities to improve.&amp;rdquo; - Daniel H. Pink, &lt;a href="https://www.goodreads.com/work/quotes/6643001"target="_blank" rel="noopener"&gt;Drive: The Surprising Truth About What Motivates Us&lt;/a&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/618/img_109445809d36e63818.jpg" alt="Don Draper"  loading="lazy" /></p>
<blockquote>
  <p>&ldquo;But what is happiness? It&rsquo;s a moment before you need more happiness.&rdquo; - Don Draper</p>

</blockquote>
<p>One of the great myths of modern society, perpetuated by a torturous daily repetition on social media, is the false &ldquo;goal&rdquo; of the &ldquo;pursuit of happiness.&rdquo;</p>
<p>On top of that comes the <a href="https://www.huffpost.com/entry/the-myth-of-motivation_b_8261560"target="_blank" rel="noopener">myth of &ldquo;motivation&rdquo;</a>. TL;DR: motivation is overrated, far more than it actually deserves.</p>
<blockquote>
  <p>&ldquo;People can have two different mindsets, she says. Those with a &ldquo;fixed mindset&rdquo; believe that their talents and abilities are carved in stone. Those with a &ldquo;growth mindset&rdquo; believe that their talents and abilities can be developed. Fixed mindsets see every encounter as a test of their worthiness. Growth mindsets see the same encounters as opportunities to improve.&rdquo; - Daniel H. Pink, <a href="https://www.goodreads.com/work/quotes/6643001"target="_blank" rel="noopener">Drive: The Surprising Truth About What Motivates Us</a></p>

</blockquote>
<p>Then comes the repeated mantra of &ldquo;do what you love.&rdquo; As I <a href="http://www.akitaonrails.com/en/2014/09/13/off-topic-nao-faca-o-que-voce-acha-que-ama"target="_blank" rel="noopener">discussed back in 2014</a>, that idea is a petty way of devaluing other people&rsquo;s work.</p>
<blockquote>
  <p>&ldquo;&hellip;, the big problem with the &rsquo;love what you do&rsquo; narrative is that it&rsquo;s tied to a discourse of happiness that means &lsquo;being on top of the rollercoaster all the time.&rsquo; As if a normal, day-to-day, routine life couldn&rsquo;t be a life of satisfaction. All of that makes this scenario worrying.&rdquo; - Bárbara Castro - <a href="http://web.archive.org/web/20140326092650/http://exame.abril.com.br/carreira/noticias/5-razoes-pelas-quais-o-faca-o-que-ama-nao-e-uma-solucao"target="_blank" rel="noopener">&ldquo;5 Reasons why &lsquo;do what you love&rsquo; isn&rsquo;t the solution&rdquo;</a></p>

</blockquote>
<p>In our small big world of tech, this leads many people to conclude: &ldquo;I&rsquo;m going to work at a startup or start my own.&rdquo; The decision by itself has nothing wrong with it. The problem is reaching it driven by the previous myths, which turns into a huge source of unnecessary frustration, as I <a href="http://www.akitaonrails.com/en/2013/10/31/traducao-carta-para-um-jovem-programador-considerando-uma-startup"target="_blank" rel="noopener">already explained in 2013</a>.</p>
<blockquote>
  <p>&ldquo;I won&rsquo;t mince words: I am deeply skeptical of this system. I&rsquo;m skeptical of this system&rsquo;s slavery, self-congratulatory fetishization of &ldquo;disruption,&rdquo; while at the same time becoming so obviously the kind of impassive institution it wants to replace. I&rsquo;m skeptical of the short-term vision of the startup community. And I&rsquo;m particularly skeptical of its disregard for the lives of the people who participate in it and the lives of those who live in the world that startups seek to reshape. Let&rsquo;s not even start to discuss the collusion, cartelization, and other market corruption activities that are so common in the VC world. The point being: it&rsquo;s a bad game, and a fraudulent game.&rdquo; - Alex Payne</p>

</blockquote>
<p>Add to that the social media &ldquo;consensus&rdquo; that the world never stops getting worse. Everything today is supposedly worse. People, worse. Jobs, worse. The environment, destroyed. Everything offends everyone all the time, and nobody can stop judging others.</p>
<p>I disagree, as I&rsquo;ve <a href="http://www.akitaonrails.com/en/2013/01/02/off-topic-o-mundo-hoje-e-muito-bom-feliz-2013"target="_blank" rel="noopener">explained back in 2013</a> and repeat every year: the world is better, constantly improving, and the future will be even better. I&rsquo;d like to take this chance to honor one of the men who helped change my perspective on the world, the recently deceased Dr. Hans Rosling.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/619/quote-i-have-a-neighbor-who-knows-200-types-of-wine-i-only-know-two-types-of-wine-red-and-hans-rosling-79-96-23.jpg" alt="Hans Rosling"  loading="lazy" /></p>
<h3>The Perpetuation of the Myths<span class="hx:absolute hx:-mt-20" id="the-perpetuation-of-the-myths"></span>
    <a href="#the-perpetuation-of-the-myths" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>There&rsquo;s no shortage of books, talks, TV shows, movies, and everything else built around the idea that everyone &ldquo;must&rdquo; be happy, all the time. And that if you&rsquo;re not happy, you&rsquo;re doing something very wrong. The relentless pursuit of &ldquo;ideal happiness&rdquo; has become one of the most unhealthy and cruel obsessions of the past two centuries, right next to the <a href="https://www.youtube.com/watch?v=f_4Q9Iv7_Ao"target="_blank" rel="noopener">excessive consumption of sugar</a>. That&rsquo;s another subject, though sugar and happiness do tend to be correlated.</p>
<p>There are 2 concepts everyone needs to understand:</p>
<ol>
<li>You probably <a href="https://www.youtube.com/watch?v=ykvC3QXJb18"target="_blank" rel="noopener">don&rsquo;t have depression</a>. These days everyone &ldquo;is depressed,&rdquo; of course, because &ldquo;figuring out what you love to do&rdquo; takes a lot of work and brings a lot of &ldquo;suffering&rdquo;&hellip;</li>
</ol>
<p>No, you&rsquo;re just <strong>bored</strong>, momentarily.</p>
<p>Saying &ldquo;I&rsquo;m depressed&rdquo; instead of &ldquo;I&rsquo;m bored&rdquo; has become so common that the real clinical condition needed another name to set itself apart, <a href="http://web.archive.org/web/20170213181854/http://www.mayoclinic.org/diseases-conditions/depression/basics/symptoms/CON-20032977"target="_blank" rel="noopener">&ldquo;Major Depressive Disorder&rdquo;</a>. That one is a medical condition, far too serious to be treated with such carelessness.</p>
<ol start="2">
<li>Normally, even after going through events we consider very bad, or very good, we tend to return to the same level of &ldquo;happiness&rdquo; (or boredom) we were at before them. This is called the <a href="https://en.wikipedia.org/wiki/Hedonic_treadmill"target="_blank" rel="noopener">&ldquo;Hedonic Treadmill&rdquo;</a>. It&rsquo;s the main reason the &ldquo;pursuit of happiness&rdquo; is such a cruel journey: whoever doesn&rsquo;t grasp this mechanism lives frustrated all the time.</li>
</ol>
<blockquote>
  <p>&ldquo;When enough is not enough, a <a href="https://en.wikipedia.org/wiki/Hedonism"target="_blank" rel="noopener">Hedonist</a> is born.&rdquo; - Sukant Ratnakar</p>

</blockquote>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/620/hypocrisy.jpg" alt="Hypocrisy"  loading="lazy" /></p>
<blockquote>
  <p>Have you ever thought &ldquo;I&rsquo;ll finally be happy when I get married.&rdquo; Or &ldquo;if I get this job, I&rsquo;ll feel completely satisfied.&rdquo; Or maybe you relate more to the other side of the coin: &ldquo;I&rsquo;ll never be happy now that I got this medical diagnosis.&rdquo; Or &ldquo;I can&rsquo;t be happy while I have to pay these debts.&rdquo; Psychological research has revealed two important findings when it comes to these beliefs: The things we think will make us happy never make us happy for as long as we imagine. At the same time, negative life events and challenges don&rsquo;t have a lasting impact on our happiness either, as we believe they would. - Sonja Lyubomirsky, Ph.D - <a href="https://www.amazon.com/gp/product/014312451X/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=014312451X&amp;linkCode=as2&amp;tag=happify05-20&amp;linkId=IYACCQJL6HM3CW3N"target="_blank" rel="noopener">The Myths of Happiness</a></p>

</blockquote>
<blockquote>
  <p>&ldquo;We seem obsessed with motivation, rallying ourselves to something beyond the life available to us right now, and we treat this motivation as if it were a major part of the history of wisdom, which it is not.&rdquo; - Jennifer Hecht - <a href="https://www.amazon.com/Happiness-Myth-Historical-Antidote-Working/dp/0060859504"target="_blank" rel="noopener">The Happiness Myth: The Historical Antidote to What Isn&rsquo;t Working Today</a></p>

</blockquote>
<p>Because of Hedonic Adaptation, any change seems to supply fresh &ldquo;motivation,&rdquo; the feeling that &ldquo;we&rsquo;ve finally locked onto the right path.&rdquo; Unless it brings a new purpose, it&rsquo;s just more of the same. We soon get used to the &ldquo;new normal&rdquo; and drift back to boredom.</p>
<p>Without understanding this, you stay stuck in the endless, unsatisfying cycle of &ldquo;the grass is always greener on the other side.&rdquo; The most twisted effect of these myths shows up when a person starts blaming others for their own problems. &ldquo;I can&rsquo;t because my husband&hellip;&rdquo;, &ldquo;I can&rsquo;t because my family&hellip;&rdquo;, &ldquo;I can&rsquo;t because my coworkers&hellip;&rdquo;, &ldquo;I can&rsquo;t because my boss&hellip;&rdquo;, &ldquo;I can&rsquo;t because society&hellip;&rdquo;</p>
<p>At this point you&rsquo;re lost. You want changes, but you want everything around you to change, except yourself. That&rsquo;s the best definition of a coward: living on superficial justifications and excuses to avoid effort, to avoid pain, to maximize short-term pleasure. It&rsquo;s the behavior of an addict, and judging everything and everyone is the drug.</p>
<p>Only you are destined for great things, but something or someone is holding you back. Only you are special. Only you deserve special treatment. In the old days we&rsquo;d politely call this &ldquo;immaturity&rdquo; or &ldquo;childishness.&rdquo; Today I&rsquo;d say most people actually fit into <a href="https://en.wikipedia.org/wiki/Narcissistic_personality_disorder"target="_blank" rel="noopener">&ldquo;Narcissistic Personality Disorder&rdquo;</a>.</p>
<blockquote>
  <p>&ldquo;Narcissistic personality disorder is a mental disorder in which people have an inflated sense of their own importance, a deep need for admiration and a lack of empathy for others. But behind this mask of ultraconfidence lies a fragile self-esteem that&rsquo;s vulnerable to the slightest criticism &hellip; (this) causes problems in many areas of life, such as relationships, work, school or financial affairs. You may be generally unhappy and disappointed when you&rsquo;re not given the special favors or admiration you believe you deserve. Others may not enjoy being around you, and you may find your relationships unfulfilling.&rdquo; - <a href="http://web.archive.org/web/20170208015158/http://www.mayoclinic.org/diseases-conditions/narcissistic-personality-disorder/basics/definition/CON-20025568"target="_blank" rel="noopener">Mayo Clinic</a></p>

</blockquote>
<p>In the modern world, I&rsquo;d reduce this to the &ldquo;Like Culture.&rdquo; Sad.</p>
<h3>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>This relentless pursuit of &ldquo;ideal happiness,&rdquo; this &ldquo;doing only what you love,&rdquo; and this certainty that &ldquo;the world is going to end&rdquo; make people very weak. Low self-esteem, low empathy, sky-high narcissism, and a sense of &ldquo;depression&rdquo; that ends up paralyzing them. In the end, the person just lashes out in every direction, for lack of &ldquo;purpose&rdquo; and out of constant frustration with everything and everyone.</p>
<p>Fortunately, I never had this problem. I&rsquo;ve known people who do, and this article is dedicated to them, as a &ldquo;wake up call.&rdquo; That doesn&rsquo;t mean I haven&rsquo;t had my unhappy moments and personal crises. I&rsquo;ve lost a lot, financially and personally. Businesses, friends, relationships. I&rsquo;m not exaggerating. But I accept my losses and I pay for them, as part of life: No Pain, No Gain.</p>
<p>A &ldquo;fancy&rdquo; work environment was never a concern. I once worked under a tarp (!) when they were painting the small office where I was an intern, in summer, with no air conditioning, because they were going to throw a party and the work couldn&rsquo;t stop. I worked inside a logistics warehouse, with a zinc roof, only a fan, and trucks coming in and out right next to me.</p>
<p>I slept on the office floor dozens of times. I carried furniture down the middle of the street to move offices. I pulled many unpaid all-nighters. I got chewed out for things that weren&rsquo;t even my responsibility (I was an intern). I did all kinds of things unrelated to my real job, fought with managers, with &ldquo;coworkers,&rdquo; with vendors.</p>
<p>I never treated any of this as &ldquo;the end of the world.&rdquo; It was just the inevitable. The famous &ldquo;accept it, it hurts less.&rdquo;</p>
<p>It&rsquo;s no accident that I&rsquo;m an <strong>Engineer</strong>. An engineer solves problems, and our obsession is always finding a more efficient way to do the same thing. No engineer ever solved anything just by whining.</p>
<p>There&rsquo;s also no such thing as &ldquo;work that devalues me.&rdquo; If I have to crop a Photoshop, I won&rsquo;t treat it as useless manual labor. There&rsquo;s no useless work. There&rsquo;s bad will. Any ordinary, underestimated task, done with your head engaged, can lead to <a href="http://www.popularmechanics.com/science/health/g1216/10-awesome-accidental-discoveries/"target="_blank" rel="noopener">great accidental discoveries</a>.</p>
<blockquote>
  <p>&ldquo;The inventor of the Coca-Cola wasn&rsquo;t a shrewd businessman, a seller of sweets, or a dreamer looking to strike it rich in the beverage business. John Pemberton just wanted to cure headaches. A pharmacist by profession, Pemberton used two main ingredients in his hopeful headache cure: coca leaves and cola nuts. When his lab assistant accidentally mixed the two with carbonated water, the world&rsquo;s first Coke was the result.&rdquo; - <a href="http://www.popularmechanics.com/science/health/g1216/10-awesome-accidental-discoveries/"target="_blank" rel="noopener">10 Awesome Accidental Discoveries</a></p>

</blockquote>
<p>Many of these narcissists, in their aura of self-importance, believe they need the perfect environment, that someone must <strong>give</strong> them the conditions to achieve great things (emphasis on &ldquo;give&rdquo; because they refuse to earn what they need on their own). That&rsquo;s a load of nonsense. I&rsquo;ve yet to see anyone who thinks that way achieve anything relevant to anyone.</p>
<p>In my experience, all the great discoveries were born in humble conditions, with people who had a real interest in what they were doing. Only that. Professionals, &ldquo;craftsmen,&rdquo; interested in perfecting their own knowledge, who as a consequence came out with great things that benefited more people. You don&rsquo;t plan something revolutionary. It happens by accident, given the ideal conditions of temperature and pressure at that moment.</p>
<blockquote>
  <p>&ldquo;The question isn&rsquo;t who is going to let me; it&rsquo;s who is going to stop me.&rdquo; - by Akita.</p>

</blockquote>
<p>I am <strong>not</strong> a programmer with the goal of one day surpassing Bill Gates or Linus Torvalds. You can do good work without being blindly arrogant. 30 years in, I still have fun with trivial things: a new piece of code that compiles, a configuration that optimizes my GPU, setting up a Raspberry Pi, testing a new language, tweaking my text editor, researching, learning, evolving, and so on. &ldquo;Doing what you love&rdquo; is doing these small things well. And &ldquo;being happy&rdquo; is a process of trial and error, always in motion, something you win little by little rather than reach as a final destination.</p>
<p>Whoever enjoys the <strong>present</strong>, what exists around them and within their reach right now, instead of wasting time on &ldquo;what if in the future&hellip;&rdquo;, is the one with the best chance of doing what others can&rsquo;t, blinded by the journey of impossible happiness. <a href="http://www.akitaonrails.com/2013/04/01/off-topic-restricoes-sao-libertadoras-menos-e-mais"target="_blank" rel="noopener">Constraints lead to Innovation</a>, as I&rsquo;ve been repeating for years.</p>
<blockquote>
  <p>&ldquo;carpe diem, quam minimum credula postero&rdquo; - <a href="http://www.phrases.org.uk/meanings/carpe-diem.html"target="_blank" rel="noopener">&ldquo;Make the most of the (limited) time you have&rdquo;</a>.</p>

</blockquote>
<blockquote>
  <p>&ldquo;Whoever lives in the past is a museum. And whoever suffers over the distant future is mentally ill.&rdquo; - Unknown.</p>

</blockquote>
<p>Coincidentally, while I was researching for this post, the <a href="http://hipsters.tech/carreira-em-tecnologia-hipsters-31"target="_blank" rel="noopener">Hipsters Ponto Tech</a> podcast came out where I made a small appearance precisely to talk about the topic of Careers in tech.</p>
<p>And reread my old posts mentioned above, related to these topics:</p>
<ul>
<li><a href="http://www.akitaonrails.com/en/2013/01/02/off-topic-o-mundo-hoje-e-muito-bom-feliz-2013"target="_blank" rel="noopener">The World Today Is Very Good! Happy 2013!</a></li>
<li><a href="http://www.akitaonrails.com/en/2013/10/31/traducao-carta-para-um-jovem-programador-considerando-uma-startup"target="_blank" rel="noopener">Letter to a Young Programmer Considering a Startup</a></li>
<li><a href="http://www.akitaonrails.com/2013/04/01/off-topic-restricoes-sao-libertadoras-menos-e-mais"target="_blank" rel="noopener">Constraints are liberating: less is more</a></li>
<li><a href="http://www.akitaonrails.com/en/2014/09/13/off-topic-nao-faca-o-que-voce-acha-que-ama"target="_blank" rel="noopener">Don&rsquo;t Do What You (&ldquo;THINK&rdquo;) You Love</a></li>
</ul>
<p>TL;DR: Learn how to learn, and make better use of your life.</p>
<div class="video-container">
    <video controls>
        <source src="https://s3.us-east-2.amazonaws.com/blip.tv/Akitaonrails-FracassosFamosos790.mp4" type="video/mp4">
        Your browser does not support the video tag. [Direct Link](https://s3.us-east-2.amazonaws.com/blip.tv/Akitaonrails-FracassosFamosos790.mp4)
    </video>
</div>
]]></content:encoded><category>psychology</category><category>personal</category><category>philosophy</category><category>off-topic</category></item><item><title>[Off-Topic] Why are we all moving away from Apple?</title><link>https://akitaonrails.github.io/en/2017/01/12/off-topic-why-are-we-all-moving-away-from-apple/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/01/12/off-topic-why-are-we-all-moving-away-from-apple/</guid><pubDate>Thu, 12 Jan 2017 11:37:00 -0200</pubDate><description>&lt;p&gt;&amp;ldquo;Anyone that is someone has been following Apple for the past couple of decades. Love them, or hate them, the only thing you can&amp;rsquo;t do is ignore them.&amp;rdquo; - that was always the general thought.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Creative&amp;rdquo; professionals (as if &amp;ldquo;creative&amp;rdquo; were restricted to painters and illustrators) have always been the most loyal Apple followers, for good reason. It was the cradle of essential tools like Photoshop, QuarkXPress, PostScript, PDF, and QuickTime. Apple set the standards for media creation, and anyone that was someone used those tools.&lt;/p&gt;</description><content:encoded><![CDATA[<p>&ldquo;Anyone that is someone has been following Apple for the past couple of decades. Love them, or hate them, the only thing you can&rsquo;t do is ignore them.&rdquo; - that was always the general thought.</p>
<p>&ldquo;Creative&rdquo; professionals (as if &ldquo;creative&rdquo; were restricted to painters and illustrators) have always been the most loyal Apple followers, for good reason. It was the cradle of essential tools like Photoshop, QuarkXPress, PostScript, PDF, and QuickTime. Apple set the standards for media creation, and anyone that was someone used those tools.</p>
<p>Microsoft focused on the corporate market, not on the creatives. Linux was still in its infancy, and most developers didn&rsquo;t even know the difference between CMYK and RGB. They were content with a crude bitmap on the screen.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/587/918d80cb21131a7a62e6ccaf71229960.jpg" alt="Old Macintosh"  loading="lazy" /></p>
<p>I have this theory that we took technology for granted in the late 90&rsquo;s, thinking we were at the top of the world. That came from the Dotcom Bubble of the late 90&rsquo;s, which burst together with 9/11. The depression made us waste the next 3 to 4 years trying to figure out what we would do next.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/588/1dot.jpg" alt="Dotcom burst"  loading="lazy" /></p>
<p>Apple had the luck to dodge the burst. They were already at the rock bottom since 1997. The cleaning up of their hardware lineup and the release of the iPod created their own small bubble. Steve Jobs was back and he brought good developers that made OS X a joy to use not only for creatives, but developers as well.</p>
<p>The Microsoft Antitrust case of 2000, the Dotcom Bubble burst in 2001, the release of the iPod in 2001, the switch from System 9 to OS X/BSD in 1999, the switch from PowerPC to Intel in 2005, the release of the ultra desirable Titanium PowerBook G4 in 2001. All of those contributed to give Apple the edge. And while everybody was down, it made them feel even larger than life.</p>
<p><a href="http://www.economist.com/node/2535519"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/589/Microsoft.gif" alt="Microsoft Antitrust"  loading="lazy" /></a></p>
<p>Then in 2007/2008 they had a new push: the iPhone, the App Store, and the need to use Xcode, available only on Apple computers. Unlike being forced onto Windows because of Visual Studio, using Xcode was actually an extra reason to buy a Mac.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/590/SteveJobsUnveilsiPhone.jpg" alt="iPhone announcement"  loading="lazy" /></p>
<p>Linux distros were still struggling. Back then, we were stuck with the <a href="https://www.youtube.com/watch?v=RIctzAQOe44"target="_blank" rel="noopener">stupid X11</a>. If a Linux-based OS was cutting edge, X11 on top of it was the worst of both worlds. Apple was smart enough not to adopt it and built Quartz from scratch, improving it with each new OS X release. It took five years to fully stabilize. Only now, in 2017, are we finally moving from X to Wayland/Weston.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/591/steve-ballmer.jpg" alt="Steve Ballmer"  loading="lazy" /></p>
<p>Microsoft also struggled after Bill Gates handed the reins to Steve Ballmer. The road from XP to Windows 10 ran through the disasters of Vista, Windows 8, and Windows Mobile, plus the endless attempts to revive the dominant but defunct Internet Explorer, the largest Walking Dead ever in technology. The Ballmer era was a disaster.</p>
<p>Then the iPad got released and Steve Jobs died.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/592/hi-steve-jobs-memorial-0139.jpg" alt="Jobs Dies"  loading="lazy" /></p>
<h3>Apple is stuck in 2010.<span class="hx:absolute hx:-mt-20" id="apple-is-stuck-in-2010"></span>
    <a href="#apple-is-stuck-in-2010" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>And so are we.</p>
<p>Major Linux distros, Microsoft, PC hardware manufacturers, big industry turnarounds (Nokia, Blackberry, Motorola) the dawn of the GPU era, the end of Moore&rsquo;s Law speed clock wars into parallel computing, the dawn of ARM. It took 10 years for all the smoke to finally settle, and it took having Apple standing still for 6 years for everybody to finally catch up.</p>
<p>Ballmer left the reins to Satya Nadella. Microsoft acquired Xamarin, made huge strides into open source, and even <a href="/en/2016/07/26/the-year-of-linux-on-the-desktop-it-s-usable/">Ubuntu now runs natively on top of Windows 10</a>.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/593/THE_END_TIMES_ARE_HERE-399de53540c79757ac9af535579cdad9.jpg" alt="Satya Nadella"  loading="lazy" /></p>
<p>And the Asians. Samsung, LG, Huawei, the South Koreans and the Chinese all forced the North Americans to push harder.</p>
<p>One last legacy of the Steve Jobs era was both killing Adobe Flash (finally!) and pushing HTML 5 technologies forward, an acceleration of 10 years in 5. It was because of the iPhone that we have the Web as it is.</p>
<p><a href="https://web.archive.org/web/20170114150212/http://www.apple.com/hotnews/thoughts-on-flash/"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/594/flash-dead.jpg" alt="HTML 5 kills Flash"  loading="lazy" /></a></p>
<p>Google jumped in, took over the ball that Internet Explorer left behind. WebKit became the quintessential web browser reference. Javascript became the new application platform, pushed by the many evolving Social Networks.</p>
<p>For better or worse, the social networks forced the new dawn of complex and interactive Web Applications. We got the example of Gmail and Web 2.0 and with the new mobile environment, everything converged into making cross-platform, ubiquitous apps.</p>
<p>It&rsquo;s now easier than ever to switch between desktop OSes because we made it easy to jump around between the desktop and mobile devices already.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/599/alldevices.jpg" alt="All devices"  loading="lazy" /></p>
<p>Why is it easy now to move between macOS or Windows or Linux distros? Or between macOS and iOS, or between Linux and Android? Because most of the software is in &ldquo;the cloud&rdquo;. Linux dominates the Cloud world that Amazon debuted in 2006 with S3 and EC2, now closely followed by Google Cloud and Microsoft Azure and other smaller competitors.</p>
<p>Because there is at least a good Chrome browser in every platform.</p>
<p>Because the apps we use are mostly web enabled: Gmail, Spotify, Slack, Hangout, Twitter, Facebook, YouTube, Netflix, Amazon. The other half are all available natively under iOS or Android: Whatsapp, Waze, Swarm, Snapchat, Instagram.</p>
<p>10 years ago, with the release of the iPhone, the technology industry finally started to put their shit together.</p>
<p>It was a cat and mouse chase until at least 5 years ago, then everybody started to settle.</p>
<p>After Jobs died we still had expectations that Apple would keep pushing forward, albeit at a slower pace without Jobs&rsquo; whip.</p>
<p>It didn&rsquo;t happen. They made bad decision after bad decision and we keep feeling that we are back in the early 90&rsquo;s, under Scully, Spindler or Amelio.</p>
<p><a href="https://web.archive.org/web/20170116083256/http://uk.businessinsider.com/wired-1997-save-apple-predictions-pray-2015-5"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/595/wired_cover.jpg" alt="Apple, Prey"  loading="lazy" /></a></p>
<p>But now, there are fallbacks readily available: Windows 10 Anniversary Edition is finally a competent Windows, bringing back the glory days of the mid-90&rsquo;s. And major Linux distros are cohesive, requiring little to no nerdy tweaking into obscure config files, pushed by Canonical, for better or worse.</p>
<p>And most of the apps we use in our routines are available. Heck, you can find a good web-based cross platform text editor in the form of Atom nowadays.</p>
<p>Apple also left the legacy of ubiquitous cross platform compilation readily available in the form of <a href="https://www.infoq.com/br/presentations/novas-linguagens-o-que-vem-depois-do-ruby"target="_blank" rel="noopener">LLVM</a> (in Portuguese). It served their own needs to have Objective-C available on PowerPC, Intel, ARM and Apple Ax processors. But LLVM is now the best backbone to enable languages such as Rust, RubyMotion, Crystal to exist and easily create fast binaries on multiple platforms.</p>
<p><a href="https://www.tesla.com/blog/welcome-chris-lattner"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/596/11-1484116910-chris-lattner-01.jpg" alt="Chris Lattner leaves Apple to Tesla"  loading="lazy" /></a></p>
<p>&ldquo;Apple&rsquo;s current board of directors need to go&rdquo;. &ldquo;Tim Cook needs to step down&rdquo;. I am sure many are crying out loud like this, but there is no Steve Jobs waiting to return. Apple is so big that the inertia alone will keep them going a few more years, but they are in danger of falling into irrelevance.</p>
<p>Other industries such as energy, health, genetics, are evolving in their own ways, but computer technology is in a dangerous standstill.</p>
<p>Computer Languages stopped evolving in the mid-90&rsquo;s. All &ldquo;new&rdquo; languages are amalgams of language features that were already there since the 70&rsquo;s and 80&rsquo;s. CPU processors are stuck into just making transistors smaller and more energy efficient. And we are already there: <a href="https://www.kickstarter.com/projects/1598272670/chip-the-worlds-first-9-computer"target="_blank" rel="noopener">$9 computers</a> are good enough for trivial tasks such as web browsing. So much that we are putting them everywhere: even a bluetooth toothbrush that keeps track of your brushing sessions.</p>
<p><a href="https://www.dezeen.com/2017/01/06/ara-first-toothbrush-artifical-intelligence-kolibree-ces/"target="_blank" rel="noopener"><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/597/smart-video-toothbrush-ces.jpg" alt="Bluetooth Toothbrush"  loading="lazy" /></a></p>
<p>Did you see CES 2017 products? Pillows and beds that track your sleep and sync data to an app. Washing machines. Vacuum cleaners. Fitness devices. Health devices. Personal assistants such as Alexa. Everything takes data from you and syncs it into &ldquo;the cloud&rdquo;.</p>
<p>&ldquo;The cloud&rdquo; has also peaked. It&rsquo;s ubiquitous, accessible, and downright cheap. Technology in general is dirt cheap nowadays.</p>
<p>Wearables and VR are good gimmicks, but even if they become ubiquitous, they stay just an extension of the use cases that the iPhone revolution bootstrapped.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/600/3017180-inline-mg5205.jpg" alt="Baby monitor"  loading="lazy" /></p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/601/iswimband-drowning-prevention-510px.jpg" alt="iSwimband"  loading="lazy" /></p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/602/6e752109eac4d37830078517b2aefd583d52722a.jpg" alt="mobile"  loading="lazy" /></p>
<p>Mobile, wearables, and social networks only made people more anxious. Giving everyone a &ldquo;voice&rdquo; online didn&rsquo;t improve things, it just raised the overall anxiety. Opinions are in such large supply that they are worth less and less.</p>
<p>Every person online is now a source of terabytes of useless information to generate pseudo-statistics that are useless for the most part. <a href="http://www.techrepublic.com/article/the-dark-side-of-wearables-how-theyre-secretly-jeopardizing-your-security-and-privacy/"target="_blank" rel="noopener">Every person is now defined by a bunch of data in the cloud</a>.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/603/donald-trump-twitter-president.jpg" alt="Trump"  loading="lazy" /></p>
<p>I have no idea where we go from here. As a witness of history, I have to say I miss the excitement of exploring new frontiers. We had it from the mid-90&rsquo;s onward. We took a small break after the Dotcom burst, then got it back full blown in 2004. We lost it after 2010.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/598/20150824-bill-gates-microsoft-windows-95-launch.0.jpg" alt="Windows 95 launch"  loading="lazy" /></p>
<p>2010 has been the longest year I&rsquo;ve ever seen. Maybe settling down is a good thing. Who knows?</p>
]]></content:encoded><category>apple</category><category>tech-market</category><category>personal</category><category>off-topic</category></item><item><title>[Off-Topic] Learning Statistics</title><link>https://akitaonrails.github.io/en/2016/11/01/off-topic-learning-statistics/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2016/11/01/off-topic-learning-statistics/</guid><pubDate>Tue, 01 Nov 2016 17:03:00 -0200</pubDate><description>&lt;p&gt;I&amp;rsquo;m forever talking bits and pieces about statistics. As a committed &lt;a href="https://web.archive.org/web/20161005211959/http://www.akitaonrails.com/science"target="_blank" rel="noopener"&gt;skeptic myself&lt;/a&gt;, I believe I can think beyond the &amp;ldquo;common sense&amp;rdquo; that most people rely on. I&amp;rsquo;m very familiar with biases, skewed data, and wrong questions leading to wrong answers.&lt;/p&gt;
&lt;p&gt;I can probably pinpoint why a certain argument is wrong. But I am very incompetent the other way around: given a proper data collection, how to do proper exploratory data analysis? What are the correct methodologies for any given scenario? And of course, all the math involved.&lt;/p&gt;</description><content:encoded><![CDATA[<p>I&rsquo;m forever talking bits and pieces about statistics. As a committed <a href="https://web.archive.org/web/20161005211959/http://www.akitaonrails.com/science"target="_blank" rel="noopener">skeptic myself</a>, I believe I can think beyond the &ldquo;common sense&rdquo; that most people rely on. I&rsquo;m very familiar with biases, skewed data, and wrong questions leading to wrong answers.</p>
<p>I can probably pinpoint why a certain argument is wrong. But I am very incompetent the other way around: given a proper data collection, how to do proper exploratory data analysis? What are the correct methodologies for any given scenario? And of course, all the math involved.</p>
<p>I just posted 2 articles to shed some light on exactly that. Most developers&rsquo; &ldquo;common sense&rdquo; on dealing with data is primitive aggregations such as sums and averages. Start talking about &ldquo;standard deviation&rdquo; and you lost half of the developer population. Start talking about binomial or Poisson distributions and you lost the remaining half. Now get into linear regression and bayesian statistics, and almost everybody left the room already.</p>
<p>We live in the 21st century. <a href="https://web.archive.org/web/20161109180927/http://www.smartinsights.com/internet-marketing-statistics/happens-online-60-seconds/"target="_blank" rel="noopener">Every 60 seconds</a>, Facebook receives an extra 3.3 million new posts, YouTube receives 400 hours of videos, Instagram receives 55,555 uploaded photos, and WhatsApp exchanges 44.4 million messages. Even e-mail: more than 206 million of them are fired off. By the time you finish reading this post, you can multiply that amount by 5 to 10.</p>
<blockquote>
  <p>&ldquo;We are drowning in information,</p>

</blockquote>
<blockquote>
  <p>but we are starved for knowledge&rdquo;</p>

</blockquote>
<blockquote>
  <p>– Various authors, original probably John Naisbitt</p>

</blockquote>
<p>I will spend a few weeks diving into <a href="https://www.r-project.org/"target="_blank" rel="noopener">R</a>. Yes, many people will talk about Julia, but we can&rsquo;t deny the amazing body of knowledge, the experience, and the robust and extensive set of packages available for R, including learning material. There&rsquo;s a great tool called <a href="https://posit.co/blog/announcing-rstudio-v1-0"target="_blank" rel="noopener">RStudio</a>, which just saw its 1.0 release.</p>
<p>And within the many materials I gathered, one stood out just for its introduction, and I still have to review the book as a whole. It&rsquo;s called <a href="https://web.archive.org/web/20161108174205/http://health.adelaide.edu.au/psychology/ccs/teaching/lsr/"target="_blank" rel="noopener">&ldquo;Learning Statistics with R&rdquo;</a>, by Daniel Navarro from the University of Adelaide, Australia. I find it interesting because it&rsquo;s a psychology professor teaching proper statistics through the basics of R, which is exactly what I wanted. You can purchase a hardcopy or download the free PDF.</p>
<p>I like the introduction so much that I wanted to share a few paragraphs to motivate you to join me in learning better statistics. So let&rsquo;s dive right into it:</p>
<h3>The cautionary tale of Simpson&rsquo;s paradox<span class="hx:absolute hx:-mt-20" id="the-cautionary-tale-of-simpsons-paradox"></span>
    <a href="#the-cautionary-tale-of-simpsons-paradox" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>The following is a true story. In 1973, the University of California, Berkeley got into some trouble over its admissions of students into postgraduate courses. Specifically, the thing that caused the problem was that the gender breakdown of their admissions looked like this &hellip;</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><pre><code>         Number of applicants     Percent admitted
Males           8442                    44%
Females         4321                    35%</code></pre></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>&hellip; and they <strong>got sued</strong>. Given that there were nearly 13,000 applicants, a difference of 9% in admission rates between males and females is just way too big to be a coincidence. Pretty compelling data, right? And if I were to say to you that these data actually reflect a weak bias in favor of females, you&rsquo;d probably think that I was either crazy or sexist.</p>
<p>Oddly, it&rsquo;s actually sort of true &hellip; after Berkeley got sued, people started looking very carefully at the admissions data (Bickel, Hammel, &amp; O&rsquo;Connell, 1975). And remarkably, when they looked at it on a department by department basis, it turned out that most of the departments actually had a slightly higher success rate for female applicants than for male applicants. The table below shows the admission figures for the six largest departments (with the names of the departments removed for privacy reasons):</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><pre><code>                      Males                          Females
Department   Applicants   Percent admitted   Applicants   Percent admitted
A                825             62%            108              82%
B                560             63%             25              68%
C                325             37%            593              34%
D                417             33%            375              35%
E                191             28%            393              24%
F                272              6%            341               7%</code></pre></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>Remarkably, most departments had a <em>higher</em> rate of admissions for females than for males! Yet the overall rate of admission across the university for females was <em>lower</em> than for males. How can this be? How can both of these statements be true at the same time?</p>
<p>Here&rsquo;s what&rsquo;s going on. Firstly, notice that the departments are not equal to one another in terms of their admission percentages: some departments (e.g., engineering, chemistry) tended to admit a high percentage of the qualified applicants, whereas others (e.g., English) tended to reject most of the candidates, even if they were high quality.</p>
<p>So, among the six departments shown above, notice that department A is the most generous, followed by B, C, D, E and F in that order. Next, notice that males and females tended to apply to different departments. If we rank the departments in terms of the total number of male applicants, we get <strong>A</strong> &gt; <strong>B</strong> &gt; D &gt; C &gt; F &gt; E (the &ldquo;easy&rdquo; departments are in bold).</p>
<p>On the whole, males tended to apply to the departments that had high admission rates. Now compare this to how the female applicants distributed themselves. Ranking the departments in terms of the total number of female applicants produces a quite different ordering C &gt; E &gt; D &gt; F &gt; <strong>A</strong> &gt; <strong>B</strong>.</p>
<p>In other words, what these data seem to be suggesting is that the female applicants tended to apply to &ldquo;harder&rdquo; departments.</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/571/Screen_Shot_2016-11-01_at_16.58.47.png" alt="Figure 1"  loading="lazy" /></p>
<p>And in fact, if we look at all Figure 1.1 we see that this trend is systematic, and quite striking. This effect is known as <strong>Simpson&rsquo;s paradox</strong>. It&rsquo;s not common, but it does happen in real life, and most people are very surprised by it when they first encounter it, and many people refuse to even believe that it&rsquo;s real. It is very real. And while there are lots of very subtle statistical lessons buried in there, I want to use it to make a much more important point . . . doing research is hard, and there are lots of subtle, counterintuitive traps lying in wait for the unwary. That&rsquo;s reason #2 why scientists love statistics, and why we teach research methods. Because science is hard, and the truth is sometimes cunningly hidden in the nooks and crannies of complicated data.</p>
<p>Before leaving this topic entirely, I want to point out something else really critical that is often overlooked in a research methods class. Statistics only solves part of the problem. Remember that we started all this with the concern that Berkeley&rsquo;s admissions processes might be unfairly biased against female applicants. When we looked at the &ldquo;aggregated&rdquo; data, it did seem like the university was discriminating against women, but when we &ldquo;disaggregate&rdquo; and looked at the individual behavior of all the departments, it turned out that the actual departments were, if anything, slightly biased in favor of women.</p>
<p>The gender bias in total admissions was caused by the fact that women tended to self-select for harder departments. From a purely legal perspective, that puts the university in the clear. Postgraduate admissions are determined at the level of the individual department (and there are very good reasons to do that), and at the level of individual departments, the decisions are more or less unbiased (the weak bias in favor of females at that level is small, and not consistent across departments). Since the university can&rsquo;t dictate which departments people choose to apply to, and the decision making takes place at the level of the department it can hardly be held accountable for any biases that those choices produce.</p>
<p>That was the basis for my somewhat glib remarks earlier, but that&rsquo;s not exactly the whole story, is it? After all, if we&rsquo;re interested in this from a more sociological and psychological perspective, we might want to ask why there are such strong gender differences in applications. Why do males tend to apply to engineering more often than females, and why is this reversed for the English department? And why is it the case that the departments that tend to have a female-application bias tend to have lower overall admission rates than those departments that have a male-application bias? Might this not still reflect a gender bias, even though every single department is itself unbiased? It might.</p>
<p>Suppose, hypothetically, that males preferred to apply to &ldquo;hard sciences&rdquo; and females prefer &ldquo;humanities&rdquo;. And suppose further that the reason why the humanities departments have low admission rates is because the government doesn&rsquo;t want to fund the humanities (Ph.D. places, for instance, are often tied to government funded research projects). Does that constitute a gender bias? Or just an unenlightened view of the value of the humanities? What if someone at a high level in the government cut the humanities funds because they felt that the humanities are &ldquo;useless chick stuff&rdquo;. That seems pretty blatantly gender biased. None of this falls within the purview of statistics, but it matters to the research project.</p>
<p>If you&rsquo;re interested in the overall structural effects of subtle gender biases, then you probably want to look at both the aggregated and disaggregated data. If you&rsquo;re interested in the decision making process at Berkeley itself then you&rsquo;re probably only interested in the disaggregated data.</p>
<p>In short there are a lot of critical questions that you can&rsquo;t answer with statistics, but the answers to those questions will have a huge impact on how you analyze and interpret data. And this is the reason why you should always think of statistics as a tool to help you learn about your data, no more and no less. It&rsquo;s a powerful tool to that end, but there&rsquo;s no substitute for careful thought.</p>
<h3>Download the Book<span class="hx:absolute hx:-mt-20" id="download-the-book"></span>
    <a href="#download-the-book" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Did you get intrigued? So <a href="https://web.archive.org/web/20161108174205/http://health.adelaide.edu.au/psychology/ccs/teaching/lsr/"target="_blank" rel="noopener">download the book</a> and let&rsquo;s study some statistics beyond the mere basics. I am not saying this is the best book, just one that seems interesting, and if you happen to know a good book teaching statistics for novices through the use of R without any prior knowledge, let me know in the comments section below.</p>
]]></content:encoded><category>science</category><category>learning</category><category>off-topic</category></item></channel></rss>