This post we will go over my current development setup. Taking a look over everything from hardware to software, you will gain insight into how I work and the pieces that help me in my daily struggles as a budding developer. Although this setup works for me, everyone will have their own preferences and my setup review is in no way meant to suggest its superiority over other setups.
The Physical Beast
My development computer, is a decent machine, although with slightly older pieces at this time. It contains enough horsepower for every purpose I have conceivably been able to through in its path. Considering I do mostly web development work, this computer will last me a good while, with maybe a few upgrades along the way.
- Corsair Carbide Series 200R Case http://amzn.to/1K0cujc
- Intel Core i7-4770K 3.5GHz Processor http://amzn.to/1iqyXLS
- Asus Z87 Pro LGA 1150 Motherboard http://amzn.to/1K0cIXm
- Cooler Master Hyper 212 EVO CPU Cooler with 120mm Fan http://amzn.to/1K0dBz6
- Crucial Ballistix Sport 16GB DDR3-1600 Dual Channel Memory http://amzn.to/1K0dPpZ
- Samsung 840 EVO 120GB SSD http://amzn.to/1K0dWls
- Seagate Barracuda 2TB HDD http://amzn.to/1Qj04Ug
- LG Super Mulit Optical DVDRW/CDRW Drive http://amzn.to/1FrIjfa
- LG 27-inch IPS LED HD Monitor http://amzn.to/1FrIBTi
- Asus 27-inch IPS LED WQHD Monitor http://amzn.to/1iqAnGd
- Microsoft Natural Ergonomic 4000 Keyboard http://amzn.to/1K0eE23
- Logitech Wireless Marathon M705 Mouse http://amzn.to/1FrIKpW
- MDR-XB800 Extra Bass Headphones http://amzn.to/1K0eQyz
- 750 watt Power Supply http://amzn.to/1O2lxTf
The Inner Beast
For software, I have a few favorite pieces that are tried and true, having yet to fail me in my time of development. I use to jump around between Linux distributions, mostly consisting of Fedora and openSUSE, but also mini vacations off to other Linux utopias. That was until I found Arch Linux. For the past year and a half, I have used the same Arch Linux installation on my machine. This machine is running vanilla Arch Linux while my laptop and work computers both run Antergos, which is an easy-to-install distribution based on Arch Linux. Everyone should go through a few vanilla Arch Linux installations first before using Antergos in my opinion, as the experience will teach you how Arch Linux works. When you need something setup quick though, and you want the flexibility and power Arch Linux provides, Antergos delivers.
There was a time, not too long ago, when I would insist KDE was the desktop to use for everyone, and nothing would change my mind. Now I am not so sure. Although KDE is nice, I feel it does not fit my needs as well any longer. It still is an amazing project, but I am no longer as dogmatic, at least in regard to desktop environments. Everyone has their own desktop environment needs, and mine have been filled by Gnome. The simplicity of Gnome causes it to stay out of your way while it provides features comparable to most other modern desktop environments. Powered by Arch Linux, I am provided with the most up-to-date software, giving me the newest features in development.
As I already mentioned, I use Arch Linux and Antergos. The main advantage here is up-to-date software, including the kernel and development tools. Installing Arch Linux proves an amazing experience, frustrating at first, but beneficial in many ways. It allows for a deeper understanding of how Linux works and how to configure individual pieces of the Linux environment. I have been through the install a few times, and although I may not configure those exact pieces on a daily basis, it has provided insight into configuration and setup of most Linux software, in general, making server setup easier and quicker. I highly recommend becoming familiar with setting up a Linux system this way. It will provide experience for future development endeavors.
For my actual development environment, I use vim, with the occasional tmux session. I frequently use ssh and/or mosh, an alternative to ssh allowing a persistent connection, even when most ssh connection would drop out. Even with modern Internet connections, issues arise causing packet loss or disconnects wich destroy an ssh connection. Mosh, on the other hand, will reconnect your session when the connection is restored, even when your IP address changes. This is especially useful when using a laptop and moving from location to location.
The Real Deal
In the end, the thing that matters the most is how productive you can be. I choose vim as my daily driver, but you may pick emacs or sublime, or even something else. That is perfectly fine. Don’t get caught up in the holy wars of development tools, it really doesn’t matter. As long as you know your tools and can produce results, they are just a means to an end. Continue to learn other tools, look for ways to improve your current setup and always keep coding.