<?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>Forem: Maad Mustafa </title>
    <description>The latest articles on Forem by Maad Mustafa  (@nightwalker28).</description>
    <link>https://forem.com/nightwalker28</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%2F1480342%2Ff6dfce66-6fad-4ba6-83f8-5cb4a9687e1e.png</url>
      <title>Forem: Maad Mustafa </title>
      <link>https://forem.com/nightwalker28</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nightwalker28"/>
    <language>en</language>
    <item>
      <title>Been thinking a lot about self-hosting vs the cloud — not in a “this is better” way, but in a “this changed how I think” way.
Wrote a short blog post about what running my own infrastructure taught me, and why it made me respect managed services more, not</title>
      <dc:creator>Maad Mustafa </dc:creator>
      <pubDate>Wed, 14 Jan 2026 07:23:33 +0000</pubDate>
      <link>https://forem.com/nightwalker28/been-thinking-a-lot-about-self-hosting-vs-the-cloud-not-in-a-this-is-better-way-but-in-a-this-55dg</link>
      <guid>https://forem.com/nightwalker28/been-thinking-a-lot-about-self-hosting-vs-the-cloud-not-in-a-this-is-better-way-but-in-a-this-55dg</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/nightwalker28/self-hosting-didnt-replace-the-cloud-it-changed-how-i-see-it-1jfe" class="crayons-story__hidden-navigation-link"&gt;Self-Hosting Didn’t Replace the Cloud. It Changed How I See It&lt;/a&gt;


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

          &lt;a href="/nightwalker28" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1480342%2Ff6dfce66-6fad-4ba6-83f8-5cb4a9687e1e.png" alt="nightwalker28 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/nightwalker28" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Maad Mustafa 
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Maad Mustafa 
                
              
              &lt;div id="story-author-preview-content-3169465" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/nightwalker28" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1480342%2Ff6dfce66-6fad-4ba6-83f8-5cb4a9687e1e.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Maad Mustafa &lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/nightwalker28/self-hosting-didnt-replace-the-cloud-it-changed-how-i-see-it-1jfe" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/nightwalker28/self-hosting-didnt-replace-the-cloud-it-changed-how-i-see-it-1jfe" id="article-link-3169465"&gt;
          Self-Hosting Didn’t Replace the Cloud. It Changed How I See It
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cloud"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cloud&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/privacy"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;privacy&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/automation"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;automation&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/nightwalker28/self-hosting-didnt-replace-the-cloud-it-changed-how-i-see-it-1jfe#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


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

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

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

&lt;/div&gt;




</description>
      <category>devops</category>
      <category>cloud</category>
      <category>privacy</category>
      <category>automation</category>
    </item>
    <item>
      <title>Self-Hosting Didn’t Replace the Cloud. It Changed How I See It</title>
      <dc:creator>Maad Mustafa </dc:creator>
      <pubDate>Tue, 13 Jan 2026 14:40:48 +0000</pubDate>
      <link>https://forem.com/nightwalker28/self-hosting-didnt-replace-the-cloud-it-changed-how-i-see-it-1jfe</link>
      <guid>https://forem.com/nightwalker28/self-hosting-didnt-replace-the-cloud-it-changed-how-i-see-it-1jfe</guid>
      <description>&lt;p&gt;I never sat down and decided I was going to &lt;em&gt;self-host&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;There was no moment where I went, that’s it, I’m done with the cloud.&lt;br&gt;
No manifesto. No rage about bills. No dramatic exit.&lt;/p&gt;

&lt;p&gt;It just… happened.&lt;/p&gt;

&lt;p&gt;I wanted more control over my stuff. I wanted to understand what was actually going on underneath. And one thing led to another, like it usually does.&lt;/p&gt;

&lt;p&gt;The funny thing is, before self-hosting, I thought I understood the cloud.&lt;/p&gt;

&lt;p&gt;I knew how to deploy things. I knew how to click through dashboards. I knew which service did what. I knew how to make things work.&lt;/p&gt;

&lt;p&gt;What I didn’t fully appreciate was how much work was being done for me, quietly, all the time.&lt;/p&gt;

&lt;p&gt;You only notice that once you start doing it yourself.&lt;/p&gt;

&lt;p&gt;Self-hosting has this way of removing the illusion.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There’s no “it just scales”.&lt;/li&gt;
&lt;li&gt;There’s no “high availability” unless you build it.&lt;/li&gt;
&lt;li&gt;There’s no “automatic backups” unless you actually… set them up. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And test them. And make sure you didn’t delete them because you were cleaning up old stuff and got a bit too confident.&lt;/p&gt;

&lt;p&gt;Everything you take for granted in the cloud suddenly becomes very visible.&lt;/p&gt;

&lt;p&gt;And honestly? That’s not a bad thing.&lt;/p&gt;

&lt;p&gt;One of the biggest shifts for me was &lt;strong&gt;cost&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not because self-hosting is cheaper. It isn’t always.&lt;br&gt;
But because costs become boring.&lt;/p&gt;

&lt;p&gt;You know what you paid. You know what you’re paying. You know why.&lt;/p&gt;

&lt;p&gt;There’s no mystery line item. No “wait, when did this start?”. No calculator that somehow still gets it wrong once real traffic shows up.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Time becomes the real cost instead.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And you pay it gladly… until you don’t.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy&lt;/strong&gt; and &lt;strong&gt;ownership&lt;/strong&gt; hit differently too.&lt;/p&gt;

&lt;p&gt;Not in a paranoid way. Just in a very practical way.&lt;/p&gt;

&lt;p&gt;When everything runs under your control, you stop wondering where your data lives or who technically has access to it. You don’t need to interpret policies. You don’t need to trust that defaults haven’t changed.&lt;/p&gt;

&lt;p&gt;You are the default.&lt;/p&gt;

&lt;p&gt;That sounds empowering. It is.&lt;br&gt;
It is also &lt;strong&gt;responsibility&lt;/strong&gt;, whether you like it or not.&lt;/p&gt;

&lt;p&gt;This is where people online lose me a bit.&lt;/p&gt;

&lt;p&gt;There’s this idea floating around that self-hosting is somehow easier, cleaner, or &lt;em&gt;more correct&lt;/em&gt; than using the cloud.&lt;/p&gt;

&lt;p&gt;It’s not.&lt;/p&gt;

&lt;p&gt;If anything, it’s &lt;strong&gt;heavier&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You think about backups more. You think about failure more. You think about updates more. You think about what happens when things go wrong — because they will.&lt;/p&gt;

&lt;p&gt;And when they do, there’s no one else to blame.&lt;/p&gt;

&lt;p&gt;That part is uncomfortable at first.&lt;br&gt;
Then it becomes oddly grounding.&lt;/p&gt;

&lt;p&gt;What surprised me most was how much it changed the way I think.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I stopped assuming systems will hold together on their own.&lt;/li&gt;
&lt;li&gt;I stopped trusting “small changes”.&lt;/li&gt;
&lt;li&gt;I started planning before touching things.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not because someone told me to, but because I didn’t want to feel that sinking &lt;em&gt;why did I not snapshot this&lt;/em&gt; feeling again.&lt;/p&gt;

&lt;p&gt;Self-hosting has a way of teaching you consequences very efficiently.&lt;/p&gt;

&lt;p&gt;And here’s the thing that doesn’t get said enough:&lt;/p&gt;

&lt;p&gt;Once you’ve tried to run things properly yourself, you stop looking down on the cloud.&lt;/p&gt;

&lt;p&gt;You actually respect it more.&lt;/p&gt;

&lt;p&gt;You realise that what you’re paying for isn’t just compute or storage, it’s the absence of a thousand small decisions you no longer have to make.&lt;/p&gt;

&lt;p&gt;The cloud is not lazy. It’s deliberate.&lt;/p&gt;

&lt;p&gt;Self-hosting just makes those trade-offs visible.&lt;/p&gt;

&lt;p&gt;I wouldn’t recommend self-hosting to everyone.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you want things to just work, the &lt;strong&gt;cloud&lt;/strong&gt; is the right answer.&lt;/li&gt;
&lt;li&gt;If downtime stresses you out, the &lt;strong&gt;cloud&lt;/strong&gt; is the right answer.&lt;/li&gt;
&lt;li&gt;If other people rely on your setup and you don’t want to be on call the answer again is, the &lt;strong&gt;cloud&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Self-hosting is not about superiority.&lt;br&gt;
It’s about curiosity.&lt;/p&gt;

&lt;p&gt;And curiosity has a cost.&lt;/p&gt;

&lt;p&gt;I don’t think there’s a final state where this feels “done”.&lt;/p&gt;

&lt;p&gt;But I do know this:&lt;/p&gt;

&lt;p&gt;Trying to own the whole stack, even imperfectly, made me more careful, more realistic, and more respectful of systems that actually work at scale.&lt;/p&gt;

&lt;p&gt;And yeah, I’ll probably break something again too.&lt;/p&gt;

&lt;p&gt;But at least I’ll know why.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>privacy</category>
      <category>automation</category>
    </item>
    <item>
      <title>When CI/CD Starts Feeling Wrong</title>
      <dc:creator>Maad Mustafa </dc:creator>
      <pubDate>Mon, 29 Dec 2025 09:10:04 +0000</pubDate>
      <link>https://forem.com/nightwalker28/when-cicd-starts-feeling-wrong-55go</link>
      <guid>https://forem.com/nightwalker28/when-cicd-starts-feeling-wrong-55go</guid>
      <description>&lt;p&gt;For a long time, GitHub Actions did exactly what I needed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Push to main.&lt;br&gt;
YAML runs.&lt;br&gt;
Stuff deploys.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nothing was broken.&lt;br&gt;
But something felt… off.&lt;/p&gt;
&lt;h4&gt;
  
  
  When “Working” Still Feels Wrong
&lt;/h4&gt;

&lt;p&gt;Every time my pipeline got messy, I did the obvious thing:&lt;/p&gt;

&lt;p&gt;I added more YAML.&lt;br&gt;
Because clearly the problem was not enough YAML.&lt;br&gt;
It still worked.&lt;/p&gt;

&lt;p&gt;But opening those workflows started feeling uncomfortable.&lt;/p&gt;

&lt;p&gt;Not confusing.&lt;br&gt;
Just… heavy.&lt;/p&gt;
&lt;h3&gt;
  
  
  When CI Quietly Becomes Infrastructure
&lt;/h3&gt;

&lt;p&gt;At some point, my pipelines weren’t just building code anymore.&lt;/p&gt;

&lt;p&gt;They were:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SSH’ing into servers
installing things
managing Docker
handling secrets I didn’t want to mess up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CI wasn’t CI anymore.&lt;br&gt;
It was infrastructure — pretending not to be.&lt;/p&gt;

&lt;p&gt;That’s when I stopped trusting it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nothing Was Broken — And That Was the Problem
&lt;/h3&gt;

&lt;p&gt;The setup worked.&lt;br&gt;
Which meant I didn’t touch it.&lt;br&gt;
Which meant I didn’t fully understand it anymore.&lt;/p&gt;

&lt;p&gt;I Wasn’t Looking for Better Tools&lt;br&gt;
I wasn’t trying to “modernize” anything.&lt;/p&gt;

&lt;p&gt;I just wanted one thing:&lt;/p&gt;

&lt;p&gt;Predictability.&lt;/p&gt;

&lt;p&gt;That’s when I started leaning into Ansible.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Ansible Felt Calm (In a Suspicious Way)
&lt;/h4&gt;

&lt;p&gt;Instead of scripting steps, I described outcomes.&lt;br&gt;
I ran the same playbook twice.&lt;br&gt;
Nothing broke.&lt;/p&gt;

&lt;p&gt;That felt… suspiciously peaceful.&lt;/p&gt;

&lt;h3&gt;
  
  
  What CI Stopped Needing to Do
&lt;/h3&gt;

&lt;p&gt;Once servers had their own logic, CI got simpler.&lt;/p&gt;

&lt;p&gt;It didn’t need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;manage machines&lt;/li&gt;
&lt;li&gt;hold state&lt;/li&gt;
&lt;li&gt;be clever&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It just needed to run jobs.&lt;br&gt;
Which was a relief.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Jenkins Actually Made Sense
&lt;/h4&gt;

&lt;p&gt;I avoided Jenkins for a long time.&lt;br&gt;
Mostly because of the jokes.&lt;/p&gt;

&lt;p&gt;But when I needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;longer jobs&lt;/li&gt;
&lt;li&gt;clearer control&lt;/li&gt;
&lt;li&gt;less magic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…it fit.&lt;br&gt;
Not pretty.&lt;br&gt;
Just honest.&lt;/p&gt;

&lt;h4&gt;
  
  
  Where I Am Now
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Ansible for servers.&lt;/li&gt;
&lt;li&gt;Jenkins for pipelines.&lt;/li&gt;
&lt;li&gt;Docker for workloads.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I understand it.&lt;br&gt;
And that matters more than being “advanced”.&lt;/p&gt;

&lt;p&gt;If This Sounds Familiar :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;If your CI/CD works but feels heavy…&lt;br&gt;
If you’re scared to touch it…&lt;br&gt;
If you don’t fully trust it…&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You’re not alone.&lt;/p&gt;

&lt;p&gt;Did you stay with GitHub Actions?&lt;br&gt;
Did you move away?&lt;br&gt;
What finally pushed you to change?&lt;/p&gt;

&lt;p&gt;I’d love to hear how others ended up here.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>discuss</category>
      <category>learning</category>
    </item>
    <item>
      <title>Building a NAS: Privacy, Projects, and Practicality</title>
      <dc:creator>Maad Mustafa </dc:creator>
      <pubDate>Wed, 11 Jun 2025 12:36:54 +0000</pubDate>
      <link>https://forem.com/nightwalker28/building-a-nas-privacy-projects-and-practicality-3cid</link>
      <guid>https://forem.com/nightwalker28/building-a-nas-privacy-projects-and-practicality-3cid</guid>
      <description>&lt;p&gt;Hey there, fellow tech enthusiast! I recently &lt;em&gt;dove&lt;/em&gt; headfirst into building my very own NAS, and it's been quite the adventure. Grab a hot coffee or a cold beer, get comfy, and let me walk you through why this little project might just be your next favorite thing.&lt;/p&gt;

&lt;p&gt;We developers juggle countless cloud subscriptions—from storage solutions and streaming services to backups and more. But have you ever thought, "&lt;em&gt;What if I built my own?&lt;/em&gt;" Enter the world of Network-Attached Storage (NAS). It's more than just another geeky hobby; it's a practical powerhouse offering privacy, cost savings, and versatility.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's a NAS Anyway?
&lt;/h3&gt;

&lt;p&gt;Think of a NAS as your personal cloud. It's a centralized storage system connected directly to your home network, allowing seamless access from all your devices. Basically, it’s your cloud—but without monthly fees or surprise terms-of-service changes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Is a NAS Right for You?
&lt;/h4&gt;

&lt;p&gt;You're gonna &lt;strong&gt;love&lt;/strong&gt; this if you're:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A developer itching for a hands-on, practical project.&lt;/li&gt;
&lt;li&gt;Obsessed with privacy and love having complete control over your data.&lt;/li&gt;
&lt;li&gt;Fed up with paying recurring monthly fees for cloud storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It might &lt;strong&gt;not&lt;/strong&gt; be your cup of tea if you're:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Looking for something that requires zero maintenance (NAS setups need a bit of TLC).&lt;/li&gt;
&lt;li&gt;Not excited by the idea of system management.&lt;/li&gt;
&lt;li&gt;Deeply integrated into the convenience of big cloud ecosystems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why You Should &lt;em&gt;Totally&lt;/em&gt; Build a NAS
&lt;/h3&gt;

&lt;p&gt;🛡️ &lt;strong&gt;Privacy &amp;amp; Security&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your data, your rules. No more worries about third-party breaches or hidden data harvesting. Encrypt it, secure it, back it up—however you like!&lt;/p&gt;

&lt;p&gt;💸 &lt;strong&gt;Cost Efficiency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Say goodbye to recurring monthly subscriptions. Yes, there's an upfront investment, but your wallet (and future self) will thank you for the predictable, long-term savings.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine silky smooth 4K streaming, lightning-fast backups, and speedy file transfers, all customized exactly for your needs. No throttling, no waiting—just pure performance.&lt;/p&gt;

&lt;p&gt;🎛️ &lt;strong&gt;Flexibility and Customization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From media servers like Jellyfin and Plex, to backups with Nextcloud, or even running Docker containers for your latest projects—your &lt;strong&gt;NAS&lt;/strong&gt; becomes a &lt;em&gt;tiny&lt;/em&gt;, &lt;em&gt;supercharged&lt;/em&gt; server tailored to your every whim.&lt;/p&gt;

&lt;h3&gt;
  
  
  But Let's Get Real: Downsides Exist
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maintenance: Yup, updates and backups? They're all on you. Consider it a digital pet—feed it updates regularly!&lt;/li&gt;
&lt;li&gt;Reliability: Power outage? Hardware hiccup? It happens. You'll need a backup plan.&lt;/li&gt;
&lt;li&gt;Accessibility: Remote access is possible, but you'll need to spend some extra time setting it up securely.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  NAS as a Cool Developer Project
&lt;/h3&gt;

&lt;p&gt;Building a NAS isn't just fun; it's a resume booster showcasing serious skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux System Administration: Perfect for honing your Linux chops, networking skills, and security knowledge.&lt;/li&gt;
&lt;li&gt;Docker &amp;amp; Containerization: Great way to level-up your container game and try out scalable setups.&lt;/li&gt;
&lt;li&gt;Automation &amp;amp; Scripting: Automate all the boring stuff with bash or Python and watch your NAS practically run itself!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project says loud and clear: you understand systems thinking, security, networking, and automation. &lt;strong&gt;Employers&lt;/strong&gt; love this stuff!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Getting Started: Your NAS Shopping List&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Recommended Hardware:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU: Intel i3 or AMD Ryzen 3 (entry-level does the trick)

RAM: Minimum 8GB—your future-proof friend

HDD: Go NAS-specific (WD Red is popular and reliable)

A sturdy case with decent airflow (your hardware appreciates good cooling!)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Software to Consider:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TrueNAS for rock-solid reliability

OpenMediaVault for beginner-friendly ease-of-use

Ubuntu Server for ultimate flexibility and familiarity (developers rejoice!)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Extra Tips:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Always keep backups offsite or in the cloud as a safety blanket.&lt;/li&gt;
&lt;li&gt;RAID configurations are your best friend—keep your data safe and sound.&lt;/li&gt;
&lt;li&gt;Secure remote access via VPN or SSL—because friends don't let friends skip security.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Building a NAS is rewarding, practical, and downright fun. Whether your goal is privacy, saving cash, or sharpening your developer skills, this project is a winner.&lt;/p&gt;

&lt;p&gt;Have you tried self-hosted storage solutions? Got cool NAS stories or hilarious fails? Let’s chat in the comments—grab a virtual coffee, and let's geek out!&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>cloud</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Docker vs Traditional Hosting</title>
      <dc:creator>Maad Mustafa </dc:creator>
      <pubDate>Fri, 16 May 2025 14:36:21 +0000</pubDate>
      <link>https://forem.com/nightwalker28/docker-vs-traditional-hosting-28c7</link>
      <guid>https://forem.com/nightwalker28/docker-vs-traditional-hosting-28c7</guid>
      <description>&lt;p&gt;Deciding how to deploy your web applications often sparks a debate hotter than tabs versus spaces—Docker or traditional hosting? Both methods have their merits, but understanding their unique strengths can help developers avoid deployment headaches.&lt;/p&gt;

&lt;p&gt;Let's unpack why Docker might be your next best friend—or when sticking to good old traditional hosting still does the job.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traditional Hosting: Old School but Not Obsolete
&lt;/h3&gt;

&lt;p&gt;Traditional hosting usually involves renting a VPS, installing dependencies manually, and transferring files via FTP or SCP. While this method may feel straightforward, it can quickly escalate from easy-breezy to hair-pulling frustration.&lt;/p&gt;

&lt;p&gt;Sure, traditional setups let you deploy fast and debug directly, especially if you enjoy logging into your server at 2 AM to track down a missing package. However, maintaining dependency versions and configurations by hand can lead to server drift—making "works on my machine" the most annoying phrase in tech.&lt;/p&gt;

&lt;p&gt;And let's not even start about scaling; unless manually configuring servers is your hobby, you're probably better off exploring other options.&lt;/p&gt;

&lt;h3&gt;
  
  
  Docker Hosting: Containers to the Rescue!
&lt;/h3&gt;

&lt;p&gt;Docker streamlines your deployments by packaging applications with all their dependencies into portable containers. Think of containers as neatly packed lunchboxes: everything you need is already inside, no surprises.&lt;/p&gt;

&lt;p&gt;With Docker, your environments are consistent, easily portable, and scaling becomes as straightforward as duplicating containers. Docker turns the infamous "but it works on my machine" into "it works everywhere."&lt;/p&gt;

&lt;p&gt;Here's a practical Docker example using a Flask app with Redis and Celery:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Dockerfile&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:5000"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: '3.9'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    env_file:
      - .env
    depends_on:
      - redis
      - worker

  redis:
    image: redis:alpine

  worker:
    build: .
    command: celery -A app.celery worker --loglevel=info
    env_file:
      - .env
    depends_on:
      - redis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;.env file&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FLASK_ENV=production
REDIS_URL=redis://redis:6379/0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Launching your full stack app becomes as easy as running docker-compose up. No more manual juggling—Docker has you covered.&lt;/p&gt;

&lt;h3&gt;
  
  
  When Docker Makes Sense
&lt;/h3&gt;

&lt;p&gt;Docker is perfect when your app is more than a glorified "Hello World." Complex setups with multiple services, team projects, or anything requiring consistency across environments will significantly benefit from containerization.&lt;/p&gt;

&lt;h3&gt;
  
  
  When Traditional Hosting Still Holds Up
&lt;/h3&gt;

&lt;p&gt;Traditional hosting remains viable for straightforward static websites or projects that don't require complex setups. If your biggest dependency is caffeine and your stack is simple, Docker might be overkill.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Decision Guide
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3uppgqi85ijnpu24bzc.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%2Fx3uppgqi85ijnpu24bzc.png" alt="A simple Table showing features of traditional vs docker deployment" width="789" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Wrap-Up Thoughts
&lt;/h3&gt;

&lt;p&gt;Ultimately, choosing between Docker and traditional hosting boils down to your project's complexity, scalability needs, and your tolerance for manual setups. Docker isn’t just trendy tech—it’s a genuine lifesaver for modern app deployments. Meanwhile, traditional hosting keeps things simple for less demanding scenarios.&lt;/p&gt;

&lt;p&gt;Knowing when and how to leverage each approach ensures you'll deploy smarter, not harder.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>docker</category>
      <category>learning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>From Localhost to Live</title>
      <dc:creator>Maad Mustafa </dc:creator>
      <pubDate>Thu, 08 May 2025 06:39:44 +0000</pubDate>
      <link>https://forem.com/nightwalker28/from-localhost-to-live-2e4f</link>
      <guid>https://forem.com/nightwalker28/from-localhost-to-live-2e4f</guid>
      <description>&lt;p&gt;Congratulations! You've finally built your first real-world project using React, Flask, or Node.js. It looks amazing, it runs flawlessly on your machine, and you're excited to show it off. But wait—how exactly do you get your masterpiece from localhost onto the internet?&lt;/p&gt;

&lt;p&gt;If you’re feeling stuck in the localhost bubble, I've got your back. Here’s your friendly guide on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hosting your &lt;strong&gt;React frontend&lt;/strong&gt; easily with Vercel&lt;/li&gt;
&lt;li&gt;Deploying your &lt;strong&gt;Flask&lt;/strong&gt; or &lt;strong&gt;Node.js backend&lt;/strong&gt; using Render or Railway&lt;/li&gt;
&lt;li&gt;Useful tips to keep deployment smooth and hassle-free&lt;/li&gt;
&lt;li&gt;Practical code snippets to make your life easier&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Get Your Code Ready to Shine
&lt;/h3&gt;

&lt;p&gt;First things first—tidy up your project and make sure it's production-ready:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend (React):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean out those console logs (yes, we all forget!)&lt;/li&gt;
&lt;li&gt;Set up environment variables (REACT_APP_API_URL)&lt;/li&gt;
&lt;li&gt;Run npm run build and make sure it passes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Backend (Flask or Node.js):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Include requirements.txt and a Procfile for Flask&lt;/li&gt;
&lt;li&gt;Have a proper package.json and a start script for Node.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Easily Hosting Your Frontend with Vercel
&lt;/h3&gt;

&lt;p&gt;Vercel is a lifesaver for beginners—it's free, simple, and quick. Here's the drill:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Push your code to GitHub.&lt;/li&gt;
&lt;li&gt;Go to vercel.com and create your account.&lt;/li&gt;
&lt;li&gt;Click "New Project" and connect your GitHub repository.&lt;/li&gt;
&lt;li&gt;Watch magic happen—Vercel will detect React and deploy it seamlessly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pro Tips:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store your secret environment variables securely in the Vercel dashboard.&lt;/li&gt;
&lt;li&gt;Use a personalized custom domain—trust me, it feels great.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Backend Deployment Made Simple
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Option A: Flask on Render&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your setup should look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;myapp/
├── app.py
├── requirements.txt
├── Procfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quick-start &lt;code&gt;requirements.txt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Flask==2.3.2
gunicorn==20.1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple &lt;code&gt;Procfile&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;web: gunicorn app:a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Deployment steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Push your repository to GitHub.&lt;/li&gt;
&lt;li&gt;Visit render.com and register.&lt;/li&gt;
&lt;li&gt;Create a new "Web Service," connect your repo.&lt;/li&gt;
&lt;li&gt;Set the build command (pip install -r requirements.txt).&lt;/li&gt;
&lt;li&gt;Set your start command (gunicorn app:app).&lt;/li&gt;
&lt;li&gt;Add those essential environment variables (like PORT, FLASK_ENV).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Option B: Node.js on Railway&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Easy setup &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "my-api",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Steps to deploy smoothly:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Push your project to GitHub.&lt;/li&gt;
&lt;li&gt;Log into railway.app.&lt;/li&gt;
&lt;li&gt;Click "New Project &amp;gt; Deploy from GitHub repo".&lt;/li&gt;
&lt;li&gt;Relax while Railway auto-configures your backend.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Helpful hints:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solve potential CORS issues quickly (using flask_cors for Flask, cors for Node.js).&lt;/li&gt;
&lt;li&gt;Railway neatly manages your environment variables—use it!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Connect Your Frontend and Backend Like a Pro
&lt;/h3&gt;

&lt;p&gt;Switch your local URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fetch("http://localhost:5000/api/data")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to something shiny and public:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fetch("https://your-backend.onrender.com/api/data")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make your life easier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const API_BASE_URL = process.env.REACT_APP_API_URL;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set this securely in Vercel’s environment settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Having CORS headaches?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flask users:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask_cors import CORS
CORS(app)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Node.js fans:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const cors = require('cors');
app.use(cors());
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5: Rock Your Custom Domain
&lt;/h3&gt;

&lt;p&gt;Make your project look professional:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Grab a domain.&lt;/li&gt;
&lt;li&gt;Link it through Vercel or Render.&lt;/li&gt;
&lt;li&gt;Configure DNS using Cloudflare for an extra touch of security and speed.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 6: Troubleshooting—We've All Been There
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Render says "App crashed"? Check the logs and your PORT variable.&lt;/li&gt;
&lt;li&gt;Frontend yelling "CORS error"? CORS setup above fixes it.&lt;/li&gt;
&lt;li&gt;HTTPS worries? Good news—Vercel and Render automatically give you HTTPS.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Wrapping Up: Time to Celebrate!
&lt;/h3&gt;

&lt;p&gt;Going from localhost to live feels incredible—it’s a huge step and totally worth celebrating. You just took a giant leap from "I made this on my computer" to "Hey world, check this out!"&lt;/p&gt;

&lt;p&gt;Now, share your masterpiece, enjoy the feedback, and keep building amazing things!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>learning</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How to Create Your Free Landing Page</title>
      <dc:creator>Maad Mustafa </dc:creator>
      <pubDate>Thu, 01 May 2025 10:08:24 +0000</pubDate>
      <link>https://forem.com/nightwalker28/how-to-create-your-free-landing-page-22e1</link>
      <guid>https://forem.com/nightwalker28/how-to-create-your-free-landing-page-22e1</guid>
      <description>&lt;h3&gt;
  
  
  Why You Should Create a Free Landing Page for Your Portfolio or Resume (and How It Helps!)
&lt;/h3&gt;

&lt;p&gt;Ever thought about having your own landing page but felt it's complicated or expensive? Good news: it doesn't have to be either! Having a personal landing page isn't just cool—it’s practical, professional, and totally doable for free.&lt;/p&gt;

&lt;p&gt;Here's why having your own landing page matters:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Makes a Great First Impression: Think of it as your digital handshake. When someone Googles you, your landing page is your first chance to look polished, organized, and professional.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Control Your Own Story: Instead of just sending a boring PDF resume, imagine sharing a personalized link that highlights exactly what you want others to see: your best work, skills, testimonials from people you've worked with, or even your story.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy to Share: Forget heavy email attachments. A landing page lets you simply send a neat, clickable link. It's quick and efficient—perfect for busy recruiters, potential clients, or collaborators.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Helps with Visibility: Having a simple landing page can even help you pop up more often in search results. It makes you more discoverable, helping opportunities find you.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here's a quick rundown of ways people typically use their landing pages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Showcase creative portfolios (like designers, writers, or photographers)&lt;/li&gt;
&lt;li&gt;Present professional resumes (great for job seekers or freelancers)&lt;/li&gt;
&lt;li&gt;Build personal branding (highlight your story, values, and achievements)&lt;/li&gt;
&lt;li&gt;Create easy-to-use links for social media bios (LinkedIn, Instagram, Twitter)&lt;/li&gt;
&lt;li&gt;Host downloadable materials like resumes or case studies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sounds good, right? And &lt;em&gt;yes&lt;/em&gt;—this can all be done for free. Platforms like GitHub Pages, Carrd, Netlify, Google Sites, and Vercel make it super easy and won’t cost you anything.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Create Your Free Landing Page (Step-by-Step With Details)
&lt;/h3&gt;

&lt;p&gt;Here’s a simple, beginner-friendly walkthrough to build your landing page from scratch.&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 1: Using &lt;strong&gt;Carrd&lt;/strong&gt; (Perfect for Beginners)
&lt;/h4&gt;

&lt;p&gt;Step 1. Go to &lt;a href="https://carrd.co" rel="noopener noreferrer"&gt;Carrd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2. Click "Choose a Starting Point" and pick a "Profile" or "Landing" template.&lt;/p&gt;

&lt;p&gt;Step 3. Click "Select", then "Start Building". It opens an easy drag-and-drop editor.&lt;/p&gt;

&lt;p&gt;Step 4. Edit text boxes by clicking on them (e.g., change "Your Name" to your real name).&lt;/p&gt;

&lt;p&gt;Step 5. Add a button that links to your resume (upload your PDF to Google Drive, then paste the shareable link).&lt;/p&gt;

&lt;p&gt;Step 6. Use the "+" button to add sections like "Projects" or "Contact Info".&lt;/p&gt;

&lt;p&gt;Step 7. Once done, click "Publish" &amp;gt; Choose a free .carrd.co URL &amp;gt; Publish.&lt;/p&gt;

&lt;p&gt;That’s it! You now have a clean, mobile-friendly landing page.&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 2: Using Google Sites (Great if you use Gmail)
&lt;/h4&gt;

&lt;p&gt;Step 1. Go to &lt;a href="https://sites.google.com" rel="noopener noreferrer"&gt;Google Sites&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2. Click the "Blank" button or choose a template like "Portfolio".&lt;/p&gt;

&lt;p&gt;Step 3. Click on any text to edit. Use the right-side panel to insert sections: Images, Text, Buttons, or Embed.&lt;/p&gt;

&lt;p&gt;Step 4. For your resume, go to Google Drive, right-click your PDF, choose "Get link", and paste it as a button on your site.&lt;/p&gt;

&lt;p&gt;Step 5. Add pages like "About Me", "Projects", and "Contact" using the menu on the top.&lt;/p&gt;

&lt;p&gt;Step 6. Once happy with the layout, click "Publish", choose your URL, and hit Publish again.&lt;/p&gt;

&lt;p&gt;Your landing page is live with a Google-hosted link you can share.&lt;/p&gt;

&lt;h4&gt;
  
  
  Option 3: Using GitHub Pages (For tech-savvy or coding curious folks)
&lt;/h4&gt;

&lt;p&gt;Step 1. Go to &lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and create an account if you don’t have one.&lt;/p&gt;

&lt;p&gt;Step 2. Create a new repository named yourusername.github.io&lt;/p&gt;

&lt;p&gt;Step 3. Go to &lt;a href="https://html5up.net" rel="noopener noreferrer"&gt;HTML5UP&lt;/a&gt; and download any free portfolio template.&lt;/p&gt;

&lt;p&gt;Step 4. Extract the files and upload them into your GitHub repo (drag and drop works).&lt;/p&gt;

&lt;p&gt;Step 5. Go to Settings &amp;gt; Pages, choose the branch main, and click Save.&lt;/p&gt;

&lt;p&gt;After a minute, your site will be live at &lt;a href="https://yourusername.github.io" rel="noopener noreferrer"&gt;https://yourusername.github.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus&lt;/strong&gt;: You can edit the index.html file to update text, images, and links anytime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tips&lt;/strong&gt;: Add Your Content (For All Platforms)&lt;/p&gt;

&lt;p&gt;Regardless of which tool you use, include the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your Name + Tagline (e.g., Full-Stack Developer | Storyteller in Code)&lt;/li&gt;
&lt;li&gt;Short About Me section&lt;/li&gt;
&lt;li&gt;Projects or Portfolio Links (screenshots + links work great)&lt;/li&gt;
&lt;li&gt;Resume Download button&lt;/li&gt;
&lt;li&gt;Contact Info or Socials (LinkedIn, Email, GitHub)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Personalization&lt;/strong&gt;: (Optional) Connect a Free Custom Domain&lt;/p&gt;

&lt;p&gt;Visit &lt;a href="https://freenom.com" rel="noopener noreferrer"&gt;freenom&lt;/a&gt; and register a .tk or .ml domain.&lt;/p&gt;

&lt;p&gt;Sign up on &lt;a href="https://cloudflare.com" rel="noopener noreferrer"&gt;cloudflare&lt;/a&gt;, add your domain, and change the nameservers.&lt;/p&gt;

&lt;p&gt;Use DNS records to point your custom domain to your Carrd, Google Site, or GitHub Page.&lt;/p&gt;

&lt;p&gt;In short: You don’t need to know code, spend money, or be a web designer to build a personal landing page. Just pick a platform, follow these steps, and boom—you’re online.&lt;/p&gt;

&lt;p&gt;Whether you’re applying for a job, sharing your work, or just want a clean professional space online—this is the easiest and most affordable way to do it.&lt;/p&gt;

&lt;p&gt;Let your landing page speak for you. You’re just a few clicks away!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>From Uni to Dev Life: What They Don’t Teach You</title>
      <dc:creator>Maad Mustafa </dc:creator>
      <pubDate>Wed, 23 Apr 2025 19:44:36 +0000</pubDate>
      <link>https://forem.com/nightwalker28/from-uni-to-dev-life-what-they-dont-teach-you-2plf</link>
      <guid>https://forem.com/nightwalker28/from-uni-to-dev-life-what-they-dont-teach-you-2plf</guid>
      <description>&lt;p&gt;I’m in my third year of university, currently in my internship year, and working as a software engineer at a B2B marketing firm that's been transitioning into the tech space. But this wasn’t an overnight leap.&lt;/p&gt;

&lt;p&gt;Back in my first year, while studying full-time, I started working part-time from home as a campaign executive — mostly handling data entry and marketing ops between lectures. It wasn’t glamorous, but it was my first exposure to how businesses actually operate.&lt;/p&gt;

&lt;p&gt;By the 2nd semester of my 2nd year, I got an opportunity to intern as a &lt;strong&gt;software engineer&lt;/strong&gt; at the same company. A growing B2B marketing firm with a bold push into tech, that meant I didn’t have a strict role. I had to learn — &lt;em&gt;a lot, and fast.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🎓 What University Taught Me
&lt;/h3&gt;

&lt;p&gt;To be fair, uni wasn’t useless. I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic programming in Python and Java&lt;/li&gt;
&lt;li&gt;Object-oriented programming concepts&lt;/li&gt;
&lt;li&gt;Some SQL and DBMS theory&lt;/li&gt;
&lt;li&gt;Teamwork through group projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But looking back, it’s like being handed a pencil and paper and being told, “&lt;em&gt;Okay, go build a skyscraper.&lt;/em&gt;”&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 What the Job Actually Demanded
&lt;/h3&gt;

&lt;p&gt;From the first week, I realized: writing code is the &lt;em&gt;easy part.&lt;/em&gt; Everything else? That’s where the &lt;em&gt;real&lt;/em&gt; learning began.&lt;/p&gt;

&lt;p&gt;Here’s a breakdown of what I had to figure out on the fly:&lt;/p&gt;

&lt;h4&gt;
  
  
  🛠️ 1. Being a Full-Stack Problem Solver
&lt;/h4&gt;

&lt;p&gt;There was no "backend team" or "frontend team" — just us. Some days I was helping build UI components or setting up dashboards, other days I was knee-deep in APIs, user session management, and authentication logic.&lt;/p&gt;

&lt;h4&gt;
  
  
  🔐 2. Becoming a Mini DevOps Engineer
&lt;/h4&gt;

&lt;p&gt;I set up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Our &lt;strong&gt;production server&lt;/strong&gt; (on a Linux box I’d never seen before)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nginx&lt;/strong&gt; for reverse proxying and static asset delivery&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firewalls, DNS configurations&lt;/strong&gt;, even domain delegation using Cloudflare and GoDaddy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this was covered in lectures.&lt;/p&gt;

&lt;p&gt;The reason I’m sharing all this isn’t just to list cool things I did — it’s to show the huge gap between what university prepares you for and what working in the real world actually demands.&lt;/p&gt;

&lt;p&gt;In uni, group projects are neatly divided. If you're good at frontend, you stick to frontend. Backend people stick to backend. Everyone completes their part and submits on time. It’s predictable. Controlled. Safe.&lt;/p&gt;

&lt;p&gt;But in a startup? You don’t have the luxury of staying in your comfort zone. If something breaks, you fix it — even if you’ve never touched it before. There’s no "That’s not my role." You &lt;em&gt;become&lt;/em&gt; the role. One day you're writing APIs, the next you're configuring DNS, and by the end of the week, you're explaining app logic to the marketing team like a product manager. It’s chaotic, intense, and overwhelming — especially when you realize that none of your lectures taught you how to actually survive this.&lt;/p&gt;

&lt;p&gt;But here’s the thing: that chaos is where you grow. You stop thinking like a student and start thinking like a developer — not someone who just writes code, but someone who solves problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌱 Growth Beyond the Classroom
&lt;/h3&gt;

&lt;p&gt;Looking back, these months at the startup taught me more than two years of lectures. Uni gave me the foundation—logic, syntax, problem-solving—but the real world taught me adaptability. I went from feeling clueless to confidently managing servers and building features. The overwhelmingness faded, replaced by a quiet pride in how far I’d come.&lt;/p&gt;

&lt;p&gt;Here’s what stood out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Practical Skills Trump Theory: Knowing how to code is one thing; knowing how to deploy it is another. The startup forced me to learn the full stack, from ideation to production.&lt;/li&gt;
&lt;li&gt;Soft Skills Matter: Talking to teammates, managing my time, figuring out what the business needed—these were as critical as my tech skills.&lt;/li&gt;
&lt;li&gt;Failure Is Fuel: Every screw-up (and there were plenty) made me better. Breaking things taught me how to fix them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎯 Tips for Fellow Students
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Don’t wait for your degree to “make you ready.” You get ready by &lt;em&gt;doing&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Ask for Help: No one expects you to be an expert on day one. Lean on your team—they’ve been there.&lt;/li&gt;
&lt;li&gt;Apply for roles even if you don’t feel 100% qualified.&lt;/li&gt;
&lt;li&gt;Go Beyond Code: Learn the tools (like Redis or NGINX) and the business side. It’ll set you apart.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’ve made it this far, chances are something I said hit close to home — maybe it reminded you of your own panic Googling why your Nginx config broke everything, or that moment when your “small change” took down staging.&lt;/p&gt;

&lt;p&gt;Whether you're still studying or just started working, trust me: you’re not behind — you’re just getting started. And every confusing error, unexpected bug, and awkward client demo is leveling you up, one day at a time.&lt;/p&gt;

&lt;p&gt;If this post made you nod, laugh, or scream internally, drop a comment below — let’s swap stories, cry about prod bugs, or just connect.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>discuss</category>
      <category>community</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
