<?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.us-east-2.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>The Principle of Least AI</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Mon, 22 Jun 2026 09:47:15 +0000</pubDate>
      <link>https://dev.to/ingosteinke/the-principle-of-least-ai-4jc0</link>
      <guid>https://dev.to/ingosteinke/the-principle-of-least-ai-4jc0</guid>
      <description>&lt;h2&gt;
  
  
  Why AI Alternatives Matter
&lt;/h2&gt;

&lt;p&gt;AI is prone to problems affecting its output: hallucinations, incompleteness, inconsistency, and bias. AI usage is costly, and the popular free services might require expensive paid plans or downgrade to sponsored light versions at any time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Hit Submit!
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdd2qg2cqzf6enelpe3wl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdd2qg2cqzf6enelpe3wl.png" alt="Hacker and rubber duck and cat: don't ask leading questions" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: image created by OpenAI using Mistral's Le Chat mascot&lt;/p&gt;

&lt;p&gt;Ethical issues aside, lazily using AI too often and too early won't make you a better coder or more creative. And AI companies don't only take your money, they're also after your data – and your time!&lt;/p&gt;

&lt;p&gt;Techniques like &lt;a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging" rel="noopener noreferrer"&gt;Rubber Duck Debugging&lt;/a&gt; (internal dialog development, preparing questions and anticipating answers without actually asking anyone) are &lt;a href="https://dev.to/ingosteinke/8-alternatives-to-ai-for-coding-and-creativity-26k3/"&gt;alternatives to AI&lt;/a&gt; for coding and creativity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Ask Suggestive Questions
&lt;/h2&gt;

&lt;p&gt;If your question implies a certain answer, asking only makes sense for falsification. AI (and other people) will hopefully tell you when you're completely wrong. Only that AI often doesn't. Current models are trained for flattery and verbosity.&lt;/p&gt;

&lt;p&gt;What a waste of time!&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Ask Why
&lt;/h2&gt;

&lt;p&gt;Ask open questions, and always prefer to ask "how", not "why".&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay Skeptical
&lt;/h2&gt;

&lt;p&gt;Don't believe anything without factful proof or a recent, reputable, relevant source.&lt;/p&gt;

&lt;p&gt;GEO, the AI-agent-targeting variant of search engine optimization, has already succeeded in gaslighting AI and poisoning its answers with fake sources biased towards commercial results. AI seems much more gullible than real people.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://www.linkedin.com/pulse/shape-enshittification-books-longer-get-read-internet-ryan-levesque-ih2cf/" rel="noopener noreferrer"&gt;The Shape of Enshittification: Books That No Longer Get Read, An Internet That No Longer Gets Surfed, &amp;amp; The End of Social Media As We Know It..&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Principle of Least Power
&lt;/h2&gt;

&lt;p&gt;Remember the &lt;a href="https://www.w3.org/2001/tag/doc/leastPower.html" rel="noopener noreferrer"&gt;rule of least power&lt;/a&gt;: don't rent a truck when you need a minivan. Don't use AI when you need autocomplete, web search, or a tutorial!&lt;/p&gt;

&lt;p&gt;I sketched a pyramid of thinking, creativity, and information retrieval again. As you can guess, AI assistants are "on top" as the most costly exception, while the broad basis should be traditional groundwork. Here's a cute AI-slop adaptation:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnlxtf0qpxdw5kvusl9e0.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnlxtf0qpxdw5kvusl9e0.png" alt="Coder with cute cartoon team: don't hit submit until your code actually works" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://dev.to/ingosteinke/hand-crafted-creativity-counter-culture-against-toxic-digitization-8cf"&gt;Hand-Crafted Creative Counter-Culture against Toxic Digitization&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In practice, it's more complicated. What's "AI" and what isn't?&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm happy with AI ...
&lt;/h2&gt;

&lt;p&gt;I'm happy about "autocomplete on steroids", but I still don't trust agents to refactor a legacy codebase in 2026.&lt;/p&gt;

&lt;p&gt;I'm happy with AI-assisted image editing, but I'm tired of all the sloppy stuff taking the place of crafted screenshot collages or authentic photography.&lt;/p&gt;

&lt;h2&gt;
  
  
  List of Popular AI Providers (2026)
&lt;/h2&gt;

&lt;p&gt;Focusing on privacy and local-first pragmatism, Ecosia and Mistral's Le Chat lead my top ten, although and because I'm aware that they might not be the smartest top-notch vanguards. But they don't have to. No need to let Americans or Chinese know what I'm working on, or what I'm going to tell my doctor, when modest models are smart enough.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;127.0.0.1 (as local as it gets)&lt;/li&gt;
&lt;li&gt;Ecosia (AI and search engine) 🇩🇪&lt;/li&gt;
&lt;li&gt;Le Chat (IA) 🇫🇷 🐱&lt;/li&gt;
&lt;li&gt;Claude 🇺🇸&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's &lt;em&gt;my&lt;/em&gt; &lt;em&gt;subjective&lt;/em&gt; top three, not counting number zero, as I haven't set that up yet.&lt;/p&gt;

&lt;p&gt;This list is subject to change, and yours will surely differ.&lt;/p&gt;

&lt;p&gt;So, who am I?&lt;/p&gt;

&lt;p&gt;I'm developing, designing and optimizing websites and (web) apps.&lt;/p&gt;

&lt;p&gt;I have been doing this since 1997.&lt;/p&gt;

&lt;p&gt;You can call me old.&lt;/p&gt;

&lt;p&gt;What I'm not: I'm &lt;a href="https://dev.to/ingosteinke/neither-naive-nor-nostalgic-1mmp"&gt;neither naive nor nostalgic&lt;/a&gt;, ...&lt;/p&gt;

&lt;h2&gt;
  
  
  ... no luddite, no AI-denier, but ...
&lt;/h2&gt;

&lt;p&gt;Do I sound like a grumpy patriot yelling at the sky?&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fti92f08i6shfdkv75dno.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fti92f08i6shfdkv75dno.png" alt="a grumpy old white men wearing and surrounded by european cliché accessories, raising a fist and yelling at the sky." width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image generated by OpenAI, probably inspired by &lt;a href="https://en.wikipedia.org/wiki/Albert_Uderzo" rel="noopener noreferrer"&gt;Albert Uderzo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What is it that I'm really angry about?&lt;/p&gt;

&lt;h2&gt;
  
  
  Enshittification
&lt;/h2&gt;

&lt;p&gt;Pragmatism and capitalist logic make most companies eventually deteriorate their products on purpose until they are only slightly better than the second-best alternative, or just good enough not to lose all of their loyal customers and brand reputation.&lt;/p&gt;

&lt;p&gt;Taking the cliché further, while Europe often stands in its own way and stalls its administration in bureaucracy, China floods the world market with cheap plastic fashion, networking electronics, and surprisingly successful AI models (not in my top ten).&lt;/p&gt;

&lt;p&gt;America, or more specifically, the United States, somehow still manage to defend their position as leading exporters of "premium" hardware, software, and culture. However, the premium becomes hollow because of the aforementioned &lt;a href="https://en.wikipedia.org/wiki/Enshittification" rel="noopener noreferrer"&gt;enshittification&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You might say I'm just jealous of the Californian tech broligarchs. I mean, didn't Elon help popularize electric mobility? Isn't he the one who provides Starlink to Ukraine? Yes, he is. And a dictator built our motorways. Just saying.&lt;/p&gt;

&lt;p&gt;Long ago, Google dropped their former "don't be evil" motto.&lt;/p&gt;

&lt;p&gt;Honestly, I often get the impression that "be evil" is what drives current tech stakeholders. And that's very bad. Are we human or are we lemmings actively creating a dystopian future?&lt;/p&gt;

&lt;p&gt;You might say, I'm just too old to understand, that I'm just pessimistic because I'm too stupid to prompt. You might say my perfectionism is &lt;a href="https://dev.to/ingosteinke/css-only-a-nerdy-hobby-17hf"&gt;just another nerdy hobby&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Subjective List of Unpopular AI and Search Providers
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;ChatGPT by OpenAI (see #quitgpt why)&lt;/li&gt;
&lt;li&gt;Gemini / Google AI mode (see #degoogle)&lt;/li&gt;
&lt;li&gt;Copilot / Microsoft Bing AI&lt;/li&gt;
&lt;li&gt;Perplexity (just another hallucinating American)&lt;/li&gt;
&lt;li&gt;Meta AI (just so that they will get mentioned, too)&lt;/li&gt;
&lt;li&gt;Grok (capable, but most unethical)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In practice, I still use them. It's hard not to, when there is no major relevant search engine index yet besides Google and Microsoft's Bing, which are used by Ecosia and other alternative meta-search engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hypocrites we are?
&lt;/h2&gt;

&lt;p&gt;As Giorgi Kobaidze pointed out in &lt;a href="https://dev.to/georgekobaidze/ai-psychosis-is-no-longer-fiction-3258"&gt;AI Psychosis Is No Longer Fiction&lt;/a&gt;, "people worry about AI taking their place, while at the same time actively using it in ways that make it easier for it to do so."&lt;/p&gt;

&lt;p&gt;I'm using AI nearly every day. I even use it to generate cartoons and illustrations eventually, after having claimed so many times why that's wrong for so many reasons.&lt;/p&gt;

&lt;p&gt;I'm using AI nearly every day as it has already become ubiquitous and seemingly without a practical alternative. Google search results are often so bad and irrelevant, and prepended with sponsored results, while the AI answer, currently on top of everything just seems too promising to ignore.&lt;/p&gt;

&lt;p&gt;I'd prefer providers prioritized more classical products, fixed bugs and improved editors and search results. I mean, sometimes they still do. VS Code, GIMP, and Linux on Desktop prove past progress every day. Maybe AI is an important step towards more progress.&lt;/p&gt;

&lt;p&gt;I only hope that we, as humans, and we, as developers, can prevent stakeholders from shaping the future towards their own unethical goals thanks to the new tools they already control too much.&lt;/p&gt;

&lt;h2&gt;
  
  
  Constructive Criticism
&lt;/h2&gt;

&lt;p&gt;After all, my series is called "constructive criticism" and maybe I shouldn't be so negative. Then again, someone must have their say and point out flaws and fallacies of new technologies.&lt;/p&gt;

&lt;p&gt;Further reading: see links in the text above.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>CSS – only a Nerdy Hobby?</title>
      <dc:creator>Ingo Steinke, web developer</dc:creator>
      <pubDate>Wed, 10 Jun 2026 11:11:50 +0000</pubDate>
      <link>https://dev.to/ingosteinke/css-only-a-nerdy-hobby-17hf</link>
      <guid>https://dev.to/ingosteinke/css-only-a-nerdy-hobby-17hf</guid>
      <description>&lt;p&gt;In times when people believe that "AI can code a website in 2 days" (see: &lt;a href="https://dev.to/ingosteinke/leverage-ai-as-a-customer-2pp"&gt;how to leverage AI as a customer&lt;/a&gt;), what is "coding," and why does the question matter?&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Coding?
&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%2F2zhcc0x8yfmlob8padrx.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%2F2zhcc0x8yfmlob8padrx.png" alt="A private portfolio homepage on a classic personal computer in a rusty dystopian science-fiction context" width="799" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Welcome to my homepage!" – yes, even AI can do that better now.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI's Lack of Understanding of CSS
&lt;/h2&gt;

&lt;p&gt;Coding is a skill. But is &lt;a href="https://dev.to/ingosteinke/should-web-designers-learn-javascript-or-css-3j94"&gt;learning CSS&lt;/a&gt; in 2026 nothing but a nerdy hobby? I still think that understanding CSS gives us, as experienced senior web developers, an important advantage. If only to maintain and debug legacy code that AI and juniors struggle to handle.&lt;/p&gt;

&lt;p&gt;My series of CSS case studies and quirky edge case insights is definitely nerdy. Its primary audience is one person: my future self, so I can find what I will have forgotten when googling it later. That being said, my CSS posts have gotten very positive reactions in the DEV community. Parallax scrolling with accessibility in mind, parent selectors, and taking colors to the next (CSS) level – what's up next?&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next? Grid-Lanes Masonry Layout?
&lt;/h2&gt;

&lt;p&gt;Well, I was planning to explore the new native grid-lane-based masonry layout with a practical example. Yet, I'll happily leave the vanguard position for somebody else and just wait until AI suggests appropriate Tailwind classes eventually.&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%2Ftkjvdl8uqjtbon0wlwgu.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%2Ftkjvdl8uqjtbon0wlwgu.png" alt="Nerdy person waiting for tailwind near a crossroads of futuristic car lanes running between skyscrapers, defined by CSS code" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it.&lt;/p&gt;

&lt;p&gt;I'm still writing, extending, and debugging classic CSS in the meantime. Yet, I'll go for Tailwind, Uniwind, or whatever syntactical sugar is the most productive and maintainable choice when starting a new project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tired of the Extremes
&lt;/h2&gt;

&lt;p&gt;I'm tired of AI slop and AI arguments everywhere, but I'm even more tired of code-golf style nerd talk without practical benefit.&lt;/p&gt;

&lt;p&gt;I don't identify as a nerd. Despite my passion for creativity, writing, and productive procrastination, I also love getting things done, finishing a project, and calling it a day. I love to close my laptop, go for a walk, and turn off my mobile. I'm still working on all that, aiming to socialize more, listen better, be an ally, and sell my 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%2F675xhwbzauwedg4eqz2m.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%2F675xhwbzauwedg4eqz2m.png" alt="Person leaving the workplace for a park, signs quoting the text from above." width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pragmatism: Don't be a Nerd, get Things done!
&lt;/h2&gt;

&lt;p&gt;More impact, less perfectionism:&lt;/p&gt;

&lt;p&gt;Let's build products that matter. Let's stick to quality.&lt;/p&gt;

&lt;p&gt;Let's make our codebase maintainable without getting nerdy about perfect, clean code optimization. Let's use AI without blindly trusting it.&lt;/p&gt;

&lt;p&gt;Let's get a little bit less nerdy, stop talking about AI so much, and get more things done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: is CSS all but a Hobby?
&lt;/h2&gt;

&lt;p&gt;No, CSS isn't only a nerdy hobby, when it helps you get things done. It is if it doesn't. Understanding style sheets is still fundamentally important, even if you're 100% vibe coding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nothing else matters.
&lt;/h3&gt;

&lt;p&gt;By the way, this text was 100% human-written without any AI assistance, apart from Grammarly and image generation – and despite a 20% AI GPT likelihood score. Even when it comes to AI detection, AI can get it all wrong. How many of these words did I type by hand or speak in person? It doesn't matter. How much of my code is written by AI? Again, it doesn't matter. Impact matters. Nothing else matters.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>css</category>
      <category>webdev</category>
      <category>watercooler</category>
    </item>
    <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;&amp;nbsp;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;
              

              5&lt;span class="hidden s:inline"&gt;&amp;nbsp;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;&amp;nbsp;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;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;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;&amp;nbsp;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;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;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;&amp;nbsp;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;
              

              146&lt;span class="hidden s:inline"&gt;&amp;nbsp;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;&amp;nbsp;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;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;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 crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&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;&amp;nbsp;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;
              

              20&lt;span class="hidden s:inline"&gt;&amp;nbsp;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 crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&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;39 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;
          39 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;&amp;nbsp;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;
              

              23&lt;span class="hidden s:inline"&gt;&amp;nbsp;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;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&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;&amp;nbsp;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;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;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>
  </channel>
</rss>
