I wanted to write this post for a couple of reasons. The first is to (hopefully) provide some helpful insight into a different way of coding that others might find useful. The second is to give me something to look back at a year from now to see where I have changed things, what is working better and what still needs improvement. This isn't intended to be a long-winded novel about the tools/approaches I use but rather a quick rundown of how I get things done when it comes to writing code.
A year ago I kept all development files on my local machine, did my edits there and used various software/plugins to push changes up via FTP/SFTP to the development server. Today I keep no code what-so-ever on my local machine and do everything via SSH mounts. So if I have code on a development sever that I need to work with I use Transmit to mount the remote file system via SSH then open that in my editor. This is great because it keeps files off my local machine, it eliminates the need to push changes up to the dev server after saving and at the end of the day I am all about avoiding duplication of data. With files mounted in this fashion any time I save in my editor (which is running on my local machine) it actually is saving those files on the development server, wherever that happens to be in the universe. Neat right? Let's take that a step further and look at deployment. So all changes are made to the remote file system on the development server but then what? Those files are then committed to version control (Git) and then a pull is done from the production machine to grab the latest changes from the repository.
This workflow keeps things really nice and compact while still providing a lot of power and flexibility. Granted you could accomplish a simliar flow by simply hosting your development server on your local machine but I would much rather have my development server be a direct mirror of production and most production servers aren't MacBook's / iMac's.
So what tools do I use to accomplish all of this?
- Chrome - Browser I do most of my developing with as it has the best built-in tools on the market.
- iTerm2 - My preferred SSH client.
- Navicat Premium Essentials - The best GUI for working with MySQL, PostgreSQL, Oracle and more.
- Sublime Text 2 - I recently switched to this editor from TextMate and I haven't looked back.
- Transmit - FTP/SFTP/Etc client but also terrific for mounting remote file systems.
If you have questions or want to share your workflow please do so in the comments!