In my last post, Web Development Setup, we discussed my web development setup. We went through a quick, general overview of the hardware and software I use on a daily basis. In this post, we will follow up on the software I use, diving deeper into those tools that I use the most.
This is not a list of the best software tools, but rather a list of the best software tools for me currently. You should always try out new tools and learn new ways to increase your software development productivity. What works for me may not work for you. With that said, you should feel free to try out some of the tools I use, as you may find something of interest in the list below.
Before we get into the tools I use for web development, I want to go over the web stacks I am currently using and learning. I have been using HTML and CSS for years. I am in no way an expert but am proficient with both technologies.
As I just mentioned, I work with Ruby on Rails at my current place of employment. I have been working with Ruby and Rails for almost 4 months now. I learned the basics of both about a month before I started working as their sole Web Developer. Personally, I believe this is position is my biggest tool for learning, as every day I create new pieces of software I would not have ever done on my own. It pushes me to learn at a faster rate, allowing me to basically learn while being paid.
Editor of Choice
Many people though still find Vim hard to use. Even myself included at one time. I’ve been using Vim full-time for a little over a year. Before that, I used Sublime Text for most of my development work. I previously found Vim hard to work with, and it would often do unexpected things, at least for someone who didn’t know what he was doing.
One day, though I decided to use it as my sole editor for at least one month. If after the month I was not happy, I would move back to Sublime Text, or possibly try out a few other editors. The first week was hard, but after that I started getting used to navigating through files with ease.
Every time I needed to do something in Vim, like replace all instances of a word with another, I would look up how to do it the Vim way. Although this slowed me down at first, over time I needed to look up less and less. Most of the common things I need to do with an editor, I can do instantly with Vim now. I very rarely have to touch my mouse now while editing files.
By itself, Vim is not the prettiest, nor the most feature-filled editor around. With a few plug-ins, you can change not only Vim’s look but its functionality as well. To install plug-ins, I use Vundle. Vundle is a plug-in manager for Vim. It does require some setup but is relatively easy to get installed.
For syntax checking, I use Syntastic which is a Vim syntax checking plug-in. For Syntastic, you will need to install linters for the languages you will be using. I currently am using Tidy HTML5, PrettyCSS, and ESLint. For auto-completion, I use YouCompleteMe. For Ruby and Rails, Vim-Ruby and Vim-Rails, both of which add some nice features while developing Ruby and Rails applications.
Another amazing plug-in is Airline, which provides a fast status and tab line for Vim. Emmet was one of my favorite plug-ins for Sublime Text and is available for Vim as well. For my color scheme, I have tried a few but I always come back to Solarized Dark. This is just a sample of my favorite plug-ins. Feel free to check out my full vimrc.
I won’t go into Tmux for long, as I really only have a basic understanding of it. Tmux is a terminal multiplexer, which basically allows you to attach to and detach from terminal sessions. This allows for you to leave a session open while not connected. This can be useful for many different reasons.
The reason I use Tmux though is because it allows you to have split terminals within the terminal you’re working in. This is especially useful while connected to a remote server through SSH. I frequently need multiple terminals open and connected to a single remote server.
With Tmux, I am able to establish on SSH session, start Tmux and add panels as needed. You can add, remove, switch, adjust the size, and more with Tmux. If you’re interested in learning more about Tmux, I recommend checking out tmux: Productive Mouse-Free Development, an amazing book that will turn you into a Tmux pro.
Of course, no Web Developer’s toolkit would be complete without SSH. As much as you and I both love SSH, I have to let you in on a little secret. I have been a little unfaithful with another, Mosh, the mobile shell. With a standard SSH connection, if your Internet connection drops out or you change IP addresses, your connection will drop out and you will be disconnected.
With Mosh, you will find the terminal session restored as soon as you are reconnected to the Internet. Hopping wireless networks? No problem, Mosh has you covered. Close the lid on your laptop, open it up at home, and magically your terminal session to that remote server is still active. Well maybe it’s not magic, it’s Mosh. I have found this tool useful in countless situations and provides SSH with a modern twist. This is truly SSH on steroids.
To run Mosh, you will need to install it both on the remote machine and the local machine. So if you cannot install applications on the remote machine, you will need to stick to SSH for connection. On any machine you do have access to install applications, I highly recommend adding Mosh to your list of connection methods.
I am constantly learning new things and picking up new development tools. Learning is one of the most important tools any developer can have. It keeps you relevant and valuable. It’s just plain fun too.
Honestly, the tools listed above account for about 90% of my development process. Of course, there are others as well, but I either do not use them on a regular basis, or I am still learning them. There are also the basics I didn’t mention, bash, grep, irb, scp, and others. I used those tools on a regular basis before I was a Web Developer, and have not mentioned them here.
In general, Linux and its vast amount of tools provide developers with an amazing assortment of options. To learn about some of the most commonly used command line tools, visit my post on Command Line Basics for Developers. I would love to hear what tools your using in your development process. Leave a comment below with your favorite tools.