<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Pore Over the Tech Scrolls</title>
        <link>https://paragraph.com/@pore-over-the-tech-scrolls</link>
        <description>Hey there, I'm Jack, a blockchain explorer, JPEGs collector, and web developer. Mixing tech writing with semiotics and philosophy.</description>
        <lastBuildDate>Thu, 14 May 2026 05:35:33 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Pore Over the Tech Scrolls</title>
            <url>https://storage.googleapis.com/papyrus_images/6879a1476e57c583252ac8f755589d9194e1d79dab1a3cc3499c08eca230dd70.jpg</url>
            <link>https://paragraph.com/@pore-over-the-tech-scrolls</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Rear Window on Innovation: the Subtle Strengths of Boring Technology]]></title>
            <link>https://paragraph.com/@pore-over-the-tech-scrolls/rear-window-on-innovation-the-subtle-strengths-of-boring-technology</link>
            <guid>t0RnwxCFi7GYXUKDbRZE</guid>
            <pubDate>Fri, 10 May 2024 09:25:40 GMT</pubDate>
            <description><![CDATA[A few days ago, I was sitting as usual in front of an online React course that I purchased for an incredible 89% off. After working through yet another exercise module, I decided that I had enough—the thought of spending four hours on a quiz app didn’t appeal to me—and wanted to start my own project. For this project, I needed a database and, as you know my love for anything SQL-related, I narrowed my options down to either using plain PHP or Laravel. Eventually, I opted for Laravel because I...]]></description>
            <content:encoded><![CDATA[<p>A few days ago, I was sitting as usual in front of an online React course that I purchased for an incredible 89% off. After working through yet another exercise module, I decided that I had enough—the thought of spending four hours on a quiz app didn’t appeal to me—and wanted to start my own project.</p><p>For this project, I needed a database and, as you know my love for anything SQL-related, I narrowed my options down to either using plain PHP or Laravel. Eventually, I opted for Laravel because I like its object-relational mapper (ORM), Eloquent. While at it, I reached out to a friend developer to ask for some advice and expressed my concerns about using Laravel and CRUD operations to simply scrape data off an API and populate a MySQL database. It seemed excessive—admittedly, it was.</p><p>His response was intriguing; he recommended GraphQL for such front-end tasks. Eager to try something new, the junior developer in me responded instantly, &quot;Great, I will use that.&quot; To my surprise, I hadn’t noticed the three floating dots in the chat indicating he was still typing. His follow-up message arrived just after my enthusiastic reply: “But I would avoid using it for now, just stick to what you know.” And then he shared a link to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mcfunley.com/choose-boring-technology">McKinley’s March 2015 article, “Choose Boring Technology”.</a></p><p>After reading the article, I was convinced to continue with Laravel. Here&apos;s why.</p><p>McKinley introduces the concept of <em>Innovation Tokens</em>. He proposes that companies hypothetically have a limited number of these tokens to spend on new technologies. However, companies often overestimate their capacity and end up using more innovation tokens than they have available, which is clearly detrimental. The underlying message is to conserve resources, given the finite number of tokens available to spend.</p><p>To illustrate this idea further, consider the case of Immanuel Kant. Known for his structured routine, Kant&apos;s daily schedule was so predictable that neighbors would set their clocks by his walking times. He believed that such regimentation freed his mind from mundane decisions, enabling him to focus entirely on his philosophical pursuits.</p><p>In essence, Kant effectively allocated his &quot;innovation tokens&quot; to philosophy rather than trivial matters. Thus, it&apos;s reasonable to suggest that Kant would have endorsed the concept of innovation tokens.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a3e406d5cfcc6df1b13089d9426e0632f4b25b352c2c6a7d0024b74fc99709c3.png" alt="Kant&apos;s purported walking route, Source:" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Kant&apos;s purported walking route, Source:</figcaption></figure><p>Kant&apos;s purported walking route, Source:</p><p>Given the finite nature of these tokens, the logical question arises: how should they be spent? Yes, you got it: <strong>boring technology</strong>.</p><p>But what exactly does McKinley mean by &quot;boring&quot;?</p><blockquote><p>“Boring” should not be conflated with “bad.” There is technology out there that is both boring and bad [2]. You should not use any of that. But there are many choices of technology that are boring and good, or at least good enough. MySQL is boring. Postgres is boring. PHP is boring. Python is boring. Memcached is boring. Squid is boring. Cron is boring.” - McKinley*, Choose Boring Technology* (2015)</p></blockquote><p>According to McKinley, boring technologies are not inherently bad. Instead, they often align with being &quot;constrained,&quot; indicating that their capabilities and, more importantly, their failure modes are well understood. Drawing upon the &quot;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.theuncertaintyproject.org/tools/rumsfeld-matrix">Rumsfeld matrix</a>,&quot; we can view it as follows: there are &apos;known unknowns&apos; and &apos;unknown unknowns&apos; (the latter being the problematic category).</p><p>Known unknowns are variables or outcomes that we are aware exist, but whose impact or nature we cannot predict accurately. In the context of using &quot;boring&quot; technology, a known unknown could refer to predictable types of failures that are understood and can be planned for. For example, a database like MySQL might fail under certain well-documented conditions (such as overload during high traffic), and although the exact circumstances of the next occurrence are unknown, the potential for such an event is recognized.</p><p>Unknown unknowns refer to unforeseen challenges that arise, which were not anticipated or previously considered - not to be conflated with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Black_swan_theory"><em>Black Swans</em></a>.</p><p>The risk of unknown unknowns is typically higher with newer technologies where the breadth of potential problems has not yet been fully explored or documented. Because these technologies have not been tested across a broad range of real-world scenarios, their failure modes are not well understood, making their risks harder to manage.</p><p>This risk assessment and prevalence of &quot;boring&quot; technologies in order to mitigate risk gets boosted by another important concept, often overlooked in tech. Namely that <strong>technologies don&apos;t happen in isolation</strong>.</p><p>In modern organizational environments, technology choices impact not just individual projects but also cross-functional teams and the broader business ecosystem. The integration of a new technology can affect workflows, introduce new types of risks, and require new knowledge or skills. Given our current context of highly interconnected systems (including your company and your code), I must approach this from Taleb’s perspective on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Antifragile_(book)">antifragility</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/57a8eb6df5c3cb5b5daa0cbbf36f7b06ec11616c1c57fbc9f6419c421d66abc4.png" alt="The enigmatic superhero known as the Black Swan Man, believed by many to be none other than Taleb himself." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">The enigmatic superhero known as the Black Swan Man, believed by many to be none other than Taleb himself.</figcaption></figure><p>A quick refresher:</p><ul><li><p>Fragile: A system or entity that is easily damaged or deteriorates when subjected to stress, shocks, or unexpected changes.</p></li><li><p>Robust: A system or entity that can withstand or resist stress, shocks, or unexpected changes without suffering damage.</p></li><li><p>Antifragile: A system or entity that not only resists but also benefits and improves from stress, shocks, or unexpected changes.</p></li></ul><p>Resisting the allure of solely pursuing <em>Antifragility</em>, a company should instead strive for a foundation of robustness, sprinkled with elements of antifragility strategically incorporated. While I understand the ambition of companies aiming to solve world hunger or revolutionize the global economic system, let&apos;s approach it methodically, one step at a time.</p><p>&apos;Boring&apos; technologies, which are well-understood and have predictable behavior and failure modes, contribute to robustness. Because they are tried and tested, these technologies are less likely to cause unexpected disruptions and can handle stresses more predictably, thereby stabilizing the system.</p><p>By using technologies with known behaviors and interactions, organizations can reduce the incidence of negative surprises (reduce fragility) and focus on growth and innovation in other areas, potentially turning challenges into opportunities - read: you can taste antifragility too.</p><p>The costs of new technologies can go beyond what was initially expected and calculated. Adding new software to an existing stack can bring unexpected costs. These include training for team members, potential compatibility issues with existing systems (like databases), and unforeseen failures that have not yet been documented or understood - <em>unknown unknowns</em>. Such risks highlight the fragility introduced by new, untested technologies in a connected system. If these risks materialize, they can cascade through the network, affecting various parts of the organization.</p><p>Of course, there&apos;s a downside to this conservative approach. What if the new technology is genuinely superior, and you&apos;re simply not aware of it yet?</p><blockquote><p>“The problem with “best tool for the job” thinking is that it takes a myopic view of the words “best” and “job.” Your job is keeping the company in business, god damn it. And the “best” tool is the one that occupies the “least worst” position for as many of your problems as possible.” - Dan McKinley, <em>Choose Boring Technology</em> (2015)</p></blockquote><p>By prioritizing &apos;boring&apos; technologies and being cautious with the introduction of new technologies, companies can manage their exposure to systemic risks. This doesn&apos;t mean shunning innovation but rather integrating new technologies thoughtfully and with full awareness of their potential impacts on the entire system.</p><p>Before integrating a new technology, pause and assess whether you can address your existing challenge without introducing anything new. If the answer is &apos;yes,&apos; refrain from incorporating a new tech into the stack. However, if the answer leans towards &quot;no&quot;—it rarely is just &quot;no&quot;—then proceed with the implementation. And this concludes the article.</p><p>...</p><p>Yes, I know what you are thinking. As they say in Italy, <em>&quot;I know my chickens.&quot;</em> Being a developer myself, I understand that the answer is rarely a straightforward yes or no, but often falls into the realm of <em>&quot;Yeah, I guess I could do it, but it would be too hard and clunky.&quot;</em> In such cases, McKinley, in 2015, suggested being more creative. In 2024, however, you even have ChatGPT to assist you with that creativity, if needed. No excuses, unfortunately.</p><p>In conclusion, the insights shared in this article stem from my desire to embark on a personal project using familiar, &quot;boring&quot; technology. When asked what would make a developer happy on the job, many might respond with a desire to work with certain programming languages or tools. This inclination often reflects a tendency among developers to chase the latest trends and focus on short-term gratification, sometimes neglecting broader considerations beyond technical aspects—something most developers are really good at doing.</p><p>However, in my brief experience, true fulfillment for a developer lies in the act of shipping—delivering tangible results. Therefore, it&apos;s essential not to squander valuable time constantly learning new stacks, languages, or endlessly tweaking minor details like changing Visual Studio Code themes multiple times a day (a habit all too familiar, unfortunately).</p><p>This notion brings to mind a tale attributed to a renowned screenwriter—perhaps William Goldman, though the exact source eludes me. In a lecture to aspiring writers, he bluntly asked, &quot;Who among you wants to be a screenwriter?&quot;, and when the majority of students raised their hands, he abruptly replied, “So what are you doing here? Go home and write!” His message was clear: take action.</p><p>So, what am I doing here? Simply attempting to delay encountering Laravel for as long as possible, I suppose. But no need to fret, I&apos;m off home now to write—or should I say, to code.</p><p><em>If you enjoyed this article, please consider giving me a follow. Your feedback is greatly appreciated. And remember, I&apos;ll be writing more whenever I need a break from code and API calls.</em></p>]]></content:encoded>
            <author>pore-over-the-tech-scrolls@newsletter.paragraph.com (Pore Over the Tech Scrolls)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/c213bd2f06e90c2168470f66f38a29c58226f6c2b5854da5f1c899658b37485a.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>