I put an SSD in a MacBook pro late 2009 and I love it! I installed Windows 10 and Ubuntu 22.04.

I tried compiling my website with a php/apache and a mariadb containers in docker. I thought that maybe Vite would take forever to compile but no it ran almost the same as my current PC. I was really amazed at how well it all still runs. The main lag I noticed is when you move from page to page the Vite server takes up to a second to deliver the JS, although it is a bit faster when you move back to the same pages.

Sublime Text latest version is smooth as butter.

In Windows 10 I'm able to play Guild Wars, emulators like DuckStation and SameBoy. The GeForce 9400M is still pretty capable. Tomb Raider Anniversary.

I have never replaced the battery! I did a battery full charge and store the laptop at 50% charge, at first it was 2-3times a year and in recent years I even forgot and charged it only once a year. It still shows ~90% full charge capacity. With just browsing and casual use including YouTube the battery runs for at least a couple hours!

When I first booted up this old MacBook, it was an old version of macOS. It looked so dated that it felt like the laptop was good for the bin. I needed a laptop as I move into a co-loc arrangement, something to keep busy until I can set up a new desk etc and I'm really stoked how well it still runs and how usable it is.

The funniest part of all that is ... wait for it... I OPENED the MacBook Pro and upgraded the RAM and the HDD. HHAHAHAHAHAHAAH. It's gotta be the joke of the century. Someday it will be.

With that said for this late 2009 MacBook Pro these are the main downsides :

- the screen is probably the main downside : all the colours look off unless you are totally facing, which means bad posture, and the brighter colours tend to be washed out so you can't really do any decent UX work as all the subtle gradients and color tones are out the window

- stuck with USB 2

- VSCode is pretty usable but you can hear the fans revving up, CPU usage constantly up and down anywhere from 10 to 90% peaks

When I revived the laptop I did in this order:

First I installed Ubuntu 22.04 from a USB key, this worked right out of the bat, I told the installer to just erase the disk. It worked like a charm.

Later I realized I wanted Windows for games. This MBP models apparently won't let you install Windows from a USB key - something to do with the baked in BIOS? I really couldn't bother burning a DVD, fortunately I had an old OG copy of Windows 7 Home Edition Upgrade. I booted the DVD and installed Windows 7, using a generic activation key. Then I inserted a USB key with the Windows 10 ISO which I had prepared earlier, and started the upgrade from within Windows 7. This time I used a key I bought online. The activation didn't work as planned, I called the Microsoft call center, and I just told the person I bought an OEM key etc and they activated it.

So at this point I could simply hold the Alt key while booting to select the drive and it was dual booting perfectly fine.

However I ran into one limitation : I was not able to `mount` the Windows NTFS partition from within Ubuntu. It seems this could be baked in the custom Apple BIOS? The Ubuntu partition somehow can not see the "bootcamp" partition.

I installed reFIT thinking that it would solve the issue but it didn't change anything, just gave me a boot menu that is uglier and doesn't give me any functionality. I wish I didn't install reFIT but it's not a big deal it just shows me an icon for Ubuntu and Windows - honestly the builtin menu on the MBP looks nicer and I believe you could also customize the original boot menu's icons (but I am not sure I would have been able to do this after nuking the macOS partition).

I'm really thrilled with how well it has been running for me the last couple weeks. Been playing a ton of Guild Wars on it.

There's such a satisfaction from making an old hardware not just usable, but actually really useful. And I love that being so old, I don't have to worry about scratching it - even if mine still looks like mint.