Development setup on Linux

in /var/log
Development setup on Linux

I recently bought a new computer. I couldn’t have timed it better even if I wanted to. My everyday laptop has started exhibiting the notorious keyboard problem and brought my productivity down to that of a goldfish. Off to the Apple Store to get it sorted (more on that in a future post) and on with setting up a Linux on my new workstation.

Last time I tried this exercise was about a decade ago, so stepping into unfamiliar territory I went for something popular - Pop OS!. It’s based on Ubuntu, developed by System76, which I have huge respect for, and well suited for software development. Software such as Alacritty (which I use on the mac as well) is available from the native package manager. Neat!

Installing Pop_OS! is a breeze really. You boot from a USB stick and then follow the instructions. Ten minutes in and you have a beautiful working desktop. Time to get some tools installed.

This attempt to use Linux as a dev workstation has made me realise that almost none of the tools I use day to day are os specific anymore. Originally I was an avid Textmate user, but I’ve gone through a few other editors and IDEs, including Sublime, Atom, JetBrains, etc. Today I spend most of the time in VSCode. This is super easy to set up on Pop OS, simply install from the software center.

Other day to day tools include vim for quickly editing config files or dabbling around when sshed to a remote host. As already mentioned, my terminal emulator of choice Alacritty is cross-platform, so no worries there. Multiple terms/splits is handled by tmux. git integration with VSCode is brilliant and combined with a few commands (reverting and rebasing mostly), I have no need for any other tool to handle source control related tasks. Docker feels right at home on Linux (native containers, yay!) and the rest is either browser based or available packaged as an Electron app. The only tool I’m missing is Paw, which I’ve bought license for a long time ago and use sparsely to test API integrations. Thankfully, there’s a myriad of similar tools available cross-platform - Postman, Insomnia, etc.

I like the default window tiling manager with this distro
I like the default window tiling manager with this distro

One of the best parts about getting all these things set up is that all of them use configuration files I can simply transfer over from my mac. Although this replicates my preferred settings, one of the difficulties I find is that osx shortcuts seem to be etched deeply in my muscle memory and I constantly hit the alt key mistaking it for (or Super/Meta in Linux speech) which is the shortcut for the Application Launcher on Pop OS.

Other software I use for work is either browser based or comes for Linux in the form of an Electron app. We use Slack for comms, Trello for issue tracking/sprint work, GitHub for PRs and e-mail for… …well, ignoring things.

So far it’s only been a couple of days since I’m rocking this setup, but it seems to hold pretty nicely. I do observe some lagginess with VSCode and other Electron apps, but that’s mostly when resizing windows. Given I’m pushing a 4K screen with this tiny computer without a gfx card, it’s actually quite impressive it handles the way it does.

Other entries in Linux as an alternative to mac for work