All Articles

Choosing a Dev Machine

IMHO, the Mac is not a dev machine. macOS is not a dev-friendly OS to do your programming. You can make it as *nix-like as possible. You can install Docker and stuff and make it bearable. But there's so much else that gets in the way.

I've always been more comfortable coding at home than at work. Apart from being a peaceful space where I'm left alone, I'm too accustomed to my dev machine and workflow. There have been so many occasions I've actually prototyped work-related ideas on my personal laptop before copying it over to a Mac.

Linux Mint (Cinnamon) has been my distro of choice for about 6 years. The main reason for choosing this over Ubuntu was the awful UX of Unity (that, to be fair, some people found productive).

The terminal plays a central role in all dev activities. I use the wonderful AltYo to have it always available at the top edge of the screen. With keyboard shortcuts configured, it is extremely powerful. Search is a little buggy but there are a few workarounds.

There are quite a few fancy Electron-based terminals such as hyper but after having used Guake and now AltYo, I don't find anything else appealing.

I have five desktop workspaces configured as follows:

  1. Browse — browsing the web/reading articles/finding solutions
  2. Test — browser instance for testing the web app
  3. Dev — IDE/frontend code editor
  4. Dev — IDE/backend code editor
  5. Music player

Linux Mint Workspaces

I don't claim this is the best development environment/workflow ever, but it's what I'm accustomed to. I struggle to work on macOS. Most people who've seen me work on a Mac have probably noticed that I never use Alt-Tab and I'm hopelessly slow at basic tasks. It's because I'm used to toggling desktops with Ctrl-Alt-Left/Right instead of windows! (On Windows I was addicted to using Virtual Desktops)

The Linux vs macOS argument doesn't end there. It has more to do with the shell, utilities and toolchains than anything else, and how the deployment target is usually Linux. Sure, using Docker alleviates most of my complaints but even Docker on macOS runs with Virtualbox, while it runs "natively" on Linux.

So, in conclusion, I'm not buying a Macbook.

It's funny how when you aren't looking to buy something, you come across ads and offers for products that closely fit your wishful requirements, but when you actually want to something (and have the capital), every option seems flawed (or out of stock).

Intel's 8th gen processors are supposedly 30% faster than the previous gen, so definitely getting that. LPDDR4 isn't a thing yet but DDR4 is, so in some battery conscious laptops, you get LPDDR3s while in others leaning on performance you get DDR4 RAM. I personally don't care a whole lot about battery life since the laptop is mostly going to function as a desktop. Desktops are a bad investment, although I currently use my laptop as a desktop (connected to a 24" FHD gaming monitor, wireless mouse and keyboard). I've given ThinkStation PCs some serious thought, but its famed "Tiny" variant isn't available in India yet.

Thinkpads are a good fit for me mainly because you can tinker with them. But Lenovo hasn't rolled out the range with 8th gen chips yet (L480/T480). Dell XPS 13 and Asus Zenbook with 8th gen chips is a solid contender, but you can't tinker with them. I loathe the sleek, almost unibody laptops that are hard to crank open to replace parts. HP has a decent (and cheap!) range with the configuration I need, but HP isn't something I'd ever buy — it's shit. My current Lenovo G580 has served me well for 4+ years, so I'll most likely go with a Lenovo Thinkpad.

One option is to get a powerful desktop, leave it always-on at home and take a cheapish 13" ultrabook to remote in. When I'm on vacation I often leave the laptop at home on so I can use it remotely on my phone. Net connection at home works great, so overall this is something that is practical.

I have no choice but to wait. If I break and impulse-buy a 7th gen laptop, I'm pretty sure 8th gen Thinkpads will be released on the day it's delivered.