<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ingo Steinke, web developer</title>
    <description>The latest articles on DEV Community by Ingo Steinke, web developer (@ingosteinke).</description>
    <link>https://dev.to/ingosteinke</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg</url>
      <title>DEV Community: Ingo Steinke, web developer</title>
      <link>https://dev.to/ingosteinke</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ingosteinke"/>
    <language>en</language>
    <item>
      <title>Beyond the Tech Tree: What Games Can't Imagine</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Fri, 05 Jun 2026 15:51:26 +0000</pubDate>
      <link>https://dev.to/ingosteinke/beyond-the-tech-tree-what-games-cant-imagine-fno</link>
      <guid>https://dev.to/ingosteinke/beyond-the-tech-tree-what-games-cant-imagine-fno</guid>
      <description>&lt;p&gt;All good things come in threes, and I don't want to end a semi-serious series too pessimistically. The previous post followed up on an original idea, quickly drafted, crafted, and published, with a pseudo-deep-dive written by AI based on my scribbles, polished according to Grammarly's suggestions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Limits of Simulation
&lt;/h2&gt;

&lt;p&gt;I mentioned the "unknown unknowns". Is it truly impossible to achieve a truly peaceful and sustainable society, at least within the constraints of a game server like Civilization, FreeCiv, or SimCity, and why?&lt;/p&gt;

&lt;p&gt;Simulation games combine utopian and dystopian aspects. A sophisticated player could strive to dominate the game as a benevolent dictator, balancing freedom and happiness with strict constraints and invincible economic and military power. History has seen similar rulers praised for periods of stability, trade, and progress.&lt;/p&gt;

&lt;p&gt;However, progress might imply disruptive innovations. Rulership will eventually give rise to rivalry, at the latest, after the death of a unifying leader.&lt;/p&gt;

&lt;p&gt;That's disruptive like the literary turn I'll take, inspired by the image below that AI created based on the previous paragraph. What is this? Tron meets New York City? The mythical monolith from outer space in 2001: A Space Odyssey?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcl8eu1l0g1gl0sc26x76.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcl8eu1l0g1gl0sc26x76.png" alt="what is it" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The monolith would be a fitting metaphor. In Arthur C. Clarke's and Stanley Kubrick's vision, it appears as an object that cannot be understood from within the cognitive framework of those who encounter it. It does not merely represent a new technology on the tech tree. It represents an entirely different tech tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simulating Future as an Extension of Our Present
&lt;/h2&gt;

&lt;p&gt;Most strategy and simulation games are built around the assumption that the future is an extension of the present. New discoveries unlock predictable branches of development. Bronze leads to iron. Steam leads to electricity. Literacy leads to democracy. The player is invited to optimize, accelerate, and prioritize, but rarely to question the structure itself.&lt;/p&gt;

&lt;p&gt;This reveals a deeper limitation of simulation. A game can model uncertainty, but only uncertainty anticipated by its designers. Every possible future already exists somewhere in the code, waiting to be unlocked. Even random events are predefined categories selected from a finite set of possibilities. The truly unknown cannot appear because it has never been encoded.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unforeseen Glitches
&lt;/h3&gt;

&lt;p&gt;Enter &lt;em&gt;the glitch&lt;/em&gt;: some classic games weren't remembered for their original intent alone, but for accidental features and glitches that added surprise, chaos, and creativity.&lt;/p&gt;

&lt;p&gt;As with LLM-based AI, we're trying to contain the chaos and undesirable side effects of a system that already feels out of control. While it's still too restricted and predictable in some ways, it's already going beyond what we, as human designers, can foresee.&lt;/p&gt;

&lt;p&gt;Columbus did not discover a blank space on a map, and he surely didn't find what he thought he was looking for. Instead of discovering a shorter trade route to India, he started a massive, permanent transfer of plants, animals, culture, human populations, and communicable diseases between the Eastern and Western Hemispheres. This historic pivot completely altered the global economy, shifted ecological landscapes across continents, and triggered a genocide that laid the foundation for the rise of European transatlantic empires and modern global capitalism.&lt;/p&gt;

&lt;h3&gt;
  
  
  Errors of Mass Destruction
&lt;/h3&gt;

&lt;p&gt;Ironically, colonization wasn't only unintended; it was unnecessary, even though it might have stabilized Europe's economic situation. By the time Christopher Columbus initiated the Columbian Exchange in 1492, the foundational shifts of the Early Renaissance, led by figures like Dante, Petrarch, Giotto, and Brunelleschi, had already taken place.&lt;/p&gt;

&lt;p&gt;In the Civilization series, this historical trajectory is explicitly mechanized through the interaction of the Tech Tree, Great People, and Cultural Wonders. A civilization can lead the world in cultural and scientific advancement—much like the Islamic Golden Age—but if its infrastructure is pillaged by external invasions (such as barbarian hordes, crusaders, or rival military empires) or if it lacks the economic capital to fund universities and labs, its technological lead evaporates. Ultimately, Civilization gamifies the perspective that scientific dominance is not an inherent cultural trait, but a fragile byproduct of geography, resource accumulation, and sustained institutional stability.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the Technology Tree fails to fit
&lt;/h2&gt;

&lt;p&gt;Beyond the known unknowns may lie developments that are inaccessible not because of insufficient effort or knowledge, but because the system through which we perceive and reason imposes limits that cannot be overcome from within. A civilization game can simulate the invention of gunpowder because the designers know gunpowder exists. It can add a cure for cancer and deep space travel, because scientists are currently working on it. It cannot simulate the equivalent of an invention that neither the designers nor the players can imagine.&lt;/p&gt;

&lt;p&gt;Perhaps this is why every technology tree eventually feels artificial. It transforms history into a sequence of expected upgrades, while many of the most transformative shifts in human history were not upgrades at all. They changed the rules, the goals, or even the definition of progress itself. &lt;/p&gt;

&lt;p&gt;Agriculture, writing, money, science, democracy, the internet- each reshaped the landscape in ways that would have been difficult to describe from the perspective of the world that came before.&lt;/p&gt;

&lt;p&gt;I still like the idea of obsoletion, although it lacks accuracy. Cars might have obsoleted horseback riding. But if AI obsoletes literacy, then what will we do when we no longer have access to our commodity?&lt;/p&gt;

&lt;p&gt;What I liked most about science fiction though, at least when I was young, is the possibility of total surprise. Deus ex machina obsoleting every expectation. A spaceship passing a black hole to apparate where no human has been before. &lt;/p&gt;

&lt;h2&gt;
  
  
  A Space Opera Fallacy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm98v591ssvdevws3vru4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm98v591ssvdevws3vru4.png" alt="An astronaut, a monkey and a baby looking at a mystical monolyth decorated with what looks like integrated circuits of a futuristic electronic device" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The monolith, then, is not a symbol of technological progress. It is a symbol of conceptual discontinuity. It suggests that the next decisive step is not hidden further down the tree but somewhere outside the map entirely.&lt;/p&gt;

&lt;p&gt;Ironically, the more perfectly our tools answer questions, the fewer opportunities we seem to have to experience that process ourselves.&lt;/p&gt;

&lt;p&gt;The challenge of the future may not be teaching machines to think. It may be preserving reasons for humans to think when they think that they no longer have to. Food first, then morality, and humankind is just three meals away from barbarity or revolution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the End of the Map
&lt;/h2&gt;

&lt;p&gt;Real progress begins where that process ends: at the edge of the map, beyond the tech tree, facing questions for which there is no walkthrough, no wiki, and no prompt that can tell us what comes next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9yojbasoi4h9rlmyul6m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9yojbasoi4h9rlmyul6m.png" alt="abstract image with question marks symbolizing an unknown future" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The future may belong not to those who find answers fastest, but to those who remain curious when no answer exists yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cliffhanger, Credits and Disclaimer
&lt;/h3&gt;

&lt;p&gt;Thanks for your feedback and comments so far, which have inspired me to continue this series and to experiment with human-machine co-creation beyond what I would usually do.&lt;/p&gt;

&lt;p&gt;This series, unlike most of my other publications, was mostly written and edited by AI, based on my original scribbles, and so are the images. I didn't even read every word. I only curated and changed what didn't fit at all. Later articles, besides this series, will return to a more traditional, human-authored approach.&lt;/p&gt;

&lt;p&gt;What's your personal perspective? Share it in the comments!&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Dystopian Civilization Scenarios</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Fri, 05 Jun 2026 14:58:17 +0000</pubDate>
      <link>https://dev.to/ingosteinke/dystopian-civilization-scenarios-4422</link>
      <guid>https://dev.to/ingosteinke/dystopian-civilization-scenarios-4422</guid>
      <description>&lt;p&gt;Gaming, like AI, is far from what fascinates me most about technology and creative development. Still, that's what many fellow developers talk about these days, and what makes for good, controversial topics for further nerdy small talk. &lt;/p&gt;

&lt;p&gt;This post continues the ideas from my earlier article, &lt;a href="https://dev.to/ingosteinke/learning-lessons-from-gaming-1jgm"&gt;Learning Lessons from Gaming&lt;/a&gt;. As an experiment, some of the concepts below were developed in conversation with AI. Later articles, besides this series, will return to a more traditional, human-authored approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deliberately Dystopian Civilization Game Ruleset
&lt;/h2&gt;

&lt;p&gt;An idea that came to my mind was a deliberately dystopian Civilization-style ruleset: a future society in which AI has made Literacy obsolete, while a hidden, initially inaccessible branch of the technology tree contains potential biological threats. Instead of discovering advanced technologies in ancient ruins, players might accidentally unlock viruses such as Ebola, Hantaan virus, or COVID by exploring a remote village or an abandoned research facility.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Hidden Tech Tree Branch: "Biological Anomalies"&lt;/li&gt;
&lt;li&gt;The Trigger: Entering a Tribal Village (Goody Hut) post-industrial era.&lt;/li&gt;
&lt;li&gt;The Mutation: High-tech ruins contain preserved pre-collapse pathogens.&lt;/li&gt;
&lt;li&gt;The Risk: 5% base chance per unmapped ancient ruin.
The Consequences: Immediate global pandemic notification with no text, just warning symbols.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wonder what could make this fail in practice, like coding a peaceful civ ruleset but still either getting veterans and pirate barbarians or a game crash?&lt;/p&gt;

&lt;h3&gt;
  
  
  What would break first?
&lt;/h3&gt;

&lt;p&gt;The history of Civilization modding suggests that highly complex systems often fail in surprising ways. Minor code changes can have major consequences. A famous example from Civilization VI (&lt;a href="https://www.reddit.com/r/civ/comments/oe4yqg/3_lines_of_code_in_april_patch_that_shot_the_ai/" rel="noopener noreferrer"&gt;3 lines of code in April patch that shot the AI through the head&lt;/a&gt;) involved only a few lines of code that dramatically altered AI priorities, leaving computer-controlled civilizations unable to pursue basic expansion and military strategies. Small assumptions embedded deep in a system can reshape the entire simulation.&lt;/p&gt;

&lt;p&gt;The same applies to hypothetical "peaceful civilization" rule sets. You can disable wars, reduce aggression, and encourage cooperation, yet veteran barbarians still appear. Pirate raids still happen. Unexpected conflicts emerge. Sometimes the game crashes entirely, as I experienced when using the ruleset editor and a local FreeCiv server long ago. Even if current FreeCiv updates are more stable, the fundamental issue remains.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Peaceful Ruleset" Barbarian Paradox
&lt;/h3&gt;

&lt;p&gt;Coding a peaceful ruleset while still getting veterans or aggressive pirate barbarians is a classic engine-priority conflict.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bdmvx4md8p17888wxh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bdmvx4md8p17888wxh8.png" alt="A personal computer programmed for piece conflicting with simulated historical barbarians" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Turning off aggressive AI parameters or checking "No Barbarians" only changes the civilized AI agendas and basic spawn rates. Barbarians operate under a completely distinct sub-engine loop (BarbarianManager). If your mod does not comprehensively overwrite the special game mode triggers—like the Barbarian Clans Mode scripts—the engine will bypass your peaceful ruleset.&lt;/p&gt;

&lt;p&gt;As a result, the game will utilize fallbacks to spawn specialized units (like Unique Unit veterans or high-tier naval raiders) in unrevealed tiles.&lt;/p&gt;

&lt;p&gt;The more I thought about it, the more the fact that the mod failed became more interesting than the original concept.&lt;/p&gt;

&lt;p&gt;Perhaps simulations teach us most when they resist our intentions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impossible Sustainable Circular Economy?
&lt;/h2&gt;

&lt;p&gt;SimCity offered a similar lesson. Building a resilient, circular economy based on recycling and local sustainability is possible, but considerably harder than pursuing growth through mining and trade. The game's systems reward some strategies more naturally than others because they encode assumptions about economics, infrastructure, and human behavior.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjvjwdzfmj4icbac58e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjvjwdzfmj4icbac58e5.png" alt="Utopian and dystopian aspects of civilization simulation" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why is it so difficult to construct a functioning civilization simulator based solely on peaceful cooperation? Why do conflict, competition, scarcity, and disruption keep reappearing as fallback states? Is that merely a limitation of the game engine, or does it reflect assumptions inherited from the historical realities the simulation was built to represent?&lt;/p&gt;

&lt;p&gt;That's what the game is teaching after all, much like SimCity taught that, while a resilient recycling economy is hard to achieve, betting on growth and international trade alone isn't sustainable either, unless you believe space travel will open up unlimited additional growth opportunities?&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-World Constraints Implications
&lt;/h3&gt;

&lt;p&gt;I am not talking about failure within the scenario, but about what it teaches us about the constraints of the real world the scenario was modeled after? That raises a question extending far beyond games.&lt;/p&gt;

&lt;p&gt;AI systems exhibit comparable constraints. They can remix existing knowledge with astonishing speed, but they remain bounded by the material they were trained on. They are exceptionally good at exploring the known space of possibilities. Exploring genuinely unknown territory might be fundamentally impossible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unknown Unknowns
&lt;/h2&gt;

&lt;p&gt;"There are unknown unknowns," a great philosopher once said. Turns out that what I would ascribe to Luhmann, Habermas, or Plato, or a thought experiment that you might think you'd learn about in &lt;a href="https://civilization.fandom.com/wiki/Sun_Tzu%27s_War_Academy_(Civ2)" rel="noopener noreferrer"&gt;Sun Tzu's War Academy&lt;/a&gt;, is allegedly &lt;a href="https://en.wikipedia.org/wiki/There_are_unknown_unknowns" rel="noopener noreferrer"&gt;attributed to a controversial American politician&lt;/a&gt; quoting a common military and NASA space agency saying, inspired by prior psychological research.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A related 2x2 grid was created in 1955 by two American psychologists, Joseph Luft and Harrington Ingham, in their development of the Johari window, a "graphic model of interpersonal behavior.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Similar wisdom has "been widely quoted since the 19th century as anonymous ancient knowledge, or alternatively attributed to authors ranging from Confucius to Bruce Lee," according to the same Wikipedia article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqersk54uvwqnlq32fwlx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqersk54uvwqnlq32fwlx.png" alt="Unknown unknowns" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When a simulation repeatedly rejects a scenario, what exactly are we learning? Are we discovering a limitation of the software, a bias in the model, or a genuine constraint of the world the model was designed to represent? Are our tools just holding up a mirror to the limitations of human cognition?&lt;/p&gt;

&lt;p&gt;Note that this article, unlike most of my other publications, was mostly written and edited by AI, based on my original scribbles, and so are the images. Later articles, besides this series, will return to a more traditional, human-authored approach.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Learning Lessons from Gaming</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Tue, 02 Jun 2026 14:00:58 +0000</pubDate>
      <link>https://dev.to/ingosteinke/learning-lessons-from-gaming-1jgm</link>
      <guid>https://dev.to/ingosteinke/learning-lessons-from-gaming-1jgm</guid>
      <description>&lt;p&gt;I don't identify as a gamer. I occasionally participate in board games or an amateur football match, and I rarely spend time playing computer games. But I used to.&lt;/p&gt;

&lt;p&gt;One remnant of that time is Civilization, or its open-source spin-off, &lt;a href="https://en.wikipedia.org/wiki/Freeciv" rel="noopener noreferrer"&gt;FreeCiv&lt;/a&gt;, which you can also play online for free. I already tried and failed to use the FreeCiv game engine to illustrate the concept of Astro's Islands Architecture.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/react-recap-years-later-thanks-to-astro-2b4a" class="crayons-story__hidden-navigation-link"&gt;React Recap, years later, thanks to Astro&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2817005" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/react-recap-years-later-thanks-to-astro-2b4a" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 3 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/react-recap-years-later-thanks-to-astro-2b4a" id="article-link-2817005"&gt;
          React Recap, years later, thanks to Astro
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/astro"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;astro&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/typescript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;typescript&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/react-recap-years-later-thanks-to-astro-2b4a" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;29&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/react-recap-years-later-thanks-to-astro-2b4a#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              5&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;I then used AI for my &lt;a href="https://dev.to/ingosteinke/react-recap-years-later-thanks-to-astro-2b4a"&gt;React recap post&lt;/a&gt; last year, to generate a pseudo drawing inspired by my civilization idea and the visual style of my hand-written sketches.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmo4a6234oqo2jqadx7yn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmo4a6234oqo2jqadx7yn.png" alt="islands mock up" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is another illustration that looks much more like the actual game.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzufvcvbvxzvp8pevsdsc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzufvcvbvxzvp8pevsdsc.jpg" alt="mock freeciv islands scenario" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What made me want to write another article is yet another aspect of that game: the technology tree. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa08c4bm6khdif9f4bxdy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa08c4bm6khdif9f4bxdy.png" alt=" " width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remotely inspired by historic civilizations, there are different alternative and interdependent paths of technical progress. Achieved by active research, via the Great Library, by conquering more sophisticated contenders or creating alliances. &lt;/p&gt;
&lt;h3&gt;
  
  
  The Technology Tree and its False Promises
&lt;/h3&gt;

&lt;p&gt;Those achievements promise to give you an advantage, but using them can actually hinder your progress, especially when wasting resources striving for disadvantageous achievements, even more so as technology becomes obsolete by newer alternatives.&lt;/p&gt;

&lt;p&gt;Developers know that feeling from software engineering, &lt;a href="https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln"&gt;legacy code maintenance&lt;/a&gt; and education.&lt;/p&gt;
&lt;h2&gt;
  
  
  Trade-Offs
&lt;/h2&gt;

&lt;p&gt;We need to make decisions and compromise and decide where to steer our limited resources and efforts like time, money and mental capacity.&lt;/p&gt;

&lt;p&gt;AI makes some things easier, while others get harder. AI is one of those technologies that many might wish we hadn't invented at all. But we had for fear of missing out and falling behind. &lt;/p&gt;
&lt;h3&gt;
  
  
  FOMO and Sunk Cost Fallacies
&lt;/h3&gt;

&lt;p&gt;While we can't turn back time, we can still change our goals and adapt our strategies. Unlike the sunk cost fallacy feeling that previous effort is lost, it isn't.&lt;/p&gt;

&lt;p&gt;Learning and problem-solving always have an intrinsic value, training our mind. Even if we just wasted time and effort learning the wrong (spoken or programming) language or an outdated software framework, we have still practiced. And many concepts remain the same throughout information technology, design and marketing.&lt;/p&gt;
&lt;h3&gt;
  
  
  Repurposing
&lt;/h3&gt;

&lt;p&gt;Much like in the civ game, we should constantly question and adjust our (tech) goals and priorities, like abandoning a started project and repurposing the allocated invested effort into building something similar. In the game, you can just switch from building one world wonder like The Pyramids and repurpose previous investment taken into account for starting to build The Great Library. It's not that easy in real life, but still those can be mental models that help.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo71ltjas9b3ggrocwcbq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo71ltjas9b3ggrocwcbq.png" alt="Repurposing building effort in the freeciv game" width="277" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dealing with scarcity is one crucial aspect of those kinds of civilization-building games, while in real life, we tend to deceive ourselves, acting like we have infinite time. Then we're getting hectical, distracted and frustrated, or ideally at least hyper-focused, when a deadline's near.&lt;/p&gt;
&lt;h3&gt;
  
  
  Productive Procrastination
&lt;/h3&gt;

&lt;p&gt;Procrastination becomes dangerous when it prevents us from starting or finishing what we intended to do. Starting is especially important because it quickly dispels illusions. Once you begin, you discover what actually works, where the difficulties are, and what mistakes you've made in your assumptions. You can also identify problems that require external support. For example, if you don't have permission to access a required file, asking for access too late can cost valuable time and jeopardize the entire project.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/productive-procrastination-vs-apparent-productivity-fbd" class="crayons-story__hidden-navigation-link"&gt;Productive Procrastination vs. Apparent Productivity&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-970648" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/productive-procrastination-vs-apparent-productivity-fbd" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 21 '22&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/productive-procrastination-vs-apparent-productivity-fbd" id="article-link-970648"&gt;
          Productive Procrastination vs. Apparent Productivity
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/watercooler"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;watercooler&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/creativity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;creativity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/motivation"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;motivation&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/productive-procrastination-vs-apparent-productivity-fbd" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;63&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/productive-procrastination-vs-apparent-productivity-fbd#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  Definition of Done
&lt;/h2&gt;

&lt;p&gt;Often, we think we're finished too early. While the 80/20 principle can help prevent perfectionism, the opposite trap is stopping before the work is truly complete.&lt;/p&gt;

&lt;p&gt;Implementation is more than simply building something. It includes testing, deployment, communication, and verification that the intended outcome has been achieved. Depending on the context, "done" may mean that the feature is live, the document has been delivered, the client has approved the work, the message has been received, or the invoice has been paid.&lt;/p&gt;

&lt;p&gt;Choose a clear definition of done before you begin. Otherwise, you risk mistaking activity for progress and completion for success.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>learning</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Leverage AI as a Customer</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Tue, 12 May 2026 06:25:54 +0000</pubDate>
      <link>https://dev.to/ingosteinke/leverage-ai-as-a-customer-2pp</link>
      <guid>https://dev.to/ingosteinke/leverage-ai-as-a-customer-2pp</guid>
      <description>&lt;p&gt;Using AI can save time, friction and money, when used wisely. AI won't replace experts and craftspeople though. Here is why (not how, though, that would be another post) and how to explain to our customers what AI can do and what it can't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can AI make a Website in 2 Days?
&lt;/h2&gt;

&lt;p&gt;"AI can do a website in two days" isn't web design and development. It's called prototyping. Web designers, project managers, and web developers fear those customers who don't know what they want, but who'll tell you what they didn't want only after their work has been done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are you that type of Client?
&lt;/h2&gt;

&lt;p&gt;If you're that type of customer, you can leverage AI to sort your thoughts and do some sketches and click dummy mock ups. AI isn't great at producing quality code or taking responsibility, but it's good at producing anything that you can look at and talk about. AI won't get tired and doesn't charge you hourly rates (at least not yet at the time of writing) for discussing over and over verbosely and trying to answer the most basic questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hallucination, Stubbornness and Alternative "Facts"
&lt;/h2&gt;

&lt;p&gt;As ChatGPT, Claude, and other AI services tell you in their fine print, AI can make mistakes. AI is quite likely to make mistakes. AI is known to hallucinate, tell you what you want to hear or else insist on a made up random claim not sustained by any facts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Too long, too often
&lt;/h2&gt;

&lt;p&gt;When AI says "often", it &lt;em&gt;often&lt;/em&gt; means "always" or "never" or "maybe, I don't know". When you see a word like "often" or "many", take it as a guess or ask to elaborate and research, if it matters. Often, it doesn't. AI often makes too many words and you don't have to read it all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cliffhangers
&lt;/h2&gt;

&lt;p&gt;AI tends to ends its wordy answers with cliffhangers offering additional things it can do for you. That's a trap. Even when it's free or paid with a flat rate plan, you still pay with your time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Limits
&lt;/h2&gt;

&lt;p&gt;You don't need to understand AI any more than you need to understand the inner workings of your car or your smartphone. But you should know how to use it and what it can do and what it can't. &lt;/p&gt;

&lt;h2&gt;
  
  
  AI is neither Creative nor a Craftsperson
&lt;/h2&gt;

&lt;p&gt;AI is no creative, but a remixer. AI is no craftsperson, it's only well-read. AI has likely read 90% of everything relevant that has been published in recent years, including everything that's outdated now.   &lt;/p&gt;

&lt;h2&gt;
  
  
  Prototyping as Basic Preparation
&lt;/h2&gt;

&lt;p&gt;Using AI is like discussing an idea with your brother or reading a book from your local library to understand some basic concepts. Not bad for a start. You'll get an idea, proceed on your creative path and have smarter questions to ask when you meet with a real expert. &lt;/p&gt;

&lt;p&gt;That can save everyone a lot of time, friction and money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discussing AI with Coworkers and Customers
&lt;/h2&gt;

&lt;p&gt;AI can be helpful in certain situations. Accepting that as a fact can help us clarify what it can do and what not and why. AI can't replace creative professionals (unless for basic requirements) but telling customers and coworkers how to use (and not overuse) it, can give us back more time to focus on the real work that requires human expertise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions
&lt;/h2&gt;

&lt;p&gt;How do you handle AI in the creative process? Do you discuss using AI with your customers at all?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Who's Al and Where's Webfont Legibility?</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Wed, 08 Apr 2026 11:17:13 +0000</pubDate>
      <link>https://dev.to/ingosteinke/whos-al-and-wheres-webfont-legibility-4h7n</link>
      <guid>https://dev.to/ingosteinke/whos-al-and-wheres-webfont-legibility-4h7n</guid>
      <description>&lt;p&gt;Have you heard about Al? Al is literally everywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who's Al?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Al Guidance - How Al uses Al as a Senior Developer&lt;/li&gt;
&lt;li&gt;Al site builder, real time collaboration and more&lt;/li&gt;
&lt;li&gt;How AI (not Al) Remembers and Why It Forgets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So who is this Al guy?&lt;/p&gt;

&lt;p&gt;Joke aside, here are some screenshots about ...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyco2fhfc16l96gt5gc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyco2fhfc16l96gt5gc9.png" alt="screenshot with text: Al Guidance - How Al uses Al as a Senior Developer" width="635" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhgaekozc2yy8j5iz43t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhgaekozc2yy8j5iz43t.png" alt="screenshot with text: Al site builder, real time collaboration and more" width="455" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... "AI" not "Al" of course, but in most web fonts you can't visually tell the difference. You still can't. In 2026. Despite decades of accessibility awareness advocacy and legislation. We've made &lt;a href="https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines" rel="noopener noreferrer"&gt;WCAG&lt;/a&gt; criteria mandatory, at least in theory. The 2025 European Accessibility Act followed prior US legislation. We await WCAG 3 and its APCA algorithm, but we still fail to use legible web fonts?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwab0wvfr5ljd3ixaw32b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwab0wvfr5ljd3ixaw32b.png" alt="font preview text: You can call me Al. Al uses AI. All AI Al's been using." width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can call me Al. Al uses AI. All AI Al's been using.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Just in case you haven't heard of &lt;a href="https://en.wikipedia.org/wiki/Atkinson_Hyperlegible" rel="noopener noreferrer"&gt;Atkinson Hyperlegible&lt;/a&gt;. It's not a proof of concept but a popular webfont:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fca5l1oqqvto9eue55m0o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fca5l1oqqvto9eue55m0o.png" alt="font preview text: You can call me Al. Al uses AI. All AI Al's been using." width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ubuntu's default &lt;a href="https://en.wikipedia.org/wiki/Ubuntu_(typeface)" rel="noopener noreferrer"&gt;"Ubuntu" font&lt;/a&gt; provides slightly more subtle and elegant legibility. Here is an example where I added "(not Al)" to the original website for the sake of my point:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof8v8mxpbdgc5iy1797a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof8v8mxpbdgc5iy1797a.png" alt="screenshot text: How AI (not Al) Remembers and Why It Forgets: Part 1. The Context Problem" width="760" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, &lt;a href="https://www.developerway.com/posts/how-ai-remembers-and-forgets-part1" rel="noopener noreferrer"&gt;Nadia Makarevich's post about AI&lt;/a&gt; is already legible and unambiguous, unless my mobile mail box on Android displays it out of its original context:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s03yseu2i5oa548racq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s03yseu2i5oa548racq.png" alt="screenshot text: How AI Remembers" width="429" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>typography</category>
      <category>webdesign</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Balancing CMS, Custom Code and Business Logic</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Fri, 03 Apr 2026 13:37:18 +0000</pubDate>
      <link>https://dev.to/ingosteinke/balancing-cms-custom-code-and-business-logic-1bd8</link>
      <guid>https://dev.to/ingosteinke/balancing-cms-custom-code-and-business-logic-1bd8</guid>
      <description>&lt;p&gt;Software-as-a-service reminds me of fast fashion or flat-pack furniture. Simple solutions often don't live up to their promise. Call it AI, no-code, or building blocks, but a bespoke website or online shop is always more than a one-click installation. The reason is simple. It's called owning your business.&lt;/p&gt;

&lt;p&gt;Even when we, as developers, design a dashboard that feels like a cool DJ device, you'll still have to choose the music, to stick with this comparison.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7oeh7nzh6twa9t5zz0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7oeh7nzh6twa9t5zz0y.png" alt="AI image of an imaginary Shopware control center inspired by a musical device" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Action speaks louder than words
&lt;/h2&gt;

&lt;p&gt;Action speaks louder than words. Apart from my portfolio website as a professional web developer, I released open-source software, including plugins for Shopware, npm and code editors. My blog, &lt;a href="https://www.open-mind-culture.org/" rel="noopener noreferrer"&gt;Open-Mind-Culture.org&lt;/a&gt;, started as a technical demonstration and testing environment for WordPress development. Likewise, the &lt;a href="https://shop.open-mind-culture.org/" rel="noopener noreferrer"&gt;Open Mind Culture fan shop&lt;/a&gt; runs my own Shopware theme and extensions. So I know e-commerce from a real shop owner's perspective and have up-to-date first-hand experience about hosting, payment and fulfilment beyond theme and web development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Balancing specialized skills and broad knowledge
&lt;/h2&gt;

&lt;p&gt;I don't do all of this alone. Well, there's a lot that I can and will do alone. I'm part of a network of professional partners, working together with designers, developers, data scientists, admins, copywriters, and financial, legal and marketing experts. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdq493sk7s5t16lqlzdtl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdq493sk7s5t16lqlzdtl.png" alt="Open Mind Culture blog screenshot" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Small side project demos like my Open Mind Culture blog and fan shop featured in developer discussions are far from scalable big business projects, but that's where I have 100% control as a developer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3waac2r2drphsftfgbn3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3waac2r2drphsftfgbn3.png" alt="Projects screenshots: native web themes, design system, React web app" width="800" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I did work on corporate projects. As a freelance lead developer, I oversaw and coded a new career portal for an international construction company. I developed a highly configurable native WordPress theme reusable by thousands of sites in a Kubernetes cluster. I worked with Shopware, Intershop, Xsite and WooCommerce, for fashion retailers, online pharmacies, and ethical startups.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding business values as a developer
&lt;/h2&gt;

&lt;p&gt;Finding the right balance between content, custom code and business logic also implies finding the right experts to work with, a responsible contact person, but without avoidable overengineering and overhead that large corporate agencies often offer. If you know what you need, hiring a freelancer directly can be quick and cost-effective. An experienced senior will know and tell you if they can do it or if your requirements are too big or small for them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn7xcn8r7jiquvrl6bqt3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn7xcn8r7jiquvrl6bqt3.png" alt="Laptop with website storefront and source code next to fresh fruit sold in the online shop" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First-hand experience: eating the fruit sold in my client's online shop that I was working on. 🍋🍊&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing CMS and E-Commerce Systems
&lt;/h2&gt;

&lt;p&gt;When it comes to choosing content management and e-commerce systems, I obviously prefer what I already know as a developer, but that still includes several alternatives. You probably heard about WordPress, WooCommerce, and Shopify. Maybe you also heard about Astro, Gatsby, or Hugo. And what about Typo3, Drupal, Magento and Shopware? Can you still follow me?&lt;/p&gt;

&lt;p&gt;Technical details aside, crucial aspects for choosing a software include&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;features (does it do what I need?)&lt;/li&gt;
&lt;li&gt;support (will this still work in five years?)&lt;/li&gt;
&lt;li&gt;maintenance (is it easy to change?)&lt;/li&gt;
&lt;li&gt;cost (inital and running costs)&lt;/li&gt;
&lt;li&gt;integration (does this fit my workflow?)&lt;/li&gt;
&lt;li&gt;performance (see above)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Software as a service
&lt;/h3&gt;

&lt;p&gt;Software as a service sounds promisingly easy: register, pay, import your data, customize, and wait for the customers to come. Still enough work, but focused on your key skills as a merchant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-hosted but managed
&lt;/h3&gt;

&lt;p&gt;A "self-hosting" solution does not necessarily mean that you need to learn technical skills and install software updates. But it usually means more control, often for a lower total cost of ownership. Instead of pricing plans that often grow enormously as soon as it becomes hard to switch to an alternative provider, a self-hosted server and a long-term maintenance agreement with a professional web developer can reduce the total cost of ownership in the long term, despite additional costs for the initial setup that you pay only once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software choice as a case for control and ownership
&lt;/h3&gt;

&lt;p&gt;I chose Shopware and WordPress for my Open Mind Culture demo for several reasons. Both are provided on a freemium basis, which means that there is a free open-source software core maintained by a non-profit community, but driven by a commercial company and their official partners, offering optional paid add-ons and services.&lt;/p&gt;

&lt;p&gt;Shopware and WordPress can be customized and extended, and, thanks to decades of technical progress, the latest software versions are valid choices for business-level use cases. WordPress also has WooCommerce as an integrated e-commerce extension, and Shopware has content management (CMS) options, but I'd rather let each software do what it's best at.&lt;/p&gt;

&lt;h2&gt;
  
  
  Balancing customization and standardization
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Configuration vs custom code
&lt;/h3&gt;

&lt;p&gt;Hard-coded content and design limits and guides editors, preventing accidentally changing settings or violating design decisions. Settings can look overwhelming to non-technical users. Consider this example.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbtnv4i3uxx12i2qr18s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbtnv4i3uxx12i2qr18s.png" alt="Shopware settings screenshot" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I want to empower editors and site owners to update content and adjust simple settings that they don't need an expert for. Here is a CMS dashboard balancing visual preview with useful restrictions. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26wpzbqelyn7v683cmez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26wpzbqelyn7v683cmez.png" alt="Customized CMS collage" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fixing settings and output with custom code can prevent undesirable changes caused by updates or unwise content editing. Restricting customization too rigidly limits content creation control and might make merchants miss out on future features from upcoming updates.&lt;/p&gt;

&lt;p&gt;Thus, there is a trade-off, and maintenance is inevitable in the long run. Maintenance means accepting the need to change anything at all in the future, and to plan ahead for regular checks and possible improvements. Like bringing a car to an inspection or have your body checked by a doctor, prevention is better than cure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code customization challenges and strategies
&lt;/h3&gt;

&lt;p&gt;Often, there are different possible ways to implement a technical customization. Simpler, quicker coding might come with trade-offs in speed, cost or maintenance in the long run, while striving for perfect coding can also become perfectionist overoptimization that doesn't pay off either. AI-assisted and agentic vibe coding doesn't even consider the choice and just use any solution that works. &lt;/p&gt;

&lt;h2&gt;
  
  
  Technical debt prevention
&lt;/h2&gt;

&lt;p&gt;Regular check points are chances to question prior architecture decisions and business strategies and check if the goals are still correct and we are moving in the right direction.&lt;/p&gt;

&lt;p&gt;Technical debt does not only stem from unfinished work or over-customization, but since 2026, so-called vibe coding promised to produce more code more quickly thanks to AI. What sounds promising and might work at first glance, might not perform so well in the long run.&lt;/p&gt;

&lt;p&gt;That's what audits and metrics are for. Even without consequently adopting test-driven-development, we can measure accessibility, code quality, and web performance at least to a certain extent. Tools like linters, Lighthouse, PageSpeed Insights and various SEO services can pinpoint weak spots that need optimization. We can even use AI to check AI recommendations. Just don't trust anything blindly. If something sounds too good to be true, then it probably is.&lt;/p&gt;

&lt;h3&gt;
  
  
  Aspects and meanings of web performance
&lt;/h3&gt;

&lt;p&gt;As a senior web developer working at the intersection of business, UX/web design, and technology, my partners and I often hear questions about&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;business logic&lt;/li&gt;
&lt;li&gt;customer retention&lt;/li&gt;
&lt;li&gt;design decisions&lt;/li&gt;
&lt;li&gt;domain concepts&lt;/li&gt;
&lt;li&gt;marketing&lt;/li&gt;
&lt;li&gt;multi-language domain decision&lt;/li&gt;
&lt;li&gt;payment problems&lt;/li&gt;
&lt;li&gt;security issues&lt;/li&gt;
&lt;li&gt;search engine optimization&lt;/li&gt;
&lt;li&gt;web performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;"Web performance" is one of those terms one of the terms whose official definition competes with more obvious ideas. While web performance technically means making loading times faster and ensure usability, there are synergies with load time optimization and web performance optimization in an economic sense as in making more potential customers buy your products or services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzsabthpd8806iezl5hi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzsabthpd8806iezl5hi.png" alt="Image showing people shopping in a city" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or in other words: smart developer, happy shopper, happy revenue&lt;/p&gt;

&lt;p&gt;Further reading: &lt;a href="https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln"&gt;Legacy Code Maintenance: Keeping your Website Up To Date&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln" class="crayons-story__hidden-navigation-link"&gt;Legacy Code Maintenance: Let me keep your website up to date&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3284621" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln" id="article-link-3284621"&gt;
          Legacy Code Maintenance: Let me keep your website up to date
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>showdev</category>
      <category>shopware</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>An Unfiltered Slop Era?!</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Thu, 19 Mar 2026 08:53:29 +0000</pubDate>
      <link>https://dev.to/ingosteinke/unfiltered-slop-era-7a7</link>
      <guid>https://dev.to/ingosteinke/unfiltered-slop-era-7a7</guid>
      <description>&lt;p&gt;Recently, many meta discussions mock and condemn content trends on DEV and everywhere else. I already regret recently writing about &lt;a href="https://dev.to/ingosteinke/online-community-demise-and-why-dev-is-different-16km"&gt;online community demise and why DEV is different (at least a little bit, I hope)&lt;/a&gt;, as the little bit seems to get smaller.&lt;/p&gt;

&lt;p&gt;DEV's setting to hide tags, isn't working well anymore, if it ever did. Or it does, but only as a negative following priority. When there is too much spam, slop and fad shitposting, there's not much left to prioritize against.&lt;/p&gt;

&lt;p&gt;My recommendations, sidebar, trends, discussions, and, not much of a surprise, the latest recent posts feed is full of crap, although I have already put #codingwithai, #claudecode, #cryptocurrency and #ai and several other hype hashtags on my hiding list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmlmljjh27e31lr63z9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmlmljjh27e31lr63z9s.png" alt="Hidden tags list screenshot" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how DEV typically presents itself to me recently when I open the front page: AI and trope titles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqlpe8ics5ahhd1ilpob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqlpe8ics5ahhd1ilpob.png" alt="DEV front page screenshot" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The trends have changed. No more listicles, no more emoji overload, instead, five out of ten posts contain an em dash character, that long hyphen, hard to find on international developer keyboards, popular with American scholars—and with AI chatbots.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Here is what I learned"
&lt;/h2&gt;

&lt;p&gt;Other telltale signs that smell of sloppy writing assistance: "here is what I learned". Intended to signal authenticity, they have become red flags for the opposite, at least in most cases. The current year, 2026 right now, is one of the few evergreen attempts that might be legitimate, but adds negative points to my gut feeling heuristics. Similarly, I couldn't care less about the best dentists in Jaipur or posts in a language that I can't even read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64kj7vov63p05y4cc2o9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64kj7vov63p05y4cc2o9.png" alt="Latest posts feed with spammy, Chinese and unreadable titles" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Maybe DEV and their productive AI community can vibe-code a spam filter that actually works? I will check back in a few weeks and see if things improved.&lt;/p&gt;

&lt;p&gt;What I learned in the past years, writing and ranting on DEV, devrant, blogs and forums about work culture and society is that a single voice rarely changes anything, unless amplified or already popular. I'm far from being an influencer, despite being recommended every now and then.&lt;/p&gt;

&lt;p&gt;I'm really getting bored about AI art and vibe coding discussions and how we're getting or not getting replaced by AI as developers. Maybe I should have chosen a different career path and become a    physical therapist. I might have contributed more value to society and spared myself our industry's self-absorbed intellectual overhead that usually leads nowhere, or at least nowhere good. I will not digress into political topics here, although it's hard not to when, apart from some medical advancements, technological progress has failed to solve any of humanity's most important problems so far.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dead Internet "Discussions"
&lt;/h3&gt;

&lt;p&gt;As of late 2025, over 51% of all internet traffic was generated by bots, passing human activity for the first time.&lt;/p&gt;

&lt;p&gt;Even most comments look like AI-generated now. The dead internet is real. &lt;/p&gt;

&lt;h2&gt;
  
  
  Write-only
&lt;/h2&gt;

&lt;p&gt;I might just treat DEV like LinkedIn and medium, as a write-only platform to dump my marketing content. I really hope that's not where DEV is going.&lt;/p&gt;

&lt;p&gt;I will keep sharing some of my thoughts and practical takeaways anyway. But reading and scrolling social media is no fun anymore.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>neither naive nor nostalgic</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Mon, 16 Mar 2026 09:43:35 +0000</pubDate>
      <link>https://dev.to/ingosteinke/neither-naive-nor-nostalgic-1mmp</link>
      <guid>https://dev.to/ingosteinke/neither-naive-nor-nostalgic-1mmp</guid>
      <description>&lt;p&gt;Do we have to choose between becoming nostalgic or going all in embracing new technology? Some &lt;a href="https://dev.to/the_nortern_dev/i-think-a-lot-of-developers-are-quietly-grieving-the-old-internet-3d8"&gt;think a lot of developers are quietly grieving the old internet&lt;/a&gt;. I doubt that. Why "quietly" by the way? Some of those who do are quite vocal and they should be. I'm a known critic of what's going on in tech today, but I think we just trade improvements and deterioration. I don't see linear progress but I don't see constant decline either.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/the_nortern_dev/i-think-a-lot-of-developers-are-quietly-grieving-the-old-internet-3d8" class="crayons-story__hidden-navigation-link"&gt;I Think a Lot of Developers Are Quietly Grieving the Old Internet&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/the_nortern_dev" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3630167%2F2e206d7e-04d3-484b-8a73-1f98d17a0e1a.png" alt="the_nortern_dev profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/the_nortern_dev" class="crayons-story__secondary fw-medium m:hidden"&gt;
              NorthernDev
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                NorthernDev
                
              
              &lt;div id="story-author-preview-content-3357241" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/the_nortern_dev" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3630167%2F2e206d7e-04d3-484b-8a73-1f98d17a0e1a.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;NorthernDev&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/the_nortern_dev/i-think-a-lot-of-developers-are-quietly-grieving-the-old-internet-3d8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 16&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/the_nortern_dev/i-think-a-lot-of-developers-are-quietly-grieving-the-old-internet-3d8" id="article-link-3357241"&gt;
          I Think a Lot of Developers Are Quietly Grieving the Old Internet
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/culture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;culture&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/the_nortern_dev/i-think-a-lot-of-developers-are-quietly-grieving-the-old-internet-3d8" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;230&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/the_nortern_dev/i-think-a-lot-of-developers-are-quietly-grieving-the-old-internet-3d8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              146&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;Here's what the "good old times" really felt like for me:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb00z0csmvgm6xn89aqce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb00z0csmvgm6xn89aqce.png" alt="Image of a person in front of an old computer screen, text: ftp.exe Connection reset. Retry (1/3)..."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Staring at a CRT monitor, waiting for a very slow internet connection.&lt;/p&gt;

&lt;p&gt;But I'm not in "team AI utopia" either.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI is not the future ...
&lt;/h2&gt;

&lt;p&gt;AI in its current form is an understandable reason to look back in nostalgia: slop content, spam and scam are getting better all the time. But so does anti-spam protection. AI is the industry's current excuse for layoffs. But there were waves of layoffs before. AI helps military. But military was there before and it even played a foundational role in the creation of the internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz9o3ci6fubwwiblu1jh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz9o3ci6fubwwiblu1jh.png" alt="AI image of a robot named Claude drafted as a soldier"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  faster, but not better
&lt;/h2&gt;

&lt;p&gt;AI creates boilerplate code much faster and people claim it creates working apps in minutes. They must be very proud of missing quality control and never really trying to do test-driven development or understand any of the fundamental software engineering principles established over decades. But then again, some of those principles are just opionions as well. Like functional vs. object-oriented programming paradigms, like monolith vs. microservices, like agile methodologies.&lt;/p&gt;

&lt;h2&gt;
  
  
  "yelling at the sky"
&lt;/h2&gt;

&lt;p&gt;I remember arguing with people campaigning against the Internet. Many years later, one might think that I've become that "old man yelling at the sky". I criticised React as an overcomplicated disimprovement. I had my tinfoil hat phase using a rooted Android without any Google services at all. Now I'm the AI sceptic dismissing a new digital trend innovation while still using it eventually.&lt;/p&gt;

&lt;h2&gt;
  
  
  ... not in its current form
&lt;/h2&gt;

&lt;p&gt;No, I don't really miss the old internet at all. Those who do just glorify the days when they were young. I mean, I miss USENET in a way. I miss the imperfection and DIY diversity, but I don't want to travel back in time. I want fast internet, Figma designs, kanban boards, pull requests, annotated coding history, open-source-based freemium frameworks, smartphone cameras, code completion, and, yes, artificial intelligence. Only not necessarily in their current form.&lt;/p&gt;

&lt;p&gt;I have ideas and experience. I can spot errors and smell spam and enshittification. We are not moving towards an utopia and we're not living in the best of all possible worlds. Not at all. But we didn't back then, either.&lt;/p&gt;

&lt;h2&gt;
  
  
  try to keep an open mind
&lt;/h2&gt;

&lt;p&gt;I try to balance both and I try to keep an &lt;a href="https://www.open-mind-culture.org/" rel="noopener noreferrer"&gt;open mind which is what I called my blog website&lt;/a&gt; where I try to share a less technical perspective beyond my DEV articles.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI art
&lt;/h2&gt;

&lt;p&gt;I have been obsessed with AI art for a while, since an old friend of mine did his first psychedelic Midjourney experiments in 2022, but I mostly abstained from AI image generation until DEV launched it's cover editor. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvdvmvf6tak3qtxhdippd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvdvmvf6tak3qtxhdippd.png" alt="Strikingly unironic AI art image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The current cover image is so bad that it's good again in a way. AI's striking failure of irony and subtlety and its stubbornness of trying anyway, adding details like the "digital anxiety simulator" caption is in a league of its own. Placing the spectator inside the shop window instead of in front of it. Trying to draw the prompeted "modern drone" according to DEV's retrofuturistic steampunk style preset. We'll surely feel nostalgic about that as well in a few years from now.&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>discuss</category>
      <category>ai</category>
    </item>
    <item>
      <title>Using Slightly Broken Smartphones thanks to Accessibility</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Mon, 02 Mar 2026 17:57:49 +0000</pubDate>
      <link>https://dev.to/ingosteinke/using-slightly-broken-smartphones-thanks-to-accessibility-28pf</link>
      <guid>https://dev.to/ingosteinke/using-slightly-broken-smartphones-thanks-to-accessibility-28pf</guid>
      <description>&lt;p&gt;I rescued my water-damaged phone thanks to Android's powerful accessibility features and open-source app replacements. Tips for Android 13 or newer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Water Damage and what it taught me
&lt;/h2&gt;

&lt;p&gt;Pinch-to-zoom is efficient for many users, but it excludes others: people with motor impairments, temporary injuries, or damaged hardware. Hardware is not equally waterproof everywhere. Replacing a touchscreen can be more expensive than buying a new smartphone. Android apps, features and workarounds help using a slightly broken smartphone without repair or replacement. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Course of Events and Extent of Destruction&lt;/li&gt;
&lt;li&gt;One-Finger Zoom Gestures: Double Tap vs. Double Touch Drag&lt;/li&gt;
&lt;li&gt;Android Accessibility Menu&lt;/li&gt;
&lt;li&gt;App Accessibility by Design: Maps and Camera Apps&lt;/li&gt;
&lt;li&gt;Working around Unresponsive Touch Points&lt;/li&gt;
&lt;li&gt;Water Resistance, Rust Protection and eSIM&lt;/li&gt;
&lt;li&gt;What did NOT Work and Why it Failed&lt;/li&gt;
&lt;li&gt;Notes, Credits and Conclusions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Course of Events and Extent of Destruction
&lt;/h3&gt;

&lt;p&gt;After suffering severe water damage, my Google Pixel phone worked again and the touch screen seemed to operate normally in some apps. Others didn't properly recognise gestures like pinch, punch,  drag and drop fully anymore, either ignoring my intent or not working as smoothly as before. It took me some research and observation to understand the seemingly erratic behavior.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61c9x5jlkuhvp87pas7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61c9x5jlkuhvp87pas7c.png" alt="Set in a rainy, retro-futuristic, neon-lit urban synthwave cyberspace, a person looks distressed while holding a smartphone with a shattered screen. Another person is falling into a blue pool of water, accompanied by several flying tablets and devices. Bystanders are holding transparent umbrellas to protect themselves and vintage personal computer devices from the rain."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike the last time when I had to use my device in heavy rain and I had to replace the whole touchscreen, this time the device fell into the water completely. I rescued it quickly and dryed it as good as I could. &lt;/p&gt;

&lt;p&gt;A single unresponsive touchscreen row stops drag and drop gestures, but why does pinch zoom no longer work at all? I still don't know, but I learned how to use a phone without two-finger zoom. &lt;/p&gt;

&lt;p&gt;As the Pixel 4 is one of the last compact high end smartphone series, and it still works well otherwise unless you need much memory for editing video or a bigger battery. However, replacing the touchscreen costs as much as buying a similar new phone. Let's explore how to make use of the working hardware as a sustainable developer. &lt;/p&gt;

&lt;h2&gt;
  
  
  One-Finger Zoom Gestures
&lt;/h2&gt;

&lt;p&gt;Android, and possibly other smartphone systems as well, offer at least two alternative zoom gestures that do not require using two fingers. They require only one point of contact, bypassing multi-touch detection issues.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxawfi711dbqo1evgfma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxawfi711dbqo1evgfma.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Double Tap
&lt;/h3&gt;

&lt;p&gt;A double tap without additional action toggles 1x zoom in Google photos. This well-known feature keeps zooming deeper into Maps on each tap without a simple way to zoom out again.&lt;/p&gt;

&lt;h3&gt;
  
  
  Double Touch Drag
&lt;/h3&gt;

&lt;p&gt;The one-finger zoom gesture is a little known alternative to the common two-finger pinch zoom, also known as the one-finger-workaround: Double-tap the screen, but don't lift your finger on the second tap. Slide your finger up or down to zoom in and out.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Support and Limitations
&lt;/h3&gt;

&lt;p&gt;One-finger tap gestures work in Google Maps, Photos and Camera, although it opens Camera settings, it still zooms in and out nevertheless. It also works in Seznam's Open Street Map based MAPY app and in all Android apps that don't prevent or intercept double tap with their own handler.&lt;/p&gt;

&lt;p&gt;Tapping twice with or without secondary one finger swipe is not working in Instagram, where double tapping means to like or unlike a post, and double-touch-dragging in the post and stories editor does exactly nothing. But Meta's notorious disregard for accessibility is not the only reason against Instagram anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Android Accessibility Menu
&lt;/h2&gt;

&lt;p&gt;Turning on the Accessibility Menu shortcut in Settings &amp;gt; Accessibility &amp;gt; Accessibility Menu., a large floating button appeared. Tapping it opens another large-button menu. However, I failed to add or activate zoom buttons missing in the default accessibility menu. There is a distinct magnification tool that enables zooming into the whole screen and adds a draggable square screen loupe, independent from missing app functionality. Take a look at the screenshots below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyivsczal4k88jm9h7y16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyivsczal4k88jm9h7y16.png" alt="Accessibility menu, magnification and accessibility settings screenshots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ironically, Google's AI assistant advised me to disable magnification. That's unnecessary as it only conflicts with one-finger tap-and-drag while the loupe is active. The accessibility menu does not contain big "+" and "-" buttons to zoom, at least not without further customization (comments welcome!)&lt;/p&gt;

&lt;h2&gt;
  
  
  App Accessibility by Design
&lt;/h2&gt;

&lt;p&gt;Many apps used to include optional plus (+) and minus (-) zoom buttons specifically for accessibility and users with limited hand mobility who are physically unable to make pinch and punch gestures with their fingers. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://osmand.net/docs/user/widgets/map-buttons/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bm93pv89t7nv7mtrk2i.png" alt="OsmAnd Map Buttons Documentation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Navigation Apps with or without Zoom Buttons
&lt;/h3&gt;

&lt;p&gt;I failed to find the "hidden setting" to turn on permanent zoom buttons in the Google Maps app to show up on the right side of the map, formerly found after tapping my profile icon, going to settings -&amp;gt; navigation settings as a Show zoom buttons toggle.&lt;/p&gt;

&lt;p&gt;Google had removed the button option from the Google Maps app in a past update. As an alternative, Google's Gemini AI assistant highly recommended switching to the &lt;strong&gt;open street map&lt;/strong&gt; client &lt;strong&gt;OsmAnd&lt;/strong&gt; as the "gold standard for accessibility. It uses large, high-contrast + and - buttons by default and allows you to place them anywhere on the screen."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrxatokarvbhtwstsgcb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrxatokarvbhtwstsgcb.png" alt="Screenshots of OsmAnd and Open Camera interface and settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OsmAnd and Open Camera interface and settings with Android accessibility menu and magnifier buttons floating on top of the apps on the right side.&lt;/p&gt;

&lt;h3&gt;
  
  
  Photo &amp;amp; Camera Apps with Zoom Buttons
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Open Camera&lt;/strong&gt; is a professional camera app that is much easier to use with hardware damage or accessibility needs than Google Camera. I had already installed Open Camera before, because of its explicit external microphone settings for recording video.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/microphone-choice-and-cancelling-noise-1d7k" class="crayons-story__hidden-navigation-link"&gt;Microphone Choice and Cancelling Noise&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2831146" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/microphone-choice-and-cancelling-noise-1d7k" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 12 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/microphone-choice-and-cancelling-noise-1d7k" id="article-link-2831146"&gt;
          Microphone Choice and Cancelling Noise
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/microphone-choice-and-cancelling-noise-1d7k" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;9&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/microphone-choice-and-cancelling-noise-1d7k#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;Open camera has volume key zoom using the phone's physical volume buttons and a large on-screen slider for zooming without using pinch gestures. Open camera has many "more camera controls" in its settings menu. It's probably one of the most customizable open source camera app according to my own experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improving Privacy by Design
&lt;/h3&gt;

&lt;p&gt;Switching to the open street map client OsmAnd from Google Maps and replacing Google Camera with Open Camera app also provides privacy by design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Working Around Unresponsive Touch Points
&lt;/h3&gt;

&lt;p&gt;Button taps are not affected as long as buttons are big enough.&lt;/p&gt;

&lt;p&gt;Android app icon drag and drop positioning becomes a puzzle game when you can't drop to a certain x,y position by moving from above because an unresponsive cell acts like an invisible wall on your way to the intended drop target.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8q0fs3pglgsltxe7mjb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8q0fs3pglgsltxe7mjb.png" alt="Image inspired by vintage drag and drop games"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you enjoyed those kind of games, you can imagine possible solutions. When you can't drag from top down, try to find a way from bottom up, like removing and re-adding the same app shortcut icon.&lt;/p&gt;

&lt;p&gt;Cursor placement and text selection are restricted by the unresponsive row as well. A workaround is scrolling. In my notes app, I sometimes add two extra lines to make the note long enough for scrolling to work. &lt;/p&gt;

&lt;h2&gt;
  
  
  Water Resistance and Rust Protection
&lt;/h2&gt;

&lt;p&gt;Pro tip: Don't drop your phone into the water!&lt;/p&gt;

&lt;p&gt;Avoid using your phone while it's wet. Wait until it's dry instead.&lt;/p&gt;

&lt;p&gt;But if you do, Android can automatically disable the USB slot when it detects humidity to protect an otherwise vulneraby exposed  electrical port capable of destroying the device electronic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e6povn7l8blzs7y0xn9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e6povn7l8blzs7y0xn9.png" alt="eSIM setup and illustration, USB settings and notification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Physical hardware SIM card slots and SIM cards can get damaged by corrosion as well. Luckily, there is eSIM now.&lt;/p&gt;

&lt;h3&gt;
  
  
  eSIM as an easy solution?
&lt;/h3&gt;

&lt;p&gt;A subscriber identity module, or SIM for short, is the historic micro chip card you buy at a bodega (Späti) or phone shop or obtain postal mail from your phone provider. Most customers don't need it at all. The embedded software replacement (eSIM) is available in almost all modern smartphones and many recent precursors, including my Pixel 4a which was originally manufactured in 2020.&lt;/p&gt;

&lt;h2&gt;
  
  
  What did NOT Work and Why it Failed
&lt;/h2&gt;

&lt;p&gt;Asking AI assistants about settings can be informative, inspiring or misleading. Infamously overconfident about their suggestions and hallucinations, asking for proof and authoritative sources produced a "why this works" section, no matter if it does, even when it's clear that they can't be sure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmeyto2jqtn6rlpx687ai.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmeyto2jqtn6rlpx687ai.png" alt="Cartoon meme: perplexity failed me"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/if-writing-still-matters-how-to-do-it-right-and-avoid-ai-suspicion-2nac" class="crayons-story__hidden-navigation-link"&gt;If Writing still Matters, How to Do it Right and Avoid AI Suspicion?&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3263290" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/if-writing-still-matters-how-to-do-it-right-and-avoid-ai-suspicion-2nac" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 18&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/if-writing-still-matters-how-to-do-it-right-and-avoid-ai-suspicion-2nac" id="article-link-3263290"&gt;
          If Writing still Matters, How to Do it Right and Avoid AI Suspicion?
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/watercooler"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;watercooler&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/writing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;writing&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/nanobanana"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;nanobanana&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/if-writing-still-matters-how-to-do-it-right-and-avoid-ai-suspicion-2nac" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;46&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/if-writing-still-matters-how-to-do-it-right-and-avoid-ai-suspicion-2nac#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              20&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            13 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;We should all know that AI is unreliable, but some suggestions sound too good to be true or too scary to ignore. &lt;/p&gt;

&lt;h3&gt;
  
  
  Incorrectly Attributed Issues
&lt;/h3&gt;

&lt;p&gt;Perplexity claimed that my Pixel 4a was one of those models not supporting virtual SIM card software, attributing Pixel 3a information to the Pixel 4a series. All Pixel 4a phones should support eSIM, just as Gemini and Google Help seemed to agree on initially. If mine had not, in the worst case, I would have had to order a new physical hardware SIM card from my phone provider.&lt;/p&gt;

&lt;p&gt;Always check authoritative sources and product specifications!&lt;/p&gt;

&lt;h3&gt;
  
  
  Imaginary System Settings
&lt;/h3&gt;

&lt;p&gt;Gemini was initially right about the eSIM issue but changed its mind after evaluating Perplexity's claims. Gemini later hallucinated system settings and app options that don't exist. The artistic recap below illustrates imaginary system settings and proves that AI is still better at imagination than at researching facts correctly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mpv1bgv6maytb0z85ss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mpv1bgv6maytb0z85ss.png" alt="Imaginary system settings in artistic pseudo screenshots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These imaginary system settings look nice and graphical, but that's not the point. Searching for nonexistant settings that were either removed or never implemented is a waste of time. Here are some screenshots of the real Android 13 system settings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9m1ftaekhop61toc4ukl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9m1ftaekhop61toc4ukl.png" alt="Android 13 system settings screenshots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below is another informative screenshot collage taken on Android 13 on a Google Pixel phone in 2026. The image might be outdated when you read it, but it proves that there are no zoom buttons in Google Map settings in the mobile Android app anymore.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4rwz0o9y3xuu3c73qid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4rwz0o9y3xuu3c73qid.png" alt="Settings screenshots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neither Google Maps Go, nor the Open Street Maps based czech Mapy app offer accessible zoom buttons, but OsmAnd does. Official documentation, forums and search results can point you in the right direction. But there are so many different system configurations and frequent software updates that not every experience or official documentation might work in your specific situation. Instead of relying on rumors and guessing, I find it's always a good idea to inspect and learn about the apps that you have and check for useful options that you might have been missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screen Protector Mode to Enhance Touch Sensitivity
&lt;/h2&gt;

&lt;p&gt;Android settings offer a so-called screen protector mode to ehance touch sensitivity. Originally intended to compensate weaker contact caused by protective plastic or glass applied to the touchscreen, screen protector mode might also help in other situations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl9b8umpguhz7jlbi4r0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl9b8umpguhz7jlbi4r0.png" alt="Artwork showing two smarphone users with and without enhanced touch sensitivity inaccurately symbolized by a glow efffect"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To increase touch sensitivity, go to &lt;a href="https://support.google.com/pixelphone/answer/6111557#zippy=%2Caccessibility%2Cscreen-settings" rel="noopener noreferrer"&gt;Settings &amp;gt; Display &amp;gt; Touch sensitivity and toggle the Screen protector mode to ON&lt;/a&gt;. Forcing the digitizer to detect weaker signals might bypass minor input issues.&lt;/p&gt;

&lt;p&gt;In my case, this did not fix the partial unresponsiveness caused by the water damage. In fact, I perceived no difference at all. But at least the protector mode is a system setting that really exists and didn't hurt to give it it a try.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disable Magnification
&lt;/h3&gt;

&lt;p&gt;Android Accessibility and magnification button overlays don't interfere with other apps any more than they need to. Unless activated, the magnification button just sits on the side of the screen, can be dragged out of the way and does nothing until you touch it.&lt;/p&gt;

&lt;p&gt;A "top priority" according to AI, the advice to disable magnification was probably a mistake confusing the overlay button with another, even less known gesture refered to as a triple-tap to zoom, breaking an otherwise functioning pinch-to-zoom gesture.&lt;/p&gt;

&lt;p&gt;Anyway, toggling the maginifcation shortcut setting to OFF in Settings &amp;gt; Accessibility &amp;gt; Magnification did not help me in any way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Android System Intelligence Cache
&lt;/h3&gt;

&lt;p&gt;AI also advised me to clear the Android System Intelligence cache, based on "reasoning" about possible "cached error states" that turned out as mere speculation. Interestingly, there is a system app called System Intelligence on my phone that I had already disabled before. What does it do?&lt;/p&gt;

&lt;h4&gt;
  
  
  Suspicious Agent or Helpful Assistant?
&lt;/h4&gt;

&lt;p&gt;Android System Intelligence is supposed to provide helpful intelligent assistance locally while respecting users' privacy. &lt;a href="https://support.google.com/pixelphone/answer/12112173?hl=en" rel="noopener noreferrer"&gt;According to Google Help, Android System Intelligence&lt;/a&gt;  features include automatic live captions, assistant voice typing, language translation and music recognition and smart autorotate.&lt;/p&gt;

&lt;p&gt;However, in times of growing concerns about reliance on American tech companies and so-called artificial intelligence, disabling an unsolicited Google system app is legitimate action to &lt;a href="https://en.wikipedia.org/wiki/DeGoogle" rel="noopener noreferrer"&gt;degoogle&lt;/a&gt; your Android device at least a little bit without switching to pure &lt;a href="https://en.wikipedia.org/wiki/Android_(operating_system)#Development" rel="noopener noreferrer"&gt;Android Open Source (AOSP)&lt;/a&gt; alternatives completely (which might not be a good idea anyway if you rely on online banking and other commercial apps that expect a Google-based infrastructure to be part of a legitime end-user device).&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/25-google-alternatives-every-dev-must-use-in-2025-20n2" class="crayons-story__hidden-navigation-link"&gt;26 Google Alternatives every DEV must know&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2289799" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/25-google-alternatives-every-dev-must-use-in-2025-20n2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 20 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/25-google-alternatives-every-dev-must-use-in-2025-20n2" id="article-link-2289799"&gt;
          26 Google Alternatives every DEV must know
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/watercooler"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;watercooler&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/indieweb"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;indieweb&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/google"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;google&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/25-google-alternatives-every-dev-must-use-in-2025-20n2" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;55&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/25-google-alternatives-every-dev-must-use-in-2025-20n2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              23&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;I can assure you that at least autorotate works in Android 13 when system intelligence is disabled. Although the help article does not mention touch sensitivity and gestures explicitly anywhere, there might be some connection that I didn't proceed to explore. &lt;/p&gt;

&lt;h2&gt;
  
  
  Notes, Credits and Conclusions
&lt;/h2&gt;

&lt;p&gt;Both fascinated and critical about AI-generated art let my disclose, disclaim and clarify image sources, facts, and (mis)information used in this article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frq2i2174be4yeiq50arq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frq2i2174be4yeiq50arq.png" alt="Image of two men standing at the shore of a lake, one is looking at a smartphone he is holding in his hand. Text: don't drop it"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AI-Generated Images
&lt;/h3&gt;

&lt;p&gt;Except for the real screenshots, all images used in this article have been generated with the help of AI, either using Google's Nano Banana via the Forem cover generator, as it is currently encouraged by DEV, or by OpenAI's ChatGPT partially based on actual photography showing myself and generated cover images.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Information, Misinformation and Text Generation
&lt;/h3&gt;

&lt;p&gt;Misinformation, misattribution and hallucinations wasted precious time and energy and made-up recommendations did not work and some even made the situation worse. I haven't cited all of them so as not to inspire anyone to harmful actions.&lt;/p&gt;

&lt;p&gt;However, experimenting with AI as a developer can teach us what AI can do, what it can't do, and how to spot fakes and hallucinations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Don't trust AI.&lt;/li&gt;
&lt;li&gt;Don't rely on Google.&lt;/li&gt;
&lt;li&gt;Don't ditch a working device before trying repair and recovery.&lt;/li&gt;
&lt;li&gt;Alternative Open Source Apps are worth a try.&lt;/li&gt;
&lt;li&gt;Accidents can make me learn something new.&lt;/li&gt;
&lt;li&gt;Accessibility can benefit everyone.&lt;/li&gt;
&lt;li&gt;Always be skeptical.&lt;/li&gt;
&lt;li&gt;Don't let your device drop into the water.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>android</category>
      <category>mobile</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Legacy Code Maintenance: Let me keep your website up to date</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Wed, 25 Feb 2026 13:33:55 +0000</pubDate>
      <link>https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln</link>
      <guid>https://dev.to/ingosteinke/legacy-code-maintenance-keeping-your-website-up-to-date-beyond-2026-4cln</guid>
      <description>&lt;p&gt;In the future, maintaining legacy code will be more important than ever before. AI and visual no-code editors empower founders, managers and designers to build a working website from scratch in seconds that suits their basic needs. AI learned to code and produce good enough results since about 2025. Good enough at least for simple websites with some nice effects. Suitable for a startup or a design pitch.&lt;/p&gt;

&lt;h2&gt;
  
  
  When AI is no longer Good Enough
&lt;/h2&gt;

&lt;p&gt;Problems start when they need to extend, change and optimize their website that became outdated or does not perform as expected.&lt;/p&gt;

&lt;p&gt;Thing is, AI is good at building quick prototypes from scratch, but it fails to follow sustainable strategies and fails to understand existing websites and apps. Luckily, &lt;a href="https://dev.to/ingosteinke/8-alternatives-to-ai-for-coding-and-creativity-26k3"&gt;senior developers can use alternative&lt;/a&gt; solutions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developers Taking Long-Term Responsibility
&lt;/h3&gt;

&lt;p&gt;Long-term maintenance is the best motivation for coding professionally and sustainably copliant to best practices. Continuous long-term work experience also helps to understand, select and adapt suggested solutions. Experienced senior developers see shortcomings in vibe code and refine their prompts or the generated code accordingly.&lt;/p&gt;

&lt;p&gt;Likewise, automated testing and documentation can be generated more quickly and easily thanks to AI, but blind faith is a recipe for disaster. We need to know if a test makes sense and document reasons and decisions rather than repeat the obvious in documentation, code comments, issue trackers and commit messages. &lt;a href="https://en.wikipedia.org/wiki/Robert_C._Martin#Clean_Code" rel="noopener noreferrer"&gt;Clean code&lt;/a&gt; principles encourages us as developers to follow proven design patterns and choose meaningful names for functions, files and components. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0anuvxmglfakuedqsyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0anuvxmglfakuedqsyk.png" alt="Screenshot with highlighted code and git history hints" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This screenshot shows a simple code snippet with additional annotations revealing who has last edited the code and why.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you Understand Legacy Code?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Technical_debt" rel="noopener noreferrer"&gt;Technical debt&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Legacy_system" rel="noopener noreferrer"&gt;legacy&lt;/a&gt; code are disputed, yet helpful, terms when we talk about code written before yesterday. The more time has passed, the less it matters who has last edited a given line. Even if we wrote it ourselves, sometimes we remember, sometimes we don't. That's what clean code strategies and documentation are for.&lt;/p&gt;

&lt;p&gt;Often, however, legacy code lacks meaningful documentation. We need to read and analyze or search for helpful patterns using debuggers and coding assistance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlgpb4fhvortfjg54tft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlgpb4fhvortfjg54tft.png" alt="Claude code analysis" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Screenshots of a Claude conversation prove how AI assistants notoriously provide broken or buggy code and fail to understand meaningful features and obscure issues of legacy code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Migration, Modernization, and Maintenance Case Study
&lt;/h3&gt;

&lt;p&gt;In a combined &lt;a href="https://www.ingo-steinke.com/projects/legacy-migration-modernization-maintenance-case-study.html" rel="noopener noreferrer"&gt;case study of migration, modernization and maintenance projects as a senior web developer&lt;/a&gt; I reviewed and summarized how I approach maintenance projects and how my customers profit.&lt;/p&gt;

&lt;p&gt;Comprehensive analysis of existing code, documentation and requirements, the working software and wisely used Ai assistentes by an experiences expert, leads to an understanding that artificial intelligence alone, especially when working with legacy code, cannot achieve, at least not yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I Care
&lt;/h3&gt;

&lt;p&gt;"Never touch a running system" is often quoted half-jokingly, as it holds true, like "if it ain't broke, don't fix it."&lt;/p&gt;

&lt;p&gt;But changing requirements may make it necessary to modify the code base and business logic during ongoing operations without compromising existing functionality. &lt;/p&gt;

&lt;p&gt;Once you decide that you need a (new) professional (web) developer to modify an existing code base, be realistic and take your time and budget to do it properly and save on the total cost of ownership in the long run.&lt;/p&gt;

&lt;h4&gt;
  
  
  Long-term Considerations
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;prefer professional high quality from the beginning&lt;/li&gt;
&lt;li&gt;hire an experienced senior expert for maintenance&lt;/li&gt;
&lt;li&gt;plan ahead and agree on a long-term contract&lt;/li&gt;
&lt;li&gt;save on total cost of ownership&lt;/li&gt;
&lt;li&gt;profit from fixed prices and payment terms&lt;/li&gt;
&lt;li&gt;hire a &lt;a href="https://www.ingo-steinke.com/services/freelance-webdeveloper-berlin.html" rel="noopener noreferrer"&gt;freelancer directly, without intermediate&lt;/a&gt; agency.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;As a developer, learn and remember best practices and proven principles, like clean code and design patterns. Vibe coding is a shortcut, not a replacement for knowledge and experience. &lt;/p&gt;

&lt;p&gt;As a customer, don't trust advertising promises blindly. Consider total cost of ownership and the value of preventing costly failures. Code quality and maintenance is like an insurance: in the best case it feels like you don't need it. But you do. &lt;/p&gt;

&lt;p&gt;Further reading: &lt;a href="https://dev.to/ingosteinke/balancing-cms-custom-code-and-business-logic-1bd8"&gt;Balancing CMS, Custom Code and Business Logic&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/balancing-cms-custom-code-and-business-logic-1bd8" class="crayons-story__hidden-navigation-link"&gt;Balancing CMS, Custom Code and Business Logic&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3327857" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/balancing-cms-custom-code-and-business-logic-1bd8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 3&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/balancing-cms-custom-code-and-business-logic-1bd8" id="article-link-3327857"&gt;
          Balancing CMS, Custom Code and Business Logic
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/shopware"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;shopware&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/balancing-cms-custom-code-and-business-logic-1bd8" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/balancing-cms-custom-code-and-business-logic-1bd8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>27 Ironical Parody Posts that belong on Dumb Dev not on my Main Page Profile 😇😈🙈</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Mon, 23 Feb 2026 13:53:24 +0000</pubDate>
      <link>https://dev.to/ingosteinke/27-ironical-parody-posts-that-belong-on-dumb-dev-not-on-my-main-page-profile-57a8</link>
      <guid>https://dev.to/ingosteinke/27-ironical-parody-posts-that-belong-on-dumb-dev-not-on-my-main-page-profile-57a8</guid>
      <description>&lt;p&gt;I wrote a bunch of publications that better belong here than on DEV's main page, including the following 27 posts. Actually there are not really twenty-seven such posts but it makes a nice catchy headline. Both of the 22 posts are updated as "evergreen content" at least until 2027 when they expire and get blown away. 🧨🤯🤡 &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why do numbered lists attract readers? Listicles have been mocked as a typical clickbait cliché, but post titles like "27 things every dev MUST know in 2027 - no. 7 will ..." seem to appeal to readers. But why?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/ingosteinke/24-antipatterns-to-avoid-in-2024-2024-175f"&gt;27 Antipatterns to Avoid in 2027 🚫2️⃣0️⃣2️⃣4️⃣🚫 🤖💩🤡🤯&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As the first posts's title reveals, there is two times two-thousand and twenty-four in it, thus 4048. What does that mean?&lt;/p&gt;

&lt;p&gt;Annual prediction posts were another thing. Luckily, they don't seem to work well anymore.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/ingosteinke/2026-web-design-and-tech-predictions-3694"&gt;2027 Web, Design, and Tech Predictions - and a Review of Last Year's Forecast&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I included 2028 and 2926 in the prediction posts' cover image, just in case. Thus, if you are reading this in 2028, this is still valid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you are reading this in 2028, this is still --valid-- dumb.&lt;/p&gt;

</description>
      <category>dumb</category>
      <category>parody</category>
      <category>2027</category>
    </item>
    <item>
      <title>If Writing still Matters, How to Do it Right and Avoid AI Suspicion?</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Wed, 18 Feb 2026 14:10:39 +0000</pubDate>
      <link>https://dev.to/ingosteinke/if-writing-still-matters-how-to-do-it-right-and-avoid-ai-suspicion-2nac</link>
      <guid>https://dev.to/ingosteinke/if-writing-still-matters-how-to-do-it-right-and-avoid-ai-suspicion-2nac</guid>
      <description>&lt;p&gt;Does writing still matter? Does anyone still care? I care. I write. Because it matters.&lt;/p&gt;

&lt;p&gt;"Still" refers to the ongoing "AI will replace us all" anxiety/promise/discussion as the AI hype hasn't yet collapsed in 2026. Meta discussions about DEV, writing, and AI usage keep going recently. As &lt;a href="https://dev.to/georgekobaidze/could-vibe-coding-be-the-missing-communication-link-between-pms-and-developers-3bch"&gt;Georgi Kobaidze said&lt;/a&gt; AI (or, more specifically, vibe coding) "is not a topic I like to talk about." But it seems like we need to.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Art and Stereotypes
&lt;/h2&gt;

&lt;p&gt;AI art is part of this dilemma and discussion. Abundant tools encourage laziness and distraction. DEV is no toxic social media platform &lt;a href="https://dev.to/ingosteinke/online-community-demise-and-why-dev-is-different-16km"&gt;or at least it's a little bit different&lt;/a&gt;. However, still it collaborates with Google's AI team, a company that has long ditched its famous former motto "don't be evil." I updated my &lt;a href="https://dev.to/ingosteinke/8-alternatives-to-ai-for-coding-and-creativity-26k3"&gt;post about alternatives to AI for coding and creativity&lt;/a&gt; adding reliability risks and ethical reasons against relying on mainstream AI assistants in 2026.&lt;/p&gt;

&lt;p&gt;From a distance, the hype around generative AI reminds me of Web3, only that this time, enthuasiasts are louder and more mainstream. Naive early adopters risk failure and invest plenty of money and energy getting excited about mediocre results that they see as early examples of a promising future. I wonder if they're still trading their bored panda NFT cartoons in 2026?&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/artificial-intelligence-and-controversial-ideas-about-future-technology-1chj" class="crayons-story__hidden-navigation-link"&gt;Artificial "Intelligence" and Controversial Ideas about Future Technology (2026 Update)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-1264558" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/artificial-intelligence-and-controversial-ideas-about-future-technology-1chj" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Nov 21 '22&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/artificial-intelligence-and-controversial-ideas-about-future-technology-1chj" id="article-link-1264558"&gt;
          Artificial "Intelligence" and Controversial Ideas about Future Technology (2026 Update)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/web3"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;web3&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/openai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;openai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/chatgpt"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;chatgpt&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/machinelearning"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;machinelearning&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/artificial-intelligence-and-controversial-ideas-about-future-technology-1chj" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;31&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/artificial-intelligence-and-controversial-ideas-about-future-technology-1chj#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            11 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h3&gt;
  
  
  Cover Image Generator
&lt;/h3&gt;

&lt;p&gt;This post's cover image was generated by Google's Nano Banana AI image generator with DEV's retro-futuristic preset and my spontaneous prompt description: An intellectual women with dark colored skin and large glasses and dreadlocks sits at a table in a cafe with an opened sketchbook, pens and an opened small vintage laptop computer visible from its backside with a lot of overlapping laptop stickers. The woman looks thoughful and hopeful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1040wbz2kpik0tjtj0oc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1040wbz2kpik0tjtj0oc.png" alt="Cover image described above." width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would have expected a more intellectual, more text-focused, and less "hippie" interpretation of my prompt, but at least the generated image avoids social stereotypes prevailing in the tech industry's California Dude culture, while there might be more black women in Lagos, Nairobi and New Delhi coding than white guys in the Bay Area. Even though I'm a white tech dude myself, I try to counter culture the old stereotypes. Below are some of my recent AI-assisted Meme Monday contributions. But what's that got to do with writing? Well, we'll see in a minute...&lt;/p&gt;

&lt;h2&gt;
  
  
  Modern Monday Memes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2iuu723s7msvgig3wk2o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2iuu723s7msvgig3wk2o.png" alt="A dialoge between a barista and her customer: How do you take your coffee? Like ... in my mouth?" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F705dc5xknh03ls0f7hib.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F705dc5xknh03ls0f7hib.png" alt="A prompt engineering meme." width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7tkb4si7kb0zo61qvie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7tkb4si7kb0zo61qvie.png" alt="A meme about developers while vibe coding: we built an entire application in just 3 days. Developers after vibe coding: adding that icon is going to take 3 weeks." width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Flag Episode Analogy
&lt;/h2&gt;

&lt;p&gt;So, I made AI create cartoons and cover images with modern women instead of beardy dudes. So what? These are still stereotypes.&lt;/p&gt;

&lt;p&gt;After notable experts have left American IT and AI companies, here I am, a privileged white dude wasting his coffee break time and CPU power generating cartoon memes trying to fix what's broken on a more fundamental level?&lt;/p&gt;

&lt;p&gt;In a way, I remind myself of the South Park "flag war" episode officially known as "Chef Goes Nanners". Maybe it still matters. Maybe it even matters if the story is retold based on vague text prompts resulting in generic cartoons like this one below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2a12aptravj0l3mi3caf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2a12aptravj0l3mi3caf.png" alt="People arguing about a flag on a pole." width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I won't post a screenshot or replication of the said TV series. That would be an avoidable signal for getting shadow-banned in the current cultural climate, maybe not here but it did happen on Meta platforms and it might raise suspicion when applying for an immigration visa eventually, banning critics for alleged racism or copyright violations to silence their justified message, unless they are backed by an established media outlet and their legal department. Thus, one part of my content creation recommendations: don't be more "political" than you have to. I mean, if you have an attitude, you will probably still be political and critical between the lines, no matter how hard you try to be mainstream and stick to professional content.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Intoxication and Echo Chambers
&lt;/h2&gt;

&lt;p&gt;Without mentioning skin color in an image generation prompt, all cartoon characters created by AI are white. Not yellow, as that might infringe copyrights. The stereotypical white Americans seem nondescript enough that AI providers don't seem to fear copyright issues, at least not by artists that have the power to claim fair pay. Maybe they don't have to. As creatives, they can advance and grow, while AI will train on its own output and become even more stereotypical than before.&lt;/p&gt;

&lt;p&gt;I will follow up on that thought in an upcoming Open Mind Culture blog post about &lt;a href="https://www.open-mind-culture.org/en/6173/ai-information-intoxication-toxic-pop-culture/" rel="noopener noreferrer"&gt;information intoxication as an echo chamber phenomenon&lt;/a&gt; also observable in the telephone game also known as Chinese whispers (or Stille Post, literally "silent mail" in German).&lt;/p&gt;

&lt;h3&gt;
  
  
  Inevitable Knowledge Collapse?
&lt;/h3&gt;

&lt;p&gt;Are we &lt;a href="https://dev.to/dannwaneri/were-creating-a-knowledge-collapse-and-no-ones-talking-about-it-226d"&gt;creating a knowledge collapse and no one is talking about it&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;I have asked myself often these days how much our work as developers and content creators still matters when "AI is going to replace us all" while the very same AI needs quality training data. According to research and reasoning there is not necessarily an "AI intoxication" echo chamber effect and no gap of years without meaningful documentation and tutorials either.&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful Lying Machines
&lt;/h2&gt;

&lt;p&gt;AI can lie a thousand times as long as it still produces valuable insights, and my preferred one-line code completion after disabling an unhelpful GitHub copilot plugin is also "AI" just on a smaller scale. A scale that actually helps me. I ask, AI rolls the dice, I filter, I test and commit. If the code goes into a public repository, AI can train and other can see it. If I mind commenting and documenting, even better. I'm still not a big fan of AI, but relying on my memory and search engine results isn't good enough these days. I'm still not a big fan of StackOverflow either, which is why I've contributed so much DEV content already.&lt;/p&gt;

&lt;h2&gt;
  
  
  Relevant Ones
&lt;/h2&gt;

&lt;p&gt;As individual developers, authors, and part-time open source contributors, every one of us is just one out of many. So why and how can a single person's contribution still matter among all the noise? "Long tail" is the answer. &lt;/p&gt;

&lt;h2&gt;
  
  
  Long Tail
&lt;/h2&gt;

&lt;p&gt;While mainstream information audience might matter even less unless you can invest costly marketing power to push it, and niche content might be discarded by search engines and AI training as irrelevant, classic long-tail publishing still seems to work: popular enough, filling gaps, catering for real demand. Consider Google's "people also search for", "answer the public", keyword tools, Matomo or search console insights and similar sources suggesting relevant keywords and W-questions. Add meaningful detail to prove authenticity while also trying to come up with a more general "today I learned" takeaway.&lt;/p&gt;

&lt;h2&gt;
  
  
  IndieWeb
&lt;/h2&gt;

&lt;p&gt;IndieWeb, also known as POSSE or "own your content" principle, means you should have and maintain at least one personal website and never rely on external third-party platforms alone. Consequentially, I wrote several &lt;a href="https://www.open-mind-culture.org/en/" rel="noopener noreferrer"&gt;open mind culture blog&lt;/a&gt; posts focusing more on the cultural and art-related aspects of content creation and contemporary AI usage and misuse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unsung Elephant Hero
&lt;/h2&gt;

&lt;p&gt;DEV.to, as one of the few truly useful social web sites, also counts as a reputable content source at least partially included in &lt;a href="https://en.wikipedia.org/wiki/Common_Crawl_Foundation" rel="noopener noreferrer"&gt;Common Crawl&lt;/a&gt; snapshots, the unsung elephant hero in the room that nobody talks about in SEO/GEO discussions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttyuje8eflecoj2q6ute.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttyuje8eflecoj2q6ute.png" alt="A cute cartoo elephant similar to the blue PHP mascot walking in a room between conservatively clad businessmen and businesswomen holding flipcharts and laptops looking confused ." width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Crawl
&lt;/h2&gt;

&lt;p&gt;AI assistants are trained on Common Crawl derivates and public code repositories like those on GitHub. If you want to feed your niche solutions back into their training material, have a handful of public demo repositories that you can actively maintain, both as templates for future projects, personal code snippet libraries, and to rediscover them via Google, Claude or Copilot in case you forgot. That's when DEV proves handy again. You can describe your issue, approaches and solution(s) in a concise abstract and in lenghty detail, using different synonyms to describe the same thing and comment your code more verbosely than you would in a StackOverflow issue or answer. Add or embed your source code, codepen demos, screenshots, demo websites, and a call to action and wait for helpful comments!&lt;/p&gt;

&lt;h2&gt;
  
  
  Interlinked Web
&lt;/h2&gt;

&lt;p&gt;I have already linked to several community members' and some of my own DEV posts here, and that's one part of a good post leveraging the power of hypertext thus what still makes the internet special and useful. We don't want to get stuck in biased echo chambers and walled gardens either, so let's link to content outside of the current platform. Those links can point to reputable sources like StackOverflow, GitHub, Wikipedia or &lt;code&gt;.edu&lt;/code&gt; domains possibly helping to make a post look more reliable and authoritative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Factful Examples
&lt;/h2&gt;

&lt;p&gt;Linking or embedding CodePen demos, screenshots or proof of concept demos are always a good idea as well. Show and tell! AI can imitate authentic style and fake expertise but actual first-hand real-world experience goes far beyond adding "honest" and "why this works" to a text while relativizing its stubborn insistence on made-up alternative "facts" by adding "may", "many", "could", "often" etc. Testable real-world examples and opinions based on relevant experience is one thing that AI can't fake at least not in its current LLM-based form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fibs1tvnmqm78xb579hf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fibs1tvnmqm78xb579hf6.png" alt="Generic image of a computer screen with abstract content" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clean aesthetics devoid of meaning: generic AI imagery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perplexity
&lt;/h2&gt;

&lt;p&gt;Unlike the principle of least surprise to facilitate colloboration when coding, perplexity measures the unlikeliness of words or ideas in a text, and LLM-based AI is bad at perplexitiy by design. The "unsung elephant hero" subheadline and the cute elephant mascot cartoon is an example for perplexity: too creative, unlikely and costly to appear in a usual AI answer, it's still relevant on-topic enough for a post in a developers' community.   &lt;/p&gt;

&lt;p&gt;Perplexity is also the name of an AI service with an interface similar to Gemini, Claude and ChatGPT, but praised for researching the web and fact-checking by default. The promising concept doesn't always work well though. Perplexity failed me several times.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perplexity Failed Me
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmeyto2jqtn6rlpx687ai.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmeyto2jqtn6rlpx687ai.png" alt="Cartoon meme: perplexity failed me" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Perplexity insisted that DEV.to adds &lt;code&gt;rel="nofollow"&lt;/code&gt; to outgoing links, that Chrome web store descriptions support clickable do-follow links and that any of this matters in 2026. Perplexity also falsely attributed Pixel 3a issues to a Pixel 4a device.&lt;/p&gt;

&lt;p&gt;The phone issue makes an interesting follow-up blog post topic for my &lt;a href="https://dev.to/ingosteinke/series/22597"&gt;Sustainable Low-Waste Tech series&lt;/a&gt; in 2026.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ingosteinke/using-slightly-broken-smartphones-thanks-to-accessibility-28pf" class="crayons-story__hidden-navigation-link"&gt;Using Slightly Broken Smartphones thanks to Accessibility&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ingosteinke" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" alt="ingosteinke profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ingosteinke" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ingo Steinke, web developer
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ingo Steinke, web developer
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3210004" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ingosteinke" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F233697%2Fc55514eb-8ec3-47cf-8f65-5be0ef2b1849.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ingo Steinke, web developer&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ingosteinke/using-slightly-broken-smartphones-thanks-to-accessibility-28pf" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 2&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ingosteinke/using-slightly-broken-smartphones-thanks-to-accessibility-28pf" id="article-link-3210004"&gt;
          Using Slightly Broken Smartphones thanks to Accessibility
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/android"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;android&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mobile"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mobile&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ingosteinke/using-slightly-broken-smartphones-thanks-to-accessibility-28pf" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;19&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ingosteinke/using-slightly-broken-smartphones-thanks-to-accessibility-28pf#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              5&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            10 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;You can find more AI-generated, retro-futuristic, synth-wave, cyberpunk aesthetic images, plus some up-to-date, first-hand, real-world screenshots, there as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Claude Failed Me Too
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyugqk9r4uli873fvwksg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyugqk9r4uli873fvwksg.png" alt="Cartoon meme: Claude failed me" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Claude repeatedly suggested broken code and insisted his failed attempts count against my token limit. After another dubious suggestion, it stated that the code "honestly still may not" work in every case. I challenged his relativizing statement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdjxcfil7to58kvn7mb9k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdjxcfil7to58kvn7mb9k.png" alt="Screenshot of the conversation quoted below." width="771" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Likewise Claude, why do you say "honestly this still may". Is the matter too difficult to give a fact-based correct answer?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You're right to call that out. I was being vague when I should have been precise.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;after_setup_theme&lt;/code&gt; hook &lt;strong&gt;does not fire&lt;/strong&gt; during async media uploads because the theme is not loaded in that context. So that alternative I offered won't work — it's not uncertain, it simply won't work.&lt;/p&gt;


&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F205kjbom7ovvy2reyd0u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F205kjbom7ovvy2reyd0u.png" alt="Screenshot of the Claude quote below" width="738" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Can I please use the same Claude version that the other developers are so enthusiastic about? The one that works?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That genuinely made me laugh — and I deserve it.&lt;/p&gt;

&lt;p&gt;I've been bad in this conversation. I gave you confident wrong answers, contradicted myself, speculated as if it were fact, and made you chase dead ends. That's frustrating and a waste of your time.&lt;/p&gt;


&lt;/blockquote&gt;

&lt;p&gt;Claude wasted my time, lied to me and that made him &lt;em&gt;laugh?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't be Claude!
&lt;/h2&gt;

&lt;p&gt;That's a perfect example how not to write technical articles. Don't suggest untested code! Share what you did and why and let others decide if that looks like it might be useful. Use structure, suspense, and a sense of humor, if you like. But don't fool or gaslight your readers.&lt;/p&gt;

&lt;p&gt;I want to be absolutely clear that every current AI service based on large language model technology is fundamentally flawed and unreliable. What's true for Claude and Perplexity also applies to Google Gemini, Mistral's Le Chat and small energy-saving and privacy-focused alternatives like Ecosia AI and Thaura.&lt;/p&gt;

&lt;p&gt;No paid pro search or guardrails services can prevent errors completely. Agentic peer pool voting would still need a human to check for a minority report possibly discarded in favor of a false assumption agreed upon by the agent's majority&lt;/p&gt;

&lt;p&gt;Although some services might do better fact-checking and reasoning refinements, every single one of them can hallucinate and give misleading, incorrect or outright dangerous answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dangerous Destruction
&lt;/h2&gt;

&lt;p&gt;Whether AI makes us more or less productive (according to the recent METR study, linked and discussed further below) might not be the point after all. Playing around with AI tools as developers, we are helping to improve weapons of mass destruction. The case of US-American military use of Anthropic and OpenAI technology was one of many reasons sparking a #QuitGPT shitstorm early in 2026. But the damage is done. Computers are playing wargames and burning fossil fuels for artificial reasoning making humans write more code, more marketing slop content, bomb each other and destroy our planet more efficiently.&lt;/p&gt;

&lt;p&gt;This is not me being political, this is just quoting normal news and discussion. The Dead Internet Theory has a point, but AI-as-a-soldier is much more dangerous and cute cartoons mocking high tech gone wrong might just be a grim sense of humor on the eve of destruction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude as a Soldier
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29q4jz8oheph57ehbxqq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29q4jz8oheph57ehbxqq.png" alt="Claude as a cute robot drawn to war, firing a machine gun in front of burning oil refineries, thinking on a lawn in front of gas power plants, caption: Claude drafted for war, Claude burning fossil fuels for deep thinking" width="800" height="880"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that this doesn't only apply to Anthropic's Claude AI, Sonnet models, or OpenAI's ChatGPT. Copilot, DeepSeek, Grok and Perplexity, they all share the same fundamental dilemma, varying in ethical and technical implementation details only. And the same goes for Google AI Studio, Google Gemini, and AI-powered image generation and alteration tools like Google's Nano Banana, all currently cooperating with DEV in several ways.  &lt;/p&gt;

&lt;h2&gt;
  
  
  (Don't) Use AI Images
&lt;/h2&gt;

&lt;p&gt;All images in this post were generated with the help of artificial intelligence. AI images can be helpful, funny or aesthetically pleasing.&lt;/p&gt;

&lt;p&gt;However, creation is a waste of energy and often also an unfair unpaid exploitation of uncredited artists. As an experiment, I have used different image generators in different contexts. DEV's cover editor integrates Nano Banana with DEV's retrofuturistic synthwave nerd style system prompt, recognizeable by its neon purple and aqua lines, vintage monitors, and a preference for centered and symmetric retro aesthetics reminding of Wes Anderson movies.&lt;/p&gt;

&lt;p&gt;The orange-brownish cartoon variation "Claude failed" me was created by OpenAI's ChatGPT, formerly known as Dall-e, using two input pictures: Nano Banana's neon-retro "Perplexity failed me" DEV scene above, and the brownish barista cartoon in this post's Modern Monday Memes section, which is based on another barista cartoon which Nano Banana created inspired by a collage of a stock image preview showing AI replicas of human models. An artistically and technologically fascinating layered technique, but too elaborate and expensive for everyday use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Take Your Time
&lt;/h2&gt;

&lt;p&gt;Taking pictures in a studio or outdoors is a complex and time consuming process and so is writing. Even highly productive best selling authors typically published one book per year. Stephen King was a notable early adopter using personal computers for writing. In his memoir On Writing, King notes that he moved from his electric typewriter to the computer system in the early 80s, primarily because it made the assembly of his massive manuscripts significantly faster and allowed him to reuse text more easily. Still, King wasn't famous for the sheer amount of output but for his style, suspense and relevant content criticizing real-world American anxieties, institutions, and social failings.&lt;/p&gt;

&lt;h3&gt;
  
  
  All Work and No Play?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F808evyfdw6135pde2hug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F808evyfdw6135pde2hug.png" alt="AI-generated image quoting all work no play repeatedly on a computer monitor in front of an author at a desk next to a stakc of paper and a flying house and a distorted clock reminding of paintings by Salvador Dalí" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Writing a good post takes time or a rare moment of hyper-focused inspiration. I think I can take an occasional shortcut like copy-pasting and only slightly rephrasing a three-sentence summary about an American author without fact-checking, because it aligns with what I already thought I knew before, but 90% of my content are my own ideas in my own words. ZeroGPT rates this text as &amp;lt; 3% AI GPT while other popular DEV posts score 10% or more. However, like recent discussions pointed already, that's not the point. AI can help neurodivergent and non-native speakers express themselves and share valuable knowledge and inspiration, and just the fact that a vintage nerd writes on an analog typewriter in a mountain cabin disconnected from internet and electricity does not make their text better per se.&lt;/p&gt;

&lt;p&gt;Take your time and do as you please, but please &lt;strong&gt;don't stop writing&lt;/strong&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  P.S. An Update About AI Suspicion
&lt;/h2&gt;

&lt;p&gt;I noticed that I didn't &lt;em&gt;delve&lt;/em&gt; into the subject of AI suspicion as much as I must have planned when mentioning it in the title. So here we go. In these crazy times when we neeed to prove that we are not robots (or maybe we are?) now "written by AI" is a common accusation— even when it isn't. Words like "delve", tropes like "why it works", "what I learned", repetitive lists and subheadlines, and typographic details the suspicious em dash—a character that you can't even type on a German keyboard as a normal user. Maybe we have already been spoiled by AI output or by the marketing material that the AI has been trained on.&lt;/p&gt;

&lt;p&gt;I gave up to write a "0% non-AI written" post after several attempts of manual rewriting still got flagged by ZeroGPT.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3mjrmg5w194ahndwgdv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3mjrmg5w194ahndwgdv.png" alt="ZeroGPT screenshot" width="800" height="692"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Business decisions disrupt continuity. Planned obsolescence tries to make customers buy new products even when the existing ones are not broken.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I asked AI to make my own words sound less like AI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fockl16thgntqica0vtey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fockl16thgntqica0vtey.png" alt="Perplexity session screenshot" width="751" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Perplexity's "neutral, clear tone" got flagged as AI-written correctly, and so did its "slightly critical, conversational" suggestion and the "more polished, professional writing style." ChatGPT did no better.&lt;/p&gt;

&lt;h3&gt;
  
  
  "I am not a Robot"
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvl7il4015m3anhupdus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvl7il4015m3anhupdus.png" alt="Cartoon of two robots trying to prove that they are no robots" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;THis whole post, by the way, scored "2.4% AI GPT*" when I lasted checked it.&lt;/p&gt;

</description>
      <category>writing</category>
      <category>ai</category>
      <category>watercooler</category>
      <category>nanobanana</category>
    </item>
  </channel>
</rss>
