Kyle Banks

My Development Toolkit

Written by @kylewbanks on Mar 14, 2013.

I'm a firm believer that every developer, like a carpenter or artist, should constantly be trying to improve their toolkit. These tools should help you accomplish your goals in a way that works for you. Just like a single paintbrush doesn't suit every artist, not all tools will suit every developer.

In an effort to keep tabs on the tools that I use, I thought I would document a list of the tools I use for development, and share why I use them.

Java, Groovy, and Grails

IntelliJ IDEA - While there is a free version of IntelliJ, I'm lucky enough to have a license for the full IDE thanks to my company, and have come to use it very extensively. IntelliJ is the only IDE I have found that actually has good support for Grails, so I use it just about every day. I'm still using version 11, but excited to try out the newly released version 12 shortly.

Grails Console Plugin - The console plugin for Grails allows you to navigate to /console on your website and execute Groovy/Java code in your browser. The plugin gives you access to all of your domains, GORM, and just about anything you could want, so you can quickly test out functionality as you write it by executing it in the console, and ensuring the concept works before fully implementing it and putting it into a controller or service. Obviously this is a big security risk, so make sure you disable the plugin before going to production.

GSON - GSON is the most powerful JSON parsing and entity mapping tool I have ever used. I've written about the power of GSON a few times before so I won't repeat it here, but if you want a quick example of how to use GSON with Android, check out this post.

Android

Eclipse - While I truly can't stand using Eclipse for anything else, it is the only IDE officially supported by Google for Android development. Obviously you can use any editor you like, but I'd personally like to stay on the beaten path. I have too many bad memories of trying to get the old (2.0) Android SDK setup to want to bother going about it my own way.

Android Holo Colors Generator - This tool is a very simple website that allows you to customize the colors of all Android UI components. It generates all the required assets including images and stylesheets that you can easily plug into your project and be on your way. It's not that there is any real difficulty in modifying the colors yourself, but this tool takes all the time and effort out of it so it's nice to have the link handy.

Objective-C

Xcode - Really a no-brainer here. Xcode is hands down the best Objective-C IDE out there. With fantastic autocompletion and syntax highlighting, various common project templates to get you started, and easy-to-learn hotkeys, there is no reason to use anything else. Xcode also has great support for C and C++.

SDWebImage - I previously wrote about a tool I developed for asynchronously downloading images in iOS. I normally only use that tool while quickly prototyping functionality, and once my application is ready for performance tuning, I turn to SDWebImage to take over the image downloading. This library handles everything you could want including memory and disk caching, asynchronous downloading, image compression, and more. The library is written as a category for UIImageView so it is extremely easy to plug in and start using.

CSS and JavaScript

CodeKit - True to it's word, CodeKit really is like steroids for web developers. CodeKit allows you to develop your CSS and JavaScript while having it injected into the web page you are working on, without a browser refresh. Every time you save, your scripts and styles are auto-refreshed in the browser, without effort. It is fantastic. In addition to the auto injection, CodeKit offers a plethora of features like framework and project management, compilation of Less and Sass files (among others), image optimization, and more. I think it is well worth the $25 to buy, but there is also a free trial if you want to check it out.

Python/Django

IDLE - IDLE is a very minimal IDE built with Python, for Python. The reason I love IDLE is the interactive console, which allows you to mess around with Python on-the-fly, without necessarily having to create a project, or any files at all for that matter (similar to the Grails Console plugin mentioned above). This makes it great for visually confirming that a concept will work, prior to fully implementing it into your project.

Sublime Text 2 - I'm still looking for a full featured Python IDE that has decent support for Django, but have been using Sublime Text 2 in the meantime. I know a lot of people rave about Sublime, but personally I haven't found it to live up to the hype. It is powerful, to be sure, but I have never been able to get fully comfortable in it.

SQL/Database Management

Navicat - I've recently moved away from MySQL Workbench in favor of Navicat for my database management needs. I find Navicat does a great job at managing multiple database connections and has great support for PostgreSQL and MySQL, the two database vendors I most commonly use.

Source Control

Git (Command Line) + GitHub - Perhaps it's because I used Git before SVN, but I have always found Git to be so intuitive, fast, and efficient, that I can never get comfortable using SVN when I have to. I can use it, but I'd always rather be working with Git. Git has become so ingrained in my workflow, that I very commonly finding myself committing changes locally without even thinking about it. Once I push to GitHub, I have a very readable commit history for every ticket I work on, thanks to all of the local commits. That's something I have never been able to reproduce with SVN, I'm much too accustomed to locally committing everything and pushing once I'm comfortable (or ending the day).

General

Vi - I get why everybody hates on Vi, and I will admit that I had a tough time with it when I was first learning the shell. The commands are far from intuitive, the key-combinations are entirely abnormal, and it's not the prettiest thing to look at. With that being said, once I was able to get used to the key strokes, it has become my favourite tool for writing shell scripts, quickly editing HTML, and for modifying config files. I can honestly say I have probably spent more time in Vi than any other single editor that I use.


I will try to keep this list up to date as my habits change, and as I remember the many tools I've certainly forgotten to mention, but that just about wraps it up for now. What's in your toolkit?

Let me know if this post was helpful on Twitter @kylewbanks or down below, and follow me to keep up with future posts!