Development Tools I Use in 2016
It’s been 5 years since I wrote the post My Development Toolbelt, inspired to do so by the Hanselman. I thought it was time to write another post on the development tools I use today, in 2016. So, here we go.
When working with actual source code, and the construction of it, these are my go to tools.
- VS Code (a.k.a. “Code”) - I love this code editor. After switching off of Visual Studio as my go to IDE, I tried Sublime Text, Atom, WebStorm, Vim, and RubyMine. Some were better than others but I eventually settled on Code as my primary editor/debugger. It rocks.
- Git - Yes, I’m a Git source control guy. Along with everyone else.
- GitHub - Yes, I use GitHub to store Git repos and collaborate, along with everyone else.
- Beyond Compare - I’m still using this gem for file diffs and 3-way merges. I was thrilled to learn they released an OS X version that works great.
- mitmproxy - A simple, CLI based HTTP proxy. I used to be a Fiddler guy when I used Windows primarily but unfortunately the Fiddler version for OS X is straight up bad.
- RegExr - RegEx made easy.
- CSV To Markdown Table - This website comes in handy when I have CSV output (say, from a db query) that I need to display in Markdown (say in a GitHub issue).
- JSON Formatter and Validator - Makes JSON pretty.
- GenerateData.com - Generates sample/fake datasets to use in prototypes or for testing.
DevOps / Cloud
To get code built, tested, and promoted to different environments, the following tools are invaluable for me.
- TeamCity - Continuous Integration and build management server. TeamCity is still amazing.
- Jenkins - I’ve started using Jenkins at work and although I prefer TeamCity for CI, Jenkins is pretty good (and free!).
- AWS - I use AWS primarily for S3 and EC2 machines.
- Digital Ocean - Although I do use AWS EC2 for machines, I have been using DO more and more for machines that run my personal projects. Although DO doesn’t have as many features as AWS/EC2, it is catching up quickly.
- Ansible - From the website: “Deploy apps. Manage Systems. Crush Complexity”. Yeah, that pretty much explains it. I use Ansible to provision and deploy apps. It makes things automated and scriptable.
- VirtualBox - I use VirtualBox to create isolated dev environments locally. Although, I’ve been veering more towards Docker for this type of thing lately.
- Navicat - I use Navicat for PostgreSQL and SQLite management.
- DB Browser for SQLite - Great tool for super quick access to a SQLite database. It has very minimal features but is handy for trival things.
These are the tools and software I use for my base development machine setup.
- OS X / El Capitan - I switched over to OSX a few years ago as my primary desktop OS for development.
- LastPass - I was a longtime hold-out from using a password manager but since I dived in, I’ve never looked back. In LastPass, I store website passwords, system credentials, software license keys, RSA Key Pairs, and other misc secret stuff I need to reference from time to time. It’s nice having everything centralized and secure. I tried 1Password for awhile but the Android (my mobile platform of choice) client for LastPass is much better in LastPass.
- VirtualBox - I use VirtualBox to run Windows 10, vagrant boxes and some Linix distros I play around with.
- Retina Display Manager - When I am out with my laptop somewhere and don’t have my external monitors, I just crank my resolution up to something super high so I have more screen real estate.
- BetterSnapTool - I use this to resize windows in OS X, particularly to snap windows to the left/right on my monitors. It allows you to accomplish what you can do with Windows+Right or Windows+Left in Windows 10.
- Zsh - I prefer Zsh over Bash. It has a lot of convienent, productive features.
- Oh My Zsh - Oh My Zsh manages Zsh config and makes adding in themes and plugins trival.
- LICEcap - Record screen video as an animated GIF. This is super handy when I want to record my screen and post an animated GIF in a GitHub PR / Issue for others to easily see. I prefer the simplicity of this tool rather than using something heavier like Jing or CloudApp.
- Page Ruler (Chrome Extension) - From the website: “Draw a ruler to get pixel dimensions and positioning, and measure elements on any web page.” Yep, that’s what it does.
- Awesome Screenshot (Chrome Extension) - I love this tool and can’t live without it. This makes taking screenshots (and optionally annotating them) dead simple.
- bash scripts - I have a collection of bash scripts for handy things like abstracting Git commands and
wsfor starting a lightweight webserver from the current directory.
- Photoshop Elements - I use this for image editing when I need to do something non-trival.
- StackOverflow - I’m unashamed to say I use SO (along with everyone else!) all the time and it would probably take me significantly longer to get stuff done without it.
- Twitter - Twitter is a great resource for staying up to date with tidbits in software development. I avoided Twitter for years because I considered it distracting and purely social but it turns out I learn a ton of stuff just by following smart people on there. You can find me @bradyholt.
- Hacker News. I read this daily, along with everyone else. You can learn a ton a stuff on here.
- Reddit - The /r/programming subreddit is a great resource to keep up with interesting articles and news.
- Feedly - When I come across a blog or a site that has great content, I will add it to my Feedly list and read through new articles from time to time. Also, I have a “Podcast” category in here which is a great way to follow the podcasts I like to listen to.
Wow, a lot has changed from 5 years ago!