<?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: Elizabeth Omito</title>
    <description>The latest articles on DEV Community by Elizabeth Omito (@elizabeth_omito).</description>
    <link>https://dev.to/elizabeth_omito</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%2F3715430%2F7fd68aff-17e2-48c7-a55d-b270b84e2835.png</url>
      <title>DEV Community: Elizabeth Omito</title>
      <link>https://dev.to/elizabeth_omito</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elizabeth_omito"/>
    <language>en</language>
    <item>
      <title>My Take on Coding With AI &amp; How to Survive the AI Revolution</title>
      <dc:creator>Elizabeth Omito</dc:creator>
      <pubDate>Mon, 25 May 2026 13:30:04 +0000</pubDate>
      <link>https://dev.to/elizabeth_omito/my-take-on-coding-with-ai-how-to-survive-the-ai-revolution-5251</link>
      <guid>https://dev.to/elizabeth_omito/my-take-on-coding-with-ai-how-to-survive-the-ai-revolution-5251</guid>
      <description>&lt;p&gt;&lt;strong&gt;The First Time AI Wrote Better Code Than Me&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn’t realize coding had changed forever until an AI solved a bug I had been fighting for hours.&lt;/p&gt;

&lt;p&gt;I remember staring at my screen after trying everything I could think of, Stack Overflow tabs everywhere, documentation open in another window, multiple failed attempts sitting in my editor like evidence of defeat.&lt;/p&gt;

&lt;p&gt;Out of frustration, I pasted the problem into an AI assistant, a few seconds later, it gave me a solution, I ran it and it worked.&lt;/p&gt;

&lt;p&gt;My first reaction was excitement, my second reaction was something closer to fear because it wasn't just that the AI fixed the bug. It was how fast it did it.&lt;/p&gt;

&lt;p&gt;What took me hours took it seconds and somewhere in that moment, a question quietly appeared in my head:&lt;/p&gt;

&lt;p&gt;"If AI can do this already, where exactly does that leave me?"&lt;/p&gt;

&lt;p&gt;I think many developers have had some version of that moment. A strange mixture of curiosity, excitement, impostor syndrome, and uncertainty and that feeling hasn't gone away completely.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Day Programming Changed Forever&lt;/strong&gt;&lt;br&gt;
Technology always evolves, but this felt different.&lt;/p&gt;

&lt;p&gt;Not long ago, AI in development mostly meant autocomplete, Small suggestions, Finishing a variable name, Predicting the next line of code. Helpful, but not revolutionary.&lt;/p&gt;

&lt;p&gt;Then things accelerated.&lt;/p&gt;

&lt;p&gt;Suddenly AI wasn't just suggesting code anymore, It was generating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI components&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Tests&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Database schemas&lt;/li&gt;
&lt;li&gt;Entire project structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It started feeling less like a tool and more like a junior developer that never sleeps, a junior developer that somehow knows React, Go, Python, SQL, Docker, and twenty other technologies at the same time.&lt;/p&gt;

&lt;p&gt;That's impressive and slightly uncomfortable because industry shifts usually happen gradually, this one felt like someone pressed fast-forward.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Fear Nobody Wants to Admit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's talk about the question everyone keeps asking:&lt;/p&gt;

&lt;p&gt;Will AI replace programmers?&lt;/p&gt;

&lt;p&gt;People debate this constantly online, some say software engineering is finished, others say AI is overhyped, meanwhile, I think many developers are having quieter thoughts they don't always say out loud.&lt;/p&gt;

&lt;p&gt;Things like:&lt;br&gt;
"Am I learning the right skills?"&lt;br&gt;
"Will junior developers even have opportunities?"&lt;br&gt;
"What if I'm becoming irrelevant?"&lt;/p&gt;

&lt;p&gt;I see it especially among beginners. Many already feel overwhelmed trying to learn programming now they're learning while watching AI generate solutions instantly and experienced developers aren't immune either, years of expertise suddenly feel challenged by tools evolving every month.&lt;/p&gt;

&lt;p&gt;The fear is real pretending otherwise doesn't help anyone.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;My Experience Coding With AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've used AI quite a lot while coding and honestly? some parts have been incredibly useful.&lt;/p&gt;

&lt;p&gt;I use it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debugging issues&lt;/li&gt;
&lt;li&gt;Learning unfamiliar technologies&lt;/li&gt;
&lt;li&gt;Generating repetitive boilerplate&lt;/li&gt;
&lt;li&gt;Refactoring messy code&lt;/li&gt;
&lt;li&gt;Brainstorming ideas&lt;/li&gt;
&lt;li&gt;Explaining concepts quickly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes it feels like having another developer sitting next to me, especially when I'm stuck but I've also seen the downsides.&lt;/p&gt;

&lt;p&gt;AI can confidently generate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect solutions&lt;/li&gt;
&lt;li&gt;Bad architectural decisions&lt;/li&gt;
&lt;li&gt;Fake functions&lt;/li&gt;
&lt;li&gt;Nonexistent libraries&lt;/li&gt;
&lt;li&gt;Inefficient code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that's dangerous because it rarely says:&lt;/p&gt;

&lt;p&gt;"I'm not sure."&lt;/p&gt;

&lt;p&gt;It often sounds extremely confident even when it's wrong, I've realized something important:&lt;/p&gt;

&lt;p&gt;AI can make you productive without making you skilled, those are not the same thing, and that distinction matters a lot.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Dangerous Trap: Becoming an "AI Copy-Paste Developer"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is probably the biggest risk I see, not AI replacing developers but developers replacing their own thinking.&lt;/p&gt;

&lt;p&gt;It's easy to fall into this cycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask AI for code&lt;/li&gt;
&lt;li&gt;Copy it&lt;/li&gt;
&lt;li&gt;Paste it&lt;/li&gt;
&lt;li&gt;Move on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repeat that enough times and something starts happening.&lt;br&gt;
You stop thinking deeply, you stop analyzing problems, you stop understanding why things work.&lt;/p&gt;

&lt;p&gt;It's similar to using GPS for everything. At first it helps then one day you realize you can't navigate your own city anymore.&lt;/p&gt;

&lt;p&gt;AI should amplify thinking, not replace it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What AI Is Actually Good At&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI genuinely excels at certain things.&lt;/p&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repetitive tasks&lt;/li&gt;
&lt;li&gt;Boilerplate generation&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Rapid prototyping&lt;/li&gt;
&lt;li&gt;Explaining concepts&lt;/li&gt;
&lt;li&gt;Debugging assistance&lt;/li&gt;
&lt;li&gt;Code reviews&lt;/li&gt;
&lt;li&gt;Test generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest value isn't intelligence, it's friction reduction. AI removes a lot of tedious work that slows developers down, that's incredibly valuable because most programming isn't writing genius algorithms, alot of it is repetitive work.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What AI Still Struggles With&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Despite all the progress, there are still areas where humans matter deeply.&lt;/p&gt;

&lt;p&gt;AI still struggles with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product thinking&lt;/li&gt;
&lt;li&gt;Understanding users&lt;/li&gt;
&lt;li&gt;Creativity&lt;/li&gt;
&lt;li&gt;System tradeoffs&lt;/li&gt;
&lt;li&gt;Communication&lt;/li&gt;
&lt;li&gt;Leadership&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;Judgment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI can generate code, It still struggles to generate vision and vision matters more than people sometimes realize.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Developers Who Will Survive the AI Revolution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think future-proof developers are necessarily the ones with the most syntax memorized, I think they'll be people who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stay curious&lt;/li&gt;
&lt;li&gt;Learn continuously&lt;/li&gt;
&lt;li&gt;Understand fundamentals&lt;/li&gt;
&lt;li&gt;Communicate clearly&lt;/li&gt;
&lt;li&gt;Adapt quickly&lt;/li&gt;
&lt;li&gt;Solve problems&lt;/li&gt;
&lt;li&gt;Understand systems deeply&lt;/li&gt;
&lt;li&gt;Build real things&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Syntax changes, frameworks change,tools change, thinking doesn't become obsolete.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The New Skill Nobody Talks About: Asking Better Questions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;People talk a lot about prompt engineering, sometimes too much but there is an important idea underneath the buzzwords, Good AI output often depends on good input, instead of saying:&lt;/p&gt;

&lt;p&gt;"Build me an authentication system."&lt;/p&gt;

&lt;p&gt;You might say:&lt;/p&gt;

&lt;p&gt;"Build a JWT authentication system using Node.js and Express with refresh tokens, explain security considerations, and describe why each decision was made."&lt;/p&gt;

&lt;p&gt;The difference is context.&lt;br&gt;
Clear thinking produces clearer questions, and clearer questions often produce better answers.&lt;/p&gt;

&lt;p&gt;Treat AI like collaboration, not magic.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;How Beginners Should Learn Coding in the AI Era&lt;/strong&gt;&lt;br&gt;
If you're learning programming right now, my advice would be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn fundamentals first&lt;/li&gt;
&lt;li&gt;Build projects manually&lt;/li&gt;
&lt;li&gt;Use AI as a teacher&lt;/li&gt;
&lt;li&gt;Read generated code carefully&lt;/li&gt;
&lt;li&gt;Break things intentionally&lt;/li&gt;
&lt;li&gt;Learn debugging deeply&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because eventually you'll need to answer:&lt;/p&gt;

&lt;p&gt;"Is this code actually correct?"&lt;/p&gt;

&lt;p&gt;And you can't fact-check AI if you don't understand code yourself.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Real Threat Isn't AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think AI is the biggest danger I think stagnation is. Every major technological shift creates fear before it creates opportunity.&lt;/p&gt;

&lt;p&gt;The internet did it, cloud computing did it, Open-source did it, mobile development did it and  now AI is doing it too.&lt;/p&gt;

&lt;p&gt;The developers most at risk aren't necessarily the ones using AI, they're the ones refusing to adapt at all, fear can sometimes become a bigger obstacle than technology itself.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;My Personal Philosophy Moving Forward&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm not interested in competing against AI, that sounds exhausting, Instead, I want to learn how to work with it intentionally.&lt;/p&gt;

&lt;p&gt;I want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stay curious&lt;/li&gt;
&lt;li&gt;Continue learning deeply&lt;/li&gt;
&lt;li&gt;Build real things&lt;/li&gt;
&lt;li&gt;Understand systems better&lt;/li&gt;
&lt;li&gt;Keep improving craftsmanship&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI will continue changing, that part feels inevitable but learning, thinking, and creating still belong to us.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Conclusion: Don't Compete With AI Alone&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The future probably won't belong to developers who memorize every function and every framework.&lt;/p&gt;

&lt;p&gt;It will belong to developers who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand fundamentals&lt;/li&gt;
&lt;li&gt;Think critically&lt;/li&gt;
&lt;li&gt;Communicate well&lt;/li&gt;
&lt;li&gt;Learn continuously&lt;/li&gt;
&lt;li&gt;Use AI wisely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI won't replace developers who know how to think, but developers who refuse to adapt may replace themselves.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>“It Works on My Machine”… Until It Doesn’t.</title>
      <dc:creator>Elizabeth Omito</dc:creator>
      <pubDate>Mon, 11 May 2026 10:22:35 +0000</pubDate>
      <link>https://dev.to/elizabeth_omito/it-works-on-my-machine-until-it-doesnt-nfh</link>
      <guid>https://dev.to/elizabeth_omito/it-works-on-my-machine-until-it-doesnt-nfh</guid>
      <description>&lt;p&gt;You spend hours building a feature, everything runs perfectly on your laptop, and you proudly push your code. Then a teammate pulls it… and suddenly nothing works.&lt;/p&gt;

&lt;p&gt;Different errors. Missing dependencies. Version conflicts.&lt;/p&gt;

&lt;p&gt;And the worst part?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It works on my machine.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That phrase has quietly ruined countless development hours.&lt;/p&gt;

&lt;p&gt;As developers, we’ve all experienced that frustrating moment where an application behaves perfectly in one environment and completely breaks in another. Sometimes it’s a missing package. Sometimes it’s a different operating system. Other times, it’s a version mismatch hiding somewhere deep in the setup.&lt;/p&gt;

&lt;p&gt;Whatever the reason, the result is always the same: wasted time, confusion, and unnecessary debugging.&lt;/p&gt;




&lt;h1&gt;
  
  
  Enter Docker: The Fix You Didn’t Know You Needed
&lt;/h1&gt;

&lt;p&gt;This is exactly the kind of problem Docker was built to solve.&lt;/p&gt;

&lt;p&gt;Instead of relying on each developer’s environment — which is always slightly different — Docker lets you package your application in a way that runs the same everywhere.&lt;/p&gt;

&lt;p&gt;Whether you run it on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your laptop,&lt;/li&gt;
&lt;li&gt;your teammate’s machine,&lt;/li&gt;
&lt;li&gt;a testing server,&lt;/li&gt;
&lt;li&gt;or the cloud,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the application behaves consistently.&lt;/p&gt;

&lt;p&gt;In this article, you’ll understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What Docker actually is
&lt;/li&gt;
&lt;li&gt;Why it matters
&lt;/li&gt;
&lt;li&gt;The basic concepts you need to get started
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No heavy jargon. Just clarity.&lt;/p&gt;




&lt;h1&gt;
  
  
  So… What Really Is Docker?
&lt;/h1&gt;

&lt;p&gt;In simple terms, Docker is a tool that lets you package your application and everything it needs into a single, portable unit.&lt;/p&gt;

&lt;p&gt;That unit is called a &lt;strong&gt;container&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But what exactly is a container?&lt;/p&gt;

&lt;p&gt;A container is an isolated environment that carries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your application code,&lt;/li&gt;
&lt;li&gt;required libraries,&lt;/li&gt;
&lt;li&gt;dependencies,&lt;/li&gt;
&lt;li&gt;runtime,&lt;/li&gt;
&lt;li&gt;and system tools needed for the app to run.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of depending on whatever is already installed on someone’s computer, the container brings its own environment with it.&lt;/p&gt;

&lt;p&gt;That means your application no longer depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the developer’s operating system,&lt;/li&gt;
&lt;li&gt;installed software,&lt;/li&gt;
&lt;li&gt;or machine configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything the app needs already exists inside the container.&lt;/p&gt;




&lt;h2&gt;
  
  
  Think of It Like a Shipping Container
&lt;/h2&gt;

&lt;p&gt;Docker’s idea becomes much easier to understand when you compare it to shipping containers used in transport.&lt;/p&gt;

&lt;p&gt;A shipping container can carry electronics, furniture, food, or clothes. But regardless of what’s inside, the container itself is standardized.&lt;/p&gt;

&lt;p&gt;Because of that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ships can transport it,&lt;/li&gt;
&lt;li&gt;trucks can carry it,&lt;/li&gt;
&lt;li&gt;and ports can move it anywhere in the world without worrying about the contents.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docker containers work the same way.&lt;/p&gt;

&lt;p&gt;Inside the container is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your application,&lt;/li&gt;
&lt;li&gt;its dependencies,&lt;/li&gt;
&lt;li&gt;and its environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Outside the container, it doesn’t matter where it runs.&lt;/p&gt;

&lt;p&gt;Your app behaves the same whether it’s running:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;on your laptop,&lt;/li&gt;
&lt;li&gt;your teammate’s computer,&lt;/li&gt;
&lt;li&gt;or a production server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That consistency is Docker’s biggest strength.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Docker Actually Matters
&lt;/h1&gt;

&lt;p&gt;Before diving deeper into commands and files, let’s answer the real question:&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you care?
&lt;/h2&gt;

&lt;p&gt;Because Docker solves real problems developers deal with every single day.&lt;/p&gt;




&lt;h2&gt;
  
  
  Consistency
&lt;/h2&gt;

&lt;p&gt;One of Docker’s biggest advantages is consistency.&lt;/p&gt;

&lt;p&gt;Without Docker, applications often behave differently depending on the machine running them. A project may work perfectly on one computer and fail completely on another because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;different operating systems,&lt;/li&gt;
&lt;li&gt;missing dependencies,&lt;/li&gt;
&lt;li&gt;or software version differences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docker eliminates that uncertainty.&lt;/p&gt;

&lt;p&gt;Since the entire environment is packaged together, the application behaves the same everywhere. No surprises. No hidden setup issues.&lt;/p&gt;




&lt;h2&gt;
  
  
  Easy Setup
&lt;/h2&gt;

&lt;p&gt;Setting up a development environment can sometimes take longer than building the actual feature.&lt;/p&gt;

&lt;p&gt;You’ve probably seen instructions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Node.js
&lt;/li&gt;
&lt;li&gt;Install Python
&lt;/li&gt;
&lt;li&gt;Install PostgreSQL
&lt;/li&gt;
&lt;li&gt;Use version X, not version Y
&lt;/li&gt;
&lt;li&gt;Configure environment variables
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For beginners especially, this can become overwhelming very quickly.&lt;/p&gt;

&lt;p&gt;Docker simplifies this process.&lt;/p&gt;

&lt;p&gt;Instead of manually installing everything, developers can simply run a container that already has the environment prepared and ready to go.&lt;/p&gt;

&lt;p&gt;This makes onboarding faster and reduces setup frustration for teams.&lt;/p&gt;




&lt;h2&gt;
  
  
  Safe Testing
&lt;/h2&gt;

&lt;p&gt;Developers constantly experiment with tools, libraries, and updates.&lt;/p&gt;

&lt;p&gt;The problem is that installing things directly on your machine can sometimes break your existing setup.&lt;/p&gt;

&lt;p&gt;Docker provides isolated environments where you can safely test applications without affecting your computer or other projects.&lt;/p&gt;

&lt;p&gt;If something breaks, you simply remove the container and start again.&lt;/p&gt;

&lt;p&gt;Clean. Simple. Safe.&lt;/p&gt;




&lt;h2&gt;
  
  
  Better Team Collaboration
&lt;/h2&gt;

&lt;p&gt;Team projects become much smoother when everyone works in the same environment.&lt;/p&gt;

&lt;p&gt;Without Docker:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one developer may use Node 16,&lt;/li&gt;
&lt;li&gt;another uses Node 18,&lt;/li&gt;
&lt;li&gt;and someone else may be missing a package entirely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These small differences create unnecessary bugs and confusion.&lt;/p&gt;

&lt;p&gt;With Docker, the environment is standardized for everyone.&lt;/p&gt;

&lt;p&gt;The entire team works with the exact same setup, which reduces debugging time and improves collaboration.&lt;/p&gt;




&lt;p&gt;This is why Docker has become a standard tool in modern software development.&lt;/p&gt;




&lt;h1&gt;
  
  
  Let's break down things
&lt;/h1&gt;

&lt;p&gt;Before using Docker, there are a few important terms you’ll keep seeing.&lt;/p&gt;

&lt;p&gt;Here’s the simplest way to understand them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Image → The Blueprint
&lt;/h2&gt;

&lt;p&gt;An image is like a recipe or blueprint for your application.&lt;/p&gt;

&lt;p&gt;It contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your code,&lt;/li&gt;
&lt;li&gt;dependencies,&lt;/li&gt;
&lt;li&gt;configurations,&lt;/li&gt;
&lt;li&gt;and instructions needed to run the app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Images themselves do not run. They are templates used to create containers.&lt;/p&gt;

&lt;p&gt;Think of it like a recipe card in a cookbook.&lt;/p&gt;




&lt;h2&gt;
  
  
  Container → The Running Application
&lt;/h2&gt;

&lt;p&gt;A container is a running instance created from an image.&lt;/p&gt;

&lt;p&gt;If the image is the recipe, then the container is the actual cooked meal.&lt;/p&gt;

&lt;p&gt;Containers are lightweight, isolated, and portable, meaning they can run consistently across different environments.&lt;/p&gt;

&lt;p&gt;This is where your application actually runs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Dockerfile → The Instructions
&lt;/h2&gt;

&lt;p&gt;A Dockerfile is a text file containing step-by-step instructions for building an image.&lt;/p&gt;

&lt;p&gt;Inside it, you define things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the programming language version,&lt;/li&gt;
&lt;li&gt;dependencies,&lt;/li&gt;
&lt;li&gt;files to copy,&lt;/li&gt;
&lt;li&gt;and commands to execute.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It tells Docker exactly how to prepare your application environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Registry → Storage for Images
&lt;/h2&gt;

&lt;p&gt;A registry is a place where Docker images are stored and shared.&lt;/p&gt;

&lt;p&gt;The most popular registry is Docker Hub.&lt;/p&gt;

&lt;p&gt;You can think of it like GitHub, but for Docker images instead of source code.&lt;/p&gt;

&lt;p&gt;Teams use registries to share and distribute application environments easily.&lt;/p&gt;




&lt;h1&gt;
  
  
  Here is an example
&lt;/h1&gt;

&lt;p&gt;Let’s say you’re building a Node.js application.&lt;/p&gt;

&lt;p&gt;You’re using Node.js version 18 on your machine, and everything works perfectly.&lt;/p&gt;

&lt;p&gt;But your teammate is using Node.js version 16.&lt;/p&gt;

&lt;p&gt;Suddenly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your code works,&lt;/li&gt;
&lt;li&gt;theirs crashes,&lt;/li&gt;
&lt;li&gt;and nobody understands why.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without Docker, solving this might involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;uninstalling software,&lt;/li&gt;
&lt;li&gt;changing versions,&lt;/li&gt;
&lt;li&gt;or manually fixing dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Docker, you simply define the exact environment your application needs — including Node.js version 18 — inside a container.&lt;/p&gt;

&lt;p&gt;Now everyone runs the same setup regardless of what’s installed on their computer.&lt;/p&gt;

&lt;p&gt;Problem solved.&lt;/p&gt;

&lt;p&gt;This is usually the moment Docker finally “clicks” for most developers.&lt;/p&gt;




&lt;h1&gt;
  
  
  Getting Started (Keep It Simple)
&lt;/h1&gt;

&lt;p&gt;You don’t need to master Docker overnight.&lt;/p&gt;

&lt;p&gt;Just focus on the basics first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install Docker
&lt;/h3&gt;

&lt;p&gt;Download and install Docker on your machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create a Dockerfile
&lt;/h3&gt;

&lt;p&gt;Define your application environment using a simple Dockerfile.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Build Your Image
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; my-app &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command creates a Docker image for your application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Run the Container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This starts your application inside a container.&lt;/p&gt;

&lt;p&gt;And just like that, you’ve containerized your app.&lt;/p&gt;




&lt;h2&gt;
  
  
  Finally
&lt;/h2&gt;

&lt;p&gt;Docker isn’t just another development tool.&lt;/p&gt;

&lt;p&gt;It’s a different way of thinking about applications and environments.&lt;/p&gt;

&lt;p&gt;Instead of spending hours fixing setup issues and environment conflicts, Docker helps developers build software with consistency, portability, and simplicity.&lt;/p&gt;

&lt;p&gt;It removes the chaos of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“missing dependencies,”&lt;/li&gt;
&lt;li&gt;“wrong versions,”&lt;/li&gt;
&lt;li&gt;and “works on my machine” problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And replaces them with predictable environments that behave the same everywhere.&lt;/p&gt;

&lt;p&gt;So the next time you hear:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It works on my machine.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’ll know there’s a better answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Let’s use Docker.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Start small. Stay curious. And start building with confidence.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>productivity</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>From Click to Connection: The Hidden Journey of Internet Data</title>
      <dc:creator>Elizabeth Omito</dc:creator>
      <pubDate>Mon, 20 Apr 2026 23:07:30 +0000</pubDate>
      <link>https://dev.to/elizabeth_omito/from-click-to-connection-the-hidden-journey-of-internet-data-47ji</link>
      <guid>https://dev.to/elizabeth_omito/from-click-to-connection-the-hidden-journey-of-internet-data-47ji</guid>
      <description>&lt;p&gt;Ever wondered what really happens after you click something?&lt;/p&gt;

&lt;p&gt;You tap “send,” open a website, or click a link and something happens instantly.&lt;/p&gt;

&lt;p&gt;Behind that instant response is a structured system moving data across networks, devices, and continents in milliseconds.&lt;br&gt;
Ever wondered what really happens after you click something?&lt;/p&gt;

&lt;p&gt;You tap “send,” open a website, or click a link and something happens instantly.&lt;/p&gt;

&lt;p&gt;Behind that instant response is a structured system moving data across networks, devices, and continents in milliseconds.&lt;/p&gt;

&lt;p&gt;So what’s actually making all of this possible?&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The System Behind the Internet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To make communication reliable across billions of devices, the internet relies on two structured models: the OSI model and the TCP/IP model.&lt;/p&gt;

&lt;p&gt;At a high level, these models define how data moves from one device to another. They standardize communication so different systems can understand each other.&lt;/p&gt;

&lt;p&gt;They are not tools or software, but frameworks that guide how data is handled across networks.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Think of It Like Sending a Package&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Sending data across the internet is similar to sending a package.&lt;/p&gt;

&lt;p&gt;You write the message, package it, label it with an address, and send it through delivery systems until it reaches the receiver, who then opens and reads it.&lt;/p&gt;

&lt;p&gt;Each step has a specific role.&lt;/p&gt;

&lt;p&gt;In the same way, the internet breaks communication into layers, where each layer is responsible for a specific part of the process.&lt;/p&gt;




&lt;h2&gt;
  
  
  OSI vs TCP/IP
&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%2Ft1q3hd06kahw1qpyj2es.jpeg" 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%2Ft1q3hd06kahw1qpyj2es.jpeg" alt=" " width="500" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The OSI model consists of 7 layers, while the TCP/IP model has 4 layers.&lt;/p&gt;

&lt;p&gt;Both models follow the same idea: breaking communication into layers so the process becomes easier to understand, build, and debug.&lt;/p&gt;

&lt;p&gt;The OSI model is more detailed and conceptual, while TCP/IP is practical and used in real-world networking.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Why This Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Understanding these models helps you debug issues more effectively, build better backend systems, and understand how requests and responses actually flow.&lt;/p&gt;

&lt;p&gt;It also improves how you communicate with other developers, because you can identify exactly where a problem is occurring instead of guessing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Layers
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OSI Model&lt;/strong&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%2Fh94ahzonc2gmhae32f5k.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%2Fh94ahzonc2gmhae32f5k.jpg" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The application layer handles user interaction through browsers and applications.&lt;/li&gt;
&lt;li&gt;The presentation layer formats and encrypts data.&lt;/li&gt;
&lt;li&gt;The session layer manages connections between devices.&lt;/li&gt;
&lt;li&gt;The transport layer ensures reliable delivery of data.&lt;/li&gt;
&lt;li&gt;The network layer handles routing across networks.&lt;/li&gt;
&lt;li&gt;The data link layer manages communication within a local network.&lt;/li&gt;
&lt;li&gt;The physical layer deals with hardware and signal transmission.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;TCP/IP Model&lt;/strong&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%2Fptx39yh3i1aewkde3fhe.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%2Fptx39yh3i1aewkde3fhe.png" alt=" " width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The application layer handles high-level protocols such as HTTP and DNS.&lt;/li&gt;
&lt;li&gt;The transport layer manages data delivery using TCP or UDP.&lt;/li&gt;
&lt;li&gt;The internet layer handles addressing and routing using IP.&lt;/li&gt;
&lt;li&gt;The network access layer is responsible for physical data transmission.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;What Happens When You Visit a Website?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you type a URL and press Enter, the process begins at the application layer, where the browser creates an HTTP request.&lt;/p&gt;

&lt;p&gt;The transport layer then breaks the data into smaller pieces and ensures it can be delivered reliably.&lt;/p&gt;

&lt;p&gt;The internet layer assigns addresses and routes the data across networks.&lt;/p&gt;

&lt;p&gt;Finally, the network access layer transmits the data through physical means such as Wi-Fi or cables.&lt;/p&gt;

&lt;p&gt;On the server side, the process happens in reverse: the data is received, reassembled, processed, and a response is sent back—all within milliseconds.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You do not need to memorize every layer to get started.&lt;/p&gt;

&lt;p&gt;Focus on understanding how HTTP works, how TCP ensures reliable delivery, and how to observe requests using the Network tab in your browser’s developer tools.&lt;/p&gt;

&lt;p&gt;This is enough to build a strong foundation.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Final Thought&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every click you make triggers a structured flow of communication across multiple layers.&lt;/p&gt;

&lt;p&gt;The internet is not random—it is carefully designed.&lt;/p&gt;

&lt;p&gt;And once you understand these layers, you don’t just use the internet—you understand it.&lt;br&gt;
So what’s actually making all of this possible?&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The System Behind the Internet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To make communication reliable across billions of devices, the internet relies on two structured models: the OSI model and the TCP/IP model.&lt;/p&gt;

&lt;p&gt;At a high level, these models define how data moves from one device to another. They standardize communication so different systems can understand each other.&lt;/p&gt;

&lt;p&gt;They are not tools or software, but frameworks that guide how data is handled across networks.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Think of It Like Sending a Package&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Sending data across the internet is similar to sending a package.&lt;/p&gt;

&lt;p&gt;You write the message, package it, label it with an address, and send it through delivery systems until it reaches the receiver, who then opens and reads it.&lt;/p&gt;

&lt;p&gt;Each step has a specific role.&lt;/p&gt;

&lt;p&gt;In the same way, the internet breaks communication into layers, where each layer is responsible for a specific part of the process.&lt;/p&gt;




&lt;h2&gt;
  
  
  OSI vs TCP/IP
&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%2Ft1q3hd06kahw1qpyj2es.jpeg" 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%2Ft1q3hd06kahw1qpyj2es.jpeg" alt=" " width="500" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The OSI model consists of 7 layers, while the TCP/IP model has 4 layers.&lt;/p&gt;

&lt;p&gt;Both models follow the same idea: breaking communication into layers so the process becomes easier to understand, build, and debug.&lt;/p&gt;

&lt;p&gt;The OSI model is more detailed and conceptual, while TCP/IP is practical and used in real-world networking.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Why This Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Understanding these models helps you debug issues more effectively, build better backend systems, and understand how requests and responses actually flow.&lt;/p&gt;

&lt;p&gt;It also improves how you communicate with other developers, because you can identify exactly where a problem is occurring instead of guessing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Layers
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OSI Model&lt;/strong&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%2Fh94ahzonc2gmhae32f5k.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%2Fh94ahzonc2gmhae32f5k.jpg" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The application layer handles user interaction through browsers and applications.&lt;/li&gt;
&lt;li&gt;The presentation layer formats and encrypts data.&lt;/li&gt;
&lt;li&gt;The session layer manages connections between devices.&lt;/li&gt;
&lt;li&gt;The transport layer ensures reliable delivery of data.&lt;/li&gt;
&lt;li&gt;The network layer handles routing across networks.&lt;/li&gt;
&lt;li&gt;The data link layer manages communication within a local network.&lt;/li&gt;
&lt;li&gt;The physical layer deals with hardware and signal transmission.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;TCP/IP Model&lt;/strong&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%2Fptx39yh3i1aewkde3fhe.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%2Fptx39yh3i1aewkde3fhe.png" alt=" " width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The application layer handles high-level protocols such as HTTP and DNS.&lt;/li&gt;
&lt;li&gt;The transport layer manages data delivery using TCP or UDP.&lt;/li&gt;
&lt;li&gt;The internet layer handles addressing and routing using IP.&lt;/li&gt;
&lt;li&gt;The network access layer is responsible for physical data transmission.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;What Happens When You Visit a Website?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you type a URL and press Enter, the process begins at the application layer, where the browser creates an HTTP request.&lt;/p&gt;

&lt;p&gt;The transport layer then breaks the data into smaller pieces and ensures it can be delivered reliably.&lt;/p&gt;

&lt;p&gt;The internet layer assigns addresses and routes the data across networks.&lt;/p&gt;

&lt;p&gt;Finally, the network access layer transmits the data through physical means such as Wi-Fi or cables.&lt;/p&gt;

&lt;p&gt;On the server side, the process happens in reverse: the data is received, reassembled, processed, and a response is sent back—all within milliseconds.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You do not need to memorize every layer to get started.&lt;/p&gt;

&lt;p&gt;Focus on understanding how HTTP works, how TCP ensures reliable delivery, and how to observe requests using the Network tab in your browser’s developer tools.&lt;/p&gt;

&lt;p&gt;This is enough to build a strong foundation.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Finally It's a wrap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every click you make triggers a structured flow of communication across multiple layers.&lt;/p&gt;

&lt;p&gt;The internet is not random—it is carefully designed.&lt;/p&gt;

&lt;p&gt;And once you understand these layers, you don’t just use the internet you understand it. Check out more &lt;a href="https://elomito.github.io/netprep/" rel="noopener noreferrer"&gt;here&lt;/a&gt; &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>What Actually Happens When You Press Enter on a URL?</title>
      <dc:creator>Elizabeth Omito</dc:creator>
      <pubDate>Sun, 15 Mar 2026 12:53:58 +0000</pubDate>
      <link>https://dev.to/elizabeth_omito/what-actually-happens-when-you-press-enter-on-a-url-i7a</link>
      <guid>https://dev.to/elizabeth_omito/what-actually-happens-when-you-press-enter-on-a-url-i7a</guid>
      <description>&lt;p&gt;You open your browser, type a URL, and press Enter within a few milliseconds, a website appears on your screen.&lt;/p&gt;

&lt;p&gt;But behind that simple action is a complex chain of events happening across the globe: servers communicating, routers forwarding packets, DNS translating names into numbers, and encrypted connections securing your data.&lt;/p&gt;

&lt;p&gt;Every time you visit a website, your request might travel through dozens of networks, multiple countries, and thousands of miles of fiber-optic cables before the response returns to your device.&lt;/p&gt;

&lt;p&gt;So what really happens when you load a website?&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1. The Internet Is a Network of Networks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At its core, the internet is simply a massive global network of interconnected computers.&lt;br&gt;
These networks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Home networks&lt;/li&gt;
&lt;li&gt;Corporate networks&lt;/li&gt;
&lt;li&gt;Data centers&lt;/li&gt;
&lt;li&gt;Internet Service Providers (ISPs)&lt;/li&gt;
&lt;li&gt;Global backbone infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each device connected to the internet is identified by something called an IP address.&lt;br&gt;
Example:&lt;br&gt;
142.250.190.78&lt;/p&gt;

&lt;p&gt;This number uniquely identifies a device on the internet, similar to how a home address identifies a house.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Domain Names vs IP Addresses&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Humans aren’t good at remembering numbers. Instead of typing an IP address, we use domain names like:&lt;br&gt;
google.com&lt;br&gt;
github.com&lt;br&gt;
dev.to&lt;/p&gt;

&lt;p&gt;So how does your computer know the IP address of a domain?&lt;br&gt;
This is where DNS (Domain Name System) comes in it works like the phonebook of the internet.&lt;/p&gt;

&lt;p&gt;Example process:&lt;br&gt;
User enters: dev.to&lt;br&gt;
 ↓ &lt;br&gt;
Browser asks DNS server&lt;br&gt;
 ↓&lt;br&gt;
 DNS returns: 151.101.1.195&lt;br&gt;
 ↓ &lt;br&gt;
Browser connects to that server&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. What Happens When You Enter a URL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s say you visit:&lt;br&gt;
&lt;a href="https://dev.to"&gt;https://dev.to&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Several things happen behind the scenes.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Step 1 — DNS Lookup&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your browser asks a DNS resolver:&lt;br&gt;
“What is the IP address for dev.to?”&lt;/p&gt;

&lt;p&gt;The resolver returns the server’s IP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 2 — TCP Connection&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your browser establishes a connection to the server using TCP (Transmission Control Protocol).&lt;/p&gt;

&lt;p&gt;TCP ensures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data arrives&lt;/li&gt;
&lt;li&gt;Data arrives in order&lt;/li&gt;
&lt;li&gt;Missing packets are retransmitted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This step is often called the TCP handshake.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 3 — HTTPS Encryption&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If the site uses HTTPS (most do), the browser performs a TLS handshake.&lt;/p&gt;

&lt;p&gt;This step:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verifies the server’s identity&lt;/li&gt;
&lt;li&gt;Establishes encryption&lt;/li&gt;
&lt;li&gt;Protects the data being transmitted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now your communication is secure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 4 — HTTP Request&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your browser sends a request like this:&lt;/p&gt;

&lt;p&gt;GET / HTTP/1.1&lt;br&gt;
Host: dev.to&lt;/p&gt;

&lt;p&gt;This is the HTTP protocol, which defines how browsers and servers communicate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 5 — Server Response&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The server processes the request and sends back a response:&lt;/p&gt;

&lt;p&gt;HTTP/1.1 200 OK&lt;br&gt;
Content-Type: text/html&lt;/p&gt;

&lt;p&gt;Along with the HTML of the webpage.&lt;/p&gt;

&lt;p&gt;Your browser then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses the HTML&lt;/li&gt;
&lt;li&gt;Downloads CSS&lt;/li&gt;
&lt;li&gt;Downloads JavaScript&lt;/li&gt;
&lt;li&gt;Renders the page&lt;/li&gt;
&lt;li&gt;And the website appears on your screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. How Data Travels Across the Internet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Data doesn’t travel as one big chunk. Instead, it is broken into small packets.&lt;/p&gt;

&lt;p&gt;Each packet contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source IP&lt;/li&gt;
&lt;li&gt;Destination IP&lt;/li&gt;
&lt;li&gt;Data payload&lt;/li&gt;
&lt;li&gt;Packet number&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Routers across the internet decide the best path for each packet to reach its destination.&lt;/p&gt;

&lt;p&gt;Think of it like sending multiple envelopes through different postal routes that all arrive at the same house.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The Role of Servers and Data Centers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Websites live on servers inside data centers.&lt;/p&gt;

&lt;p&gt;These servers run software like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web servers (Nginx, Apache)&lt;/li&gt;
&lt;li&gt;Application servers&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Large companies operate massive data centers around the world to ensure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High availability&lt;/li&gt;
&lt;li&gt;Low latency&lt;/li&gt;
&lt;li&gt;Redundancy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. CDNs Make the Internet Faster&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To make websites load faster globally, companies use Content Delivery Networks (CDNs).&lt;/p&gt;

&lt;p&gt;A CDN stores cached copies of content in servers located around the world.&lt;/p&gt;

&lt;p&gt;Instead of requesting a file from a server in another continent, you may receive it from a nearby edge server.&lt;/p&gt;

&lt;p&gt;This dramatically reduces latency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. A Simplified Flow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s the entire process summarized:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User enters URL&lt;/li&gt;
&lt;li&gt;DNS finds IP address&lt;/li&gt;
&lt;li&gt;Browser establishes TCP connection&lt;/li&gt;
&lt;li&gt;TLS handshake secures connection&lt;/li&gt;
&lt;li&gt;Browser sends HTTP request&lt;/li&gt;
&lt;li&gt;Server sends HTTP response&lt;/li&gt;
&lt;li&gt;Browser renders the webpage&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All of this typically happens in milliseconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The internet may seem complex, but at its core it’s built on a few fundamental ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IP addresses identify devices&lt;/li&gt;
&lt;li&gt;DNS maps names to IPs&lt;/li&gt;
&lt;li&gt;TCP ensures reliable data delivery&lt;/li&gt;
&lt;li&gt;HTTP allows browsers and servers to communicate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding these layers helps developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debug networking issues&lt;/li&gt;
&lt;li&gt;Optimize performance&lt;/li&gt;
&lt;li&gt;Build better distributed systems
And once you see the mechanics behind it, the internet becomes a lot less mysterious.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>network</category>
    </item>
    <item>
      <title>What Working With Git Actually Taught Me About Collaboration</title>
      <dc:creator>Elizabeth Omito</dc:creator>
      <pubDate>Mon, 23 Feb 2026 22:37:18 +0000</pubDate>
      <link>https://dev.to/elizabeth_omito/what-working-with-git-actually-taught-me-about-collaboration-4e0b</link>
      <guid>https://dev.to/elizabeth_omito/what-working-with-git-actually-taught-me-about-collaboration-4e0b</guid>
      <description>&lt;p&gt;When I first learned Git, I saw it as a set of commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;git add&lt;/li&gt;
&lt;li&gt;git commit&lt;/li&gt;
&lt;li&gt;git push&lt;/li&gt;
&lt;li&gt;git pull&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It felt procedural — just steps to move code around but once I started working on real projects, I realized Git isn’t just version control. It’s structured collaboration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Commit Messages Are Communication&lt;/strong&gt;&lt;br&gt;
At first, my commits looked like this:&lt;br&gt;
“update”&lt;br&gt;
“fix”&lt;br&gt;
“changes”&lt;/p&gt;

&lt;p&gt;Later, I understood that commit messages are part of the project’s history. A good commit message answers:&lt;br&gt;
What changed?&lt;br&gt;
Why did it change?&lt;/p&gt;

&lt;p&gt;Clear commits make it easier for teammates (and future you) to understand the evolution of the codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Pull Before You Push&lt;/strong&gt;&lt;br&gt;
One practical lesson that stuck with me:&lt;br&gt;
Always git pull before git push.&lt;br&gt;
Not doing this led to conflicts and unnecessary friction. Pulling first ensures you’re building on the latest version of the project, not overwriting someone else’s work.&lt;/p&gt;

&lt;p&gt;It’s a small habit with big impact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Merge Conflicts Aren’t Errors — They’re Signals&lt;/strong&gt;&lt;br&gt;
The first time I saw a merge conflict, it looked like the code was broken but technically, Git was doing exactly what it’s designed to do:&lt;br&gt;
It detected overlapping changes and paused the merge to let me resolve them intentionally.&lt;/p&gt;

&lt;p&gt;Conflicts aren’t failures. They’re checkpoints that force alignment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Smaller Changes Reduce Risk&lt;/strong&gt;&lt;br&gt;
Large, unstructured commits make reviewing and merging harder.&lt;br&gt;
Breaking work into smaller, focused commits makes collaboration smoother and debugging easier.&lt;/p&gt;

&lt;p&gt;This changed how I structure my work.&lt;/p&gt;

</description>
      <category>github</category>
      <category>collaboration</category>
      <category>softwaredevelopment</category>
      <category>devjourney</category>
    </item>
    <item>
      <title>What I Learnt From My First Go Project: Go Reloaded</title>
      <dc:creator>Elizabeth Omito</dc:creator>
      <pubDate>Fri, 06 Feb 2026 13:48:39 +0000</pubDate>
      <link>https://dev.to/elizabeth_omito/what-i-learned-from-my-first-go-project-go-reloaded-1ead</link>
      <guid>https://dev.to/elizabeth_omito/what-i-learned-from-my-first-go-project-go-reloaded-1ead</guid>
      <description>&lt;p&gt;When I first started learning Go, I thought I understood the language.&lt;br&gt;
I knew the syntax, I knew the logic, and I thought writing small programs would be easy.&lt;br&gt;
Then I started Go Reloaded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Go Reloaded Was&lt;/strong&gt;&lt;br&gt;
Go Reloaded was my first “real” project in Go — not just following tutorials, but actually building something and making it work.&lt;br&gt;
It was simple on the surface: output formatting, string handling, and writing a few functions.&lt;br&gt;
But simple turned out to be deceptively hard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Moment I Got Humbled&lt;/strong&gt;&lt;br&gt;
I thought my code was perfect… until I ran the tests.&lt;br&gt;
The output I got was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;it was the best of Times , it was the worst of TIMES,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;whereas the expected output was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;It was the best of times, it was the worst of TIMES,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One tiny comma. One small space. And the test failed.&lt;/p&gt;

&lt;p&gt;It was frustrating, but it taught me something crucial: precision matters. Computers don’t guess what you meant — they only care what you actually wrote.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Learned&lt;/strong&gt;&lt;br&gt;
From Go Reloaded, I learned:&lt;br&gt;
-Small mistakes, like punctuation or spaces, can break everything.&lt;br&gt;
-Writing code carefully matters more than writing it fast.&lt;br&gt;
-Debugging is as much about reading the test as reading the code.&lt;br&gt;
-It was humbling, yes, but also exciting. Each mistake became a lesson.&lt;/p&gt;

&lt;p&gt;This project set the tone for all my future Go work. After Go Reloaded:&lt;br&gt;
-I started reading test failures carefully.&lt;br&gt;
-I paid more attention to formatting and data handling&lt;br&gt;
-I became more patient and methodical&lt;/p&gt;

&lt;p&gt;Go Reloaded was more than just code — it was my first taste of learning in public.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thought&lt;/strong&gt;&lt;br&gt;
Sometimes the smallest projects teach the biggest lessons.&lt;br&gt;
Go Reloaded taught me to slow down, pay attention, and embrace the little mistakes because that’s where growth happens.&lt;/p&gt;

</description>
      <category>go</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
