September 30, 2018
It’s been about two years since I retooled as a web-developer from working in the mapping field, in the field. Since then, I’ve been finding myself bouncing between front-end client-side development (making things connect on web pages, and making them look pretty), back-end development (Building the interaction between web pages and small servers, designing and kitting up the databases), and some orchestration (which I’m still awful at). This is the list of tools that I use. Expect this article to be constantly refreshed as my tastes change!
My main piece of kit is a 2015 Macbook Pro (MBP) 15”. As a rough field-working type, it’s vitally important that the device can do all my coding and map work. While Apple has continued to build better keyboards, and I’ve heard that the 2018 MBP’s have protection for their keyboards, I want to wait a couple more years before I take a risk in acquiring grabbing a new mac. In addition, I have the following:
I only get to make great things when I step on the shoulders of giants. When I build new software, it’s because of the contributions of dozens who came before me, and decided that a particular project was worth their time. The following is a list and explanation of the things which I use to make good stuff, now:
Iterm is a command line program for MacOS known for its customizability. I especially like it for it’s toggle show/hide shortcut, which is directly linked to my workflow. It also allows split screens through a keyboard shortcut, which is tremendously useful.
Most command lines in MacOS run on Bash, which is fine. There is also something called Zsh which is another flavour of command line. It’s my preference, at this time.
Powerlevel9k is my preferred plugin that deals with the visualizations in the command line. It’s highly extensible and once you get over how to build it, it will help you turn your plain command line into something like this:
I use RVM and NVM. Truth is many software platforms I work on or experiment with use different versions of Ruby or Node, and being able to switch between versions seamlessly is very important.
Anaconda. Get it, figure it out, love it. There are so many dark and twisting paths in Python package management, and this seems to be the best solution on the block. If you’re reading this, and are having problems or qualms with it, then the geo community’s very own @spara can help in that she can point you in the right direction, or help effect change in the event that structural issues prevent you from going forward.
I still use NPM. I don’t have a strong argument for using either NPM or Yarn, and think that a competition between the two services is the best thing ever for the other.
You’ll want to skip this section if you don’t code or script at all. Most of what I do all day either falls into coding, documenting, or mocking up. For the code management side of the house, I use Git, which is version control. It’s hard to understand what it is until you get into it or learn it, and when you learn it, it becomes a bit like breathing. A good place to start is here if you haven’t run into this sort of thing before.
There was once a day where the fully-featured Integrated Development Environment (IDE) was king. But a lot of beginners found it to be too many things to too many people. Eventually, people started once again to prefer applications that were just plain ascii text editors. Then they added plugins that resulted in a stone-soup of IDE’s where the community brought the functionality to the table of a plain text editor. Some of the more popular ones I’ve run into in my career have been Sublime Text, Atom, Notepad++ and a few others…
…In my work, I use a combination of VIM and VSCode. Eventually, it’s my intent to become vim-only, but that’s going to be sometime in the future.
Microsoft recently built this thing. It has plugins. It’s completely open-source and free and the best.
The following is a list of my plugins:
The last one is fantastic, and offers me an early warning on the package size of any dependency I’m about to add.
As geo people, we deal with CSV a lot more than we want to. When we look at it raw, it can be hard to tell which column a cell belongs to. This plugin helps by colouring the text of each column the same.
Sometimes as a developer, you’re going to have to make write multiple lines of the same thing, but with different numbers. This helps by allowing you to select multiple things and add a sequential number of any geometric series. It’s a decent time-saver.
This is just syntax-highlighting for TOML files. Useful if you’re going to be getting into Tegola, which uses TOML as its standard for configuration…
Syntax highlighting of dotenv files. Useful.
Essential. This helps me observe who changed what when, all from the comfort of my text editor. Great if I need to ask people how they did that thing they just did.
Truth is that Vim is intimidating at first, but the more you use it, the more it becomes essential if you obsess over efficiency. Vim is the thing you want if you don’t want to move your hands from the keyboards while you type. It will get you from one end of the bracket to the next, and it is littered with shortcuts that can turn you from a decent developer into a something else… Or so the promise goes…
I personally use it for dotfile configuration, as well as git branch management. Eventually I hope to go beyond.
The following is a list of my plugins:
Sometimes, it helps to have a GUI GIS analysis tool to help inspect features on a Database, or muck around with maps and cartography. This is the GIS client I should be using, and I’m still not even close to pro at it.
But as a tool, it continues to improve and amaze.
This is something I earned as part of a scholarship in 2013, and I kick its tires every once in awhile to build something new.
A note: I am horrible at design. I enjoy brutalism, and believe that speed is better than looks. That being said, I still endorse Sketch as a tool for mocking up my sites.
`Much easier to deal with than a subscription for the time being, and the price was decent when I purchased them. When I become more advanced, I might look at Adobe. Not now.