This post describes my working from home setup as workplace, hardware and software.
Because of the COVID-19 pandemic I’ve been working mostly from home for about two years now (at the time of writing) and I think that for my personal liking this will (hopefully) be my stable mode of work. I’d like to share my setup hoping to push more IT workers into the remote mindset which, in my humble opinion, is a better way to work in general1.
In a future post, I’ll share some thoughts on this topic with a little focus on the Italian culture of work.
Room and forniture
Let’s start with the room: I live with my wife in an apartment we have recently renovated, it comes from an old house which has been split into several housing units, therefore the rooms are large and spacious. Every room has some electrical outlets that support full 16A current and at least one RJ45 Cat6 port. All the ethernet ports are connected to a gigabit ethernet switch embedded in the wall cabinet.
With the aim of dedicating a room not only to working activity but also to free time, we decide to move my desk and all the gym tools we have to build a room for physical training and business commitment.
The table is a modular desk from Ikea: GERTON table top (155x75cm) and TORSKLINT legs (75cm) both are made of solid beech wood which gives me a nice feeling of stability. My next goal for the table is to move from fixed legs to a height-adjustable stand (probably a simple one like “TROTTEN”) so I’ll try to balance the time sitting and standing every day.
On the table, I’ve got a pen holder and a card organizer of the IKEA DRÖNJÖNS series. To protect the table from wearing I’ve placed a big Amazon Basics desk mat (90x42cm) in the palm rest area.
To minimize strain and fatigue of my eyes (mostly in late hours in winter) I’ve installed a LED desk lamp with a folding arm that I can move behind (to provide a uniform backlight) and in front of the monitor (when I need to write on paper or do some manual work).
The chair’s also from IKEA: it’s a MARKUS with dark grey fabric, I like it because it has a mesh backrest that favors ventilation and is adjustable in many ways.
My setup consists of two computers:
- an Intel MacBook Pro (13-inch, 2020) that belongs to the company I work for
- a custom build PC2 that is for family use
As a monitor, I have an LG 32UL500 (32”, 4K) that is connected to both computers (via DisplayPort to the PC and HDMI to the Mac). The large size allows me to use DPI scaling at 200% both in Windows and macOS, the resulting equivalent resolution is therefore Full HD; the advantage is to see everything extremely sharp so I can sit at the correct distance, the disadvantage is the loss of space on the screen (which is less of a problem). Instead of the original stand, I installed an Amazon Basics mobile arm to be able to orient and move the monitor freely.
On the input accessories side, I have Logitech MX Vertical Mouse and MX Keys Keyboard, both paired with the Mac and PC. I love the fact that they are both wireless and with the ability to instantly change the device.
Working remotely requires you to spend a lot of time collaborating via video chat and therefore it is very important to invest in a good audio/video setup.
I found a very interesting bundle from Creative for a pair of speakers and headphones: “Creative T60 + Creative Chat”. Creative T60 offers a plethora of connectivity options, including USB-C audio (connected to the Mac), Bluetooth 5, AUX (connected to the PC), integrated headphone and microphone jacks, and a convenient toggle switch for easily switching between speakers and headphones. Creative Chat features a built-in boom microphone (which is liftable) with a passive condenser and noise reduction.
The headphones are hung on the desk via a support attached to the front edge of the desk.
It’s not easy to wear headphones for hours so I opted to purchase an additional desktop USB microphone from Yanmai, it’s a cardioid condenser microphone with a metal mesh, a double layer pop filter and a little tripod. In this way, I can use the speakers and the microphone without wearing headphones while maintaining excellent audio quality.
For the video input, I decided not to use the integrated webcam of the Mac but to install a dedicated one with a better resolution (FullHD) that I can move and orient together with the monitor from AUKEY.
Finally, to increase the type of ports offered by the Mac, I purchased a small USB HUB that converts two of the Thunderbolt 3 ports into two USB-A ports (10 Gbps) and one HDMI (with 4K 60Hz support) from UGREEN. It is the same color and thickness as the Mac!
Until recently I could consider myself a full-time Java Developer and Software Architect, but lately, the time I dedicate to these activities has greatly diminished in favor of my current role as a Cyber Security Specialist. Nevertheless, the software I use is both related to the world of development and productivity.
In many cases, these applications are available for both Mac and Windows, but since most of the time I spend is using macOS I will start with the latter and indicate only the differences in my setup for Windows.
Links or names with icon refer to closed-source apps!
Starting with the
shell (which it
zsh) the first two things I’ve installed are “Homebrew” Package Manager and “Oh My Zsh”.
I try to install everything using Homebrew, even and above all GUI applications. The most useful Homebrew commands to me are:
- Homebrew Bundle
- an alias to upgrade all outdated packages:
alias brewup='brew update; brew upgrade; brew cleanup --prune=all -s; brew doctor'
Oh My Zsh
Oh My Zsh most notable customization:
- Spaceship ZSH minimalistic, powerful and extremely customizable Zsh prompt
- sdkman for JDKs and Maven
asdf for everithing else (like
- fzf command-line fuzzy finder
- Linux virtual machines as Docker Desktop / light Linux VM alternative
- dotbot A tool that bootstraps your dotfiles
The terminal itself
I’ve always used the legendary iTerm2 but now I’m evaluating Alacritty because it’s cross-platform, it allows me to configure it through a more git-friendly YAML file(s) and it’s reasonably fast. I’ve also made an Alacritty Key Bindings for macOS Italian Logitech MX Keys if you want to replicate my setup.
Develop and work
As an all-in-one editor, my choice goes to Visual Studio Code but if I need a more powerful Java IDE I prefer using Eclipse IDE. For tinkering and exploring API I like to use Insomnia.
My favorite Browser is Firefox Developer Edition (so I can preview features before the “standard” edition) with these extensions:
- Clear URLs
- Dark Reader
- Enhancer for YouTube
- Firefox Multi-Account Containers
- HTTPS Everywhere
- I don’t care about cookies
- Temporary Containers
- Undo Close Tab
- User-Agent Switcher & Modify Header (disabled, and enabled when needed)
Since we use Office 365 in the company, I have installed the entire Office productivity suite plus Microsoft Teams to communicate with colleagues. To keep in touch with customers and suppliers, I also installed Slack and zoom (which I don’t particularly like). To access personal mail and contacts I use Mimestream, Whatsapp and Telegram.
Other tools that I like and that help me with minor tasks are:
- Stats macOS system monitor in your menu bar
- AltTab Windows alt-tab on macOS
- Maccy Lightweight clipboard manager for macOS
- iHosts iHosts is perfect for editing /etc/hosts on Mac OS X
- Browsersaurus The browser prompter for macOS
- Finicky A macOS app for customizing which browser to start
- Bitwarden Bitwarden client applications
- Apparency The App That Opens Apps
- Suspicious Package An Application for Inspecting macOS Installer Packages
- Amphetamine Powerful keep-awake utility
- GPG Keychain Manage OpenPGP keys
- The Unarchiver Extract files from many archive formats
- Objective-See’s Tools Free, open-source, tools to secure your Mac
As I mentioned earlier, much of the applications I use are cross-platform and are available for both macOS and Windows. Below are the ones that are exclusive to Windows and I find worthy of mention.
Disclaimer: I am still using Windows 10, I haven’t made the jump to version 11 yet.
Terminal and CLI tools
As a terminal I use the excellent Windows Terminal3, that is customizable via JSON file and supports multiple profiles (CMD, Powershell, etc.). I’ve upgraded the integrated Windows Powershell to Powershell (Core) 7.x and for package management I use scoop/shovel (I’ve also made a bucket!).
Other notable tools:
- To manage Docker and other Linux VMs i use the Windows Subsystem for Linux (WSL)
- Files App A modern replacement for Explorer
- SSHFS-Win Manager A GUI for SSHFS
- 7-Zip Extract files from many archive formats
- AltDrag Easily drag windows when pressing the alt key
- PowerToys Utilities to customize Windows
- Browserselect Utility to dynamically select the browser
Intel Core i9-9900, 32GB DDR4-2666, Radeon RX 580 8GB, WD Black SN750. ↩