My Computer Setup
After posting my setup to r/unixporn I received many questions about my system, why I do things certain ways, and what programs I use to achieve a "Tranquil" computing environment
Questions such as:
"Why do you use that program or this program?"
"Why do you use Linux?"
"How do you actually get work done on that weird keyboard?"
Today I am going to dispell all the rumors, and get down to business about how I really use my system, the hardware I'm running, and how you can emulate what I run by simply cloning my git repos and dotfiles located here.
This is going to be a long one, so buckle up, grab a coffee, and let's get started.
Here's the goal:
I want to be able to run every program with as little latency as possible.
Most hardware, if you run similar software and configuration to what I run, can do this.
That's because I use exceptionally memory light programs as I want all of my computer's power to be focused 100% on getting actual work done. Any 10 year old laptop will do in most cases (that's not to say you can run my video editing software, but you get the point.)
The phenomenon I'm trying to avoid is seen in lower-power hardware when you open up a dozen chrome tabs - everything slows to a crawl. I want to avoid this at all costs. My desktop hardware is ridiculous overkill. That's because I don't want to waste time on anything that I can avoid wasting time on.
I run an ITX build in a chassis that is essentially an open air test bench with it's cooling due to fan placement, the water loop, and venting on the case. You may be saying "Josh! Why are you running ITX when you could be running a 10 foot tall tower with ample cooling?" Legitimate argument, hypothetical person. The cost and heartache that comes from having to plan out a small form factor build such as this is not worth the effort, especially in a niche case such as my Sliger 570. Next time, I will buy a mainstream case that supports regular hardware, and debatable on the watercooling.
Edit: I no longer run an ITX System and have moved all hardware to a 4U server chassis
I run 32gb of ram, a ryzen 5900x, a GTX 3080, and a 1tb sabrent rocket ssd. I want to go fast, I spend a lot of time at the computer, and I need that time spent wisely.
This setup can run Blender and Davinci Resolve, render a 8k video clip, compile programs, edit photos with no issue, and run virtual machine after virtual machine, SSH'd into servers all over the world. And it won't break a sweat.
I run various Thinkpads as my laptops (I have a collection of 4).
I don't edit video on them generally - or do anything too intensive - but I still run the same software so that I can have mirrors of what I work on at home as well on the go.
And no, I don't game, even with a 3080. A shame, really, but I can't be bothered anymore.
I don't store most of my files on either computer. I have a server that is hooked up to my network that has all files, books, videos, pictures, what have you on it. That way I don't have to worry about syncing computers - I do all my work off of the server by mounting it as a remote filesystem on my laptop and desktop.
I recommend everyone do this - syncing things across computers is the worst thing ever. If you need help with this, drop a comment and I will do a video/post in the future.
Keyboard - Ergodox EZ
If you're not aware of this one, you should be, it has effectively eliminated shoulder pain for me, allowing me to type shoulder width apart and open up my posture. This should be a standard for how keyboards are designed. I will do an expose piece on this perhaps in the future.
I have a Planck EZ for travelling, and I love that keyboard to death as well.
Mouse - MX Ergo
The Ergo is an awesome trackball. I had a finger operated trackball for about a week. I hated it. Thumb operation is better for me. The Ergo is also built very well which is expected from Logitech. Other trackballs that I've tried don't compare in build quality. I have examined the Kensington Expert and may explore it in the future.
Headphones - Sony WH 1000MX2
Really good noise cancelling headphones, easy to travel with.
Microphone and Webcam - Shure SM7B with Blue Mic Arm and Logitech Brio
Monitors - Dual Acer 4k in one landscape, one portrait orientation
Cause I write a lot of code, and it's nice to see more of it.
I am leaning toward axing the mult-monitor and going with a single 32" 4k display. Less clutter, less distraction, simpler. I value all of that nowadays.
Drawing Tablet: Wacom Intuos Pro Small
For signing stuff and creating markups for devs/employees.
2. Operating System
In the past I cared about distribution, BSD vs Linux, etc. etc.
It's silly to evangelize an operating system (or worse these days, a distribution of an operating system). I just work on what I know works, while allowing me to run the most productive setup for me.
I like the Arch package manager and repositories, so I run a derivative of Arch (I cannot be bothered to install this by hand, I have money to make and time to save).
Manjaro, Artix, Anarchy, Garuda, Endeavor, whatever. It doesn't matter, as long as it has "Pacman -S" on it, I am happy. Contrary to this, I run Debian on the server, OpenBSD as a bastion.
Edit: I have just gone with Endeavour for all my local machines.
Linux is the best desktop Operating System if you are a programmer or care about freedom. I am both of these, and the additional ability to port my desktop wherever I go is phenomenal. Copy over the config files and away you go.
The first thing you have to consider is use case.
I edit video in 4k a lot. I write a lot. I write a lot of code, and I have to have stable programs that allow me to keep everything for my business in order. Here's the list:
BSPWM. The goal is to be lightweight, KDE was the previous Display manager I used that I will likely not use anymore. I have Gnome as a backup if X breaks.
As I am getting into Emacs more, I may honestly use it for 90% of what I do on a daily basis and this is completely irrelevant. Who knows. Check back in a year.
As an update to this article, I am still using BSPWM with the following programs. I spent a lot of time on the configuration, and it works exceptionally well. I don't see myself pulling a DistroTube in the future and hopping around Window Managers. It's a waste of time, and then I have to learn Haskell or C or something.
Learning is never a waste of time, but jumping around for 1% productivity when I have optimized as far as I have seems silly
If you're familiar with MacOS this is very similar to spotlight and just as fast. Fully configurable to search the web, launch programs, and find files.
Dunst. Not Kirsten. Configurable and seems to just work in most instances. Looks good, too.
Text Editor and Programming
I have been using Vim (Neovim to be exact) for the past couple years. I really like it. I have been getting more into emacs as time has gone on, as I think emacs is likely the endgame of all editors, and can be used 20 years from now, just as it was used 40 years prior.
Emacs will be the future for me. I am slowly wading into it, and away from using Vim in the terminal. I will still probably use vi or a derivative of it as it's on server almost always by default and takes up like no resources.
It should be said that Vim keybindings are superior to Emacs, as I don't want carpel tunnel at the age of 28, so I use Doom Emacs, where the space bar replaces nearly all of the C-c stuff.
Another Update since Writing this Article in early 2021 - I use Emacs fulltime now, and vim on the serverside of things. I was right and will never go back to any GUI editor. Even for writing, I write everything in Emacs.
I don't like Google, so I steer clear of Chrome. I don't mind Brave, but I prefer Firefox.
I use brave for Day to Day, as it's fairly easy to configure, and Firefox for development and more "covert" browsing.
I use the Developer's Edition as it's got a couple more tools and gets updated frequently. I use these extensions (both in firefox and Brave):
- React Developer Tools
- Redux DevTools
- Privacy Badger
- HTTPS Everywhere
- UBlock Origin
- Cookie Auto Delete
I use Chromium for social media. Otherwise I never touch it.
Update: I use Brave and never touch Firefox anymore after their mid 2021 update.
Update 2: I use Qutebrowser as my main browser, and firefox for developement. Chromium has been dropped from my machines as I refuse to participate in social media.
Again, I am learning the Emacs world and moving into that full time, so I will use MU4E a lot more, Thunderbird is a great GUI alternative, has PGP integrated seamlessly, and is easy to add all of your (way too many) Email accounts.
Again, looking into emacs stuff. I use Termite exclusively as it's easy to configure, looks good, allows images in terminal, and that's about it.
I'm sure I use whatever the TTY is on server more than this these days.
If you don't know what a command line is, I think it's probably the most important thing you can learn right now. Go, do it.
Update: Termite is no longer being maintained, so Alacritty is the terminal of choice now. I recommend it highly.
I really like what BlackMagic Design is doing with their cameras, and Davinci is an extension of this ecosystem, so I figured why not get into it. The color grading is unmatched even by Premier Pro or Finalcut Pro, and the base version is free.
If you buy a BMPCC4 or 6K, you get the advanced version for free, so there's that in my potential future too.
I use ffmpeg for quick edits and changing video/audio formats etc.
For the Linux people, you have to convert your video to Prores in order to use it with Davinci, however. This can be done with ffmpeg in the following command:
ffmpeg -i input.avi -c:v prores -profile:v 3 -c:a pcm_s16le output.mov
Photo Retouching, Drawing, Photoshop
All for different purposes. I use Krita not very much. I use GIMP a lot for creating assets and such, I use DarkTable for editing and retouching photos.
Chat and Messaging
It irks me to no end that people use Whatsapp, Instagram messenger, and Facebook for chatting. In my bachelor days, I pretty much had to use them, along with Snapchat...
I make everyone I know download Signal and use that to talk to me. It's dummy proof, has a package in the repo, and allows me to get that 'IMessage' vibe on computer.
Oh, and it's actually secure. Unlike every single other messaging application. I like Element as well, but that is more for groupchat Discord-like functionality.
Update: I have an XMPP server running that I believe will be endgame.
OBS Studio It's what the cool kids are using for streaming almost unanimously, and it's good enough for me. There's a ton of extensibility to it, I like it.
Audacity. No brainer.
Update: After Audacity was purchased and included telemetry mid 2021, I have switched to a fork of it without the spooky stuff.
MPV, NCMPCPP, Spotify.
I am trying my hardest to get away from streaming services and having my own music, like the dark ages.
Self reliance, and all that jazz.
Flameshot. Undisputed champion as you can edit the screen shot right in the shot you took, and copy paste it whereever you need it. Makes working with other people pleasant.
I have used and continue to use scrot as well, for the simple stuff.
Update: I have been using the Gnome screenshot utility.
Pass. If you know, you know.
KeepassXC is good for most normal people, and is what I recommend for anyone that is starting to care about security.
Zathura. Sounds like Zarathustra. Has everything you might need for opening a pdf, include mudpdf as an extension. Dark mode with a press of a button, too.
Admittedly, I don't use this stuff almost ever now. LibreOffice for LibreOffice Calc - Excel stuff. I don't really use it much, and have been trying to find alternatives - I am working with Latex more recently, and will likely move to that full time for document creation (if you remember those things you had to read in university and highschool, that was most likely a latex document).
Calc is a good Excel alternative, and I use it the most frequently of any of the office suite. (I don't really use any of the other suite programs.)
If you want to video chat with me, it will be on Jitsi over Element likely.
Veracrypt. I use this on most of my thumb drives, files that are important, and external drives. Anything that can be easily stolen can and should be encrypted.
Update: I use vanilla gpg and on occasion Tomb
Sometimes you need to drag a file, that's where thunar comes in. Ranger is good for exploration and actually getting to the file, then I use a 'folder' alias to instantly open thunar, drag said file, and then exit as fast as I can.
Newsboat, I am looking into Emacs alternatives.
Update: I use the Emacs extension elfeed for this now.
Update to the Update: I am back to newsboat, elfeed had too many glitches.
Easy ISO Writing
Balena Etcher. This helps a ton, and for some reason, dd doesn't work all the time. This one does.
Rendering and CAD
Blender, I am a noob, but I think there's a lot of cool applications for this. I also think that creating virtual assets is just fun. I think there are so many use cases and cool things you can do with CAD software that I have invested some time into learning it, more to come in the future.
Picom (jonaburg fork) for composition, Nitrogen for wallpaper management, Redshift so I don't blast my eyes, Calibre for ebook formatting, Pidgin for XMPP chats, Tor (LOL you want a link to TOR, bro?) for anonymous browsing,
Postman for CRUD application testing Edit: I use Emacs Rest client now, MongoDB Compass for Database visualization, and a couple other things, but this is pretty much the list of software I use on a daily basis.
I believe in a pretty much fully keyboard driven workflow. Every single time my hand comes off the keyboard to the mouse, I am looking for a solution that I can make to not ever have to do that movement again. I am in a pretty decent spot where that is almost entirely possible.
By learning to use a workflow like this, you are far more productive, you can get far more done in a day, and you can create more, worry less, and effectively create at the speed of your input - Learn how to type faster.
This concludes my computer hardware and software setup for 2023.
I am no expert at anything, most of this is based on suggestion from others and building on what works for them, bringing it into my own workflow, and seeing what sticks. r/Unixporn is a great starting point for people to see what is possible with a Unix based operating system, and to see what a computer can truly become if you invest enough time and effort into it.
Inevitably, someone will say that "Josh how many hundreds of hours have you spent on this?" to which I think you have to look at the big picture: The fact that I have an operating system completely tailored to my every need, portable across any hardware in the world, and with the fact that what I use saves me on average a couple hours per day... I would argue the investment is worth it.
What programs do you use? Have you tried Linux in the last few years? Post your comments below, or email me at firstname.lastname@example.org with your suggestions.