TL;DR I make use of dotfiles to maintain consistency in configuring my various machines. To see my complete configuration, check it out here.
In this article, I will present my development environment setup, the technologies I utilize for development.
Developers tend to have their own distinct machine setups, aligning with the technologies they use in their work or for various personal projects. Such a setup serves to aid developers in streamlining their work, improving their development experience, and ultimately increasing productivity.
In the past, configuring my new machine and installing development tools was time consuming. That changed when a colleague introduced me to a more efficient method: dotfiles.
What are dotfiles?
To ensure consistency in our setup across different machines, it is essential to have a way to store configurations. Dotfiles, named with a dot (.)
prefix in their file or directory names, consist of configuration settings for various software programs.
You can find numerous dotfiles on GitHub, tailored by different individuals. I have created my own setup based on what I have observed from others.
Tools I use
Below are the tools I regularly use. Additionally, I make use of other tools depending on the operating system.
Terminal
I originally used iTerm, which, to me, felt bloated with all its scrollbars, windows, tabs, and more. While there is a way to disable these features, I opted for a simpler solution and switched to Alacritty.
Alacritty is a lightweight terminal emulator that offers extensive configurability and supports theme customization. I have also installed Nerdfonts to ensure proper font rendering in themes.
On macOS, the default shell is zsh. To personalize it, I installed Starship.
Overall, my terminal setup has been reliable, and I’ve encountered no issues so far.
Tmux
If you haven’t tried Tmux, I strongly recommend it. This tool has been incredibly beneficial for me.
It enables seamless switching between multiple programs within a single terminal, allowing you to detach them (while they continue running in the background) and reattach them to a different terminal.
– Tmux Wiki
I’ve enhanced its functionality by adding plugins, keybindings, and more. Feel free to explore the configuration here.
Text Editor
Over the years, I have used a variety of text editors, ranging from JetBrains IDEs to Vim. A colleague recommended Vim, emphasizing its speed. Vim’s speed and productivity-enhancing features won me over. Although there was initially a learning curve, it eventually became second nature. Vim’s motion commands and the ability to navigate without a mouse significantly boost coding speed.
At one point, I shifted to VS Code due to the maintenance of Vim configurations. By that time, VS Code had already integrated a Vim plugin, which introduced Vim motions to the IDE. This feature proved very convenient for me.
This year, I attempted to return to Vim, but with a different tool: Neovim. Neovim is a refactor of Vim, an extension of Vim, making it simpler to configure thanks to its use of Lua, a user-friendly scripting language. I configured Neovim to mimic an integrated development environment (IDE) while avoiding the bloatware often found in VS Code.
While I acknowledge that VS Code may offer superior plugin options, for my specific use case and considering the performance of Neovim, I have chosen to stick with Neovim. You can explore my Neovim configuration here.
Linux
Currently, I’m using a Mac. However, when I work on a Linux machine, I use these tools:
Conclusion
You only need a handful of tools to improve your development experience. A terminal and your favorite text editor. Rice the heck out of it. Use keyboard bindings.
I only listed tools, and this doesn’t include runtime environments like Node.js or compilers for Go, Rust, etc.
Currently, the configurations are consistent, but I still install the tools manually. The Primeagen has a great solution for this. He uses Ansible to set up everything for him. I will explore this soon to improve my setup. Check out The Primeagen’s course in this youtube video:
You can view the repo for my dotfiles here. Thank you for reading!