A typical day for me involves using three computers: one at the ofﬁce, a laptop on the go and an iMac at home. This setup gets really annoying pretty quick because it’s so difﬁcult to have the same environment installed on all of them. Settings, apps, data, documents and pretty much everything can be difﬁrent across the machines.
So I wanted to solve this problem once and for all. I’m going to explain how I setup my environment so I can have a similar experience while working on any of them.
I’m using macOS since all machines are Apple-made. As a result of this, pretty much anything else I own is also made by Apple, so I can have a uniﬁed experience all the time. It’s not pleasant to think differently each time I use a machine, so I opted for one single platform: Apple.
I use Dropbox for storing my documents (screenshots, PDF docs, etc), iCloud for storing App data and Amazon Cloud Drive for storing my huge amount of Photos and Videos that need backing up (GoPro and Phone videos, DSLR photos, etc).
Editor and Terminal
Now this is the most tricky part. First let me mention what I use:
- Atom (editor)
- iTerm (terminal)
- Fish (shell)
- Fisherman (shell package manager)
- Home Brew (macOS package manager)
By default, none of of these tools support cloud-syncing or any kind of syncing for that matter, and it’s very time consuming to conﬁgure them on each machine separately. And what if you add a package or install something on one machine? You’d want to have those changes across all machines.
One solution to this problem is moving all conﬁg ﬁles related to these tools to cloud (eg. Dropbox) and symlinking the originals. But that’s very difﬁcult to do manually.
Enters Mackup, a great command-line tool to do that really easily. It copies all conﬁg ﬁles to cloud (supports all major cloud platforms) and automatically symlinks to original locations. Supports many applications by default and it even supports backing up itself.
Personally, I prefer to pick and choose the applications I want to have backed up to the cloud, so I created a conﬁg ﬁle in this location:
[storage] engine = icloud [applications_to_sync] fish fisherman atom bettertouchtool mackup
Note that right now it doesn’t support
fisherman out of the box. I have added the support for both of them and submitted a PR to Mackup repo. Please upvote it if you ﬁnd it useful.
- After installing a new ﬁsherman package on one machine, you have to run
fisher upon other machines to actually update and install the packages
- After installing Atom plugins on one machine, sometimes you need to run
apm installon other machines to have the new packages across.
I use some other nice apps which support syncing right out of the box: