/ tools

Software Tools 2017

As developers we love our tools. Live and die by our tools. So currently this is a list of what I use and a few comments about them.

Text Editors

  • Sublime Text - A must have. Yes, it's expensive for a text editor, and probably at my limit of what I'd pay for, but the one thing that REALLY makes it worthwhile is Package Control, there is a really good ecosystem around addons for Sublime. Some of my favourites being JSON Reindent (this one saves me a tonne of time while looking at JSON outputs) and Typescript. I would have recommended Sidebar Enhancements, but it looks like that's been taken over by Kite, and they have really done their dash with me with their sneaky telemetry "enhancements" and adding advertising into popular mods for Atom. The real winner for me with this editor is its speed. Start up time is insanely quick, and it remembers your last open files (even if you didn't save them).
  • Visual Studo Code - One thing Microsoft does well is support its developers. Their tools are amazing, and VSCode is no exception. For working on web projects in HTML, Javascript, Typescript, etc there is no better tool in my opinion. Much like Sublime, there is an amazing ecosystem around the extensions. Some personal favourites being Bookmarks, Rainbow Brackets, vscode-icons and npm (this is great when working with npm scripts and running them directly from the editor).
  • Atom - Not one I use very often, but if you can't afford Sublime, this is a good alternative. My main issue with it is that it's slow to start up, and in that case I may as well just use VSCode. However props must be given to it starting the whole "Electron" set of apps.

Source Control

  • Git - This has changed developement more than pretty much any other tool. Being able to branch and merge code quickly and easily changes the way we work. Defect, branch it, new feature, branch it. Time to release, merge. Easy. Being distributed also means we check in a lot more and maintain more of a history of our changes, and are able to revert if a path we go down doesn't work out. The downside, when working on multiple projects (eg. Libraries included in a main project) is that we no longer have atomic commits across different repos (which is how Git prefers to work)
  • Source Tree - For managing your repositories from a GUI. This is my constant goto tool for Git.
  • GitKraken - Another Git GUI with a few nice abilities I haven't seen in other repositories (Solo mode is awesome). Unfortunately I find that it can be a little slow, which is what keeps me from using it as my primary tool. It is getting faster with each release though.

Compare/Merge tools

  • Beyond Compare - I've tried a number of free tools, but nothing comes close to Beyond Compare. Yes, you have to pay for it, but the lack of frustration and time saved is more than worthwhile. Even if you're a solo developer, comparisons between code are important, but not even that, being able to easily (depending on your setup) compare folders between production server (or even to development servers) and copy files between them is so amazingly nice.

Integrated Development Environments

I find I don't really need IDE's as much these days with Sublime and VSCode being a bridge between plain text editor and IDE. However, sometimes it's nice to have a full IDE.

  • Visual Studio Community Edition - Sometimes you need more than basic tooling. C# development if you're doing more than is offered by .NET Core is one such case. It's nice that there's a free edition of the full Visual Studio to fill this.
  • Eclipse - Looking for something free for Java development. Eclipse isn't too bad, it's a little slow and bloated, but does the job. It's refactoring tools aren't too bad either.
  • IntelliJ IDEA - If you're willing to pay, IntelliJ tends to be the gold standard of full IDE's for Java development. I've only just started using this as it's supplied through my work. I have used Android Studio however which is based on the cut down version of this. It's ok, but not fantastic. I personally prefer Eclipse when dealing with the free offerings, but I'm not tied to it. Still looking in this area, but I don't do a lot of non frontend work (where VSCode is my editor of choice)

Other tooling

  • Node.js - Node has changed everything. Its importance cannot be understated. Love or hate Javascript, so much good has come out of Node. I personally even just use it for scripting as the available libraries are amazing and easy to find, this leads on to...
  • NPM - I know Yarn is the new hotness right now, but I haven't felt the need to dive into it yet, NPM currently suits all my needs. Easy to install packages, included with Node.js, it really does the job I need it to. The speed improvements in the latest version are very nice too.
  • Gulp - I used to be a big fan of Grunt, but Gulp has overtaken it for nicety. Being developers, we work with code, so having our build tools take code rather than configuration is very nice and homely.
  • Webpack - Unfortunately back to configuration rather than code, but Webpack does some very nice things. Especailly when working with React. Being able to include css files in your code helps keep your components so much nicer and seperated.
  • SASS - CSS preprocessors save a lot of time. I don't care which you choose. Personally I love SASS. It just makes sense in my own head over LESS. Being able to nest your CSS really helps keep your files clean and easy to follow. Unfortunately being a superset of CSS, it's easy to follow bad practices however.
  • NYC - NYC is a very nice interface into the Istanbul code coverage tool. When writing tests, code coverage is important. Knowing your coverage percentage is necessary. It's easy to miss paths. Your goal should be to get this as close to 100% as possible.

Blogging/CMS

  • Ghost - Currently what you're reading this on. Ghost is a great little blogging tool where you write your posts in Markdown (which you should be used to if you're on Github at all). Being able to keep your hands on the keyboard for bolding, italics, etc saves time. Downside is you need a VPS or a full server to run it as it's based on Node.js.
  • Koken - An amazing CMS for Photography sites. Given that this is a major part of my life I thought I'd better put it here.