My Minimal Linux Dev Box

LinuxminimalismproductivityArch

It's a rite of passage, I've heard. As a Linux user, you will eventually catch the bug of building a minimal Linux distribution. I gave myself the weekend of our country's 250th birthday to reinstall my laptop with a base Arch system, and see how little I can get away with to make a decent developer machine.

This has been on my mind for a while. Minimal. No distractions.

Where I Started

I started by installing Arch Linux. I'm a Debian dude from way back, but Arch has the newer packages that I like. I wanted to see how far I could go before i needed a window manager at all. Being a web developer, I knew that needing a browser would force me to install a window manager at least, but I wanted to see how minimal I could go. I got a fair bit along, and it wasn't the web browser that first made me install a window manager; it was ligatures.

I know, ligatures aren't strictly necessary, but a lot of my dotfiles have themes that depend on them. But the real TTY can't do it. It looks really janky. Almost comical. It takes a Pseudo-TTY program in a window manager to display them properly. It never even occurred to me.

So I Broke Down

I went and researched the best minimal window managers, and dwm: The Dynamic Window Manager from Suckless.org kept coming up. Now, I'm gonna sound like a commercial for Suckless. Well, I mean, I think all software should suck less. But alas: I digress.

It was crazy. It was like this tool was made just for this rite of passage. Just less than 2000 lines of C code as your window manager. It ain't pretty, and it ain't fancy, but it's solid. If you want to make it pretty or fancy, you need to get at least slightly familiar with C. Because the way you configure your window manager is by patching the C code in the repo. Yeah, you can write it yourself. But there is a thriving community of people providing patches.

I know, you need another package management system like you need another entertainment subscription, but hear me out. The patches are so small you can read exactly what it's doing. I mean, at least the ones I installed. Just some small stuff to make it look a little less 1990s Microsoft Access aesthetic and a little more organized. But I'm after a minimal setup. No distractions. This is good.

Suckless also has st (The Simple Terminal) and dmenu (to launch applications). That's it. That's all I need. This is my minimalist Linux Dev box dream come true. So I installed:

  • Base Arch
  • The Suckless Suite (dwm, dmenu, st)
  • NVIM
  • TMUX
  • Docker
  • Browser
  • Some command line utilities like eza, zoxide, and fzf

That's all I really need. I run most things in a Docker container and use dadbod (an NVIM plugin) to access databases (thanks to a coworker for showing me that).

Then I Realized

I'm spending as much time building a minimal system as I was "ricing" (config tinkering) the old one. This whole thing was meant to be a way for me to simplify and economize in order to clarify and actually get more done. Less distractions. But setting up this minimal system was becoming a distraction.

Is it irony when you spend so much time trying to become more productive that if you ever actually did anything, you'd write all the world's code in an afternoon? That's where I feel like I've been going. I've fallen into that productivity hack trap. It's hard to be productive, when you only think about how best to produce.

Progress Needs Data

In order for me to understand what will make me more productive, I first have to produce. Don't look at me like that, you knew it was coming.

I used to do a bit of agile coaching, and they are janky as hell at first. Because you've never done this before. It's not that you just don't know what you're doing, agile processes are meant to be unobtrusive. It's because you have no data. No history. Improvement requires data. How can you know if you're getting better? Better than what?

The only way to get data on your productivity is to produce. Probably poorly, at first. Then you have some data. Now you can do a retro. Now you can estimate. Now you can plan. And you're still gonna suck at it. For a while. Data doesn't just mean one point of data. It's plural. Lots of data-ses. Repetition works, man. Repetition works, man.

I fell into that trap with my own personal processes. I got so focused on the organizations processes, that I forgot I need to get data on my own, personal processes.

The Question is: How Do I Do That?

Stop worrying about being productive and just produce. Duh.

Okay, that's not actually a cop-out like it sounds. I mean, start here. Start now. Don't buy another planner from Amazon and think, “Boy howdy, once this gets here, I'm set!” No. Just use what you have. Keep track. Write it down if you have to. Don't go on another digital excursion for a personal productivity tracker or another fucking Pomodoro timer.

For me, that meant closing the browser tabs full of productivity apps, opening up my minimalist NVIM setup, and finally writing down my thoughts in a blank markdown file named the-idea.md. No fancy tracking software required—just a raw text file to log the work.

Just track it. How long did this thing take? Then retro every so often:

  • What's going well?
  • What could use a tweak?
  • Tweak it and keep measuring!

You've probably heard all this before. It really isn't my intention to tell anyone else how to live their life, but I feel like it's good advice. And I'm gonna try my best to take it.

Wish me luck.

opens Amazon...