The Battle Station (My Dev Setup 2022)
It’s always fun to see and read about a developers setup and what they are using. Sometimes you discover a new device or a new application that you integrate into your own.
Around when COVID hit I optimized my battle station so that I would have the best setup possible for me to work from home.
The Daily Driver
MacBook Pro (16-inch, 2019) — 2.3ghz 8-Core Intel Core i9, 32GB DDR Memory. I’m still running macOS Big Sur, I’m slow to update to new versions of macOS. I like to wait for all the issues to be ironed out. I’ll update to Monterey pretty soon.
Desk Devices
- Two LG27UK850-W 27" 4K UHD Monitors, the two monitors are elevated off of the desk with a Huanuo Dual Monitor stand.
- Unknown manufacturer standing desk. One of my good friends became a digital nomad and traveled around Europe. I bought his desk from him which he acquired from Salesforce. It’s incredibly solid (and heavy), about 6 feet wide, and when fully extended stands about 5 feet tall. I can’t figure out who makes it or I would suggest it, but its really awesome.
- Chair. I also bought the chair from my friend as well, not sure who makes it. Looking for recommendations on a new chair! Let me know if you have one: @SteveBarbera
- To connect the monitors I’m using HP Thunderbolt Dock 120W G2 Docking Station.
- Logitech MX Master 2s Wireless Mouse. I previously used the Apple Magic Mouse and started to get some bad pains in my wrist. Switching to the Logitech MX Master 2 mouse alleviated the pain.
- DasKeyboard 4 Professional. This is my favorite keyboard of all time, I love the clicky keys and the volume jog wheel. I also use a HyperX Wrist Rest to elevate my wrist position for comfortable typing.
- Sony WH-1000XM4 headphones are one of the most comfortable headphones I’ve ever used. The noise cancelling is great, especially on a plane.
- The mouse and keyboard sit on a SteelSeries QcK Gaming Surface XXL Thick Cloth Mouse Pad.
- Skytech Shiva Gaming Desktop PC — AMD Ryzen 5 2600, RTX 2060, 16GB DDR4, 500GB SSD. I purchased this gaming PC around when COVID hit, it plays everything really well, I really enjoy playing Overwatch, Baldur’s Gate 3 and Civilization 5.
- For my gaming mouse I use the SteelSeries Rival 710 Gaming Mouse. For playing FPS games like Overwatch its nice to be able to control the DPS and also I like that it is wired.
- For playing emulators and controller based games I use the 8Bitdo Pro 2 Bluetooth Controller. It has 4 different profile switches so I can easily connect it to my PC or Mac.
- If I need to chat with other players I use Corsair HS35 — Stereo Gaming Headset.
- On my desk I have a small KVM switch which I use to switch the mouse and keyboard inputs between the Mac and the gaming PC. UGREEN USB Switch Selector KVM Switch. Switching over to the PC is just clicking the KVM button and switching the input on the main monitor.
- For TimeMachine backups and additional data storage I use a Synology DiskStation DS918+ NAS Server. I have 4 Seagate IronWolf 6TB HDDs installed. The NAS is setup to use SHR2 redundancy, which allows for 2 drive protection, with a total usable space of 12TB.
- Network wise I use a Ubiquiti AC Pro. This is by far the best wireless access points out on the market. The UI to manage the network is a pleasure to use.
- In addition to the access point I use the Ubiquti Unifi Security Gateway (USG).
- To help prevent crashes and loss of data, I have the Synology Diskstation connected to a APC UPS 1500VA UPS Battery Backup. If there is a loss of power the battery backup will take over and after 10 minutes the power has not been restored the APC will signal to the Diskstation to gracefully shut down so as not to corrupt or lose any data. The coaxial cable connection is also routed through the APC UPS as a surge protector.
- FREY Sandalwood Coconut Soy Candle
DJ Setup
In addition to the desk setup my office also has a DJ station. The music from my laptop is all routed in to channel 1 on the mixer so that I can rock out during my work day.
- Allen & Heath XONE4D. I started DJing using Traktor. The XONE4D is basically a large 4 channel mappable midi controller with a 3 band equalizer. Over the last couple of days I’ve switched over to using CDJs for my mixing so the Midi controller portion is not used as much.
- Pioneer XDJ-1000MK2. I’ve really been enjoying these CDJs, the touch screen and search functionality makes it super easy to pick out that elusive track. It’s also great because when I have friends over they can plug in their USB sticks and get right to mixing.
- Pioneer RMX-1000 effects and sampler. I call this the DJ fidget box. Lots of fun to play around with but I haven’t really mastered it to effectively and consistently add to my DJing.
- MacBook Pro 15" (Mid 2015) 2.5Ghz Intel Core i7, 16GB DDR3. This is an old Mac I use to record my sets run Traktor, and manage my music with Rekordbox.
- M-Audio M-Track | Two-Channel Portable USB Audio and MIDI Interface. This audio interface allows me to connect my main MacBook Pro to the mixer so I can listen to and record sets.
- KRK Rokit 8 Gen 3 Powered Studio Monitors
- Berhinger K10S subwoofer. I was gifted this subwoofer in 2021! I brought my DJ setup to Austin for a party weekend and the house all chipped in to get a subwoofer. At the end of the weekend they gifted it to me!
- V-Moda Crossfade LP2 headphones
Apps
- Browser: FireFox Developer Edition
- Firefox Extensions: uBlock Origin, Vimium, Markdown Here
- Terminal: iTerm 2
- Terminal Font: MonoLisa
- Package managment: homebrew
- Shell: Zsh with oh-my-zsh
- IDE/TextEditor: Vim
- Multiplexer: tmux
- Terminal Enhancer: Fig.io.
- Password Manager: pass. Check out the Fig completion spec I wrote!
- TODO List: TaskWarrior. Also wrote a Fig completion spec for this as well!
- Window Management: Spectacle
- Git GUI: fork, also started playing around with GitKraken
- Productivity Enhancers: Alfred and BetterTouchTool
- Database Management: TablePlus, mycli, and pgcli
- Docker Management: lazydocker
- Menu Meters: Stats
- Audio Editing: Audacity
- Network Monitoring and Firewall: Little Snitch
- Messaging: Signal, Discord, and Slack
- Development Environment Management: Laravel Valet and PHPMon
- Sharing local sites: Expose
- API Testing: Postman
- RSS Reader: Reeder 5
- GPG: GPG Suite
- Game Emulation: OpenEmu
Terminal Commands and Aliases
I’m a huge fan of the CLI and customizing my environment to do more with less. Here are a couple of CLI commands that help me get information and move around quicker.
- Autojump: In the command line I can hop around to different directories by just typing in:
j down
and it will take me to the~/Downloads
directory. - TLDR: Forgot how
grep
orsed
works? Just type intldr sed
for some quick documentation on the command. - jq: Parse JSON documents, filter, extract and reorganize the data.
- mop: Stock market ticker for hackers
- wttr: Get the weather in your command line
- bat: a clone with
cat
with some nice enhancements - ncdu: a replacement for
du
gives a great overview of disk usage. I have this aliased toalias du="ncdu --color dark -xe
. - Want to impress your friends and co-workers with a cool matrix text scroll?
function matrix() {
while :;do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(printf "\U$(($RANDOM % 500))");sleep 0.05;done|awk '{a[$3]=0;for (x in a){o=a[x];a[x]=a[x]+1;printf "\033[%s;%sH\033[2;32m%s",o,x,$4;printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,$4;if (a[x] >= $1){a[x]=0;} }}'
}
Vim Plugins
I pretty much use Vim exclusively for my development. I’ve tried moving to VSCode but the shortcuts and hotkeys I have setup in Vim have been committed to muscle memory. So when moving to VSCode I just feel slow. Some Vim plugins I use to help me get around:
- COC.nvim: A extension that provides contextual menus for snippets, code-completion, and code definitions.
- Vim-snippets: Provides language default snippets and allows me to create my own.
- Vim-surround: Delete, change, and add “surroundings” to text.
- Nerdtree: A great directory tree explorer.
- Vim-easymotion: Jump around your document with speed!
- Syntastic: Language syntax checking.
- vim-polyglot: Syntax highlighting for pretty much every language.
- Vim-commentary: comment out lines of code with ease.
- fzf: The command line fuzzy finder for vim
- vim-test: Run your tests at the speed of thought.
- tender.vim: My color theme for vim.
Thanks for reviewing my setup! Let me know if anything in here helped you or you would like some additional details about anything in particular. Also if you have any suggestions for devices, code, or apps let me know! I’m always exploring new tools.