For the better part of 4 years I’ve tried to keep my workflow as platform agnostic as possible. I’ve known for a long time that the switch to Linux would be permanent someday. Still there are some areas where the two platforms diverge enough to mess with muscle memory.
What is the same?
I made the full switch to Vim back in 2012, initially using a GUI version to ease myself into it, then later full-on terminal Vim. This was part of my long term plan to be Cross-platform ready. By that time I was using Sublime Text which was already cross-platform, but there were significant enough differences that I figured Vim was a better editor to throw my time into.
On top of that I started using a Vim dotfile distribution (spf13.vim) that was touted as being cross-platform as possible. So between Vim and spf13, there were really no changes to my code editing workflow.
This was not new to me though as I have been running this set-up on both Linux and Mac (an even Windows) for a few years now.
Terminal + Tmux
On Mac I had been using iTerm2 for a number of years, only because it was the closets thing I could find to a proper terminal emulator like the many choices there are on Linux. I didn’t make use of iTerm2’s GUI implementation of tmux though, opting instead to use the real tmux. Now that I’m on Linux full time I am using gnome-terminal and tmux. So to look at my Mac and Linux machines side-by-side on full screen mode, they are indistinguishable from one another.
All the CLI tools I make use of in my daily workflow have not changed. If anything, they have gotten better since they’re all built for Linux anyhow. Apps like NodeJS, Git, tmux, Vagrant, build tools and so on are easier to install (without the need for Homebrew) and don’t interfere with the defaults installed by Apple.
Firefox, Chrome, Opera… same.
What is different
Switching back to Ctrl-c, Ctrl-x and Ctrl-v for copy and paste was never a difficult transition for me since Cmd-c, Cmd-x and Cmd-v never felt natural. Where I do get thrown off from time to time is in the terminal where I have to Shft-Ctrl-C and shft-Ctrl-V.
On Macs there is no Super-key. They are all just modifiers — Shift, Control, Option/Alt and Command. I like having a Super-key in Linux, but it comes at the expense of that extra modifier. Without it, I’m left with having to make some pretty strange key-configs just to access special characters on the keyboard.
For instance, the em dash… on a mac I can use modifier combinations that include the option key and the minus sign and produce variations of longer dashes. On Linux I’ve had to set up the Caps Lock key as my “Compose Key” which allows me to then type “- – – .” to produce the same long dash. Learning all the special character combinations may take me a while.
The best part about switching to Linux as a web app developer? Using the F5 key to refresh and F12 key for developer tools in Google Chrome! Nothing sucked more on OS X then contorting my fingers to type Cmd-R and Cmd-Option+I for those same two features.
“It just works”
One thing Apple really does have going for it is that they make the software and the hardware and for the most part, everything just works. The I/O, the apps, the peripherals, the drivers…
Linux requires a more hands-on approach. If the network card isn’t supported, figure it out. If your trackpad doesn’t work, figure it out. If your CPU’s are burning alive, figure it out. If the app you’re using doesn’t launch, figure it out.
Thankfully it’s not hard to get community support for these sorts of issues and there are all kinds of lists of supported hardware, but if you’re not comfortable diagnosing and trouble shooting these issues then the switch to Linux is not for you.
Apple makes amazing hardware. No one will dispute that. But you can only run Apple’s OS X on Apple hardware (officially). However, with Linux, you can hypothetically run the OS on any hardware — including Apple hardware like Macbook Pros.
The advantage here is that you can have a relatively awesome development setup on low cost — or even upgradable hardware. You can start out developing on a Lenovo T410 and eventually work yourself into a Macbook Pro without ever having to change your workflow, the OS, or the tools your use.
Graphics software. This will be a major point of contention to any web developer who leans more towards the design side. I don’t spend a lot of time editing graphics, and even when I did, I haven’t touched an Adobe product since CS2 was a thing. I did make use of apps like Pixelmater and Sketch which are obviously Mac-only applications.
On Linux I am stuck with Gimp, Darktable and Inkscape. All of which are more than capable of handling my basic needs, but there is no denying that they are not replacements for anything Adobe has release in the last decade. If you’re heavy into design, this might be an issue. For me, I’m looking forward to getting to know what these tools are capable of.
Password Locker. LastPass… That’s all I need to say. When storing passwords for servers, sites, databases and such, don’t ever get locked into a proprietary platform. It’s not fun trying to get out.
My transition to Linux has been a long time in the making. I knew exactly what I getting into, what the limitations were, what the challenges would be. This switch has been in the back of mind for many years and the preparation has paid off.