Toward the Ultimate Personal Code Development Environment
For some time, I have been on a search for the “optimal” development environment — a toolset and location to edit and store code. Whatever “optimal” ends up being, here are what I see as the qualifications
- Able to be accessed from anywhere at anytime
- Stores my code somewhere other than the system that I last used — preferably in the cloud
- Can handle multiple languages / syntax checking
- Can be shaped to my needs via preferences and plug-ins
- Able to connect / interact with GitHub
One challenge that I had finding a solution is that I work on different machines with different operating systems in different places. I have a Mac as my home system but the rest of my world is desktop PCs or a laptop running Linux. Unless it is absolutely necessary, I do not carry hardware around with me.
With that in mind, I first went after a web-based solution that ran in a browser. I settled on a product called ShiftEdit and it did what I needed.
The advantage of using a web-based solution is the “no hardware” aspect. Wherever I am, as long as I have access to a web browser and an internet connection, life is good. This is helpful (especially when editing websites) if I am at a site that may not let me use a personal device connected to a LAN.
But (and you knew there was one), ShiftEdit is an application on a server and requires communication between it and your browser and your host. ShiftEdit requires that you whitelist their server addresses to the firewall for FTP and SFTP operations or / and edit your host’s “ftp.allow” file to include the ShiftEdit server addresses. Depending where you are, this may not always be possible.
ShiftEdit is a “closed source” product and does not seem to have a way to extend its functionality via plugins or some other such tool. This may not be a problem because for me, ShiftEdit provides the functionality I need.
One the other hand…
I recently discovered a editor called Atom. Atom bills itself as “a hackable editor for the 21st century” it is GitHub centric but, through plugins, can be used as an FTP based editor which is ideal for editing web sites directly from the server.
Atom is a local application that requires installation on your computer. There are versions that can run on the MacOS as well as versions for Windows and Linux. It is open source and has a load of packages, themes and other goodies that allow you to extend its functionality and make it behave and look exactly like you want it to.
The only disadvantage (if it truly is one) is that you need to install and configure Atom on every system where it is downloaded. If you decide to tweak the capability so that you can use FTP to edit from a web server, there is a package for that but you need to download and install and configure that package on every system you use Atom.
Since Atom is an application, you also need to have administrator privileges in order to install it.
I’ve tested Atom against my web host (via FTP) as well as against GitHub (creating a local repository and staging, committing, pulling and pushing changes) as it performs well and fast. I did need to make sure that my IP address (which changes depending on where I am using Atom) was in the “ftp.allow” file on my server.
For the time being, I am going to run these environments is parallel and eventually decide what works best for me.
FYI: Here is a link to an article that will help you find not only editors but other tools to help put together an optimal development environment for you.