- Choosing a Linux distro
- Finding apps to get your work done
- Taking stock and choosing replacements
The biggest challenge of switching from the Mac to Linux is of course finding the right apps to get your work done. Some applications are cross-platform, so the switch is virtually effortless. But for most Mac software you'll find alternatives at best, and sometimes those alternatives will be a far cry from what you're used to on the Mac in terms of features and polish. Finally, in some edge cases, there will be no suitable equivalent or alternative to the software you're using on the Mac, so you'll have to find a way to make do without a particular app, which might mean changing some of your workflows.
This first part of what will eventually become a series of posts is about switching my web development over to Linux. Switching over other areas of work, like writing, running my business, graphic design, screencasting and video editing, etc., will eventually follow in later posts.
That said, before you start looking for Linux apps to replace your favorite Mac apps, you need to decide which Linux you're actually going to install. Because there's not just one Linux, there are dozens.
Choosing a Linux distro
Linux comes in many different flavors, called distributions, or distros. A distro is, to quote Wikipedia, "made from a software collection, which is based upon the Linux kernel and, often, a package management system". For a user, the most differentiating and most important parts of a distro will likely be the desktop environment and the software that comes bundled with it.
In my case, I've been running Ubuntu on my server(s) for a long time, so I'm already quite familiar with this particular distro. Therefore Ubuntu will be the distro for my Linux PC, although I might swap some parts out for something a bit more powerful, like the window manager, for example. But that's for a future post.
There are some other distros that have been gaining popularity lately, mainly the Ubuntu-based Linux Mint, Elementary OS and Zorin OS, whose main focus is being more user-friendly and light-weight than the original Ubuntu. For the other end of the spectrum, there's Arch Linux for nerds and Linux pros. And there are dozens more.
My main initial goal is to get a Linux machine up and running and move my web development work over. So, for now, I'm sticking with the "vanilla" option and installing plain old Ubuntu. I might experiment with other distros later on.
A note on Ubuntu versions
With macOS, you're usually going to install the latest version your computer supports. Most of the time, there's no reason to stick with an older version, except maybe temporarily, until the worst bugs of a new major version get ironed out1, or Adobe updates its Creative Cloud suite to properly work with a new macOS version.
With Ubuntu, which version you're going to install depends on your needs. The regular Ubuntu versions are released every 6 months in April and Oktober and are numbered using the year and month. So, as of March 2017, the current version of Ubuntu is 16.10, the next version, coming out in April, will be 17.04.
In addition to the regular releases, every two years there's an LTS version. LTS stands for "Long Term Support", meaning that these versions come with the guarantee of 5 years of security and other critical updates (like hardware drivers), while the regular releases only come with 9 months. So, with a regular release, you'll always have to update to the newest version of Ubuntu to continue to get updates. With an LTS vesion, you can remain on the same base release for up to 5 years.
In general, I prefer a reliable, stable OS to always being on the bleeding edge. I only switched to macOS Sierra a couple of weeks ago after running Yosemite for over 2 years (I skipped El Capitan entirely). On my server I run Ubuntu 14.04 LTS and will probably upgrade to 16.04 LTS within the next couple of months. Since there are advantages to running the same release on your development machine and on your productive system when it comes to web development, I'm going to run 16.04 LTS on my desktop Linux machine as well, and keep the desktop and server on the same release.
Finding apps to get your work done
Once you've settled on a Linux distro, you're ready to start looking for the Linux apps that you need to get your work done. I approached this by defining all the different types of work I do and then listing all the apps I use for each respective type of work.
This approach has the advantage that it doesn't use the apps as a starting point, but rather the outcome of using those apps. That way I don't cling to any particular app and keep myself open to changing my workflows to achieve the desired outcome.
A word on web apps
One way around a lack of native Linux alternatives to Mac apps is to use web apps. While this is certainly a viable option in many cases, replacing native Mac apps, which you most likely paid a one-off price for (except in the case of Adobe CC and a handful of other apps), with web apps that usually come in the form of a subscription can become quite expensive.
Of course you could argue that one-off licenses and the upgrade fee every year or two for your typical Mac app are also ongoing costs. But I've been using many Mac apps for years without the need for a paid upgrade. Most apps continue to work even after major OS upgrades, or the developer provides a free fix. Web apps, on the other hand, can become quite expensive by comparison, as you need to keep paying for them if you want to keep using them.
Here's an example:
Popular mindmapping app MindNode costs $29.99 on the Mac App Store. Since there are no upgrades on the Mac App Store, upgrades are free of charge. Web-based MindMeister costs €6 per month on the cheapest price tier, so that's €72 a year, every year.
I haven't compared MindNode and MindMeister feature by feature, so it's perfectly possible that MindMeister has more features that justify the higher price. But my main point remains: Web apps are an ongoing cost whereas you can use a desktop app you paid for once for years.
Taking stock and choosing replacements
As mentioned previously, my plan is to initially just move some of my work over to Linux to get comfortable with the new environment. The part of my work that's easiest to move over to Linux is web development, as many of the tools I use are, due to being cross-platform, the same on Linux as on the Mac.
So here's the list of tools I'm currently using on the Mac to develop for the web and possible replacements for these tools on Linux
I switched to Atom from Sublime Text a while ago and it has since become my favorite text and code editor. It's sometimes a bit slow, but it's highly customizable and has a very active community, which means it's frequently updated and improved.
Atom is cross-platform, so I'll just move my configuration files over to Linux and install all the same plugins I'm using now. Done.
This is a handy tool that can preprocess all kinds of code, like Sass/LESS, CoffeeScript, etc. I only use it for Sass processing and automatic browser refreshing.
There used to be similar app for Linux called Koala, but it looks like it's not being actively developed anymore. So I guess I'll just have to use something like gulp or grunt to automate the preprocessing of Sass and something like guard-livereload for the browser refreshing.
ThemeKit is a tool for developing Shopify themes. It accesses the Shopify API to download theme files from a Shopify store and automatically upload files that have changed.
ThemeKit is cross-platform, so I can use it on Linux the same way I'm using it on the Mac. Done.
This is a gulp-based tool that automatically refreshes the browser on file changes that's part of my current Shopify theme development workflow. Again, this is cross-platform, so no issues moving it over to Linux.
Chrome (and other browsers for testing)
Chrome is my main development browser and I heavily rely on the integrated development tools to debug JS and CSS.
Chrome is natively available for Ubuntu, so are Firefox and Opera. For testing on Safari I'll have to resort to my Mac (or a macOS VM) and for IE/Edge I'll be using a Windows VM.
Running all the command line stuff obviously requires the terminal. I just use the default Terminal app on macOS, others prefer iTerm. My default shell is bash.
As you might expect, this translates 1:1 to Linux.
I don't upload files manually to a server that often, but if I do I use Yummy FTP.
The obvious replacement for this on Linux is FileZilla. There are others, but since my needs are simple, it'll probably do.
I don't use Transmit for actual FTP transfers, I just use its ability to mount FTP servers as local volumes on macOS. This makes it easy to edit files on the Mac as if they were local, which I sometimes use to do a quick edit in a Wordpress theme or other remote file.
On Linux, the same thing should be able to be achieved with sshfs. I haven't tried it yet, but it looks like the default method for mounting remote servers into the local file system.
I use Sequel Pro to edit MySQL databases both locally and (through an SSH tunnel) remotely.
There are several possible replacements for Sequel Pro on Linux:
Some of these are commercial, which I have no problem with. I'll try the free ones first, but if I like one of the paid ones better, I'll have no issue paying for it.
Finder or Path Finder
Most of the time I just use Finder for my file management needs. If I need some functionality that Finder doesn't offer, I use Path Finder.
On Linux I'll try to make do with the default Ubuntu file manager, and I'm pretty sure it'll meet most of my needs. If I need something more powerful, there's a plethora of file managers with varying feature sets available, which I'm not even going to bother listing here. Just google "ubuntu file manager" and try them all ;)
Beyond Compare has been kind of the gold standard of diff tools on Windows, and a while ago the developer made it available for the Mac too. I bought a license for Kaleidoscope before Beyond Compare was available for the Mac, and it's a very nice diff tool as well.
Since I already have a multi-platform license for Beyond Compare 4, I'll continue to use it on Linux. Alternatively, there's also Meld.
I sometimes use regular expressions to perform complex search/replace operations, and before I unleash them on the actual text or code, I like to test them with RegExRX.
I couldn't find a current desktop RegEx editor for Linux, but RegExr is a great web app and should meet all my needs.
I use Git on the command line most of the time, but when trying to get an overview or merging changes, a graphical Git client has its advantages. On macOS, I use Tower.
On Linux there are several alternatives:
Like with Sequel Pro alternatives, some of these are commercial. But I'll gladly pay for an app I use on a daily basis.
As you can see, the obstacles to switching this part of my work over to Linux are pretty minor. Most of the tools I use are cross-platform, and for those that aren't, the alternatives should be more or less on par with the Mac apps.
Web development of course also sometimes requires the use of Photoshop or Illustrator. There are alternatives for Linux, which I'll get into in a future post. But for now I'm just going to use the Mac for editing graphics.
I almost always wait for the X.2 version of macOS before I upgrade. The X.0 and X.1 usually have some issues that get ironed out in the first couple of weeks or months after the initial release. ↩
Since I'll be running both the Mac and Linux in parallel, I hate dual-booting and I don't want to bog down my 2013 13" Retina MacBook Pro with a VM, I decided to build a new PC that will be dedicated to running Ubuntu.
Totally untypical for a Mac user, I don't like buying ready-made PCs. My needs (see below) are fairly specific and despite the plethora of pre-configured and BTO options, it's usually hard to find exactly what you need. If you're looking for a notebook, you have to choose from the available machines. But with a desktop PC, you can choose every component and configure the machine exactly how you want it to be.
If you've never done it before, building your own PC may seem like a daunting task. If you have zero experience with hardware components, clock speeds, cooling requirements, form factors, etc., you definitely have a learning curve ahead of you. But if the prospect of building your own computer sounds at least a bit intriguing or fun, it can be a great learning experience and very rewarding when you finally flick the power switch on your new machine and it actually turns on (hopefully!).
I built my first PC around 1994 and since then have probably built at least half a dozen machines. I actually enjoy the whole process of researching components, doing price comparisons and then putting it all together. It's rather relaxing in a nerdy, weird kind of way. And you really get to make the computer your own, from its inner workings all the way to how it looks.
Here's the rundown of my requirements for my new Linux PC.
- Desktop machine: My work computing takes place 100% sitting at a desk. I don't work at cafés, libraries, on the bus or train. My work style is not "mobile". I prefer my spacious 40" 3840x2160 pixel non-"Retina" monitor to being able to work in the park, so a notebook doesn't make much sense.
- Small case: I have a height-adjustable desk, so ideally the PC should fit on the desktop. A tower case sitting on the floor would potentially introduce cabling issues when the desk is elevated to a standing position.
- Quiet: Since the machine is going to sit close to me, I'd like its fans to be as few and as quiet as possible.
- No dedicated graphics card: A GTX "whatever" is only useful for gaming or 3D applications, which I don't plan on using this machine for.
- A budget of around € 1.000 (plus VAT): Compared to a current MacBook Pro (or even a top-of-the-line "current" Mac mini) this sounds ridiculously cheap, doesn't it?
I spent the better part of a Saturday researching all the components. Here's the shopping list I came up with and the reasoning behind each choice.
Case: Fractal Design Node 202
I've built a PC with the Node 605 before and I generally liked the build quality and case design. The Node 202 is a mini-ITX case that can be used both lying flat on a surface or in a vertical position. It's also small enough that it doesn't take up too much space on my desk. I can probably fit it under my wall-mounted monitor, where there's space I don't really use anyway.
APU: 600 Watt Corsair SF Series SF600 Modular 80+ Gold
Not much selection when it comes to APUs with an SFX form factor. But the SF600's 600 watts is more than plenty, given that I'm not installing a dedicated graphics card or other power hogs.
Mainboard: Asus Z170I Pro Gaming
The "Pro Gaming" in the name isn't why I selected this particular mainboard. It's its combination of features that I couldn't find in many other boards at this price.
I wanted Wi-Fi and Bluetooth on board so I would't have to use USB adapters (I can't use PCI extension cards because on a mini-ITX board you usually only have a single PCIe slot). I also need DisplayPort 1.2 so I can hook up my 40-inch monitor at 60 Hz. HDMI 1.4 only supports 30 Hz at 3840x2160 and HDMI 2.0, which supports it, isn't natively available on Intel CPUs (not even on the newest Kaby Lake CPUs, apparently).
I also wanted to be able to use an M.2 SSD instead of a 2.5" one. These install neatly into a slot on the rear side of the mainboard and therefore there's no cabling that takes up space in the case or interferes with the fans (which can be a problem in small cases).
Taking all these requirements into account, the Asus Z170I was the best choice.
CPU: Intel Core i7 6700 4x 3.40GHz So.1151
I checked out the new Kaby Lake i7 7700, but it doesn't appear to offer significant performance gains or power savings over the Skylake generation. And, as mentioned above, Kaby Lake still doesn't have native HDMI 2.0 support, your only option is to use an adapter on the DisplayPort connector.
So I stuck with the previous Skylake model. With Linux, it's generally a good idea to not be at the bleeding edge of hardware development. At least during the first couple of months after a new hardware generation is introduced, compatibility can be an issue.
I didn't get the "K" CPU model because I have no interest in overclocking. At 3.40 GHz I think this CPU will run plenty fast for the type of work I do.
CPU cooler + fan: EKL Alpenföhn Silvretta Topblow Cooler
Since the Node 202 is too small to fit a watercooling system without case modifications or disassembling the cooler to install it, I was limited to air cooling. The case supports fans of up to 56 mm height. I thought I'd leave a little headroom and narrowed my search down to a maximum of 53 mm. I picked the EKL because it has the highest airflow volume while still being very quiet even at higher speeds.
RAM: 32GB Corsair Vengeance LPX black DDR4-2133 DIMM CL13 Dual Kit
16 GB would have probably been sufficient, but I figured I might be running a VM or two, so more RAM can't hurt. The mainboard supports 2 x 16 GB modules, so at 32 GB it's maxed out. But 64 GB seems a bit ridiculous anyway, so this seems like the sweet spot.
SSD: 500GB Samsung 960 Evo M.2
I didn't find many options for a ~500 GB M.2 SSD. Samsung generally has a pretty good reputation in this department, so my choice was basically between the 850s, 950s and the newest 960s.
These all come in EVO and PRO flavors, with the PRO version offering more reliable MLC instead of the cheaper TLC modules used in the EVO models, and also including a longer guarantee (5 instead of 3 years for the 960s). But the PRO models are also a lot more expensive, and the theoretical benchmark speed advantages don't necessarily translate into real-world advantages. The 850s are a bit long in the tooth and the 950s don't differ much in price from the newest 960s. So I decided on the 960 EVO as the sweet spot.
If your computing environment has more or less always been made by Apple and you've never dipped your toe into the PC world, all these options, considerations and details will seem very foreign and confusing to you. And, to be honest, the PC hardware world IS confusing and you have to do a lot of research if you're building your own machine and want to make sure everything fits and works together.
On the other hand, this gives you something that you don't get from Apple, at least not nearly to this extent: choice. I was able to configure a PC that exactly fits my requirements; there's nothing missing and there's nothing in the machine that I don't need (like the Touch Bar on the MacBook Pro).
As a bonus, my tailored PC costs a whole chunk less than anything I could buy from Apple: The above configuration adds up to € 1.150, including VAT.
Let me - just for shits and giggles - compare that to getting a 2016 MacBook Pro:
- If anything, I'd go for the 15" model, as 13" have proven to be too small for my aging eyesight. That means I could only get one with that stupid Touch Bar I have absolutely no use for, but that probably adds several hundred Euros to the price.
- Configuring the 2.9 GHz CPU instead of 2.6 GHz will add € 380 to the total, still slower than the PC's 3.4 GHz.
- Configuring the 512 GB SSD instead of 256 GB will add another € 240 to the total. That's almost exactly what I paid for my 512 GB SSD, but with Apple that's just the difference between the 256 GB and the 512 GB one.
- There's no way to get this MacBook Pro with more than 16 GB RAM.
- The machine is not upgradable (internally; of course you can hook up as many peripherals as you like using dongles).
- Total price: € 3.349
OK, so comparing my PC to the MacBook Pro isn't fair. You get a HiDPI screen, the Touch Bar (bleh), portability and more.
So let's compare the PC to the currently available Mac mini. To get the Mac mini even close to my PC's specs I'd have to choose the top of the line configuration, which still leaves a lot to be desired:
- The Mac mini has a 3.0 GHz Haswell i7 CPU which is now three generations old (Broadwell, Skylake and Kaby Lake came after).
- I could only get 16 GB of RAM, which costs an additional € 240 over the default 8 GB.
- Same deal with the SSD as with the MacBook Pro: € 240 extra to get 512 GB.
- The Mac mini can only drive 3840x2160 pixels at 30 Hz.
- Just like with the MacBook Pro, the configuration is not upgradable internally once you've purchased the machine.
- Total price: € 1.849
The only real advantage the Mac mini has is the form factor, but of course that comes at the expense of upgradability.
To be clear: I'm OK paying this "Apple tax", to an extent. In return for the higher price, I get an operating system and 3rd-party app ecosystem that allows me, for the most part and for the time being, to be productive and happy. As a bonus, Apple hardware has great resale value, further offsetting the higher price.
But the prices Apple charges for RAM and SSD upgrades is simply ridiculous. Back when you could still upgrade Macs with aftermarket components, I always bought the Mac with the base RAM and then upgraded using cheaper compatible RAM. But with current machines, you don't have that choice anymore (except in the Mac Pro and iMac).
In any case, it's interesting to look beyond the walled garden sometimes, just to see what's on the other side of the wall.
Check out all articles in the cmd+Q series.
I've been a Mac user since 2003. The better part of those roughly 14 years I've been a happy camper. OS X has been, for the most part, reliable, stable and a pleasure to use on a daily basis. Over the years I've invested heavily (easily thousands of Euros/Dollars) in 3rd-party software, for many of which there are no suitable equivalents on other platforms. These 3rd-party apps are what – in my mind – make the Mac and OS X the most productive and enjoyable platform for me.
Over the last couple of years, though, I've become increasingly frustrated with where Apple seems to be headed as a company and how that course might affect the Mac. Apple's increased focus on iOS, iPhone, Apple Watch, producing their own TV show – basically anything except the Mac – has me worried that the Mac and OS X will soon change in ways I don't want it to or go away entirely. The latter scenario is less likely, at least for the next couple of years. But the former one is just as bad and, I fear, inevitable.
Preparing for the worst
It's still too early to say what Apple's plans for the Mac and macOS really are. As I write this, macOS is still more or less the same familiar and productive work environment I've grown to appreciate. But if Apple decides (or already has decided) to move macOS closer to iOS in more than cosmetic ways, I worry that I'll increasingly have to fight and work around limitations to get my work done. Possibly even to the point where I'll have to question if macOS is enabling my productivity, like it used to, or if it's starting to encumber it.
Whichever way things eventually end up heading, I like to be prepared. If I ever end up having to switch away from the Mac to a different platform, I want to do it on my own schedule. If Apple were to ever announce a new major version of macOS that didn't allow me to do my work in the way I want to anymore, I'd prefer already having an alternative in place rather than having to start looking for one just then.
A second home
In the past, whenever the topic of leaving the Mac came up in discussions, I always said that the only (back then, purely theoretical) alternative for me would be Linux. My first contact with Linux dates all the way back to around 1994 when I installed SuSE Linux on a 386SX-40. Since then I've always had a soft spot for the nerdiness and freedom of Linux.
What's more important, though, is that for a lot of the work I do, Linux is just as good a fit as mac OS, if not a better one. For most of my work developing Shopify stores, themes and apps, all I need is a browser, a code editor and the terminal. The work environment I've set up on the Mac can basically be ported over to Linux 1:1, since all the terminal stuff works there natively anyway or is platform-agnostic.
I've also been running my websites on Linux servers (or VPS) for years now. When I got started, I used cPanel for system administration because doing everything in the shell was too daunting. But the server this blog is hosted on is a Linode running on Ubuntu and I installed it completely from scratch and manage it via ssh in the bash shell.
All that is to say that I'm already fairly comfortable with using Linux. I just haven't used it as a desktop system for actual work.
So here's the plan as it stands now.
I'm going to continue using my Mac as my main work environment, because that's where I'm still the most productive right now. But I'll start setting up a Linux machine on the side to see which parts of my work I can move over and to slowly get comfortable in the new environment.
I'm pretty sure I'll be able to move my web development work over without much issues, but as far as the many productivity apps I also use on the Mac (I'll get to which apps exactly in one of the next posts), I have my doubts.
I think where I'll eventually end up is using the Linux machine for the web development work, but still keeping the Mac around for all the apps for which there are no good replacements on Linux. I generally prefer only having a single work machine (or OS), but I guess you have to be flexible.
Every operating system or platform has its strengths and weaknesses. Of course you could, for the sake of being able to stick to one system, try to make do with the weaknesses. I prefer cherry-picking and using every system for what it's best at.
Check out all articles in the cmd+Q series.