Basic Productivity Software Setup
Tags: productivity, developer, work, macos
Published: 2021-08-24 19:35:15

With the pandemic, the most fortunate of us were moved to working from home, and that often meant using our personal computers to do our jobs (often due to choice), but that meant installing "work stuff" into our machines. How can you keep stuff separated and get a more productive environment, while also maintaining stuff clean for your free time?

Small disclaimer: some of these tips only apply to MacOS users, but most of them are perfectly compatible with any Unix environment 🐧

---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hpdod5azqfcufybfalcf.png) 
 
## 1. Use different browsers 🕸
Keeping a browser for your personal, free time and a separate one for your job is crucial: more often than not I find myself having dozens of tabs related to some code I'm working on open, and if I had to juggle that with my personal tabs it would be an immense memory hog, while also a terrible chore. Keeping a different browser just for your work eliminates that problem.

You can even double down on that and use browsers that sync to make it possible to work on multiple machines! For example, I use Safari as my personal browser so it syncs with my iPhone and iPad, and to work I use Google Chrome, which in turn syncs up with my Windows' Chrome should I ever need to use it, or even my Ubuntu VM! It's always helpful 👹

---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02hkwf45tzs835vgjjsa.png)
 

## 2. Use a browser manager 🤵‍♀️🤵‍♂️
Good, you've decided to keep a separate browser for each environment. But that means you're logged off of your, say, Atlassian account on your personal browser, which is set as your primary browser. Now you have to copy every Jira ticket or BitBucket Pull Request link sent on slack and paste it on your work browser. That works... but that's not that efficient is it?

Some more eager people have already had this issue and decided to make it easier on themselves, and they were kind enough to share it with the world! Enter [Finicky](https://github.com/johnste/finicky), a free, open source, browser manager.

What Finicky does in essence is really simple: it allows you to code rules for every URL you click to open up on a given browser. You can set URL's that contain a certain substring to open on Firefox, URL's from Slack on Chrome and everything else on Safari, for example! It is really handy, the [installation](https://github.com/johnste/finicky#installation) is very straightforward using `brew` and there are [many possibilities](https://github.com/johnste/finicky/wiki/Configuration) to configure at your heart's content!

Here's my _very_ small and simple configuration:
```js
module.exports = {
  defaultBrowser: "Safari",
  options: {
    // Hide the finicky icon from the top bar
    hideIcon: false
  },
  handlers: [
    {
      // Open any link clicked in Slack in Chrome
      match: ({ opener }) =>
        opener.bundleId === "com.tinyspeck.slackmacgap",
      browser: "Google Chrome"
    }
  ]
};
```

Should you want anything with a GUI, the folks at Finicky themselves recommend [Browserosaurus](https://github.com/will-stone/browserosaurus) so go ahead and take a look!

---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vhqblgqtcazyz617kvy2.png)
 
## 3. Have a single messenger app for your personal stuff 💬
Many of us use more than one messaging app, after all there are tons of them nowadays: Facebook Messenger, Telegram, WhatsApp, Discord... and having to juggle all that open along with the job's ones like Slack and Teams is a hassle.

Some might already be familiar with [Franz](https://meetfranz.com), a very popular program that unifies all those messaging apps into a single one. Franz is a very capable and very practical solution and if you have an Intel Mac or any other `x86_64` machine it should be plenty! But [looks like it does not play well with M1 Macs yet](https://github.com/meetfranz/franz/issues/1946). For that then I decided to look elsewhere and found it's "offspring" [Ferdi](https://getferdi.com), which has most (if not all) of it's features -- it is actually _based off of Franz_ -- and works very well on Apple Silicon, so be sure to give it a shot!

---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7sd6y1bcmje2008cvtpr.png) 

## 4. Try out the new Focus mode on MacOS Monterey 🖥
This is still on Beta at the time of writing the article, but the new Focus Mode introduced in WWDC2021 for [MacOS Monterey](https://www.apple.com/macos/monterey-preview/) looks like a very handy tool to not only tell your pesky iMessage contacts (and maybe, in the future, any app that feeds off of it's API?) that you're focused working but also hides any notification you do not want in that profile -- and it also syncs up through your apple devices! Be sure to take a look!

---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iq7m6xqggub938sz74j9.png)

## 5. Use a better Terminal emulator 💻
Yes, MacOS' good ol' terminal gets the job done alright, but it only does an 'OK Job' at that, just like Ubuntu's base terminal emulator or WSL's standard emulator. But what if you want _more_?

But _what could be **more**_? Well, for starters, opening more than one tab. While you wait your pesky `make` command run for a couple minutes, why should you need an entire new _window_ to keep working on your terminal? That's where [iTerm2](https://iterm2.com) comes to the rescue.

It is very easy to install, has [a ton of features](https://iterm2.com/features.html) and, to those who care (like me), it _is_ Apple Silicon ready!
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x0owt8sreafihj50k4nl.png)
 
---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmtqz8u72wr63u6xdkhu.png)

## 6. Get SiliconInfo if you're on Apple Silicon 
Many of us are currently running on the new (at the time of writing) M1 Macs and we often need (or want) to know if our current application is running on old `x86` architecture or the current `arm64v8` one. Well, [Silicon Info](https://apps.apple.com/us/app/silicon-info/id1542271266?mt=12) is a pretty straightforward Mac app that adds an icon to your menu bar that can tell you with a glance if you opened the right version of an app! It is pretty handy, yet pretty simple.

---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0gsvja6us63bj3vtnwc0.png)

## 7. Have `x86` versions of compatible apps available ⚙️
For some reason, you might need to run the `x86` version of an app on your Apple Silicon Mac (compatibility check?), but by default your app opens up on Apple Silicon mode. Well, you can _force it_ to run under the new **Rosetta2** environment with a few clicks!

Open **Finder** and go to your **Applications** folder. Duplicate the app you want, for example the previously mentioned **iTerm2**, and rename it to something like **Rosetta-iTerm2**. Open up it's info panel and select **Open using Rosetta**, and that is it!
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w436nma78ify1bjr6tm6.png)

Now whenever you open that copy of the app, it will be running on `x86` architecture!

---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7n6xcfjh2oa8mb4qyadn.png)
 
## 8. Get a better `shell` 🐚
Yes, the good ol' `bash` shell is fine, but from Catalina onwards Apple replaced it with `zsh` with no further explanation, but one would assume its because `bash` is aging and `zsh` is the new hot thing. Well, along with it you can install [`oh-my-zsh`](http://ohmyz.sh) and customize even further your terminal, not only to make it cooler and more interesting but also more _informative_, enhancing your productivity. All of that with some minor tweaks.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a08yt3l4uv4wbevr49oz.png)
With a glance I can see what folder I'm in (as usual), what git branch I'm on, and if that branch is dirty or not! Pretty handy right? 

---
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/onsp83h392l6ki11dip7.png)

## 9. Start using `alias`-es! 🕵️‍♀️🕵️‍♂️
Let's face it, there are probably at least a few commands you use very regularly that are long and boring or easy to mistype. Why should you type it all the time?

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5agsemgsozzfzxtxxd66.png) 

Most (maybe all?) shells allow you to create aliases for those commands, so take advantage of that! Open your `.zshrc` or `.bashrc` file and add a new one with a simple line!

```sh
alias shortcut='long command'
```

And then boom! You're all set!
 
---
For now, that is it! A very brief productivity setup to help you in your work from home life. Whenever I add something to my own setup I'll be sure to add it here as well!