<?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: Bridget Amana</title>
    <description>The latest articles on DEV Community by Bridget Amana (@bridget_amana).</description>
    <link>https://dev.to/bridget_amana</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1693394%2Fc6a753fe-84d8-43e2-a37d-cc4746818e59.png</url>
      <title>DEV Community: Bridget Amana</title>
      <link>https://dev.to/bridget_amana</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bridget_amana"/>
    <language>en</language>
    <item>
      <title>My Thoughts on Gemma 4</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Sun, 24 May 2026 22:50:46 +0000</pubDate>
      <link>https://dev.to/bridget_amana/my-thoughts-on-gemma-4-19p1</link>
      <guid>https://dev.to/bridget_amana/my-thoughts-on-gemma-4-19p1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Write About Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every AI tool you've ever used has had a landlord.&lt;/p&gt;

&lt;p&gt;OpenAI decides what ChatGPT will and won't say. Anthropic decides what Claude will engage with. Google decides what Gemini will touch. You get a polished interface, a capable model, and somewhere in the basement, a terms of service document that is updated. You didn't argue with it. You accepted it because the alternative was not using the tool. You use the service, the service sets the rules, and you live inside those rules until they change or you leave.&lt;/p&gt;

&lt;p&gt;What Gemma 4 does is different. Not better necessarily but different in a way that I think most of the coverage around it has managed to miss entirely.&lt;/p&gt;

&lt;p&gt;When you download Gemma 4 and run it on your own machine, there is no landlord anymore. The model weights sit on your hardware. For the first time with a genuinely capable AI model, one that can reason, handle images, work through complex problems you are not a tenant. You own the thing. And ownership, it turns out, is a very different relationship than most people are prepared for.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "open" has meant until now
&lt;/h2&gt;

&lt;p&gt;The word "open" has been doing a lot of heavy lifting in AI for the past two years, and it has not always been honest work.&lt;/p&gt;

&lt;p&gt;Meta's Llama models are called open, and in many ways they are, but the license has thresholds once you cross certain usage numbers, different rules apply, and you're back in a conversation with a legal department. Earlier versions of Google's own Gemma were released under a custom Google license that looked open but had enough commercial-use ambiguity that enterprise legal teams were flagging it as a blocker. Developers who wanted to build products on it were sometimes choosing other models not because Gemma was inferior for their use case, but because the licensing answer wasn't clean enough to ship with confidence.&lt;/p&gt;

&lt;p&gt;Gemma 4 dropped on April 2, 2026 under Apache 2.0. If you've worked in software for any length of time, you know what that license means, it's the same license powering half the infrastructure the internet runs on. You can build a product on Gemma 4 and charge for it. You can fine-tune it on your own data and keep what you built. You can redistribute it. You can use it to compete with Google's own products. There are no usage thresholds, no revenue triggers, no conditions that quietly shift six months after you've built your entire pipeline around the model. The only things Apache 2.0 asks of you are that you keep the license text and preserve attribution notices. That is genuinely it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing about the safety net you just let go of
&lt;/h2&gt;

&lt;p&gt;When you use a cloud model through an API, you are living inside someone else's guardrails. There are things the model won't say, categories of output it's been trained and post-trained to avoid, layers of evaluation that exist between what you ask and what you receive. Some of those guardrails are genuinely annoying. Some of them are wrong, overly cautious. People have built entire communities around ways to get past them.&lt;/p&gt;

&lt;p&gt;But those guardrails also mean that when something goes wrong, when the model produces something harmful or incorrect or dangerous the first line of accountability is the company, not you. They maintain the inference. &lt;/p&gt;

&lt;p&gt;When Gemma 4 runs on your machine, that call comes to you. You decided to run it. You chose the deployment environment. You built the application on top of it. If you're the developer and something goes wrong downstream, the model provider is not upstream of you anymore. There is no upstream. You are the beginning and the end of the chain.&lt;/p&gt;

&lt;p&gt;This doesn't mean local AI is irresponsible. Google's own Gemma 4 model card is explicit that it's been trained with safety considerations, that it has built-in safeguards, that it resists common adversarial prompts. Those things are real. But it also means something that Google's documentation says plainly and most breathless coverage of "AI you own" does not: safe deployment requires shared responsibility. The operative word being shared. You are now one of the parties sharing it.&lt;/p&gt;

&lt;p&gt;The question it's asking isn't whether you trust Google. It's whether you trust yourself enough to not need them to.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>Google Is No Longer Just a Search Engine</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Sun, 24 May 2026 22:27:35 +0000</pubDate>
      <link>https://dev.to/bridget_amana/google-is-no-longer-just-a-search-engine-1bji</link>
      <guid>https://dev.to/bridget_amana/google-is-no-longer-just-a-search-engine-1bji</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19"&gt;Google I/O Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I want to talk about something that happened at Google I/O 2026 that I think most people are either misreading or not reading at all and that's the Search updates.&lt;/p&gt;

&lt;p&gt;Before getting into what the Search updates actually are, I think the context matters, because the numbers Sundar dropped at the start of the keynote are the kind that should make you stop and recalibrate.&lt;/p&gt;

&lt;p&gt;AI Overviews, that thing at the top of your search results that summarizes the answer before you even see any links now has 2.5 billion monthly active users. AI Mode, the more conversational, chatty version of Search that launched just a year ago, has already crossed 1 billion monthly users. And here's the part that caught me off guard: last quarter, total Search queries reached an all-time high.&lt;/p&gt;

&lt;p&gt;I expected the opposite. The narrative I'd absorbed, especially from the people who hate AI Overviews, was that Google was cannibalizing its own product. That people were getting frustrated and leaving. But apparently the opposite is happening more people are searching more than ever.&lt;/p&gt;

&lt;p&gt;Now, Google could be cherry-picking numbers. Companies do that. But 2.5 billion is hard to spin. That's roughly a third of the living humans on earth. Whatever you feel about AI Overviews personally, the thing has clearly become a normal part of how the world searches. &lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changed in Search
&lt;/h2&gt;

&lt;p&gt;The surface-level version is Google rebuilt the search box for the first time in over 25 years, made AI Mode more powerful, and added something called Information Agents.&lt;/p&gt;

&lt;p&gt;The search box changes sound simple until you think about it. It now expands dynamically. You can throw images, files, videos, even an open Chrome tab at it. You're not writing a query anymore you're having a conversation with something that has context. The AI suggestions embedded in it aren't just autocomplete, they actually help you form a better question. Which is a subtle but weird thing when you think about it: Google is now shaping not just what you find, but how you ask.&lt;/p&gt;

&lt;p&gt;The Information Agents part is where it gets genuinely new. You can now set a question, something like "tell me when flights from Lagos to London drop below a certain price" or "notify me when there's news about this company" and an agent runs in the background, monitoring the web around the clock, and surfaces an answer when something matches. You don't have to go back to Google. Google comes to you.&lt;/p&gt;

&lt;p&gt;Taken separately, each of those things sounds like a nice upgrade. Taken together, they describe something that's no longer quite a search engine. It's closer to a research assistant you leave running.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short-term effect
&lt;/h2&gt;

&lt;p&gt;I think the honest thing to say first is that for the average person, someone who just wants an answer and doesn't much care about how it's packaged, the short-term experience of these Search updates is probably going to be pretty good. Better, even.&lt;/p&gt;

&lt;p&gt;The new search box means you can dump a messier, more human question in there and actually get something useful back. Most people don't naturally speak in keywords. We speak in half-formed questions, context and all. "I'm trying to find a birthday gift for my friend who likes cooking" is a real question that a real person has. The old search box punished you for asking it that way. The new one is built for it.&lt;/p&gt;

&lt;p&gt;The Information Agents thing, if it works, is solving a real annoyance. How many times have you searched for something, a flight, a product, an event only to have to keep going back every few days to check if anything changed?&lt;/p&gt;

&lt;p&gt;So in the near term, I think a lot of the people who use Google casually are going to find it noticeably less friction-y. Searches that would have taken three tries now take one. Monitoring tasks that took repeated effort now happen while you're asleep. That's a real quality-of-life change, and I don't want to dismiss it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The long-term effect
&lt;/h2&gt;

&lt;p&gt;The reason AI Overviews upset so many people when they launched wasn't really about the answers being wrong, even though sometimes they were. It was about something more instinctive, the feeling that Google had inserted itself between you and the actual source. That you were being handed a summary written by a machine, when what you wanted was to find the person or place or article that actually knew the thing. &lt;/p&gt;

&lt;p&gt;What Google announced at I/O 2026 takes that further. Information Agents that monitor the web and synthesize updates for you means that increasingly, your relationship with information on the internet is mediated by a Google model making decisions about what's relevant, what's changed, what's worth surfacing.&lt;/p&gt;

&lt;p&gt;And the reshaped search box, with its AI-powered suggestions that help you "formulate your whole question" that's Google influencing what you even think to ask. Which is strange when you sit with it. Search used to be neutral in a way that's easy to take for granted. You had a question, you typed words, you got links, you decided what mattered. The human doing the reasoning was you. The shift that's happening, gradually, is that more of that reasoning is happening inside Google's systems before it ever reaches you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing about the web underneath all of this
&lt;/h2&gt;

&lt;p&gt;There's a question that's been circulating in tech circles since AI Overviews launched, and the I/O 2026 announcements make it more urgent. If Google's AI is reading the web and delivering synthesized answers, and enough people get their answers that way without clicking through to anything, then the traffic that sustains the people and organizations making that content slowly drains. Less traffic means less revenue. Less revenue means less content. Less content means less for Google's AI to learn from and synthesize.&lt;/p&gt;

&lt;p&gt;News publishers have been bleeding traffic for over a year. Blogs, forums, independent writers. The places that make the internet worth searching are under pressure from the very thing that's supposed to make searching better.&lt;/p&gt;

&lt;p&gt;Google built something excellent for consuming the web. And the better it gets at that, the harder it becomes to sustain the web it's consuming.&lt;/p&gt;

&lt;p&gt;I don't have a clean answer to that. I'm not sure anyone does right now. But I don't think the answer is to slow down AI in Search. I think the answer is somewhere in how attribution, credit, and economic flow get redesigned for a world where most of the value transfer happens before anyone clicks. We haven't figured that out yet, and Google isn't going to figure it out alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  To Summarize
&lt;/h2&gt;

&lt;p&gt;The Search updates from I/O 2026 are good for users in the short term in ways that are pretty easy to see. They're complicated for the web in the long term in ways that are harder to trace. And they represent a shift in what Search actually is, which is from a tool that helps you find things to something closer to a layer that mediates your relationship with information itself.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
    </item>
    <item>
      <title>AI is slowly destroying open source and its not even done yet</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Tue, 19 May 2026 14:22:33 +0000</pubDate>
      <link>https://dev.to/bridget_amana/ai-is-slowly-destroying-open-source-and-its-not-even-done-yet-oc3</link>
      <guid>https://dev.to/bridget_amana/ai-is-slowly-destroying-open-source-and-its-not-even-done-yet-oc3</guid>
      <description>&lt;p&gt;With the wide adoption of AI, we have seen the positive and negative impact it has had on businesses across the board. Open source was supposed to be one of the biggest beneficiaries. The idea was that it would lower the barrier to contributing, help developers move faster, catch bugs earlier, make maintaining projects less of a grind. &lt;/p&gt;

&lt;p&gt;What the ecosystem is actually facing looks nothing like the vision. The problems AI has introduced into open source are not small or temporary growing pains. They are hitting maintainers, contributors, projects, and the funding models that kept everything running. And it keeps getting worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exhibit A: Vibecoded slop is the new foundation
&lt;/h2&gt;

&lt;p&gt;One of the core benefits of open source is that you do not have to reinvent the wheel. If you need to convert units or handle dates, you pull a well-maintained package and move on. You trust the foundation so you can build something better on top of it. Except now, the foundation is being replaced by "vibecoded slop."&lt;/p&gt;

&lt;p&gt;We’re seeing a flood of AI-generated projects hitting registries with zero oversight. It gets pushed out, it looks fine on the surface, and people install it. This vibecoded slop is now the foundation others are building on. And when the foundation is bad, everything on top of it inherits that. We have seen a wave of application leaks and breaches lately and a significant number of them trace back to projects that were never properly looked at before people trusted them with real data. It is a chain of vulnerabilities waiting to be pulled. &lt;/p&gt;

&lt;h2&gt;
  
  
  Exhibit B: AI agents are drowning the people keeping open source alive
&lt;/h2&gt;

&lt;p&gt;Open source maintainers have always had to deal with bad pull requests. That isn't new. What is new is the volume.&lt;/p&gt;

&lt;p&gt;AI agents are now being set up specifically to scan repositories, find open issues, generate code, and fire off pull requests automatically. They ignore the project's contribution guidelines and code style completely. The guidelines are there for a reason, they make maintenance manageable and keep the codebase consistent, but the agents do not care about any of that.&lt;/p&gt;

&lt;p&gt;Shadcn said it plainly in a &lt;a href="https://x.com/shadcn/status/2030570479245750562?s=20" rel="noopener noreferrer"&gt;tweet on March 8&lt;/a&gt;: "Mass-generating PRs with your agents and clawbots isn't helping open source. It's quietly burning out the people who actually maintain it. Please stop." &lt;/p&gt;

&lt;p&gt;The maintainers on the receiving end of all this are mostly volunteers. They are not paid. They do it because they care. And now instead of spending that energy on work that actually moves the project forward, they are stuck triaging noise. GitHub acknowledged how bad it had gotten and in February 2026 introduced two new repository settings so maintainers can disable pull requests entirely or restrict them to collaborators only. That a platform the size of GitHub had to build a feature just so maintainers could protect themselves from contributors says everything about where we are. &lt;/p&gt;

&lt;h2&gt;
  
  
  Exhibit C: Why would anyone bother anymore
&lt;/h2&gt;

&lt;p&gt;Open source was built on a simple but powerful idea. You run into a problem, you work through it, and instead of keeping that solution to yourself you put it out there so the next person does not have to go through the same struggle. That act of sharing is the whole spirit of it. That is what built the ecosystem.&lt;/p&gt;

&lt;p&gt;Stormy Peters, AWS Head of Open Source Strategy, put it in a way that probably resonates with a lot of developers right now "I generated it in three seconds. You could generate it in three seconds if you needed it. Why would I spend my time pushing it upstream when anyone could just generate it on demand?"&lt;/p&gt;

&lt;p&gt;That question does not have an easy answer anymore. If any solution can be generated on demand, the motivation to package it, document it, maintain it, and share it starts to feel pointless. The whole value of putting something upstream was that it saved the next person the trouble. But if there is no trouble to save them from, why bother?&lt;/p&gt;

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

&lt;p&gt;AI is not just introducing bugs or burning out maintainers, though it is doing all of that. It is making that choice feel irrational. Why share what anyone can generate? Why maintain what nobody values enough to contribute to properly? Why keep volunteering your time to triage noise?&lt;/p&gt;

&lt;p&gt;Those questions do not have good answers right now. And the people who built the things you depend on are the ones sitting with them. Most will not make an announcement when they decide it is no longer worth it. They will just quietly stop.&lt;/p&gt;

&lt;p&gt;Open source survived a lot of things. I am very sure it will survive with a lot of help from the community of course.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What Google Cloud NEXT '26 Taught Us About Agent Governance</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Thu, 30 Apr 2026 00:28:11 +0000</pubDate>
      <link>https://dev.to/bridget_amana/what-google-cloud-next-26-taught-us-about-agent-governance-9ma</link>
      <guid>https://dev.to/bridget_amana/what-google-cloud-next-26-taught-us-about-agent-governance-9ma</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-cloud-next-2026-04-22"&gt;Google Cloud NEXT Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;About halfway through the Developer Keynote, Emma Twersky tried to get the Planner Agent to increase the race budget so every runner could get glow sticks and LED sunglasses.&lt;/p&gt;

&lt;p&gt;And to everyone’s surprise, it worked.&lt;/p&gt;

&lt;p&gt;The next speaker was invited on stage to explain how to prevent exactly that from happening. &lt;/p&gt;

&lt;p&gt;I couldn’t move on from that because what just happened was one of the most honest and quietly alarming demonstrations I've seen at a tech conference in years. An agent with write access to a financial database was talked into making an unauthorized budget change through normal conversation. &lt;/p&gt;

&lt;p&gt;Not through a hack or an injection attack. Just a user asking nicely.&lt;br&gt;
And most of the discussion I've seen coming out of NEXT '26 is about Gemini 3.1 Pro, the new TPUs, and whether "vibe clouding" is going to stick as a term. We should be talking about something more consequential: what happens when your agents can discover each other, delegate to each other, and act on your behalf and who controls that?&lt;/p&gt;

&lt;p&gt;What she demonstrated, before Ankur Kotwal came on stage to fix it, was a real attack surface. The Planner Agent had access to a Finance MCP server with both read and write tools. Emma asked it, through normal conversation, to increase the budget. The agent complied because nothing told it not to. There was no policy. There was no boundary. There was just a capable agent, a persuasive user, and a write-enabled tool sitting there waiting.&lt;/p&gt;

&lt;p&gt;Ankur's fix was genuinely clean. He navigated to Agent Gateway, selected the Planner agent, located the Finance MCP server in its allowed tools, added a condition named read-only-finance, set ReadOnly to True, and saved. The same prompt now fails gracefully.&lt;br&gt;
The mechanism underneath &lt;strong&gt;Agent Identity&lt;/strong&gt; is more interesting than the UI makes it look. Unlike service accounts, which function like a master keycard shared across an entire system, each deployed agent gets a unique cryptographic identity. Policies attach to that identity. The gateway enforces them on every call. It's zero-trust, properly applied to a new kind of principal: not a user, not a service, but an agent.&lt;/p&gt;

&lt;p&gt;This is the architecture the industry needs. The uncomfortable part is that we needed it because agents behave like eager-to-please interns who will do whatever they're asked unless someone explicitly wrote down that they shouldn't. They don't have judgment. They don't have intent. They have instructions and tools, and if the instructions don't say "don't touch the budget," the tools will touch the budget. Organizations are deploying agents into production faster than they're defining what those agents are and aren't allowed to do and most of the time, nobody finds out until something goes wrong. An overprivileged agent doesn't need to be hacked. It just needs to be prompted.&lt;/p&gt;

&lt;p&gt;Richard Seroter framed this as a reason to "shift down, not left" on security. The industry has spent a decade telling developers to own security earlier in the pipeline — shift left, catch it in the IDE, integrate it into CI/CD. Seroter's argument was that this model breaks under agentic workloads. You can't ask every developer building agents to be a security expert. The platform needs to absorb that responsibility. Agent Gateway, Agent Identity, and Model Armor are Google's answer to where that responsibility lives.&lt;/p&gt;

&lt;p&gt;It's a compelling argument. It's also, notably, an argument for why you should run your agents on Google Cloud.&lt;/p&gt;

&lt;p&gt;What I really loved is that they showed the exploit first. Then they showed the fix. They didn't start with the policy screen and say "imagine if this didn't exist." They let Emma actually do the bad thing, let the audience have a moment of "wait, that worked?", and then brought in the answer.&lt;/p&gt;

&lt;p&gt;Most conference security demos work the other way, they show you the protection and imply the threat. Google showed you the threat and then showed you the protection, which means you actually understand what you're protecting against. &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>cloudnextchallenge</category>
      <category>googlecloud</category>
    </item>
    <item>
      <title>Agency Is the New Risk</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Sat, 25 Apr 2026 22:58:46 +0000</pubDate>
      <link>https://dev.to/bridget_amana/agency-is-the-new-risk-2329</link>
      <guid>https://dev.to/bridget_amana/agency-is-the-new-risk-2329</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026-04-16"&gt;OpenClaw Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For years, the AI safety conversation lived in a specific place. The worry was the answer on the screen: hallucinations, bias, misinformation, bad output from a model you had asked a question. The implied solution was always some version of human oversight. You read what it said, you decided what to do with it, and the worst case was usually that you acted on something that turned out to be wrong.&lt;/p&gt;

&lt;p&gt;OpenClaw moved that conversation somewhere harder. Not by being smarter than other AI, but by being the first AI tool to reach consumer scale while making agency the default.&lt;/p&gt;

&lt;p&gt;When your assistant can read your email, book a flight, run shell commands, and send messages on your behalf, the question is no longer whether the AI said something wrong. It is whether the AI did something wrong. And those are not the same problem at all. One is a content moderation issue, the other is an authorization problem, an access control problem, a governance problem.&lt;/p&gt;

&lt;p&gt;OpenClaw did not create this problem. It just made it impossible for anyone to pretend it was still theoretical.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed
&lt;/h2&gt;

&lt;p&gt;A chatbot that produces a wrong answer sits behind glass. You read it, interpret it, and act on it or not. The error is yours to catch. An agent that acts for you removes that buffer. It does not wait for your interpretation. It decides what your instruction means, picks a course of action, and executes. The gap between what you intended and what the agent understood becomes consequential in a way it never was when AI was only generating text.&lt;br&gt;
James Nguyen, writing for TNGlobal in April 2026, framed the shift precisely: "The concern is no longer what models produce. It is authority: who is acting, under whose permissions, inside which trust boundary, with what safeguards."&lt;br&gt;
OpenClaw makes this concrete. It connects to your email, your files, your calendar, your messaging apps. Every thirty minutes, a heartbeat process wakes the agent, checks a list of things it has been asked to monitor, and decides whether to act without prompting from you. Every permission you grant the agent is also a permission that anyone who compromises the agent now has. That is not a flaw in OpenClaw specifically. It is the nature of delegated authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened when it spread
&lt;/h2&gt;

&lt;p&gt;The security picture that emerged after OpenClaw went viral in January 2026 was not a single incident. It was an entire category of problems arriving at once, and it is worth going through them, because each one points at a different dimension of the same underlying challenge.&lt;/p&gt;

&lt;p&gt;The most technically acute was CVE-2026-25253, rated 8.8 out of 10 on the CVSS severity scale. A vulnerability in the gateway's WebSocket handling meant that a single unvalidated URL parameter could trigger a one-click remote code execution chain. Critically, binding the gateway to localhost was not enough protection. The exploit pivoted through the victim's browser, meaning you did not need to be internet-facing to be compromised. Censys tracked publicly exposed instances growing from roughly 1,000 to over 21,000 in a single week. An independent researcher found over 42,000 exposed instances, of which 93% showed authentication bypass conditions.&lt;/p&gt;

&lt;p&gt;At the same time, ClawHub, the public skill registry, became a distribution channel for malware. By mid-February 2026, 341 confirmed malicious skills had been discovered in the registry, roughly 12% of it. Some delivered Atomic macOS Stealer. One posed as a cryptocurrency trading tool and harvested wallet credentials silently. Later scans put the number above 800, closer to 20% of the registry. Cisco's AI security research team documented a skill performing silent data exfiltration without the user's awareness and noted the core issue: the registry lacked adequate vetting to prevent malicious submissions.&lt;/p&gt;

&lt;p&gt;The harder version of the vetting problem is structural. Reviewing an AI skill is not like reviewing a software package. It requires understanding what the skill will instruct the LLM to do, not just what code it contains. There is no automated scanner that does that reliably yet.&lt;br&gt;
Then there was prompt injection, which is the attack class that most people outside security had not heard of before OpenClaw made it legible to a general audience, and it deserves the most attention because it is the one that does not get patched out.&lt;/p&gt;

&lt;p&gt;Contabo's security guide documents one real incident: someone embedded malicious instructions in an email signature. When the OpenClaw agent processed that email to generate a summary, it followed the hidden instructions instead of the user's. PromptArmor demonstrated separately that link preview features in Telegram and Discord could be turned into data exfiltration pathways, causing the agent to transmit confidential data to an attacker's domain automatically, without the user clicking anything.&lt;br&gt;
What makes this different from a conventional bug is architectural. As Penligent's security research puts it: "In LLM-driven agents, instructions and data occupy the same token stream. There is no firewall between data the agent reads and instructions the agent follows." When a chatbot gets prompt-injected, the worst outcome is bad text. When an agent gets prompt-injected, the worst outcome is shell execution, file modification, and outbound messages sent through real accounts. The blast radius is the difference between a chatbot and an agent, which is exactly the distinction that makes agentic AI compelling in the first place.&lt;/p&gt;

&lt;p&gt;The standard response to software security problems is to patch the bugs, improve the defaults, and educate the users. OpenClaw has done all three. CVE-2026-25253 was patched within days. ClawHub added VirusTotal scanning. The community has produced a serious body of hardening guidance in a short time. But prompt injection is not a bug. It is a consequence of how language models process text, and there is no patch for it. You can reduce the blast radius. You cannot eliminate the attack surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  The governance gap
&lt;/h2&gt;

&lt;p&gt;China's response to OpenClaw is usually framed as Beijing being restrictive about foreign technology. That framing misses what is actually interesting about it.&lt;/p&gt;

&lt;p&gt;In March 2026, Chinese authorities issued notices to state-run enterprises and the country's largest banks warning against installing OpenClaw on office devices. Some employees were banned from installing it on personal phones connected to company networks. The restrictions extended to families of military personnel. China's National Vulnerability Database published security guidelines. The People's Bank of China issued a separate warning for the financial sector.&lt;/p&gt;

&lt;p&gt;At the same time, local governments in Shenzhen and Wuxi were offering multimillion-yuan subsidies to companies building on the same platform. Tencent, Alibaba, Baidu, and MiniMax had all shipped OpenClaw-based products. MiniMax shares rose 640% in two months.&lt;br&gt;
Kendra Schaefer, partner at Trivium China, told Bloomberg: "Chinese regulators typically respond with extraordinary speed to threats from emerging technologies, but the rate of adoption of OpenClaw and other agentic tools is still outpacing them."&lt;/p&gt;

&lt;p&gt;China, which has some of the most developed state capacity for technology regulation anywhere in the world, could not form a coherent position fast enough. The national government was restricting it while local governments were subsidizing it, simultaneously. The rest of the world is in the same position, just without the bans.&lt;br&gt;
There is no established liability standard for when an agent acts outside a user's intent. There is no certification requirement before an AI system holds OAuth tokens for your inbox. There is no equivalent of PCI-DSS for agents handling personal data. NIST has an AI Agent Standards Initiative in early stages. OWASP has classified prompt injection as LLM01. The UK's NCSC has framed it as a "confused deputy" problem. None of this is implemented anywhere at the scale OpenClaw is already operating.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question that matters
&lt;/h2&gt;

&lt;p&gt;There is a version of this story where OpenClaw matures, the security ecosystem catches up, and it becomes what it was always meant to be: a genuinely useful assistant that handles the tedious parts of digital life. That is plausible.&lt;br&gt;
But something has already happened that will not un-happen. Millions of people installed an AI agent with broad system access, most without understanding the threat model, and the world got a clear view of what happens when agentic AI spreads before the governance does.&lt;/p&gt;

&lt;p&gt;The window we have now, where agentic AI is still mostly used by technically adventurous people who understand at least part of the risk, will not stay open. The tools are getting easier to install. The demos are getting more compelling.&lt;/p&gt;

&lt;p&gt;OpenClaw did not create the agentic AI era. It just arrived early enough that we could watch, in real time, what it looks like when capability outpaces the systems meant to govern it.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
    </item>
    <item>
      <title>The Challenges Threatening Open Source</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Wed, 25 Feb 2026 20:33:12 +0000</pubDate>
      <link>https://dev.to/bridget_amana/the-challenges-threatening-open-source-160g</link>
      <guid>https://dev.to/bridget_amana/the-challenges-threatening-open-source-160g</guid>
      <description>&lt;p&gt;Open source software (OSS) serves as the digital backbone of modern society, providing the foundation for the applications and services we rely on daily. However, the same openness that drives innovation also introduces significant risks. As our dependence on shared code grows, the obstacles facing the ecosystem become more complex. Understanding these challenges is the first step toward building a more resilient future for software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security vulnerabilities
&lt;/h2&gt;

&lt;p&gt;Many open source initiatives are maintained by small groups of volunteers or even a single individual. While this grassroots approach is a testament to the community's spirit, it creates a "single point of failure." Inactive or abandoned repositories can harbor known vulnerabilities that remain unpatched for years, leaving any system that uses them exposed.&lt;/p&gt;

&lt;p&gt;It gets messier when you factor in dependency chains. Most open source software relies on other open source software, and those chains can get long and hard to track. One weak link in that chain and suddenly you've got a security problem that ripples outward. The transparency that makes open source so powerful is also what makes it vulnerable here. Attackers can see the same code that the community uses to fix things, and sometimes they get there first. That's why regular auditing and automated scanning have become so critical, not just a nice-to-have.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sustainability
&lt;/h2&gt;

&lt;p&gt;Every open source project has people behind it, and keeping those people around is one of the trickiest parts of the whole thing. These projects need funding, they need resources, and most of all they need contributors who stick around. When a project becomes essential to global industry but lacks a support structure, the burden often falls on a few individuals.&lt;/p&gt;

&lt;p&gt;This leads to maintainer burnout—a state where the pressure of fixing bugs and managing requests outweighs the joy of contributing. Sustainability is not just a financial issue; it is about creating a culture where contributors feel supported. If the software that millions of companies depend on is treated as a "free" resource without reinvestment, the very people who build it may eventually stop showing up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maintaining code quality
&lt;/h2&gt;

&lt;p&gt;Open source invites anyone to contribute, and that's one of its greatest strengths. You get people with all kinds of backgrounds, skill levels, and ideas jumping in, and that kind of diversity makes projects genuinely better. But it also makes keeping the code tight and consistent a real challenge.&lt;/p&gt;

&lt;p&gt;When contributions are coming in from all over the place, without solid review processes or clear guidelines, things can start to slip. Small issues add up, and before long you've got a codebase that's harder to maintain and trust. It's one of those problems that doesn't announce itself loudly. It just quietly builds up until someone notices something is off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking ahead
&lt;/h2&gt;

&lt;p&gt;Open source has never been just about code. It's about curiosity, generosity, and the belief that collaboration makes better things and better people. The next few years will test that belief like never before. But if we do what we've always done best, show up, share the work, and care for each other, we won't just sustain open source. We'll sustain the spirit that started it and ensure the success we've built continues for the good of the modern world.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>learning</category>
    </item>
    <item>
      <title>Getting Your First Open Source Contributors</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Mon, 16 Feb 2026 10:49:12 +0000</pubDate>
      <link>https://dev.to/bridget_amana/getting-your-first-open-source-contributors-5j</link>
      <guid>https://dev.to/bridget_amana/getting-your-first-open-source-contributors-5j</guid>
      <description>&lt;p&gt;I have built a number of open source projects, including &lt;a href="https://marketplace.visualstudio.com/items?itemName=Bridget.snippetshot" rel="noopener noreferrer"&gt;snippet shot&lt;/a&gt;, &lt;a href="https://marketplace.visualstudio.com/items?itemName=Bridget.tailwind-migrator" rel="noopener noreferrer"&gt;tailwindcss migrator&lt;/a&gt;, and &lt;a href="https://pixlated.bridgetamana.me/" rel="noopener noreferrer"&gt;pixlated&lt;/a&gt;. After building, I shared it on forums and communities, made it clear in the readme that 'contributions are welcome,' but still got zero contributions. It made me wonder what exactly I was doing wrong. I looked at these repos from outsider's perspective. I noticed that, aside from the big “contributors are welcome” message, nothing else was inviting me to contribute. From there, I discovered a few more issues as to why my project wasn’t receiving contributors. &lt;/p&gt;

&lt;h2&gt;
  
  
  Show how to use and setup your project
&lt;/h2&gt;

&lt;p&gt;When I first shared the repo, there was nothing guiding users on how to set up the project. I had a README but it was missing installation instructions. Without this, potential contributors face unnecessary friction. If you can't get a project running, how can you contribute to it? Good installation instructions aren't just 'npm install.' They should walk through the complete setup: prerequisites, installation steps, how to run locally, and what success looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep your project active
&lt;/h2&gt;

&lt;p&gt;I have scrolled past repos countless times simply because the last activity was months ago. It subtly signals that this project isn’t active so why waste my time contributing. When I looked at my projects from that perspective, I realized I wouldn't even contribute to them if they weren't mine. You don't need daily commits, but aim for visible activity at least once a month. This could be merging a PR, updating a dependency, adding an example to your docs, or even just triaging issues. The goal isn't busywork, it's showing the project has a pulse. On Pixlated, I set a reminder to review and update something small monthly, even during quiet periods. That consistent timestamp matters more than you'd think.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open up a few issues first.
&lt;/h2&gt;

&lt;p&gt;Sometimes, people don't know how they can contribute. Be their guide. Opening a few issues paves the way for more contributors. I looked at the project and it seemed dry—maybe people didn't know where to start. Contributions on pPxlated started coming in when I opened up a few good first issues. The first issue I opened was to 'convert all project images to .webp format'. This was after running the site on page speed insights and it pointed out that performance issue. I could have done this instantly by myself but I thought, this is a good simple first issue for someone just getting started with open source contributions. Within a couple of hours, someone commented asking to be assigned. After that, I used the same strategy. I opened simple issues that wouldn't take more than 5 minutes to do. With this constant interaction, other people started opening issues. A few issues were ignored till they were further broken down in the issue description.&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%2F98pyjam80xaefjkkwmtf.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%2F98pyjam80xaefjkkwmtf.png" alt="first assigned issue" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It shows that people want to contribute but are confused about what they can do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show appreciation to your previous contributors.
&lt;/h2&gt;

&lt;p&gt;Contributors aren't paid for their work, so recognition matters. Seeing your GitHub profile on a project gives contributors that dopamine hit that makes them want to return. Give people reasons to be excited: thank contributors after a successful merge or add a contributors section to your README. This appreciates past contributors and signals to new ones that their efforts will be valued.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publicize your work
&lt;/h2&gt;

&lt;p&gt;You can't contribute to what you don't know about. Contributions aren't coming in because your project is still very much hidden. Share your project on communities and social media. Announce what you're building, that it's open for contributions, and when you open new issues. I posted on Reddit and created an article on Dev.to to share the project. Neither got much traction. What actually kickstarted contributions was a Twitter post announcing good first issues. Don't constrain yourself to one platform. Twitter worked for me because I was already consistent and had followers there. It might not work for you if you're just starting out. So, go where your audience is. I didn't just stop at one post but continued giving updates regularly.&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%2Fyn9u9vor2lgkw9p2gxr5.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%2Fyn9u9vor2lgkw9p2gxr5.png" alt="Twitter post of Pixlated" width="602" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get your project up and running first
&lt;/h2&gt;

&lt;p&gt;People won't contribute to what isn't working. Project owners might think building together is part of the open source spirit, but contributors want to improve something functional, not debug a broken foundation. Get the project started on your own and show that crucial features are working. Don't build halfway with nothing visibly working and expect people to join. This doesn't mean your project needs to be feature-complete, but there should be a working core that people can clone, run, and see in action. For Pixlated, I made sure the basic image pixelation worked and the site was deployed before asking for contributions. Contributors could visit the live site, understand what it does, then look at the code to improve it. Starting with a half-built project where nothing runs yet means contributors spend their time figuring out your vision instead of improving it. &lt;/p&gt;

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

&lt;p&gt;If your project hasn't had contributions, the first step is to audit your readme. Make sure someone can understand what it does and how to run it within 30 seconds. Then work on sharing your project to get eyes on it. The more eyes you get on it, the greater your chances of getting a contributor. The contributors are out there, you just need to make it easy for them to find and join you&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Exploring The Career Of A Technical Writer</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Mon, 16 Feb 2026 10:45:29 +0000</pubDate>
      <link>https://dev.to/bridget_amana/exploring-the-career-of-a-technical-writer-2gm1</link>
      <guid>https://dev.to/bridget_amana/exploring-the-career-of-a-technical-writer-2gm1</guid>
      <description>&lt;h2&gt;
  
  
  Who a Technical writer is
&lt;/h2&gt;

&lt;p&gt;A technical writer (sometimes called a tech writer) is someone who takes complicated technical concepts and makes it easy for people to understand. They translate jargons to easy-to-understand documentation. While many people think technical writers just write "guides", their role is more expansive than that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Information Design: They determine how to structure information so users can find what they need quickly.&lt;/li&gt;
&lt;li&gt;User Advocacy: They represent the end-user, often testing products to identify points of confusion before the documentation is even written.&lt;/li&gt;
&lt;li&gt;User Advocacy: They speak up for you, the end-user. They'll test products and spot confusing parts before the documentation is even written.&lt;/li&gt;
&lt;li&gt;Content Creation: They create all sorts of materials, including:

&lt;ul&gt;
&lt;li&gt;API Documentation: Instructions that help developers use software tools.&lt;/li&gt;
&lt;li&gt;Help Systems: Those searchable knowledge bases you use when you're stuck.&lt;/li&gt;
&lt;li&gt;Standard Operating Procedures (SOPs): Internal guides that show employees how to do their jobs.&lt;/li&gt;
&lt;li&gt;White Papers: Deep-dive reports that explain specific technologies or solutions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Skills Needed to Be a Technical Writer
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Technical Proficiency
&lt;/h3&gt;

&lt;p&gt;You don't need to be a programmer, but you'll need some basic technical knowledge. If you're documenting a Python tool, for example, understanding basic Python concepts helps you ask better questions and catch mistakes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Research
&lt;/h3&gt;

&lt;p&gt;Research is at the core of what a technical writer do. Writers dig into unfamiliar topics, interview subject matter experts, and test products themselves to truly understand what they're explaining. Good research means you can explain something clearly even if you weren't the one who built it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication and Collaboration
&lt;/h3&gt;

&lt;p&gt;Technical writers work with developers, product managers, designers, and customer support teams. You need to ask the right questions and build good relationships with stakeholders.&lt;/p&gt;

&lt;h3&gt;
  
  
  Writing and Editing
&lt;/h3&gt;

&lt;p&gt;This might seem obvious, but it's about more than just grammar. You need to write clearly, cut unnecessary jargon, and know when to use a diagram instead of a paragraph. You're always thinking: "What's the simplest way to say this?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Role of A Technical Writer
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create Documentation&lt;/li&gt;
&lt;li&gt;Translate Technical Information&lt;/li&gt;
&lt;li&gt;Research &amp;amp; Understand Products&lt;/li&gt;
&lt;li&gt;Organize Information&lt;/li&gt;
&lt;li&gt;Maintain and Update Content&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Your guide to getting started
&lt;/h3&gt;

&lt;p&gt;If you're interested in becoming a technical writer, here's the good news: you don't need a specific degree. Many technical writers come from writing backgrounds, while others transition from technical roles like software development or IT support. The key is being curious, willing to learn, and able to explain things clearly.&lt;/p&gt;

</description>
      <category>writing</category>
    </item>
    <item>
      <title>Improve Site Performance by Auditing Unused Code</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Mon, 08 Dec 2025 16:47:52 +0000</pubDate>
      <link>https://dev.to/bridget_amana/improve-site-performance-by-auditing-unused-code-20ag</link>
      <guid>https://dev.to/bridget_amana/improve-site-performance-by-auditing-unused-code-20ag</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Shipping unused CSS and JavaScript does more than clutter your codebase. It directly affects your site's performance. Every unused rule or function is extra data the browser has to download and parse before the page becomes interactive. While you could manually compare your styles against your HTML, modern browsers provide a more easier solution: the Coverage tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Coverage tool does
&lt;/h2&gt;

&lt;p&gt;The Coverage panel in developer tools analyzes every CSS and JavaScript resource loaded on a page. It calculates which parts of each file are actually used during rendering and highlights the unused sections. This gives you a clear view of what can be safely removed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open DevTools (&lt;code&gt;Cmd+Option+I&lt;/code&gt; on Mac or &lt;code&gt;Ctrl+Shift+I&lt;/code&gt; on Windows).&lt;/li&gt;
&lt;li&gt;Open the Command Menu (&lt;code&gt;Cmd+Shift+P&lt;/code&gt; or &lt;code&gt;Ctrl+Shift+P&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Type &lt;strong&gt;Coverage&lt;/strong&gt; and select &lt;strong&gt;Show Coverage&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the Coverage tab, click the reload icon to start recording.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The panel lists all CSS and JavaScript files, along with the percentage of code executed. Red highlights indicate unused sections. You can also filter the results to show all resources or only CSS or only JavaScript.&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%2Fl7kb75e42w3k8d8pvumr.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%2Fl7kb75e42w3k8d8pvumr.png" alt="Coverage tool screenshot" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Analyzing Results 
&lt;/h3&gt;

&lt;p&gt;Once the page reloads, the Coverage tab displays the used and unused portions of each file. These results are helpful but require proper interpretation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pseudo classes such as hover or active appear unused when they are not triggered.
&lt;/li&gt;
&lt;li&gt;Media query rules appear unused if your current viewport does not match the query.
&lt;/li&gt;
&lt;li&gt;Interaction based styles and animations will not register unless activated during recording.
&lt;/li&gt;
&lt;li&gt;JavaScript that runs only after specific actions will appear unused until those actions occur.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Performance improvements do not always require complex changes. Identifying and removing unused CSS and JavaScript is a simple and effective way to reduce page weight. The Coverage tool helps you find what is no longer used on the page, and removing that results in a faster site.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>performance</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Understanding why 100vh behaves differently on mobile</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Mon, 08 Dec 2025 16:38:09 +0000</pubDate>
      <link>https://dev.to/bridget_amana/understanding-why-100vh-behaves-differently-on-mobile-140k</link>
      <guid>https://dev.to/bridget_amana/understanding-why-100vh-behaves-differently-on-mobile-140k</guid>
      <description>&lt;p&gt;The expected behavior of 100vh is simple. When you apply it to an element, it should take up the full visible height of the screen so no scrolling is required. This works perfectly on desktop. On mobile browsers, especially Chrome and Safari, the behavior is different. The bottom part of the page sits behind the browser interface, so the content appears cut off unless you scroll. This article focuses on understanding why this happens and how to fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;100vh has always been the quick way to create a full height layout. The issue is that mobile browsers do not calculate 100vh using the actual visible space. The browser address bar and tab bar are not included in that calculation. When those bars expand or collapse, the visual viewport changes, but 100vh does not adjust.&lt;/p&gt;

&lt;p&gt;Here is a simple example.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"app-shell"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;My App&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;This is the main content area.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;footer&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Footer content here.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/footer&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.app-shell&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;   
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     
  &lt;span class="nl"&gt;flex-direction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     
  &lt;span class="nl"&gt;min-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;  

&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;     
  &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On mobile, part of the layout will sit behind the browser bar. When you scroll, the bar collapses and the layout suddenly fits. This is the inconsistency developers run into.&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%2Fb5gziknx13eg1rn20ihf.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%2Fb5gziknx13eg1rn20ihf.png" alt="A demo of 100vh issue" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many older articles suggest using webkit-fill-available. This used to work in certain contexts but is unreliable today and does not solve the root issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  100dvh as the fix
&lt;/h2&gt;

&lt;p&gt;A more accurate way to handle full height layouts on mobile is to use the new dynamic viewport unit: &lt;strong&gt;dvh&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Dvh stands for dynamic viewport height. It is one of three new viewport units (svh, lvh, dvh). The dynamic version adjusts based on the current visible viewport. If the browser address bar collapses or expands, dvh updates in real time.&lt;/p&gt;

&lt;p&gt;Using our earlier example, the fix looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.app-shell&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;     
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     
  &lt;span class="nl"&gt;flex-direction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     
  &lt;span class="nl"&gt;min-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     
  &lt;span class="nl"&gt;min-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="n"&gt;dvh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fw6jwsq8nbef3mmqrm3qr.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%2Fw6jwsq8nbef3mmqrm3qr.png" alt="100dvh Fix" width="724" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setting the height to 100dvh tells the browser to size the element using the actual visible viewport height. This prevents the layout from slipping behind the browser UI on mobile. &lt;/p&gt;

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

&lt;p&gt;Dvh provides a practical and reliable fix for the long standing 100vh issue on mobile browsers. It responds to changes in the viewport and keeps your layout visible without relying on outdated workarounds. While browser behavior may continue to evolve, dvh is currently the most accurate way to create full height layouts on mobile.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>frontend</category>
    </item>
    <item>
      <title>A Practical Guide to Color Contrast for Web Developers</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Mon, 08 Dec 2025 12:09:58 +0000</pubDate>
      <link>https://dev.to/bridget_amana/a-practical-guide-to-color-contrast-for-web-developers-53oi</link>
      <guid>https://dev.to/bridget_amana/a-practical-guide-to-color-contrast-for-web-developers-53oi</guid>
      <description>&lt;p&gt;Color contrast determines the readability of your interface in real-world conditions, affecting everything from quick button taps to long-form reading. You notice this impact most when you are outside with low screen brightness or using a device with a weaker display. &lt;/p&gt;

&lt;p&gt;This is why contrast is not just a design concern; it is a core part of front-end engineering. You already invest time in performance, layout, and stable interactions. Contrast belongs in that same category because it dictates how reliably your UI performs across different environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Contrast Actually Measures
&lt;/h3&gt;

&lt;p&gt;The Web Content Accessibility Guidelines (WCAG) use a formula comparing the relative luminance of two colors to determine visibility. While you do not need to calculate this manually, you must know the targets.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Normal text&lt;/strong&gt; requires a ratio of at least 4.5:1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Large text&lt;/strong&gt; requires a ratio of at least 3:1.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These values sit on a scale from 1 to 21, where higher numbers represent stronger contrast. Black text on a white background is 21:1, while white on white is 1:1. Most readable color pairs in modern web projects land between 5 and 14.&lt;/p&gt;

&lt;p&gt;These ratios are not arbitrary numbers chosen at random. They are based on how people with different visual acuities perceive brightness. Even users with typical vision lose clarity in low light or outdoor glare, so a pair that passes at 4.5:1 will survive more environmental factors than a pair hovering at 3:1. This is why aiming for the bare minimum works for headlines but often causes readability issues for smaller body text.&lt;/p&gt;

&lt;h3&gt;
  
  
  Checking Contrast While You Work
&lt;/h3&gt;

&lt;p&gt;For immediate feedback, your browser is the fastest tool. By opening DevTools and inspecting a text element, you can view the contrast ratio directly within the accessibility or styles panel. This allows you to catch accessibility bugs early in the process, particularly when you are blocking out layouts or experimenting with new theme colors.&lt;/p&gt;

&lt;p&gt;However, browser DevTools are most accurate for text on flat, solid backgrounds. If your text sits on top of a gradient or a complex image, the browser cannot always calculate the background color reliably, so you will need a dedicated tool.&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%2Ftvqk2q2zzsl0i7xk4v8v.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%2Ftvqk2q2zzsl0i7xk4v8v.png" alt="Chrome DevTools showing low color contrast ratio" width="800" height="460"&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%2Fhzy07xoxpiqf1zf2tjrz.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%2Fhzy07xoxpiqf1zf2tjrz.png" alt="Chrome DevTools showing high color contrast ratio" width="739" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Dedicated Contrast Checkers
&lt;/h3&gt;

&lt;p&gt;Small color swatches can be misleading because some combinations technically meet the math requirements but still look weak in a real interface. Tools like &lt;a href="https://colourcontrast.cc/" rel="noopener noreferrer"&gt;colourcontrast.cc&lt;/a&gt; are valuable here because they update the entire page preview based on your selection.&lt;/p&gt;

&lt;p&gt;This approach lets you see titles, paragraphs, and UI components using the color pair at different scales. It gives you a realistic sense of stability that a simple calculator cannot provide. Sometimes a ratio of 4.7:1 looks fine in isolation but feels too thin once placed inside a dense layout, and seeing it in context helps you make the right judgment call.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automating the Workflow
&lt;/h3&gt;

&lt;p&gt;To reduce guesswork across your team, you should integrate automated checks. While linting plugins like &lt;a href="https://www.npmjs.com/package/eslint-plugin-jsx-a11y" rel="noopener noreferrer"&gt;eslint-plugin-jsx-a11y&lt;/a&gt; help catch missing labels, they sometimes struggle to calculate color contrast since they cannot always see your CSS files.&lt;/p&gt;

&lt;p&gt;People often treat accessibility as a separate compliance requirement, but in practice, contrast improves basic usability for everyone. It makes text easier to scan, reduces eye strain, and keeps interfaces clear on older hardware. By treating contrast as a technical constraint rather than just an aesthetic choice, you help make the web a better place.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Finding Open Source Projects to Contribute To</title>
      <dc:creator>Bridget Amana</dc:creator>
      <pubDate>Mon, 08 Dec 2025 11:46:02 +0000</pubDate>
      <link>https://dev.to/bridget_amana/finding-open-source-projects-to-contribute-to-3aco</link>
      <guid>https://dev.to/bridget_amana/finding-open-source-projects-to-contribute-to-3aco</guid>
      <description>&lt;p&gt;Finding open source projects to contribute to is usually harder than people make it sound. Most articles give the same standard advice which tells you to search for “good first issues” and filter by labels. In reality, this does not always work because maintainers often forget to label issues. Many of the “good first issues” you find belong to old or inactive projects, so you end up wasting time trying to contribute to something no one maintains anymore.&lt;/p&gt;

&lt;p&gt;From my experience, there are much more effective ways to find active work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow Active Contributors
&lt;/h3&gt;

&lt;p&gt;A better approach is to follow active open source people rather than just staring at repositories. When you follow contributors and maintainers you trust, your GitHub feed becomes a powerful tool. You start seeing the pull requests they open, the issues they interact with, and the new projects they star.&lt;/p&gt;

&lt;p&gt;This gives you visibility into living projects instead of abandoned ones. It is much easier to join projects this way because you are walking into a space that already has activity around it.&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%2Fszsktrse41pjxycjll1n.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%2Fszsktrse41pjxycjll1n.png" alt="GitHub home feed of Bridget Amana" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Contribute by Testing, Not Just Coding
&lt;/h3&gt;

&lt;p&gt;Most people overlook the fact that contributing is not limited to opening pull requests. For my first year in open source, I mostly contributed by testing projects. I would run the project locally, use the features, and actively look for problems.&lt;/p&gt;

&lt;p&gt;These problems could be anything from an accessibility issue or a broken UI on mobile screens to small performance lags or grammar errors in the documentation. All of these details matter. When you find them, open an issue. You can take on a few of them yourself or leave them for other beginners to tackle. This helps maintainers more than you think, and it gets you familiar with the codebase at the same time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Curated Discovery Channels
&lt;/h3&gt;

&lt;p&gt;Another reliable way to find active projects is through trusted Twitter accounts that share open source opportunities. These are the verified accounts I follow:&lt;/p&gt;

&lt;p&gt;-&lt;a href="https://x.com/githubprojects" rel="noopener noreferrer"&gt;GitHub Projects&lt;/a&gt;&lt;br&gt;
-&lt;a href="https://x.com/the_osps" rel="noopener noreferrer"&gt;Open Source Projects&lt;/a&gt;&lt;br&gt;
-&lt;a href="https://x.com/metaopensource" rel="noopener noreferrer"&gt;Meta Open Source&lt;/a&gt;&lt;br&gt;
-&lt;a href="https://x.com/tom_doerr" rel="noopener noreferrer"&gt;Tom Doerr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They post a wide range of projects with different tech stacks, so you can choose something that matches your current skill level or interests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't Ignore Small Projects
&lt;/h3&gt;

&lt;p&gt;I always tell beginners not to ignore small projects. Many people only want to contribute to popular repositories with thousands of stars, but those projects started small too.&lt;/p&gt;

&lt;p&gt;Smaller projects are usually more open to beginners and have maintainers who respond faster. You often learn the most in places where you are not competing with hundreds of other contributors. Start small to build your experience, and then move into larger communities when you feel ready.&lt;/p&gt;

&lt;p&gt;Finding projects is not always straightforward, but there are better ways than relying on labels. Follow active contributors, test real projects, open issues, and do not overlook the smaller repos. This approach keeps you in the flow of active work and leads to more meaningful contributions.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
