I told myself this day would never come. There was no reason for me to own a Linux laptop. My M1 MacBook Pro was the perfect mobile computing option: fast, nearly-infinite battery life, and extremely capable. Linux laptops always need babied, and never seem to work when you need them to. My MacBook was always functional whenever I needed it…

Neofetch on Laptop

…And I’m writing this post from a laptop running Linux that I’ve now owned for a little over 24 hours. Why?

First of all, this wasn’t an impulse buy. I didn’t want to own another laptop, but it was the simplest option I could come up with. I realized that, as much as I absolutely adore my MacBook in many ways, there is one substantial area it falls flat in: embedded software development, which is kind of what I do for a living. A majority of my day for work is spent on a Linux desktop (either my personal machine when working remotely, or a machine my company supplied when in the office). Whether I am simply writing code, or debugging hardware or software (using tools like Wireshark, CAN analyzers, or logic analyzers), Linux has proven to be both the most reliable OS in the last 7+ years for me, and also the simplest most of the time to get working. Additionally, because some of the non-embedded software that I develop or use for work tends to require the latest compilers, being on a bleeding edge distro (in my case Arch Linux) is by far the easiest way to avoid frequent manual tool installation. And, simultaneously, Linux is able to support the very old embedded compilers required for a few of the projects I work on.

Secondly, now that I’m messing around with Linux on a laptop again, I’m finding that I am enjoying it. It’s not nearly as polished as macOS, of course. But Arch Linux + KDE is so far working much better than I expected, and the whole user experience has been very good so far. It took me about an hour to go from pulling the laptop out of the box to having a fully functional desktop environment up and running, and most of my tools installed. Since then, virtually everything has worked the way I expected. (For reference, I normally run XFCE, but in the past it has not been as pleasant on a laptop, hence my choice to try out KDE). And to top it all off, I’m actually doing this under Wayland instead of X11, which is something I thought would never happen.

So why couldn’t I make this all work on my Mac?

  • Some of the compilers I need to use are not M1 native. They work under Rosetta2, but feel (and are) incredibly slow. And because I’m stuck on an older version of the toolchain, there is no chance that this will improve in the near future.
  • CAN analysis, at least using the adapters we use at work, is not currently functional on the Mac. I could attempt to do some sort of passthru, but SocketCAN on Linux just works. It’s tools that I already know, and the barrier to entry is low.
  • I find network debugging on my Mac to be highly annoying (and I work with ethernet stacks as part of my job). Wireshark is available on a Mac, sure, but there have been times when I have been unable to get something that I know works fine on Linux (with virtually no effort) functional on a Mac. That may be because of a lack of knowledge on my part, but I’d rather be solving problems and developing new products, not troubleshooting/learning new things about my system.

And why did I buy myself a new laptop, vs requesting one through work? Mostly because, by acquiring it myself, I have more freedom to tweak the operating system and test things (for instance, gaming performance) that I would not feel comfortable doing with a company owned asset.

So what did I buy? I chose to pick up an Asus ZenBook 14, with an AMD Ryzen 7 5800H CPU with built-in Radeon Vega 7 Graphics, and 16G of RAM. I strongly considered upgrading the RAM, but most options with 32G of RAM cost distinctly more than I was interested in spending, and I don’t want this machine to function as a desktop replacement. Rather, I primarily want to use it when I’m working remotely (and not at home), and as an additional system that will probably normally sit on my benchtop at home, running various analyzers.

For additional details on this laptop and other hardware & software I use, see my Uses page.