<?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: Maame Afua A. P. Fordjour </title>
    <description>The latest articles on DEV Community by Maame Afua A. P. Fordjour  (@maame-codes).</description>
    <link>https://dev.to/maame-codes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F870724%2Fe7722a3a-8b1f-47b6-a26d-777bfaf22abc.jpg</url>
      <title>DEV Community: Maame Afua A. P. Fordjour </title>
      <link>https://dev.to/maame-codes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maame-codes"/>
    <language>en</language>
    <item>
      <title>How did you end up in tech, and are you staying?</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Mon, 09 Nov 2026 23:02:37 +0000</pubDate>
      <link>https://dev.to/maame-codes/how-did-you-end-up-in-tech-and-are-you-staying-4l9b</link>
      <guid>https://dev.to/maame-codes/how-did-you-end-up-in-tech-and-are-you-staying-4l9b</guid>
      <description>&lt;p&gt;Last week you showed me where you code. This week I want to know how you ended up there in the first place, and whether you're planning to stay.&lt;/p&gt;

&lt;p&gt;I'll go first. Grab a snack, mine has a plot twist 🍿&lt;/p&gt;

&lt;h2&gt;
  
  
  The gadget kid
&lt;/h2&gt;

&lt;p&gt;I've loved computers and gadgets for as long as I can remember. If there was a new device in the house, I wanted to know how it worked. So growing up, getting into tech felt natural. Why wouldn't I spend my life doing the thing I loved? In high school, I chose ICT as my elective and joined the school robotics club. We even made it to a regional robotics competition and came third! At that point, my future felt pretty obvious.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our third-place robot, built with LEGO Mindstorms. Sadly, LEGO has since discontinued Mindstorms, and I would have loved to keep using it for hobby projects.&lt;/em&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F68srrden5trkuhhi9ere.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F68srrden5trkuhhi9ere.png" alt="Robotics competition" width="759" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Plot twist: I studied Development Planning
&lt;/h2&gt;

&lt;p&gt;Then it was time for university, and life had other plans. Development Planning was my second choice, and my parents didn't want me leaving our city for my bachelor's. So that's where I ended up, spending four years studying something I had no real interest in.&lt;/p&gt;

&lt;p&gt;If you've never heard of it, a lot of Development Planning is about how communities and cities grow: where roads, schools, hospitals and housing should go, and how to make places work better for the people living in them.&lt;/p&gt;

&lt;h2&gt;
  
  
  But tech found me anyway
&lt;/h2&gt;

&lt;p&gt;Somewhere in the middle of that degree, we were introduced to &lt;strong&gt;GIS (Geographic Information Systems)&lt;/strong&gt;, and it was the coolest thing in the whole course for me. GIS is software that lets you put data on a map and analyse it. You stack layers like roads, rivers, buildings and population on top of each other, and suddenly you can answer real questions. Where is the best place to build a new school? Which areas are most likely to flood? Which neighbourhoods are too far from a hospital? For the first time in my degree, I was using technology to solve real problems, and I was hooked.&lt;/p&gt;

&lt;p&gt;That led me down a rabbit hole into &lt;strong&gt;smart cities&lt;/strong&gt; and &lt;strong&gt;smart buildings&lt;/strong&gt;. A smart city uses sensors, data and connected devices to run things better, like traffic lights that adjust to real traffic, bins that tell the council when they're full, and buses that share their live location. Smart buildings do the same on a smaller scale, controlling lighting, heating and energy use based on who's actually in the room. It was the perfect mix of the two worlds I was stuck between.&lt;/p&gt;

&lt;h2&gt;
  
  
  Teaching myself on the side
&lt;/h2&gt;

&lt;p&gt;So I started teaching myself. HTML, then CSS, then JavaScript. Lots of tutorials, lots of broken layouts, and lots of console errors I didn't understand yet. I built some cool things just because I could, and every time something worked, it reminded me how much I loved this.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question that changed everything
&lt;/h2&gt;

&lt;p&gt;As I got older, one question kept coming back to me: do I really want to spend the rest of my life doing a job I don't even like?&lt;/p&gt;

&lt;p&gt;This time, nobody else was making the decision for me. So I made it myself and went for a Master's in Computer Science, a conversion course made for people coming from non-tech degrees.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, am I staying?
&lt;/h2&gt;

&lt;p&gt;Yes. If anything, the detour made me more sure. I know what it feels like to spend years on something you don't love, and I'm not going back. One day I'd love to bring my two worlds together and build tech for the buildings and cities I used to study.&lt;/p&gt;

&lt;p&gt;I'm asking you because tech feels different right now. Junior roles feel harder to get, AI is changing what our jobs look like, and a lot of people are wondering if they should stay or try something else. I think those conversations are worth having out loud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now it's your turn
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How did you end up in tech?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you planning to stay, or are you thinking about moving into something else?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you've ever left tech or come back to it, what made you decide?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And if you're studying or working in something you don't love right now, let this be your sign that it's never too late to switch. I'd love to hear your stories. :)💜&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>beginners</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Let's see where you code!</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Tue, 03 Nov 2026 20:18:40 +0000</pubDate>
      <link>https://dev.to/maame-codes/lets-see-where-you-code-147</link>
      <guid>https://dev.to/maame-codes/lets-see-where-you-code-147</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fitg4605lverhdzz5acol.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fitg4605lverhdzz5acol.jpg" alt="Maame's setup" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve been writing a lot about AWS lately, so let’s take a breather. This is my little corner of the world (I call it my safe space, because the moment I sit here, I forget about the world). It’s where I fix work tickets, panic over uni deadlines, build side projects , and  when my brain is fully cooked, it turns into my gaming spot ╰(&lt;em&gt;°▽°&lt;/em&gt;)╯.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s the tour&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;monitors&lt;/strong&gt;. A curved MSI ultrawide in the middle for everything else, and a vertical one on the side just for code. Once you’ve read code on a vertical screen, going back feels like reading a book sideways.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;keyboard&lt;/strong&gt;. An Ajazz with purple and white keycaps, and yes, it’s mechanical. I love mechanical keyboards, and honestly half the reason is the sound. There’s something so satisfying about that clacky typing noise, it makes even writing documentation feel a little bit fun.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;posters&lt;/strong&gt;. “The future is yours to create” is my reminder that nobody hands you a path, you build your own. “Be kind to ur mind” is for the days when things don’t go to plan and I start being too hard on myself. It reminds me to slow down, take a breath, and give myself the same patience I’d give a friend. And the four leaf clover is just there for luck, because we could all use a little extra of that.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;cubes&lt;/strong&gt;. I have undiagnosed ADHD, so fidget toys are a big part of how I stay focused. The Rubik’s cubes and the little maze cube give my hands something to do while my brain works through a problem. Without them, I’d be picking up my phone instead.&lt;/p&gt;

&lt;p&gt;The gaming side. You’ve probably spotted the controllers everywhere and the shelf full of Switch games. Gaming is my favourite way to switch off. After a long day of debugging, nothing resets my brain quite like picking up a controller and doing something that has nothing to do with YAML.&lt;/p&gt;

&lt;p&gt;Now it’s your turn. Drop a photo of your setup in the comments, or just tell me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s one thing on your desk that isn’t tech, but you’d never get rid of?&lt;br&gt;
What do you do to switch off after a long day of coding?&lt;br&gt;
And if you game, what are you playing right now?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’d love to see where you all code. :)💜&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Never Put a Pet on an AWS Spot Instance</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Tue, 27 Oct 2026 00:38:41 +0000</pubDate>
      <link>https://dev.to/maame-codes/never-put-a-pet-on-an-aws-spot-instance-em3</link>
      <guid>https://dev.to/maame-codes/never-put-a-pet-on-an-aws-spot-instance-em3</guid>
      <description>&lt;p&gt;I got a task at my internship that sounded simple. Move one of our servers to a new AWS region, keep it the same as before, and spend as little money as possible.&lt;/p&gt;

&lt;p&gt;That last part stuck with me. If you've spent any time reading about saving money on AWS, you've seen Spot instances everywhere. AWS says they can be up to 90% cheaper than normal on-demand instances. Ninety percent! I thought I'd found the easy win.&lt;/p&gt;

&lt;p&gt;Then at standup, a teammate asked one question that killed the idea in about ten seconds:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Where does this server keep its data?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's what I learned, and the question I now ask before picking Spot for anything.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. What a Spot Instance Actually Is
&lt;/h2&gt;

&lt;p&gt;AWS has huge data centres full of servers, and not all of them are being used at any moment. Spot instances let you rent that spare capacity for a lot less money.&lt;/p&gt;

&lt;p&gt;The catch is in the deal. &lt;strong&gt;AWS can take it back whenever it needs the capacity.&lt;/strong&gt; You get a two minute warning, and then your instance is gone.&lt;/p&gt;

&lt;p&gt;By default, an interrupted Spot instance is terminated, and unless you've set it up differently, the disk that came with it goes too.&lt;/p&gt;

&lt;p&gt;Two minutes is enough to save a bit of work. It's not enough to save a server's whole memory.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Our Server Couldn't Be Thrown Away
&lt;/h2&gt;

&lt;p&gt;This is where the standup question came in.&lt;/p&gt;

&lt;p&gt;The server I was moving keeps its context on its own disk. Everything it knows lives right there on that one machine. There's no separate database or storage holding a copy.&lt;/p&gt;

&lt;p&gt;So if AWS took it back, we wouldn't just lose a running server. We'd lose everything it had built up and have to start from zero.&lt;/p&gt;

&lt;p&gt;The cheap option could have ended up being the most expensive one.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Pets vs Cattle
&lt;/h2&gt;

&lt;p&gt;There's an old saying in DevOps that finally clicked for me after this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cattle&lt;/strong&gt; are servers you don't get attached to. They're all the same, and if one dies, you replace it and nobody notices. Think of a web server behind a load balancer, where the real data lives in a database somewhere else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pets&lt;/strong&gt; are servers you care about. They have their own name, their own data, and if one dies, you're having a bad day.&lt;/p&gt;

&lt;p&gt;Spot instances are great for cattle. They're risky for pets.&lt;/p&gt;

&lt;p&gt;Our server was very much a pet &lt;/p&gt;




&lt;h2&gt;
  
  
  4. The Question I Ask Now
&lt;/h2&gt;

&lt;p&gt;Before choosing Spot for anything, I ask myself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"If this server disappeared right now, what would we lose?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the answer is "nothing, we'd just start a new one", Spot is probably a great fit. Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch jobs that can be restarted&lt;/li&gt;
&lt;li&gt;CI runners&lt;/li&gt;
&lt;li&gt;Test environments&lt;/li&gt;
&lt;li&gt;Servers in an auto scaling group that keep their data somewhere else&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answer is "a lot", stick with on-demand, at least until the data lives somewhere safer.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. We Still Saved Money, Just Differently
&lt;/h2&gt;

&lt;p&gt;The goal was still to keep costs down, so cheap wasn't off the table. It just had to be the right kind of cheap.&lt;/p&gt;

&lt;p&gt;The plan is to run the server on an on/off schedule, so it only runs when it's needed. With on-demand, you don't pay for the compute while the instance is stopped, only a small amount for the disk. And because stopping an instance keeps its disk, nothing gets lost overnight.&lt;/p&gt;

&lt;p&gt;Spot isn't ruled out forever either. Once the migration is done, we'll look at it again. If the data moves off the server, it stops being a pet, and Spot becomes an option.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I went in thinking the cheapest option was the smartest one. One question at standup showed me that cheap isn't cheap if it can lose your data.&lt;/p&gt;

&lt;p&gt;Honestly, some of the best things I've learned in this internship didn't come from docs. They came from teammates asking simple questions I didn't think to ask. This is why I love working with people, you learn something new every day.&lt;/p&gt;

&lt;p&gt;So I'm curious: &lt;strong&gt;what's a "cheap" decision that ended up costing you more?&lt;/strong&gt; &lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloud</category>
    </item>
    <item>
      <title>I Fixed The Bug. Then My Pipeline Refused to Run.</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Mon, 19 Oct 2026 21:06:51 +0000</pubDate>
      <link>https://dev.to/maame-codes/i-fixed-the-bug-then-my-pipeline-refused-to-run-4c7i</link>
      <guid>https://dev.to/maame-codes/i-fixed-the-bug-then-my-pipeline-refused-to-run-4c7i</guid>
      <description>&lt;p&gt;Every engineer knows the feeling. You finally fix the bug that's been blocking your ticket, you push it, and you sit there waiting for that beautiful green tick.&lt;/p&gt;

&lt;p&gt;That was me during my internship. My Terraform kept failing to create a database server because of a disk error. With some help from a senior engineer, I found the problem: my AMI filter was grabbing the wrong image, one that needed a bigger disk than I'd asked for. I fixed the filter, pushed the change and waited.&lt;/p&gt;

&lt;p&gt;The pipeline didn't go green. It didn't really go red either. &lt;strong&gt;It didn't run at all.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sometimes your pipeline is broken and your code is completely fine.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's what happened, how it got fixed, and what I'd do so it never catches you off guard.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Five Failed Jobs, Zero Logs
&lt;/h2&gt;

&lt;p&gt;The pipeline page showed the whole thing as &lt;strong&gt;Failed&lt;/strong&gt;. 5 out of 7 jobs, all red.&lt;/p&gt;

&lt;p&gt;Normally that's fine. You click into a job, open the log, scroll to the red text and find your mistake.&lt;/p&gt;

&lt;p&gt;This time there was nothing to read. The failure reason just said:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No more compute minutes available
No job log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No stack trace. No Terraform error. Nothing. The jobs never even started, so there was nothing to log.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you ever see a pipeline full of failed jobs with no logs at all, check this first.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Retry Made It Look Even Worse
&lt;/h2&gt;

&lt;p&gt;Of course I hit retry. (We all do.) Instead of running, GitLab threw this at the top of the page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;An error occurred while making the request.
Status cannot transition via "drop"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That one looks properly scary, like something is broken inside GitLab itself. As far as I can tell, it's just GitLab failing to update jobs that never got the chance to start. Same problem, more confusing message.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Retrying won't help until the minutes are back.&lt;/strong&gt; You'll just get the same error every time. Once the minutes were topped up, one retry was all it took.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Compute Minutes Belong to the Account, Not You
&lt;/h2&gt;

&lt;p&gt;Here's the part nobody tells you as a junior: &lt;strong&gt;you probably can't fix this yourself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I told the senior engineer reviewing my change. She couldn't check the monthly quota either, so she pointed me to the colleague who manages our GitLab account. I found out later why: viewing a group's usage needs the &lt;strong&gt;Owner&lt;/strong&gt; role, so a lot of developers can't even see how close they are to the limit.&lt;/p&gt;

&lt;p&gt;So there's no point digging through your code. The fix is a message to the right person. Here's roughly what I sent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hi, our GitLab pipeline on the Terraform project has stopped running. It says we've run out of CI compute minutes for the month. Would you be able to check the quota when you get a chance? I've got a change ready, it just can't run until there's compute available.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He confirmed we'd run out and topped up the account.&lt;/p&gt;

&lt;p&gt;The annoying part was the timing. Between waiting on a review and this, my ticket barely moved for days, and I had to explain at standup that my work was ready but nothing could run. If you're ever in that spot, keep it simple: &lt;strong&gt;what's done, what's blocking it, and who's sorting it out.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. How to Check Before It Happens
&lt;/h2&gt;

&lt;p&gt;If you're an Owner on the group, go to the group (not a subgroup), then &lt;strong&gt;Settings &amp;gt; Usage quotas&lt;/strong&gt;. On a personal account, it's &lt;strong&gt;Usage quotas&lt;/strong&gt; in the left sidebar. (&lt;a href="https://docs.gitlab.com/ci/pipelines/instance_runner_compute_minutes/" rel="noopener noreferrer"&gt;GitLab docs&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;A few things I wish I'd known:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usage resets every month, so this usually bites near the end of the month.&lt;/li&gt;
&lt;li&gt;GitLab renamed "CI/CD minutes" to "compute minutes" in version 16.1, so older Stack Overflow answers use the old name.&lt;/li&gt;
&lt;li&gt;If you're not an Owner, ask whoever is to keep an eye on it. Way easier than finding out mid-ticket like I did.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. How to Make Your Minutes Last Longer
&lt;/h2&gt;

&lt;p&gt;If I wanted to stop this from happening again, this is where I'd start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only run jobs when their files change.&lt;/strong&gt; If your Terraform is split into components, there's no reason to plan the database when you only touched the load balancer. &lt;code&gt;rules: changes:&lt;/code&gt; sorts that out:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;plan:db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;terraform -chdir=db plan&lt;/span&gt;
  &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;changes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;db/**/*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Stop duplicate pipelines.&lt;/strong&gt; A push to a branch with an open merge request can start two pipelines, one for the branch and one for the MR. A &lt;code&gt;workflow: rules&lt;/code&gt; block at the top of &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; can make sure only one runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cancel old pipelines when you push again.&lt;/strong&gt; Pushed three fixes in five minutes? You don't need all three pipelines to finish. Mark jobs as &lt;code&gt;interruptible: true&lt;/code&gt; and turn on auto-cancel for redundant pipelines in your CI/CD settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache what you download every time.&lt;/strong&gt; Dependencies and Terraform providers get downloaded on every single run unless you cache them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make expensive jobs manual.&lt;/strong&gt; If a job doesn't need to run on every push, &lt;code&gt;when: manual&lt;/code&gt; is your friend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use your own runners for heavy work.&lt;/strong&gt; According to &lt;a href="https://docs.gitlab.com/ci/pipelines/instance_runner_compute_minutes/" rel="noopener noreferrer"&gt;GitLab's docs&lt;/a&gt;, project and group runners aren't affected by the compute quota. If your team already has a server, a self-managed runner can take the heavy jobs off your quota completely.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The funny thing is, my fix was right the whole time. The pipeline just had nothing to run on.&lt;/p&gt;

&lt;p&gt;So I'm curious: &lt;strong&gt;what's the most annoying reason your pipeline has failed that had nothing to do with your code?&lt;/strong&gt; Drop it in the comments. I want to collect them all 😅&lt;/p&gt;

</description>
      <category>devops</category>
      <category>gitlab</category>
      <category>cicd</category>
      <category>beginners</category>
    </item>
    <item>
      <title>'Localhost' is a Lie: Everything Uni Missed About Real-World Tech</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Tue, 13 Oct 2026 19:47:36 +0000</pubDate>
      <link>https://dev.to/maame-codes/localhost-is-a-lie-everything-uni-missed-about-real-world-tech-66n</link>
      <guid>https://dev.to/maame-codes/localhost-is-a-lie-everything-uni-missed-about-real-world-tech-66n</guid>
      <description>&lt;p&gt;Every CS student knows the drill. You get an assignment, write your code on your laptop using &lt;code&gt;localhost&lt;/code&gt;, zip the folder, and submit it before midnight. If it runs on your screen, you get an A and move on.&lt;/p&gt;

&lt;p&gt;Then you start an internship or try building a real app for real people, and reality hits you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;In school, your code is temporary. In the real world, your code has to live.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Doing an internship and building full-stack software taught me more practical engineering in six months than years of lectures ever did. Here are 5 simple truths university never told me.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Localhost is a Lie
&lt;/h2&gt;

&lt;p&gt;In uni, if your code works on your laptop, your job is done. &lt;/p&gt;

&lt;p&gt;In the real world, &lt;strong&gt;writing the code is only half the battle.&lt;/strong&gt; Getting it onto the internet (deployment) is where the real work begins.&lt;/p&gt;

&lt;p&gt;The first time I tried deploying a project, everything broke:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing environment variables crashed my server.&lt;/li&gt;
&lt;li&gt;Strange CORS errors blocked my frontend from talking to my backend.&lt;/li&gt;
&lt;li&gt;My app worked fine on my machine, but ran super slow online.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;School teaches you how to write code locally. Industry teaches you how to actually get that code to live on the internet without breaking.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Real Data is Messy
&lt;/h2&gt;

&lt;p&gt;Uni assignments give you clean data. Every mock user types their name correctly, no fields are empty, and your database calls never fail.&lt;/p&gt;

&lt;p&gt;Real users don't act like that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People type letters into number boxes.&lt;/li&gt;
&lt;li&gt;APIs drop connections out of nowhere.&lt;/li&gt;
&lt;li&gt;Data arrives broken or missing half the fields.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building real apps taught me to write &lt;strong&gt;defensive code&lt;/strong&gt;. You have to build loading screens, error popups, and backup plans so your app doesn't crash the second a real person touches it.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Simple Code Beats "Smart" Code Every Time
&lt;/h2&gt;

&lt;p&gt;Uni loves complex math and clever algorithms. It makes you feel like "good code" has to look complicated.&lt;/p&gt;

&lt;p&gt;In a real job, &lt;strong&gt;clever code is a nightmare.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No senior developer wants to read a 10-line function wrapped into one confusing line of JavaScript. They want code with clear names that makes sense right away. If someone else (or future-you at 2 AM) can't read your code easily, it’s not good code.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. You spend more time reading code than writing it
&lt;/h2&gt;

&lt;p&gt;In school, every project starts with a blank folder. You know every single line because you wrote it yourself.&lt;/p&gt;

&lt;p&gt;In the real world, you get dropped into a huge codebase with thousands of lines written by developers who left the company two years ago. &lt;/p&gt;

&lt;p&gt;Learning how to open an existing project, trace how data moves, and fix a bug without breaking three other things is a huge skill. Uni almost never prepares you for that.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Breaking things is how you actually learn
&lt;/h2&gt;

&lt;p&gt;School makes you terrified of making mistakes because a bug lowers your GPA.&lt;/p&gt;

&lt;p&gt;In the real world, &lt;strong&gt;breaking things is how you grow.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;My biggest breakthroughs didn't come from getting high marks on an assignment. They came from breaking a build, staying calm under pressure, digging through logs to fix it, and making sure I never made that same mistake again.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;A computer science degree gives you a solid base, but &lt;strong&gt;shipping real projects makes you an engineer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're still in uni and worried about the gap between your grades and your actual skills: stop waiting for your courses to catch up. Build small projects, try deploying them, get an internship, and don't be afraid to break things. &lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@domlafou?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Dom Fou&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/people-sitting-on-chair-in-front-of-computer-YRMWVcdyhmI?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>watercooler</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>'Someone Already Built That' is the Favourite Excuse of Broke Developers</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Sat, 26 Sep 2026 13:48:26 +0000</pubDate>
      <link>https://dev.to/maame-codes/someone-already-built-that-is-the-favourite-excuse-of-broke-developers-44o6</link>
      <guid>https://dev.to/maame-codes/someone-already-built-that-is-the-favourite-excuse-of-broke-developers-44o6</guid>
      <description>&lt;p&gt;Let me tell you a quick story about a developer named Sam.&lt;/p&gt;

&lt;p&gt;Sam is incredibly smart. For a whole year, he stayed up late building a super complex AI tool for digital creators. He launched it online. He posted about it constantly.&lt;/p&gt;

&lt;p&gt;The result? Crickets. He got exactly zero paid users.&lt;/p&gt;

&lt;p&gt;One weekend, Sam went to a neighborhood barbecue. He started talking to a guy named Bob. Bob owns a medium sized company that sells cardboard boxes to local restaurants. It is not a sexy business at all.&lt;/p&gt;

&lt;p&gt;Bob was complaining about how his sales team tracks their custom orders. They were using an ancient spreadsheet that crashed all the time. They were losing track of emails, missing shipments, and losing money.&lt;/p&gt;

&lt;p&gt;Sam asked Bob why he did not just buy a modern software tool. Bob sighed. He said the big software tools were way too expensive and had a hundred features his team did not even need. They just wanted something simple that actually worked.&lt;/p&gt;

&lt;p&gt;So, Sam made a choice. He stopped working on his shiny AI app. Instead, he spent two weeks building a very basic order tracker just for Bob.&lt;/p&gt;

&lt;p&gt;Bob loved it. He loved it so much that he happily paid Sam $400 a month to keep using it.&lt;/p&gt;

&lt;p&gt;Then Bob showed it to his friend who runs a commercial cleaning supply business. That friend wanted it too.&lt;/p&gt;

&lt;p&gt;Within a few months, Sam had a highly profitable software business. He was not on the front page of tech magazines, but he was making a fantastic living.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is the magic of boring companies.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When we hang out on the internet, we get tricked into thinking we have to build the next big thing. We think we have to invent a new social network or a wild new app that changes the world.&lt;/p&gt;

&lt;p&gt;But while everyone is fighting over those crowded spaces, a quiet group of developers is getting rich in the background. They are building simple software for freight companies, packaging plants, and wholesale suppliers.&lt;/p&gt;

&lt;p&gt;Walk into the back office of any boring company. You will not find sleek software. You will find messy filing cabinets and people pulling their hair out over manual data entry.&lt;/p&gt;

&lt;p&gt;These businesses lose thousands of dollars every week because they are so disorganized. And the best part is that they actually have money to spend. To a boring company, paying $500 a month for software that saves them 10 hours a week is a complete no brainer.&lt;/p&gt;

&lt;p&gt;Now, you might be thinking that someone has already built these tools. You might think the market is totally full.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not let that stop you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just look around your life right now. Think about phones, cars, or kitchen appliances. Everyone knows Apple, but there are dozens of other phone brands out there making millions of dollars. You might have never even heard of some of them, but they still have loyal customers who prefer their specific pricing, features, or simplicity. The same thing happens with car brands and washing machines. There is almost never just one company that gets every single customer.&lt;/p&gt;

&lt;p&gt;Software is the exact same way. It is almost never a game where one winner takes everything. Just because a giant company like Salesforce exists does not mean Bob wants to use it. Big software is usually too expensive, too complicated, and trying to please everyone at once.&lt;/p&gt;

&lt;p&gt;The world is huge. There is always a specific target market, a local region, or a tiny niche that wants your exact version of a tool. You do not need a million users to build a great business. You just need fifty boring companies paying you a few hundred bucks a month.&lt;/p&gt;

&lt;p&gt;So, how do you do this?&lt;/p&gt;

&lt;p&gt;Stop trying to think of ideas in your bedroom. Go talk to people who run traditional businesses. Do research on these 'unsexy' and 'unattractive' businesses, even construction. Talk to a logistics manager or a factory owner. Ask them what part of their day makes them want to scream.&lt;/p&gt;

&lt;p&gt;Look for the messy spreadsheets. Look for the boring, repetitive tasks.&lt;/p&gt;

&lt;p&gt;You do not need to change the whole world. You just need to solve a real problem for a real business.In as much as some build for the love of the game, making some $ while doing what you love would be much, much better. Embrace the boring stuff, because that is exactly where the real opportunity is hiding ƪ(˘⌣˘)ʃ.&lt;/p&gt;




&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@charlize?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;xyzcharlize&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/aerial-photo-of-gray-metal-parts-7b49gfsgQZY?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>watercooler</category>
      <category>career</category>
    </item>
    <item>
      <title>Disappeared Since March: Taking a Long Break Was My Best Decision Yet</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Wed, 23 Sep 2026 17:06:01 +0000</pubDate>
      <link>https://dev.to/maame-codes/disappeared-since-march-taking-a-long-break-was-my-best-decision-yet-1n45</link>
      <guid>https://dev.to/maame-codes/disappeared-since-march-taking-a-long-break-was-my-best-decision-yet-1n45</guid>
      <description>&lt;p&gt;If you checked my profile recently, you probably noticed my page has been completely quiet since March 12th. No project updates, no new posts, and zero commits. &lt;/p&gt;

&lt;p&gt;To be completely honest, I hit a wall. &lt;/p&gt;

&lt;p&gt;I was burning out. Balancing my university studies with endless personal projects and trying to keep up with new tools finally caught up to me. The pressure of school assignments and exams, on top of coding in my free time, became too much to handle. My brain felt like a browser with fifty tabs open, and I could not figure out which one to close.&lt;/p&gt;

&lt;p&gt;So, I did something that used to scare me: I stepped away completely. &lt;/p&gt;

&lt;p&gt;First, I shifted my full focus to my studies. I needed to make sure I was staying on track with school without the extra pressure of creating content or building side projects. &lt;/p&gt;

&lt;p&gt;Then, once school allowed for it, I packed my bags and went on a much needed holiday. For the first time in a very long time, I closed my laptop and left it behind. I decided to stop worrying about code, stop checking tech news, and just rest.&lt;/p&gt;




&lt;h3&gt;
  
  
  What Happened When I Stopped Coding
&lt;/h3&gt;

&lt;p&gt;At first, taking time off felt a bit strange. It is easy to feel like you are falling behind when you are not constantly building. &lt;/p&gt;

&lt;p&gt;But after a few days of good food, actual rest, and exploring new places on my holiday, something amazing happened. My mind cleared up. I spent my trip talking to new people, enjoying the view, and letting my brain breathe. &lt;/p&gt;

&lt;p&gt;Without forcing it, my creative spark came back. I started noticing simple everyday problems and thinking of fun ways to solve them. I was not thinking about coding out of pressure anymore. I was thinking about it because I genuinely missed it.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Breaks Are Essential
&lt;/h3&gt;

&lt;p&gt;We talk a lot in tech about consistency and working hard, but we rarely talk about the importance of powering down. &lt;/p&gt;

&lt;p&gt;Taking a break is not a sign of giving up. Just like a system needs downtime for updates, your brain needs rest to operate at its best. Stepping away to focus on school and enjoy a holiday gave me perspective, fresh inspiration and ideas.&lt;/p&gt;




&lt;h3&gt;
  
  
  I Am Back!
&lt;/h3&gt;

&lt;p&gt;I am refreshed, full of new ideas, and ready to write and build again. &lt;/p&gt;

&lt;p&gt;If you are currently feeling tired, stuck, or overwhelmed by your studies and work, this is your sign to take a breath. Step away for a bit, go on a walk, or take that holiday you have been putting off. The code will still be here when you get back.&lt;/p&gt;

&lt;p&gt;It is great to be back! &lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Got Lost in Canary Wharf for 30 Minutes, But I Found the Future of SRE</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Thu, 12 Mar 2026 17:15:04 +0000</pubDate>
      <link>https://dev.to/maame-codes/i-got-lost-in-canary-wharf-for-30-minutes-but-i-found-the-future-of-sre-202k</link>
      <guid>https://dev.to/maame-codes/i-got-lost-in-canary-wharf-for-30-minutes-but-i-found-the-future-of-sre-202k</guid>
      <description>&lt;p&gt;If you've ever been to Canary Wharf, you know it's less of a business district and more of a high-stakes escape room designed by someone who really dislikes Google Maps. &lt;/p&gt;

&lt;p&gt;I arrived for SRE Day London 2026 at the Everyman Cinema feeling prepared. I had my bag, my notes, and a general idea of where I was going. Fast forward 30 minutes, and I was still wandering around Crossrail Place like a lost protagonist in a sci-fi movie. Between the multiple levels and the "Level -2" hidden entrance, the frustration was real. I spent nearly half an hour pacing back and forth, trying to figure out how to actually get into the venue. Honestly speaking I probably hit 2k on my daily steps from walking around in circles to find the exact location. And for some weird reason, google maps and apple maps don't work really well in Canary Wharf, did some research. Apparently it is due to something called The urban canyon effect. If you are interested in reading more about how that affects GPS signals, you can read this article: &lt;a href="https://www.gpsworld.com/wirelesspersonal-navigationshadow-matching-12550/" rel="noopener noreferrer"&gt;urban canyon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But honestly? The second I stepped inside, the frustration evaporated.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Swag Haul
&lt;/h2&gt;

&lt;p&gt;First things first: the swag. As a student, you quickly learn that the quality of an event is often proportional to the stickers on the table. SRE Day did not disappoint. I loaded up on fridge magnets and stickers, but the highlight was definitely the SRE Day t-shirts. I managed to cop one, and let's just say it's going straight into my weekly rotation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Knowledge Drop: Morning to Midday
&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%2Fchipa1l9vshm3uce6p2n.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%2Fchipa1l9vshm3uce6p2n.jpeg" alt="keynotes" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The talks kicked off at 09:00, and sitting on those comfortable Everyman sofas made it feel more like a movie premiere than a tech conference. Here is a breakdown of what I learned before 15:00:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Peter Marshall (Imply):&lt;/strong&gt; He opened with a keynote on Decoupled Observability. The big takeaway here was that we are often limited by "tightly coupled" architectures where data is stuck to specific tools. By decoupling the data layer, we can scale our detection and investigation without the costs spiralling out of control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dewan Ahmed (Harness):&lt;/strong&gt; He talked about Secure by Default in AI-driven delivery. As we move faster with AI, we run the risk of "automating insecurity at scale." He challenged us to look beyond just scanners and build confidence directly into the pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Matt Henderson (Phoebe):&lt;/strong&gt; This was fascinating he compared software reliability to the human immune system. Instead of just reacting to alerts and scrambling when things break, we need systems that can predict and prevent failures, just like our bodies handle threats before we even feel sick.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tyler Hannan (ClickHouse):&lt;/strong&gt; He asked a controversial question: Do Metrics Matter? While metrics are the fastest way to see if a system is unhealthy, Tyler pointed out that as systems get more complex, metrics alone aren't enough to understand the "why" behind unpredictable failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Birol Yildiz (ilert):&lt;/strong&gt; He showed AI SRE in action. We're moving toward a world where AI agents can diagnose and remediate outages autonomously. Imagine an incident fixing itself without anyone getting paged at 3 AM!&lt;/p&gt;




&lt;h2&gt;
  
  
  Lunch and the Afternoon Sprint
&lt;/h2&gt;

&lt;p&gt;After a much-needed pizza break (shoutout to incident.io for powering that!), we dove into the afternoon sessions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deniz Yalcin &amp;amp; William Ravensbergen (ING):&lt;/strong&gt; They reminded us that reliability starts with Customer Data. In banking, if upstream data is malformed or delayed, everything else fails from fraud prevention to user trust. It's an underrated SRE dependency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adriana Villela (Dynatrace):&lt;/strong&gt; She emphasized that Observability is a Team Sport! We often fall into the trap of creating "Observability Silos" just like we did with DevOps. To succeed, observability needs to be integrated across the whole organization, not just a single team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Heather Thacker (Gatling):&lt;/strong&gt; She broke down the Performance Testing Arsenal. It's one thing for your app to work on a laptop, but another to handle 10x traffic during a marketing campaign. She covered load, stress, and soak testing—essential tools for any SRE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tasmia Niazi:&lt;/strong&gt; This session was super relatable for me. She shared her journey from learner to leader, explaining that SRE is a mindset and a culture, not just a job title. Adopting that state of mind is what builds resilient teams.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Involved: Tracer Cloud and Open Source
&lt;/h2&gt;

&lt;p&gt;During the networking and sponsor crawl at 14:30, I had the coolest discovery: Tracer Cloud's Open SRE Agent. It's a tool focused on cloud-native alert investigation, using AI to figure out root causes before humans even have to step in.&lt;/p&gt;

&lt;p&gt;Because I've been looking for ways to get more "hands-on" experience, I officially signed up to be a contributor! If you want to jump in and contribute to the repo as well, you can find it here:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Tracer-Cloud" rel="noopener noreferrer"&gt;
        Tracer-Cloud
      &lt;/a&gt; / &lt;a href="https://github.com/Tracer-Cloud/opensre" rel="noopener noreferrer"&gt;
        opensre
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Build your own AI SRE agents. The open source toolkit for the AI era.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/Tracer-Cloud/opensre/docs/logo/opensre-logo-white.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTracer-Cloud%2Fopensre%2FHEAD%2Fdocs%2Flogo%2Fopensre-logo-white.svg" alt="OpenSRE" width="360"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;OpenSRE v0.1: Build Your Own AI SRE Agents&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;The open-source framework for AI SRE agents, and the training and evaluation environment they need to improve. Connect the 60+ tools you already run, define your own workflows, and answer production questions on your own infrastructure.&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/Tracer-Cloud/opensre/actions/workflows/ci.yml?branch=main" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/81bd2e1de7dffbf92f49763cc630528d1929a172ec5ca6c69bc485e463abd613/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f5472616365722d436c6f75642f6f70656e7372652f63692e796d6c3f6272616e63683d6d61696e267374796c653d666f722d7468652d6261646765" alt="CI status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Tracer-Cloud/opensre/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/85cdcd9c83f9ee11c235d8639e858b606fbdfd51286a2b5542f0b6026f193055/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374617475732d7075626c6963253230616c7068612d6f72616e67653f7374796c653d666f722d7468652d6261646765" alt="Project status: public alpha"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/Tracer-Cloud/opensre/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7bcf61277e6797b4d04d2593a074bb89facf520ea3f9df4bed3f15c4263f02dc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d417061636865253230322e302d626c75652e7376673f7374796c653d666f722d7468652d6261646765" alt="Apache 2.0 License"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/7NTpevXf7w" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0afbea69e98a1e86fd72c0c43eed8e3219b5f82ab642bfde772d932c22bfe210/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d4a6f696e25323055732d3538363546323f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="Discord"&gt;&lt;/a&gt;
    &lt;a href="https://greptile.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e9521c46cb59a66e242ec90120ec358c7f783591d765347bd902d945c9afb0cb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53706f6e736f72656425323062792d4772657074696c652d3237453939463f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d334433423446266c6f676f3d64617461253341696d616765253246737667253242786d6c25334262617365363425324350484e325a79423361575230614430694d7a59334969426f5a576c6e61485139496a51794d434967646d6c6c64304a76654430694d43417749444d324e7941304d6a416949475a7062477739496d3576626d5569494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a7949253242436a78775958526f49475139496b30794e4441754d6a5935494451354c6a67784e54524d4d5459324c6a67774e4341784d5455754f54597a544445784e5334354e6a59674d5455354c6a5130544445344d53347a4d7a55674d6a49774c6a55344e5577794e446b754e7a6730494445324d6934774e44684d4d546b324c6a6334494445784d6934304e3077794e544d754d445934494459784c6a63344f44464d4d7a59794c6a59774e5341784e6a51754d6a5132544445334f4334334d7a6b674d7a49784c6a51344f55777a4c6a45304e544179494445314e7934794e444a4d4d5467334c6a41784d534177544449304d4334794e6a6b674e446b754f4445314e466f6949475a706247773949694e47526b5a47526b59694c7a344b50484a6c5933516764326c6b64476739496a497a4e6934304e544d694947686c6157646f644430694f444d754e4455324e69496764484a68626e4e6d62334a7450534a74595852796158676f4d4334334e5451334d5341744d4334324e5459774e546b674d434178494445344f4334774d5463674d7a4d324c6a55304e436b6949475a706247773949694e47526b5a47526b59694c7a344b50484a6c5933516764326c6b64476739496a497a4e6934304e544d694947686c6157646f644430694f444d754e4455324e69496764484a68626e4e6d62334a7450534a74595852796158676f4d4334334d7a457a4e5451674d4334324f4445354f5467674d434178494441674d5463304c6a6b324d696b6949475a706247773949694e47526b5a47526b59694c7a344b5043397a646d632532424367253344253344" alt="Sponsored by Greptile"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://trendshift.io/repositories/25889" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/a3aeed0af116d24536b12e676abdae775258fa0f9d11ced5fd78c2cb338ef8ba/68747470733a2f2f7472656e6473686966742e696f2f6170692f62616467652f7265706f7369746f726965732f3235383839" alt="Tracer-Cloud%2Fopensre | Trendshift" height="30"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;
    &lt;a href="https://www.opensre.com/docs/getting-started/quickstart" rel="nofollow noopener noreferrer"&gt;Quickstart&lt;/a&gt; ·
    &lt;a href="https://www.opensre.com/docs" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt; ·
    &lt;a href="https://opensre.com/docs/guides/faq" rel="nofollow noopener noreferrer"&gt;FAQ&lt;/a&gt; ·
    &lt;a href="https://trust.tracer.cloud/" rel="nofollow noopener noreferrer"&gt;Security&lt;/a&gt;
  &lt;/strong&gt;
&lt;/p&gt;


&lt;/div&gt;
&lt;br&gt;


&lt;blockquote&gt;
&lt;p&gt;🚧 Public Alpha: Core workflows are usable for early exploration, though not yet fully stable. The project is in active development, and APIs and integrations may evolve.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Before you begin&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A terminal open in a code project&lt;/li&gt;
&lt;li&gt;A Git repository (recommended for the full workflow demonstration)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Step 1: Install and start opensre&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;macOS or Linux:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;curl -fsSL https://install.opensre.com &lt;span class="pl-k"&gt;|&lt;/span&gt; bash -s -- -gh&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Windows (PowerShell):&lt;/p&gt;

&lt;div class="highlight highlight-source-powershell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;&amp;amp;&lt;/span&gt; ([&lt;span class="pl-k"&gt;scriptblock&lt;/span&gt;]::Create((irm https:&lt;span class="pl-k"&gt;//&lt;/span&gt;&lt;span class="pl-c1"&gt;install.opensre.com&lt;/span&gt;&lt;span class="pl-k"&gt;/&lt;/span&gt;install.ps1))) &lt;span class="pl-k"&gt;-&lt;/span&gt;gh&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Then start OpenSRE:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;opensre&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Tracer-Cloud/opensre/docs/images/opensre-welcome.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FTracer-Cloud%2Fopensre%2FHEAD%2Fdocs%2Fimages%2Fopensre-welcome.png" alt="OpenSRE CLI welcome screen with the sign-in prompt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Windows details: &lt;a href="https://github.com/Tracer-Cloud/opensre/docs/install/windows-local.mdx" rel="noopener noreferrer"&gt;Windows&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The installer fetches the latest build from &lt;code&gt;main&lt;/code&gt; without requiring sudo…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Tracer-Cloud/opensre" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Contributing to open-source is one of the best ways to move from theory to reality.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Despite the 30-minute maze-running session at the start, SRE Day was a massive win. I came for the t-shirt, but I left with a contributor invite and a much clearer picture of where the industry is heading.&lt;/p&gt;

&lt;p&gt;If you are curious about cloud or have deep interests in reliability, it doesn't matter if you're not in London! They host events all around Europe. You should definitely subscribe to their page on &lt;a href="https://lu.ma/sre" rel="noopener noreferrer"&gt;Luma&lt;/a&gt; to check out their upcoming events.&lt;/p&gt;

&lt;p&gt;Also, if you're looking to give back, they have an option to help out as a Community Hero! It's a great way to support the ecosystem while growing your own network.&lt;/p&gt;

&lt;p&gt;Now, if someone could just build an agent to help me navigate Canary Wharf next time... that would be great because honestly, I became Maame 'the explorer' in those 30 minutes😂.&lt;/p&gt;

</description>
      <category>sre</category>
      <category>cloud</category>
      <category>opensource</category>
      <category>networking</category>
    </item>
    <item>
      <title>DevOps From Scratch: Entry #05</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Sat, 07 Mar 2026 16:39:39 +0000</pubDate>
      <link>https://dev.to/maame-codes/devops-from-scratch-entry-05-56o9</link>
      <guid>https://dev.to/maame-codes/devops-from-scratch-entry-05-56o9</guid>
      <description>&lt;p&gt;Chapters 6 and 7 of the &lt;a href="https://trainingportal.linuxfoundation.org/courses/introduction-to-linux-lfs101" rel="noopener noreferrer"&gt;Linux Foundation LFS101 course&lt;/a&gt; cover &lt;strong&gt;System Configuration from the Graphical Interface&lt;/strong&gt; and &lt;strong&gt;Common Applications&lt;/strong&gt;. On the surface, these sound like the "not-so-technical" chapters, the ones you skim to get to the real stuff.&lt;/p&gt;

&lt;p&gt;But I actually found them more useful than I expected. Here's why.&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 6: System Configuration from the Graphical Interface
&lt;/h2&gt;

&lt;p&gt;After all the kernel talk and boot process deep-dives from previous entries, this one felt like a breather. It's about what you can configure directly through the Ubuntu desktop, no terminal required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Display, Date &amp;amp; Time Settings&lt;/strong&gt; are all inside GNOME's Settings panel, just like you'd expect. But one thing that caught my attention was the &lt;strong&gt;NTP (Network Time Protocol)&lt;/strong&gt; option for syncing time automatically. In DevOps, this actually matters. If multiple servers disagree on the time, your logs won't line up and debugging becomes a nightmare. So even "setting the clock" has a real professional reason behind it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network Manager&lt;/strong&gt; is what Linux uses to handle all your connections: WiFi, ethernet, VPNs. The GUI version lives in your top-right taskbar and does a lot of the heavy lifting automatically. The insight the course gives though is that everything you configure through that GUI maps to a config file underneath. The GUI is the training wheels. Knowing what's behind it is what matters for DevOps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installing and Updating Software&lt;/strong&gt; the course clears up a distinction I was fuzzy on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update    &lt;span class="c"&gt;# refreshes your list of available packages (installs nothing)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade   &lt;span class="c"&gt;# actually downloads and installs newer versions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always run &lt;code&gt;update&lt;/code&gt; before &lt;code&gt;upgrade&lt;/code&gt;. Now I properly understand why. ✅&lt;/p&gt;




&lt;h2&gt;
  
  
  Chapter 7: Common Applications
&lt;/h2&gt;

&lt;p&gt;This chapter is a guided tour of the Linux app ecosystem. The apps work great, they just have different names to what you're used to.&lt;/p&gt;

&lt;h3&gt;
  
  
  Internet &amp;amp; Communication
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Need&lt;/th&gt;
&lt;th&gt;Linux App&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Web browser&lt;/td&gt;
&lt;td&gt;Firefox, Chromium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;td&gt;Thunderbird, Evolution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File transfer&lt;/td&gt;
&lt;td&gt;FileZilla&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Messaging / VoIP&lt;/td&gt;
&lt;td&gt;Pidgin, Ekiga&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nothing groundbreaking, but good to know your way around.&lt;/p&gt;




&lt;h3&gt;
  
  
  Productivity &amp;amp; Dev Tools
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;LibreOffice&lt;/strong&gt; is the open-source Microsoft Office. Writer, Calc, and Impress cover Word, Excel, and PowerPoint respectively. It even reads &lt;code&gt;.docx&lt;/code&gt; and &lt;code&gt;.xlsx&lt;/code&gt; files. Won't need it much for DevOps, but it's there.&lt;/p&gt;

&lt;p&gt;On the dev side, Linux is properly in its element: &lt;code&gt;gcc&lt;/code&gt; for compiling, &lt;code&gt;gdb&lt;/code&gt; for debugging, Eclipse or VS Code as an IDE, and of course &lt;code&gt;git&lt;/code&gt; for version control, which was &lt;em&gt;also&lt;/em&gt; created by Linus Torvalds. The man really said "I'll just build Linux AND the version control system while I'm at it." 😂&lt;/p&gt;




&lt;h3&gt;
  
  
  Multimedia &amp;amp; Graphics
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;VLC&lt;/strong&gt; needs no introduction, it plays everything, everywhere, always. Audacity covers audio editing, Kdenlive handles video editing, and &lt;strong&gt;GIMP&lt;/strong&gt; is the open-source Photoshop alternative that's been around since 1996. Inkscape handles vector graphics too (think open-source Illustrator).&lt;/p&gt;

&lt;p&gt;The full ecosystem laid out like this is honestly impressive. There's a free, open-source alternative for basically everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  The One Big Takeaway
&lt;/h2&gt;

&lt;p&gt;Linux is a complete operating system, not just a terminal with some files floating around it.&lt;/p&gt;

&lt;p&gt;Everything in the GUI maps directly to a config file or CLI command underneath. Using the desktop to set things up is fine. Knowing &lt;em&gt;what's happening&lt;/em&gt; underneath is what separates someone who &lt;strong&gt;uses&lt;/strong&gt; Linux from someone who &lt;strong&gt;understands&lt;/strong&gt; it.&lt;/p&gt;

&lt;p&gt;That's the gear I'm trying to shift into. Slowly but surely.(Just like the way penguins walk) &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; I've updated &lt;strong&gt;&lt;a href="https://flashy-memorizer.vercel.app/" rel="noopener noreferrer"&gt;Flashy&lt;/a&gt;&lt;/strong&gt; with a new deck for both chapters, go test yourself if you've been following along!&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Command Line Operations&lt;/strong&gt; we're leaving the desktop behind and going full terminal. Nervous and excited in equal measure. See you in the next one! &lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>learning</category>
    </item>
    <item>
      <title>How My "Illegal" Visit to Tech Show London Turned Into a Summer Internship Win</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Thu, 05 Mar 2026 01:04:10 +0000</pubDate>
      <link>https://dev.to/maame-codes/how-my-illegal-visit-to-tech-show-london-turned-into-a-summer-internship-win-336o</link>
      <guid>https://dev.to/maame-codes/how-my-illegal-visit-to-tech-show-london-turned-into-a-summer-internship-win-336o</guid>
      <description>&lt;p&gt;I officially became a "Tech Outlaw" today. 😂&lt;/p&gt;

&lt;p&gt;Don't worry I didn't do anything malicious. I just happened to be in the right place at the "wrong" time. This year, I made a personal vow to stop being such an introvert. I decided to move past the workstation in my room and actually see the opportunities waiting in the real world. When I saw the "Tech Show London" flyer on Instagram, specifically mentioning DevOps, Cloud, and Infrastructure, I knew I had to be there.&lt;/p&gt;

&lt;p&gt;I registered, showed up for Day One, and that’s where the adventure (and the "crime") began.&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%2F4zgx3gjoy8bmd6gxqztv.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%2F4zgx3gjoy8bmd6gxqztv.jpeg" alt="badge" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Part 1: The "Accidental" Infiltration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yesterday morning at the ExCeL was electric. Hundreds of people were streaming in, multiple shows were running simultaneously, and in the chaos, I simply scanned my badge and sailed through the gates. I spent the first few hours feeling like a total pro, soaking up the atmosphere and jumping between the Cloud and DevOps keynotes.&lt;/p&gt;

&lt;p&gt;I was taking frantic notes, thinking, "This is it. I’m finally in the room where it happens." Three major "lightbulb" moments hit me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Cloud-Native Shift:&lt;/strong&gt; It’s no longer about just "using" the cloud for storage; it’s about architecting systems specifically for it so they can scale at the speed of light.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Human Side of DevOps:&lt;/strong&gt; A speaker hammered home that you can have a perfect Docker or Kubernetes setup, but if your team’s communication is broken, your tech stack won't save you. DevOps is a culture, not just a toolkit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "Headache" Economy:&lt;/strong&gt; Walking the floor, I realized why thousands of tech firms exist. One solves security, one solves speed, one helps find bugs—every booth is there to cure a very specific "headache" for a developer.&lt;/p&gt;

&lt;p&gt;I even cornered one of the keynote speakers afterward. I told him I was an aspiring DevOps engineer, and he gave me invaluable advice on what to prioritize in my studies. To top it off, I managed to secure a CPD (Continuing Professional Development) certificate for the sessionssomething I didn't even know existed!&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%2Fgg136h0xvohrpcgtkcfu.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%2Fgg136h0xvohrpcgtkcfu.jpeg" alt="certification" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Part 2: The "Bathroom" Blunder&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Everything was going perfectly until I needed the restroom. I walked up to a security guard for directions, and she took one look at my badge, then looked at me, and her eyebrows shot up.&lt;/p&gt;

&lt;p&gt;"Wait a minute... you're a student?" she asked.&lt;br&gt;
I gave her a massive, confident smile. "Yes, I am!"&lt;br&gt;
She let out a laugh and shook her head. "Honey, you aren't supposed to be here until tomorrow at 2 PM! Students are Day Two only."&lt;/p&gt;

&lt;p&gt;And just like that, my "illegal" residency at Tech Show London came to an end. I was politely shown the exit, but I wasn't even mad. I already had the notes, the speaker's advice, and my certificate in hand.&lt;/p&gt;

&lt;p&gt;I was exhausted from studying for an exam next week and considered going home for a nap. But then, a reminder popped up on my phone: a DevOps Meetup I had totally forgotten about. Despite the fatigue, I decided to push through.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Part 3: The Pivot to "Data’s Revenge"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The meetup was "DevOps Next Generation: Data’s Revenge" hosted by Fivium, Tarmac, and CODER at Adam Street.&lt;/p&gt;

&lt;p&gt;If I hadn't been kicked out of the ExCeL, I might have missed this entirely, and that would have been a tragedy. The energy was completely different more intimate and way more focused. I listened to Beverly Clarke MBE and Darko Klincharski drop gems about the industry, it was quite interesting to listen to how much money companies pay to use cloud services, the figures were massive! and mind blowing.&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%2F7h96hxcd6mrrl6a53eh6.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%2F7h96hxcd6mrrl6a53eh6.jpeg" alt="devops event" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the keynote, realising I was the only student there, surrounded by all these platform engineers, DevOps engineers and even CTO's and hiring managers, I decided to take a huge risk. During the session, I stood up and asked:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Is there anyone here looking for an intern who is incredibly keen to learn about DevOps and ready to work to gain experience?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The room went quiet for a second, and then everything changed. One of the key speakers told me to leave with 6 networks here and even mentioned there were hiring managers in there with us. They all looked at me and smiled and told me to come see them after the keynote! &lt;/p&gt;

&lt;p&gt;As soon as the keynotes ended and the pizza and drinks started flowing, I was swarmed. I didn't need to send a single CV or give my GitHub. Instead of being "Applicant #452" in an automated system, I was a real person having a conversation over a slice of pizza. By the end of the night:&lt;/p&gt;

&lt;p&gt;Two companies offered me the opportunity to come in for the summer to pair program and learn the ropes of DevOps.&lt;/p&gt;

&lt;p&gt;I connected with a start-up that wants me to grow alongside them as they build their infrastructure.&lt;/p&gt;

&lt;p&gt;I ended up connecting and taking advise from people who had been in the DevOps job role for years, coolest thing was taking advice from a platform engineer that had been in the game for 30 plus years! He mentioned to me how during his time, he had to write code on physical pieces of papers, imagine!&lt;/p&gt;

&lt;p&gt;My final thoughts are, Never be afraid to use your voice or put yourself out there. You truly never know who is watching. I now have a summer internship secured just from a conversation over pizza. I didn't have to wait for three rounds of interviews or an HR algorithm to "pick" me.&lt;/p&gt;

&lt;p&gt;Opportunities pop up when you are actively searching. I'll definitely keep showing up in these tech spaces legally or otherwise! 😉&lt;/p&gt;

</description>
      <category>devops</category>
      <category>networking</category>
      <category>cloudcomputing</category>
      <category>career</category>
    </item>
    <item>
      <title>Gemini Mechanic: Fixing Your Gadgets with AI</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Mon, 02 Mar 2026 21:39:32 +0000</pubDate>
      <link>https://dev.to/maame-codes/gemini-mechanic-fixing-your-gadgets-with-ai-jfj</link>
      <guid>https://dev.to/maame-codes/gemini-mechanic-fixing-your-gadgets-with-ai-jfj</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mlh-built-with-google-gemini-02-25-26"&gt;Built with Google Gemini: Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built with Google Gemini
&lt;/h2&gt;

&lt;p&gt;I created a project called &lt;strong&gt;Gemini Mechanic&lt;/strong&gt;. It is a smart assistant that helps people fix broken hardware and electronics. Many people feel lost when a gadget stops working. My web app lets users take a photo of the problem or type a description to get help right away.&lt;/p&gt;

&lt;p&gt;Google Gemini is the brain of this project. It looks at the photos to figure out what is wrong. Then it gives the user a list of repair steps and tells them what parts they need to buy. This makes it much easier for regular people to repair their own things.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Maame-codes/gemini-mechanic" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I previewed it and realised the embedded version doesn’t allow the camera to be used so you can just access the live link here:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gemini-mechanic-16378601646.us-central1.run.app/" rel="noopener noreferrer"&gt;Live demo&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;In my demo, I used my broken iPhone 8 as an example. The app was able to recognize the phone and see that the screen was detached. It provided a full repair guide. It included steps to turn off the power and remove the ribbon cables safely.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/MoteAUXxGWg"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;




&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://gemini-mechanic-16378601646.us-central1.run.app/"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;One of the biggest lessons I learned was about mobile design. Most people are not at a desk when they are trying to fix something. They are usually holding their phone while they work. I spent a lot of time making the app mobile responsive so it looks good on small screens.&lt;/p&gt;

&lt;p&gt;I also learned how to write better instructions for the AI. For repairs, safety is the most important part. I had to make sure Gemini always reminds users to do things like disconnect the battery before they start working.&lt;/p&gt;




&lt;h2&gt;
  
  
  Google Gemini Feedback
&lt;/h2&gt;

&lt;p&gt;Working with Gemini was a good experience, but I did face some challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Picking the right model:&lt;/strong&gt; I spent a lot of time testing different Gemini models. I needed one that was smart enough to recognize small parts but fast enough to work on a phone. I don’t know why whenever I try to use Gemini as the ai for any of my projects, I always run into errors. But with the project I was pushed to figure it out, took me a couple of hours till I found the best model to run it with. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mobile speed:&lt;/strong&gt; Making sure the app stayed fast while the AI was thinking was tricky. I had to optimize the code so the user experience stayed smooth on mobile devices.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Open Source&lt;/strong&gt;&lt;br&gt;
I want to make this project open source so everyone can use it. If you have ideas for new features or want to add more repair data, please feel free to contribute to the GitHub repo. I would love to see what we can add to make it better.&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>geminireflections</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Know Your Rights, Find Your Support — Built for Brent</title>
      <dc:creator>Maame Afua A. P. Fordjour </dc:creator>
      <pubDate>Sun, 01 Mar 2026 19:52:26 +0000</pubDate>
      <link>https://dev.to/maame-codes/know-your-rights-find-your-support-built-for-brent-5de6</link>
      <guid>https://dev.to/maame-codes/know-your-rights-find-your-support-built-for-brent-5de6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;Brent is one of London's most diverse and deprived boroughs. 340,000 residents. 130+ languages spoken. A 27% child poverty rate, one of the highest in the capital.&lt;/p&gt;

&lt;p&gt;The people who live here are not short of resilience or community spirit. What they are often short of is information. Not because it doesn't exist but because it's scattered across dozens of council web pages, NHS portals, charity websites, and government guidance documents, written in bureaucratic language, rarely updated, and almost impossible to navigate under stress.&lt;/p&gt;

&lt;p&gt;When someone is facing eviction tonight, they don't have time to search five websites. When a young person gets stopped and searched, they should already know their rights. When a resident doesn't know there are fully funded training courses available to them for free — that information gap has a real cost.&lt;/p&gt;

&lt;p&gt;I live in Brent. I built this for my neighbours.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Brent Navigator&lt;/strong&gt; is a free,  community webapp that puts verified, plain-English information in one place, organised around the moments that matter most to residents.&lt;/p&gt;

&lt;p&gt;Nine sections covering the full range of issues Brent residents face:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Crisis Support&lt;/strong&gt; — Mental health lines, domestic abuse contacts, emergency services&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Health&lt;/strong&gt; — NHS urgent care, GP registration, healthy living support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Housing&lt;/strong&gt; — Renting rights, social housing bidding system, eviction process, emergency housing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Employment&lt;/strong&gt; — Free job search tools, fully funded training courses, benefits explained, starting a business&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cleaner Brent&lt;/strong&gt; — Bin collection finder, fly-tipping reporting, bulky waste options&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Hub&lt;/strong&gt; — Community groups, local events, faith organisations, local news, and an interactive Leaflet.js map with 17 clickable location pins across the borough&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Youth &amp;amp; Rights&lt;/strong&gt; — Stop and search rights, education entitlements, mental health support, care leaver entitlements&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tax &amp;amp; Budget&lt;/strong&gt; — Council tax discounts, where the money goes, accountability tools, financial help&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Council FAQs&lt;/strong&gt; — A searchable accordion of 32 verified answers to the most common resident questions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every phone number is real. Every link goes somewhere useful. Every piece of content was verified against official sources.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://brent-navigator.vercel.app" rel="noopener noreferrer"&gt;brent-navigator.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Maame-codes/brent-navigator" rel="noopener noreferrer"&gt;github.com/Maame-codes/brent-navigator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqz4ljlc4ex8g879dz5r.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%2Fiqz4ljlc4ex8g879dz5r.png" alt="Dashboard" width="794" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tabs on the different help available&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7v72gek9kuys6ruvk4e.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%2Fm7v72gek9kuys6ruvk4e.png" alt="Navigator Tabs" width="788" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interactive Map featuring places in Brent&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjehcxhr5cfhrmij6p6t.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%2Frjehcxhr5cfhrmij6p6t.png" alt="Interactive map " width="796" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React + Vite&lt;/li&gt;
&lt;li&gt;Framer Motion for page transitions&lt;/li&gt;
&lt;li&gt;Leaflet.js for the interactive map&lt;/li&gt;
&lt;li&gt;CSS custom properties for theming&lt;/li&gt;
&lt;li&gt;Deployed on Vercel, source on GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The content was the hardest part.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every section required genuine research, verifying phone numbers against official sources, checking council policy documents, confirming addresses. The Housing section alone covers the Locata bidding system, Section 21 validity checklist, illegal eviction law, deposit protection rules, and emergency housing routes. That's not content you can make up or guess at. People will use this in real situations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The CSS nearly broke me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'll be honest, my CSS sucks. It was the reason why I never wanted to ever get into front-end anyway and  getting this to be responsive was a battle. So forgive me if it is not the most aesthetically pleasing site there is, I TRIED MY BEST 😂. The sidebar needed to become a hamburger menu on mobile without pushing or shifting the main content. The interactive map needed to render correctly on small screens. The tab navigation inside each section needed to wrap without breaking the layout. I spent significant time wrestling with &lt;code&gt;position: fixed&lt;/code&gt;, &lt;code&gt;overflow-x: hidden&lt;/code&gt;, &lt;code&gt;-webkit-overflow-scrolling: touch&lt;/code&gt;, and &lt;code&gt;overscroll-behavior&lt;/code&gt; to get the mobile experience feeling smooth and native. It's not glamorous work but it matters — most Brent residents access the internet on a phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The tab persistence was a small detail that mattered a lot.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Early on, refreshing the page would always kick you back to the dashboard. For an app that residents might bookmark and return to repeatedly, that's genuinely frustrating. I added &lt;code&gt;localStorage&lt;/code&gt; to persist the active tab across sessions so the app remembers where you were.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I built it this way.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I could have built a simple link directory. Instead I chose depth real explanations, real context, real phone numbers. The Housing section tells you that you don't have to leave just because you receive an eviction letter. The Youth section tells you exactly what an officer must say before a stop and search. The Benefits section explains the Universal Credit taper rate in plain English so residents aren't scared to take a job.&lt;/p&gt;

&lt;p&gt;That's the difference between a directory and a navigator. This is built to help real people, and solve real problems in a neighbourhood I live in.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ for the 340,000 residents of Brent, London.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
