Skip to main content

Command Palette

Search for a command to run...

Exploring Ubuntu Linux on a MacBook: A Learning Journey

Updated
3 min read
Exploring Ubuntu Linux on a MacBook: A Learning Journey

It’s been about 10 years since I last touched anything by Apple. I’m a Windows guy through and through, developing in a Microsoft-centric stack that’s worked just fine for me. Honestly, I had zero interest in diving into the Apple universe—until now.

Here’s the deal man - I was recently gifted a hand-me-down MacBook Air. It came with zero fanfare: no complete power cable, a bit dusty, and no clue about what it’s been through. The previous owner just wanted it out of their house, and now, it’s mine to figure out. I haven’t even opened it yet.

Instead of trying to wrestle with macOS, I’ve decided to wipe it and install Ubuntu Linux. Why? Well, I want to document a little learning experiment of setting up .NET development on unfamiliar hardware, all while playing around with Linux. This won’t replace my Windows setup any time soon - it's just a sandbox to explore cross-platform .NET on Linux.

Why .NET on Ubuntu?

Here’s the thing: .NET is now cross-platform, and guess what? Ubuntu is one of the primary Linux targets. I’ve run .NET applications on ubuntu containers so I know its possible. Microsoft’s got official packages, and the community is super active. Running .NET on Ubuntu will let me:

  1. See if my Microsoft workflow plays nice with Linux: I want to find out if my tools and habits can make the jump to Linux. Does it work? Or does it break? Let’s find out.

  2. Learn about Apple hardware quirks: Running Linux on Apple devices isn’t always smooth sailing. I’m hoping to uncover the hidden gems (or landmines) involved in making Linux work on Apple hardware.

  3. Experience something new: I’ve been stuck in my Windows bubble for ages. It’ll be interesting to see how Ubuntu changes the game and what works (and what doesn’t) for me in day-to-day development.

Getting Started: Installing Ubuntu on a MacBook

Now, let’s get this show on the road. But first, a few things need to be figured out. Here’s how I’ll go.

Step 1: Identify the MacBook Model

Before I do anything, I need to figure out what kind of MacBook I’m dealing with. Is this one of those sleek Apple silicon family, or is it an Intel chip? This thing could easily be 10 years old, and I haven’t even opened it yet. My first task is to figure out what exactly I’ve got in front of me.

Step 2: Secure Power for the MacBook

I don’t even know if this MacBook turns on. The power cable I’ve got isn’t even complete, so step two is to figure out how to get this thing juiced up. I can’t do much without power, right?

Step 3: Try it Out

Once I get it powered up, the next step is making sure it actually works. Do the USB ports work? Is the screen a shattered mess? If anything major’s broken, this thing might get an immediate ticket to the recycling center.

Step 4: The Hello World Test

Once everything’s working, I’ll do what every developer loves to do- “Hello World”. Nothing fancy, just a little “Hey, look, I’m alive!” moment from the system. We’ll see what happened and where things are at.

Winging It

To be honest, I have absolutely no idea what’s coming next. I’m just winging it and seeing what happens. If this turns out to be on Apple’s silicon, I might be stuck with macOS (not a huge loss). But hey, if I can’t go straight to Linux, I’ll figure out another way around it. The idea is to learn something new and see if Linux—or even macOS—could eventually become my daily driver for development.

So, no pressure. It can’t be that hard, right? Right?