What I use
I am usually very interested in other people’s setups, especially when they have a highly personalized environments that make them be highly efficient while working. Because of this, I believe my workflow could be of interest to someone.
This is my (incomplete) old old workflow page.
Software (WIP)
In case you want to have a look at my dotfiles, you can find them here.
ZSh
I like working inside the terminal. I got into using command lines and TUIs (text-based user interfaces) because once I overcame the steep learning curve, I enjoyed working with incredibly responsive programs, that have the same look and feel no matter on what hardware and OS I am running.
My shell of preference is zsh
. It is easily installable in any Linux distro
and it comes as the default shell for MacOS. I copied the .zshrc
that was used
in the Arch Linux installation media, since it came with autocompletion and
other nice things by default. On top of that, I am using the Z plugin. This
plugin allows me to type:
z my_folder
And zsh will take me to the most recent folder I have visited with a similar name. I used to use terminal based file managers like Ranger or lf, but with this plugin I stopped using them. It is that convenient.
Tmux
When I started entering the suckless rabbit hole, I used to use a WM (Window Manager) where I opened as many terminals as I needed. The rest of the applications I ran in full-screen most of the times.
Here is where tmux
(terminal multiplexer) comes in. Think of it as a WM for
terminals. There are many guides out there so I won’t go into detail. But the
main idea is that you have the tmux server, that takes care of handling your
sessions. Each session can have multiple panes (think browser tab), and each
pane can have multiple window splits.
The tmux server is running as long as there is any session running. You can
detach and attach to an existing tmux server. For example, I can have my tmux
server running on my desktop, then leave the house and connect to it via SSH. I
only have to type tmux attach
to access my tmux server and continue working.
Moreover, with the tmux-resurrect you can make your tmux sessions persistent to
reboots.
Tmux also has commands for managing your layout, and you can configure every
keybind. So it is basically a WM in your terminal. I like to have a main
session where I do whatever I need with the terminal, and then one session for
every project or lecture I’m taking.
Newer versions of tmux incorporate support for popup windows. I use them to spawn fuzzy finders to my tmux sessions, among other things. You can have your own scripts executed on this pop-up windows, or new panes, sessions or splits. The possibilities are endless.
For example, I usually store my projects in the same folder. I have a script that finds all the directories with a git repository in that folder and feed them to a fuzzy finder. If that project is not open, a new session will be created for it. If it exists, tmux will simply open that session without changing anything.
I also do something similar with my password manager, creating and viewing
queries to cht.sh
, or opening Lazygit.
Neovim
Lazygit
Lazygit is a TUI for git.
Pass
The UNIX Password Manager is basically a shell script that will take care of generating, encrypting with your GnuPG id, and running a git repository of your passwords. Since each component is so simple, it is compatible with every OS, even mobile. I use it daily on Linux, MacOS, Android and iOS and I have never had a problem.
Stow
Services (WIP)
Contabo
Contabo is a company based in Germany that offers very competitive pricing for their VPSs. For those who don’t know, a VPS (virtual private server) is a cloud computer that you can rent. For a bit more than 6 euros per month, I get 200Gb of SSD storage, 8Gb of RAM and 4 CPU cores. Once you self-host multiple services from your VPS, it quickly becomes way more cost effective than subscribing to independent services. But you ‘pay’ with your time by having to set up and maintain everything. Although to be honest today it is very easy to just go the Docker way, if you don’t have much time on your hands.
This are some of the services that I self-host:
-
Gitea
Basically a lightweight Github/Gitlab replacement. I use this to save some personal repositories that I don’t want to share with the world mainly.
-
Syncthing
By having a syncthing node running 24/7 on my VPS, I essentially achieve the same functionality as Dropbox for syncing my files across computers. As long as my devices have internet, I can just switch from one device to another without having to worry about refreshing my files.
I have been running this setup for a couple of years now and I have almost never had any problems with conflicting files. Mainly because I make sure that the files are synchronized before I am to make any conflicting change.
-
WebDAV
Very convenient for a self-hosted Zotero storage. Also useful for a Google Drive replacement, although I haven’t used it this way much.
-
CalDAV/CardDAV
With radicale I have Calendar and Contacts synchronization over all my devices, regardless of brand. I can create an appointment on my Android phone, and it will show up on my iPad or Linux desktop. Same way with contacts. Very comfortable.
-
Music streaming
Basically your own Spotify. I’m using Navidrome. Not much to say, you can install clients for any platform, or just use the web based player. But of course you will have to bring your own music, which makes discovering new music impossible.
Migadu
A no-bullshit e-mail provider. For not even 2 euros per month, you can have virtually unlimited addresses on your custom domain. Moreover, you can easily log in with any e-mail client app through IMAP/SMTP.
Hardware (WIP)
-
MacBook Pro 14"
-
iPad Air 2022
-
Thinkpad x200
Cheap, durable and easy to find replacement parts for. With a new extended battery of 94WH (knock-off, as originals don’t exist) it lasts for about 6 hours of work. I use it mostly at university for note-taking and surfing the internet, although it handles CPU heavy work quite nice (not looking at you, rustc).
Don’t ask it to do anything GPU related. It supports up to GLSL 1.2, that means that a lot of modern software won’t work (e.g kitty/alacritty).
The keyboard is excellent, as it is small yet has 7 rows. The lack of trackpad is a feature as I would disable it if it had one. The trackpoint is just precise enough, and when you get used to it you’d wish every keyboard had one.
This is also the last Thinkpad that can be librebooted, and I’m planning on doing it soon.
-
Tower Desktop
- CPU: AMD Ryzen 1600 @ 3.8GHz
- GPU: Asus Turbo Nvidia GTX 1070-Ti
- Motherboard: ASUS Prime B450m-a
- RAM: 32Gb Ballistix DDR4 3000MHz cl15
- PSU: Corsair RM550
- Case: Cooler Master MasterBox Q300L
The CPU is second hand and from China, but works flawlessly. Best bang for the buck of the whole system (60$). The GPU is also sencond hand, and again 0 problems. I chose to invest in a good PSU because I want it to outlive every other component. The difference with a normal PSU is massive: I can have 100% of CPU and GPU usage and still the PSU fan won’t spin (maybe on summer).
-
Custom made Dactyl Manuform