DEV Community

Cover image for My beautiful Linux development environment
Deepu K Sasidharan
Deepu K Sasidharan

Posted on • Edited on • Originally published at deepu.tech

My beautiful Linux development environment

Originally published at deepu.tech.

There is a new version of this post where I wrote about my current setup. Check it out here.

One of the questions that I often get after a conference talk is weirdly not about what I presented but about my Linux desktop environment. People are more curious about that beautiful distro rather than the awesome presentation I just did 😂

Not that I'm complaining, I love my desktop setup. I love it so much that I was afraid of getting a new PC when I was due for one. I was afraid that I would mess things up(I have done that many times in the past, I think Linux users can relate to me)

So I decided to capture the most important aspects of my distro for anyone interested in using GNU/Linux as their primary OS for development.

This is not just my work laptop; it's my primary machine which I use for all of the below.

  • Java, JS, TS, Go, Python & web development
  • JHipster development
  • Running multiple web applications locally
  • Running Docker containers
  • VirtualBox for Windows testing & other VM stuff
  • Kubernetes, Terraform, CloudFormation development and deployments
  • Azure, AWS & GCP deployments using required CLI tools
  • Heavy browser usage
  • Email, chat & video conferencing
  • Plex media server
  • Blogging
  • Youtube & Social media

Machine configuration

The configuration of the machine is also quite important for any development setup. So my laptop is a Dell Precision 5530 Mobile Workstation. I had the exact same setup with my old Dell 5510 as well, which is quite a similar configuration to 5530. I still have it as a backup Laptop, its two years old now, but it can still give most of the top-end laptops today a run for its money.

I used the custom configuration option from Dell to get the best possible setup at that time. It's not cheap but my company, XebiaLabs, provided a handsome budget and I think it is worth every penny. This, in my opinion, is one of the best Laptops for developers. So here is what I have.

Processor: Intel® Core™ i9-8950HK CPU @ 2.90GHz × 12

Memory: 32GB, DDR4-2666MHz SDRAM, 2 DIMMS, Non-ECC

HDD: M.2 1TB NVMe PCIe SED class 40 SSD

Graphics: NVIDIA Quadro P2000 with 4 GB GDDR5 memory & Intel® UHD Graphics 630 (Coffeelake 3x8 GT2)

Wireless: Intel Wifi Link 9260 2x2 802.11AC + BT 4.2 vPro wireless card

Keyboard: English QWERTY US, backlit

Display: 15.6" FHD 1920x1080 Anti-Glare LED-backlit Non-touch IPS UltraSharp™

Battery: 6-cell (97Wh) Lithium-Ion battery with ExpressCharge™

Operating system and desktop environment

The most important, of course, is the operating system. I'm running Fedora 30 at the moment with GNOME 3.32.2 as the Desktop, and I'm very happy with it. I find Fedora more suitable for development machines than other distros as it has a short release cycle and is fairly stable, so you get the latest & stable software all the time.

What good is a desktop without a nice theme, right? GNOME is great when it comes to themes, and I went with Arc-Flatabulous theme and never looked back. For icons, I use Paper as I like the material icon theme.

Of course, it won't be complete without some nice GNOME plugins. Below are the plugins that I use.

Development tools

Now, these are mostly objective choices and really don't matter as long as you are comfortable with the tools you choose. Below are my choices for some of the important categories for development. I'm not including obvious things like Vim, Git, NodeJS, Docker, Kubernetes, etc.

Shell: This is one of the most important for a developer. I use ZSH along with the awesome Oh My ZSH as my shell. Now, this won't be complete without some nice plugins and themes. I use powerlevel9k theme with some customizations. I also use zsh-autosuggestions, git, docker, docker-compose, autojump, zsh-syntax-highlighting, dnf, and npm plugins for Oh My ZSH. Here is my .zshrc with all the customizations. Update: A comment on this post suggested powerlevel10k as an alternative theme, and I tried it, and it turns out it is really way faster than powerlevel9k. So I think I'm gonna use powerlevel10k as my shell theme.

Terminal: What good is a nice shell without a good terminal. Fortunately, we have Tilix, one of the best terminal applications out there. It has workspaces, tabs, split windows, Quake mode, and so on.

Integrated development environment(IDE): IntelliJ IDEA Ultimate - I use this for Java & other JVM language Development

Code Editors: Visual Studio Code - My go-to editor. I love it. I use VSCode for web development, Go, Python, JS development, DevOps, and everything other than JVM languages. A VSCode setup is never complete without some good plugins. Here are the plugins that I'm using. You can run the script to install those.

Other notable development tools I use are GitKraken for Git repo management, Beyond Compare for code comparisons, VirtualBox, NVM for NodeJS version management and SDKMan for JDK version management.

Productivity tools

Productivity tools are also quite important, and below are my choices.

Browser: Google Chrome is my primary browser. I also use Firefox & Opera sometimes. I do love Opera in terms of its UX, I would love to use it as my primary browser, but I miss everything I have synchronized with my Google account in Chrome.

Email: I use Mailspring as my e-mail client. It's a fairly decent mail client with nice themes and a simple UI.

Office suite: I mostly use Google Docs & Microsoft office online, but when I have to work on something on my Desktop I use LibreOffice which is a good office suite and even handles Microsoft Office & Keynote formats.

Communication: Of course I use Slack and for video conference I use BlueJeans.

Screen capture: I use this nifty tool called Peek for screen recording and Shutter for screenshots.

Conclusion

There are many other small and nifty utilities that I use; most are command-line utilities. There are some notable mentions like Timeshift, which is nice for backing up your machine.

Of course, not everything is perfect in the Linux world, but it is the same with every OS. I was a long-time Windows user before switching to Linux. So like every Linux user, I have from time to time messed things up(With great power comes great responsibility, Peter). There are many quirks in the Linux world, but there is nothing that bothers me much. Some of the most annoying issues I had in the past are below, and for now, I don't have any noticeable issues.

  • Scroll position jumping when switching apps - Fixed after upgrading to Fedora 30
  • Hibernation was broken - Fixed after upgrading to Fedora 30
  • Audio output selection was broken when plugging in headphones- Fixed after Fedora 28 for me

I hope you find this useful. If you have any questions or if you think I missed something, please add a comment.

If you like this article, please leave a like or a comment.

You can follow me on Twitter and LinkedIn.

Latest comments (136)

Collapse
 
jmrsuarez profile image
Julio Suarez (Juls Schwartz)

Help, i am trying to develop a web app on javascript full stack, i have installed on fedora core 36 node and npm, and vscode, but when i use node command on the internal terminal of vscode i receive the message "command not found" i have inserted the path but it does not work. do you know a guide or can please tell me what other component or configuration i am missing?

Collapse
 
deepu105 profile image
Deepu K Sasidharan

Are you able to run node/npm on other terminals, may be its not properly set on your PATH

Collapse
 
fridaycandours profile image
Friday candour

Am using a 2gig laptop please help me choose a light Linux distribution

Collapse
 
deepu105 profile image
Deepu K Sasidharan

If you are looking for a light distribution then I would recommend Ubuntu MATE, Lubuntu or Xubuntu. Basically, the Desktop environment is what matters more for a light distribution so anything with LXDE, Xfce or MATE desktop would be light enough

Collapse
 
fridaycandours profile image
Friday candour

Thanks but is manjaro xfce as recommended by someone any good

Thread Thread
 
deepu105 profile image
Deepu K Sasidharan

Depends on your Linux experience. If you are new I wouldn't recommend any Arxh based distro. But if you know Linux well and is fine with a rolling release then Manjaro xfce is great

Collapse
 
desilva_c profile image
Colin de Silva

Any thoughts in dual-booting? I do have a spare PC, but I want the GPU goodness as I want to learn ML/AI packages on Linux

Collapse
 
deepu105 profile image
Deepu K Sasidharan

Dual-booting should be perfectly fine, provide a partition of 50 or 100GB and you are good to go

Collapse
 
jurajmlich profile image
Juraj 🇪🇺

I also have the Dell Precision 5530 but seem to have problems with the fans. They seem to be spinning constantly when the laptop is charging (they stop if I unplug the charger). Do you have similar issues?

Otherwise, great article, thanks! :)

Collapse
 
deepu105 profile image
Deepu K Sasidharan

Also I hope you have latest bios firmware and stuff. Else probably you need to visit the Dell service. I have 2 precision machines and don't have this issue. Few of my colleagues also have this machine.

Collapse
 
jurajmlich profile image
Juraj 🇪🇺

Yep, latest bios / drivers. Seems like I will really need to pay them a visit :)

Thanks, have a nice day!

Collapse
 
consciousness_dev profile image
Ario Setiawan

Core i9 still dreaming for me #LOL wkwkwk

Collapse
 
deepu105 profile image
Deepu K Sasidharan

I just stumbled upon Albert albertlauncher.github.io/docs/ check it out. It looks a lot like Alfred

Collapse
 
frncesc profile image
Francesc Busquets

Thank you very much for this interesting post!

I would like to recommend another very useful, docker-based component that will save you hours of installing and configuring http servers, database systems, certificates to simulate https, catch-all mail servers...

Devilbox
devilbox.org/

Collapse
 
deepu105 profile image
Deepu K Sasidharan

Thanks will check it out

Collapse
 
aleon1220 profile image
Andres Leon

Wow. Great job with the GNOME plugins. Great post. Thank you for the encouragement.

Collapse
 
hymanzhan profile image
Xucong ZHAN

I am surprised to find such a similar Linux config to my own!
I also use Arc theme albeit a slightly different variant called X-Arc-Darker with the paper icon theme.
I also run Fedora 30 (the main laptop is running Pop_OS! though due to Nvidia driver stability issue).
Also using Tilix, Mailspring, ohmyzsh with powerlevel9k, VS Code, GitKraken, DashToDock, Topicon Plus, etc. Doing web dev with Django and Angular most of the time.

So at least on the superficial side, the setup is pretty similar :D. Thanks for the article~

Collapse
 
oshiole profile image
Mubarak Yaqoub-Okponobi

How is your experience with Pop_OS!. Is it as great and clean as advertised

Collapse
 
hymanzhan profile image
Xucong ZHAN

Sorry for getting back to you this late. I don't check the notification very frequently. -.-

Getting to your question, yes, at least I think so.
The nicest thing about PopOS is hardware compatibility. Most distros don't respect the fact that most laptops have hybrid graphics. For me, providing an NVidia option OOB is highly appreciated.

Regarding performance, I think some YT channels compared it to Ubuntu and came to the conclusion that it was actually a bit snappier and performs a bit better in games. I have not used Ubuntu since 16.04, which gave me horrible memories at the time btw, so I cannot attest that. But I can attest that it runs as snappy as a vanilla Fedora of the same age, and ran much faster compared to Zorin OS 15 when it came out.

I don't know your definition of "clean" but I don't think it is bloated. It contains many PopOS-specific plugins that fit in really well, so the experience is cohesive. I am not a fan of their design aesthetics, especially the choices of fonts, colors and icon styles, but it is well-thought-out and well-put-together.

So yeah, my experience with PopOS is largely positive. There are some issues which you would be able to find in their Github issues but generally, they are not deal breaker.

Collapse
 
deepu105 profile image
Deepu K Sasidharan

Try powerlevel10k you won't regret

Collapse
 
hymanzhan profile image
Xucong ZHAN

yep, will try~
I also find the spaceship theme very attractive (just like those icons XD)

Thread Thread
 
romkatv profile image
Roman Perepelitsa

Powerlevel10k is 28 times faster than Spaceship in a representative benchmark: reddit.com/r/zsh/comments/c3osfa/p.... Spaceship is faster than Powerlevel9k.

Thread Thread
 
hymanzhan profile image
Xucong ZHAN

WOW, that's some number. Will definitely try it out!

Some comments may only be visible to logged-in visitors. Sign in to view all comments.