This site is being designed in public. Please excuse placeholder content, broken design, etc.!

Tom Callahan’s Blog

When I graduated from college and started my design career, you just had to use a Mac for anything design-related. Adobe's software barely existed on Windows, and when it did it wasn't good. And only Macs supported the "good" PostScript font formats.

Then the internet happened, Internet Explorer won the first browser war, fonts just weren't a priority, and you just had to have a Windows computer to do any serious web dev work or risk having your site look very different than it did when you were developing it. So I switched just before MacOS X came out.

While I was around Macs enough to be familiar with them, virtually all of my actual work for the next two decades or sowas done on Windows, especially once Adobe's Windows versions improved and font support got better in Windows--even for design work I did it in Windows.

So after about two decades working mostly on Windows, I switched jobs and was offered the option of a Macbook to work on. Knowing that many devs now use Macs, I took the chance and switched back. I've been plesantly surprised with the Mac as a web dev platform. Shouldn't be I guess, Apple does make a great product all around.

Anyway for my personal work I still use a 3 year old Windows 11 laptop. While Windows 11 is a big improvement in overall polish over 10, it's still pretty rough around the edges. Doing any work on it after having use a Mac for over a year is a little painful. And then you run into the weird Windows-only dev issues, like NVM doesn't really exist in the same form it does on Mac and Linux.

WSL is an option, but it adds a layer of complexity that I just didn't want to deal with. Running Linux or MacOS in a VM is possible -- I tried both -- but it's slow.

I don't really want to buy myself a new Macbook -- this laptop is still pretty solid, 32gb RAM, Nvidia 2070, 1TB HD, etc. -- so I decided to try dual-botting my laptop with Ubuntu and seeing how it went.

With an abundance of downtime due to knee surgery, I took the plunge.

Now that I have it working I'm shocked at how good Linux desktops have gotten. Games were my main reason for hesitating but I've got enough space to keep those in Windows if needed (although I don't think it will be in many cases looking at how good Steam's Proton has gotten).

However, the process was nowhere near as smooth as the first article I found suggested it would be. It ended up taking about 6 hours of trial and error. So here's the things I ran into partly for my own future reference, and partly in case anybody else runs into them.

I started with this article specifically saying it would let you dual-boot Windows 11 and Ubuntu. Couple of issues:

1. You need to run Rufus in administrator mode, and need to turn off Windows' protected folder access (or enable it specifically for Rufus when the prompt comes up) or else the Linux USB install drive will be corrupted. It'll attempt to boot, but when you choose to launch Linux from grub, it will fail. I went through a whole thing where I tried using balenaEtcher instead, but that doesn't work either, even in admin mode, despite the fact that the Ubuntu dual boot guide actually suggests using it. The final solution was Rufus in admin mode.

Other things not mentioned in the article -- you have to disable BitLocker if it's enabled in Windows. I had already done that assuming it would be an issue, but the article didn't point that out.

2. You need to disable "Intel RST" if it's enabled or Ubuntu won't install. This is a BIOS setting, but you can't just disable it in the bios or you'll break your WIndows boot. You also need to get the right storage driver enabled.

The Ubuntu installer checks this and provides a handy article walking you through the steps to disable it, but those did not work for me, in fact they left my laptop in an unbootable state that took quite a bit of work to get booting into Windows again!

The solution for me (found on a StackOverflow question which I can't find now) was to simply boot into safe mode (run `msconfig` and enable minimal safe boot), restart once in safe mode, restart and hit F2 to enter the bios, disable RST, restart again (still in safe mode) at which point Windows seems to change the driver, in my case to one called "default NVME" or something like that instead of the "AHCI" driver all of the guides said it would, disable safe mode, then restart again.

3. The article showed an option where it will let you repartition a drive on the fly to move Windows to only a portion of it, using the remainder for Linux. That also did not work for me. I had to:

a. Disable fast boot in Windows. Apparently having this enabled prevents Linux from reading the Windows partition correctly.

b. Shut down completely -- hold shift while selecting shutdown. Same problem as above.

Following those two steps the Ubuntu installer finally recognized that I was trying to dual-boot and offered the "install alongside" option, but I still didn't get the automatic resize option or the fancy slider shown in the article's screenshots. I don't know whether the process has changed or if this is specific to my laptop. I ended up doing this:

c. Manually shrink my Windows partition ahead of time, leaving available blank space on the drive for Ubuntu to use. This required disabling System Restore, Hibernate, and the Page File, which all leave large unmovable files on the partition so it can't be shrunk (or at least not much). After removing those, Windows' `diskpart` utility would still only let me shrink it by about 100gb, and I really wanted to do a 500gb/500gb split, so I had to download a 3rd party resizing utility (Aomei something -- free version). That did work, leaving me with a 500gb Windows partition, and 500gb of unallocated space.

After all of that the installation went smoothly and I'm moving pretty much everything over to Linux. If I can get most of my games running there I'll probably end up dropping Windows completely.

One final gotcha -- it prompted me to choose whether I wanted to use the open source "Nouveau" drivers for my Nvidia card, or the closed-source proprietary Nvidia drivers. Since I plan on trying games on this and I don't really care about the license, I went with Nvidia's. Somehow though (probably an errant tap-to-click on the trackpad since I usually use a mouse) I ended up on one of the server-specific driver options. Those don't support Wayland (Linux's new-ish display driver system, which is also involved in input somehow) so I suddenly lost my trackpad gestures which are only supported by Wayland. Switching to the non-server version fixed that.

Socials