My daily development environment
I wanted to describe and document my development environments as it is these days as of May 25th, 2023. It will be fun to look back in the future and compare it to what I do in the future.
This is my desktop setup at home.
Hardware
- Intel i9 13900k CPU
- 32 Gb DDR5 RAM
- Nvidia RTX 3060Ti
- 2 SSDs and an 8Tb hard disk
- 1 4k monitor and 1 HD ultra wide monitor
- LG %80 Mechanical Keyboard
- LG Gaming mouse
The hardware is pretty good for gaming in 2023. When I first bought it I played a lot of games but for the last couple of months I only use it for development.
Does it make sense to do development on such a high end PC? My personal answer is YESSSS with multiple Ss. Some advantages are:
- You can run a crazy amount of programs smoothly. For instance, I start multiple windows of PyCharm and/or VSCode smoothly among many many other things like browsers with crazy amounts of tabs open and so on. The system doesn’t even go into crazy fan noise mode most of the time.
- Your tests run crazy fast. If your software projects have unit tests or some integration tests, they run crazy fast on this hardware which saves me a lot of time actually. Just to give an example I work on a project with around 300 tests. Mostly integration tests plus some unit tests. On my Mac M1 laptop they run in 1 minute while on my desktop PC they run in 13 seconds. Almost 10 times faster. It saves a huge amount of time thus making me much more productive during the day.
Operating Systems
- Windows 10 for gaming
- Ubuntu 22.04 for development
- Mac OS on the laptop
Up until 2018 I always used different Linux distributions for development or sometimes a Linux distribution on a virtual machine on Windows. The latest distribution I liked was Linux Mint. I switched to it after Ubuntu changed its UI manager and I used it for a couple of years until the company I started to work for in 2018 gave me a Mac laptop.
I never liked Apple products because, simply, I think they are overpriced, especially before the IPod era began. Their desktop specs were crazy expensive compared to a custom built PC. Because of my personal history with overpriced Macs I still don’t like Apple products.
Unfortunately most of the world don’t agree with me on this 🙂 For the last 5 years all the companies I worked for just gave me Mac laptop so I mainly used those laptops for software development.
Last year, towards the end of 2022, I decided to give Ubuntu a chance again. I must admit that it’s much better than the last one I used but still has some problems that never existed in Macs or Windows. One problem I have now is that I can’t get any sound from the SPDIF output. On Windows it works fine but on Ubuntu it just doesn’t work (yes, I tried many many solutions from Google and ChatGPT). These kinds of things were always an issue with Linux distributions and it just didn’t get any better even after more than 20 years. Still, this is not a primary issue for me while coding so it’s ok for now.
Daily Routine
This is the actual fun part. I wake up, go for a medium intensity walk with my wife, come back, make some coffee for both us and after she leaves I sit on my table and start the PC. On the desktop screens my daily routine is:
- Start Firefox. This is where my personal stuff goes. Gmail, music from youtube and so on…
- Start Chrome. I have different profiles in Chrome for different projects so all the tabs and histories are divided to different profiles which makes it cleaner and easier to manage.
- Start terminal. I use bash on pc and zsh on the laptop with on my bash and oy my zsh plugins.
- Start VSCode or PyCharm or PHPStorm depending on which project I’m working on.
- Start Telegram, Whatsapp and Slack for work.
In the monitors above I can see four of these windows at the same time side by side which increases productivity by removing a lot of switching back and forth.
I want to give a little bit of detail about shells and “Oh My Bash”/”Oh My Zsh”. In my opinion, these are also very useful productivity boosters. They have their own plugins to manage history, the plugins I use for Oh My Zsh are:
- git: This plugin provides shortcuts for daily git commands. For example, instead of writing “git pull” you just type ggl or instead of “git fetch” you do a “gf” and many many more. One of my favorites is “glol” to show the commit history in a nice way.
- aws: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/aws
- docker: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/docker
- asdf: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf
- Here are all the plugins for zsh: https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins
Development Routine
Up until a couple of months ago my development routine was coding in the IDE and looking things up on google and reading a lot of documentation. But, as we all know, there’s ChatGPT now so my development routine changed drastically and became much more productive. Right now my development routine includes the following:
- IDE.
- Github Copilot integrated into the IDE.
- ChatGPT (mostly) instead of Google.
- Google for some stuff ChatGPT can’t handle.
In my own personal experience, this combination is an incredible productivity booster. I love Github copilot suggestions which most of time just still amaze me and I love talking to ChatGPT instead of looking things up on google and going to multiple websites to find something.
Conclusion
Always looking to improve the overall productivity this is where I’m at. If you stumble upon this post and you have suggestions please tell me.