On the Importance of Tools
My father taught me at a very young age the value of quality tools. The importance of taking care of them and how to properly use them. Every Christmas, he and my mother would give me a few hand tools, all of which I still have and use to this very day. I have since begun passing those values and tradition down to my own children.
I have been in the GIS industry for almost thirteen years now in various technician, analyst, and developer roles; the last two years right here at GISinc. Over those years, I’ve built a thing or two. If there is one thing I have learned, is what my father taught me about hand tools, actually applies to any tool.
Recently, I have been reminded that when it comes to software tools, it is important to: keep your toolbox orderly, keep an inventory of tools, and be prepared to reinstall and set them all back up in the event of a system failure. I am on my third laptop in two years. After the second failure and subsequent setup of yet another new machine, I decided to keep my toolkit slim and tidy.
I’m a Solutions Engineer (SE), and our roles can vary depending on team, but I like to think that the primary role of a SE is to get the job done for the client. Vague, I know, but as an SE here at GISinc, you could find yourself setting up servers, cranking out code, writing documentation, translating data, building enterprise geodatabases, administering any number of environments, or deploying applications (I think you get the idea); all in a single day for multiple clients.
The following is a refined list of required tools that I (and many others at GISinc) rely on daily and can be of use to techs, analysts, developers, and engineers alike.
Google – This should pretty much go unsaid, but Google is your friend.
Python – I have been using Python since about 2005 or so. I have said it before, and I will say it again: Python can do anything. We use Python for tasks ranging from data mining, cleanup, translation, and ETL to accessing ArcGIS Server, AGOL, and REST endpoints to enterprise geodatabase management, inventory, and maintenance.
A good text editor – There are plenty of good text editors out there, but knowing how to really use one is invaluable. Formatting text for inputs into other tools, finding and replacing text, and writing documentation (more on that in a minute) are all made so much easier with a good text editor and knowledge of how to use it.
Markdown – If I could write everything, and I mean everything, in Markdown, life would be much easier. I know, I know, there is no real standard yet (although that could change) and there are multiple flavors out there; but for me, Markdown makes writing a pleasure. As a matter of fact, I am writing this very post in Markdown and keeping it in source control. Markdown is everywhere and we use it daily in readme files and Jira tickets.
Sphinx – I’m personally a huge fan of good documentation, and Sphinx is a tool that makes creating useful and beautiful documentation incredibly easy. Sphinx handles all of the styling and formatting, letting you focus on your content. With Sphinx, you write your content in reStructuredText and can get your output in several formats, most notably HTML and PDF.
KeePass – KeePass is a free, open source, light-weight and easy-to-use password manager. With KeePass, everyone on our team can synchronize to a master database, thus ensuring that over time, credentials for our various projects will be maintained and available.
KDiff3 – Diff’ing files is something I’m relatively new to, but it can come in very handy for things such as trying to find subtle differences between versions of long configuration files. There are plenty of diff tools out there, but KDiff3 is simple and easy to use. It also integrates very well with SourceTree for resolving merge conflicts.
Terminals – Constantly using Remote Desktop to RDP into different servers? A program such as Terminals, a secure, multi tab terminal services/remote desktop client, makes storing, organizing, and connecting to multiple remote servers a breeze.
Snagit – Not a day goes by that I don’t take a screenshot (or ten). I have tried plenty of open-source screen capture programs, but nothing comes close to Snagit. No, it is not free, but pretty cheap and worth every penny. Being able to quickly take a screenshot, annotate it, and put it in a client email, Jira ticket, or documentation is indispensable.
ArcGIS Server REST endpoints – Got a QueryTask that isn’t returning data like it should or a Print Service that is bombing out on you? Utilize the Chrome Dev Tools Network tab along with the REST endpoint you are accessing to track down what is going on.
Jira – We use Jira for tracking issues and tasks related to project development. Jira is a great, easy to use tool that we at GISinc love and would highly recommend; although, there are plenty out there to choose from. Regardless of what you use, an issue tracker can help you and your team keep track of who is doing what, when.
This is by no means a complete list of tools that I or anyone else here at GISinc use, but merely some that we use daily to enhance our productivity and make life easier. No matter what you do for a living, remember that tools matter, so learn how to use them properly, know their limitations, and maintain them.