I like technology. I really like technology. Not only is programming my job, but it is also my passion. Some programmers stick to a single operating system or technology stack, but I like to experiment and try new things out. That means, however, that I often jump back and forth between platforms: particularly between Windows and Mac.
While I thoroughly enjoy trying out new Linux distros and using Linux on servers, Linux has never stuck as a desktop operating system for me because there is always some piece of critical software missing for my hobbies. I know that open source enthusiasts will say there are open source alternatives, but so far every one I have tried has not been able to come close to the quality of their commercial equivalents.
But that is a debate for another day…
Portability and Software
The first thing you notice when you regularly switch platforms is that you need access to your most important data. What that is varies from person to person, but for me, that includes email, my calendars, my todo lists, my notes and several of my files.
There are many great solutions for this problem and I am not going to say that one is better than the other because it highly depends on your needs.
I will, however, say that a combination between Apple’s iCloud and Google Gmail/Drive/Calendar/etc works well for me. I use Gmail for email and todos, Google Drive for any files and notes I need access to on all platforms and Google Calendar for my calendars.
I do, however, have an iPhone and iPad that I use more than I probably should which means I have my photos in Apple iCloud and I share a few notes, calendars, etc with my wife who is also invested in the Apple ecosystem.
I also have a couple of email addresses through a smaller host. For those email accounts, I use Apple Mail on all Apple platforms and Mozilla Thunderbird on Windows.
That combination seems to work rather well for me. Since Google’s is largely web-based it is exactly the same on both Mac and Windows which is a huge advantage to Apple’s half-baked iCloud application for Windows or Microsoft’s shoddy support for OneDrive on Mac.
Source Code and Development
Since I am a developer, I have my projects spread across both platforms. Obviously, I don’t use Google Drive to synchronize them. Instead, I use Git and push to/pull from GitHub where I have a number of public and private repositories.
Since I primarily use Node.js/TypeScript, my projects are platform-agnostic and I can easily switch between Mac and Windows.
As my editor, I use Visual Studio Code which works just as well on both macOS and Windows. My settings and keyboard shortcuts and automatically synchronized via my GitHub account and so I don’t have to worry about keeping them in sync either.
Keyboard Shortcuts
I am going to keep this section short because it is a topic that no one can really do anything about. Keyboard shortcuts are just going to be different on different platforms. All I can say is that you get used to switching between the two if you switch regularly. I have noticed though that I have troubles switching if I don’t regularly switch because I get used to one set more than the other.
Hardware
Since I rarely use both platforms at the same time, I have a single set of monitors that are hooked up to both my Mac and PC. I switch between the two by changing the input sources. One of my monitors serves as a USB hub for my accessories which means they switch between platforms as well. The other monitor has the ability to plug speakers into it which means my speakers also switch between platforms depending on the input source.
If I do need to use both my Mac and PC at the same time, I have a MacBook, so I just pull it out, open it up and use the built-in screen while my desktop PC stays on my main monitors.
My wireless keyboard also allows me to switch input sources. I use a Logitech MX Keys keyboard which allows me to set up three different bluetooth inputs and switch between them with just a push of a button.
I do use two separate mice because I like Apple’s Magic Mouse for Mac. For my PC, I just use a generic two-button-with-a-middle-wheel mouse from Amazon Basics.
Conclusion
I have to admit that when I started this post, I thought there would be more to write about, but I can’t really think of anything else to say about it right now.
The most important aspects for me are synchronization and not having my physical desktop full of keyboards, mice and screens. I need access to my most important data on both machines and I try to minimize the amount of hardware I need for both systems.
While switching between platforms brings its own challenges (think keyboard shortcuts!), I thoroughly enjoy it. They each have their own strengths and quirks and the user experience is different on each one — all of which keeps the computing experience from getting too stale for me.
Do you regularly switch between platforms? What tools do you use to synchronize your data? Did I forget something that you think might be important? Let me know in the comments below!