Happy New Year! For those who had a break I sincerely hope that you found some time to rest and relax. I usually take advantage of the time to reflect on the previous year and make any adjustments that help to get me to where I want to be. This year I will be doing much more to help you build mobile products, so stay tuned!
[alert color=”yellow”]I’m starting this year off with open ears. Please take a moment to provide feedback via this short survey. It’ll help me help you.[/alert]
Best Wishes for a 2015
To get you rolling in 2015 I thought I would share some of the tools and libraries that I use when building iOS products.
If you’re just starting out don’t feel like you have to do everything the hard way. Take advantage of some of these great tools and libraries built by your fellow developers. When you begin to understand more of the development process you can drop back to explore areas that are interesting to you.
Great tools can simplify so much. While some tools have a learning curve it can pay dividends in the future by saving you a lot of time. Here are a few tools that I live by.
SourceTree : Free
SourceTree is an Atlassian product that makes managing Git repositories much, much easier. It’s powerful while being simple. Now, it’s not as simple as some alternatives (GitHub App), but I enjoy it. It’s easy to get a high-level look at your project branches, tags, stashes, and submodules (if you choose to use those versus CocoaPods).
Kaleidoscope : $69.99 (Trial Available)
When I need to fix a merge conflict I can go from SourceTree to Kaleidoscope to review the conflict. This app is powerful. It can diff text, images, and folders. It also looks great and works. It’s price tag is high, but you’ll find value in it quickly if you run into conflicts often.
Sip : Free
Since I often do a mixture of design and code I run into situations where I need to grab colors often. I do my best to set a preset color palette in Xcode, but sometimes it’s not enough. Also, it is also valuable to work with Hex or RGB values directly. For that you can’t beat Sip. This tool will capture a color and generate the code you need. For example, if you work with UIColor a lot then this will save you some typing. Grab a color. Paste the code.
Dash : $19.99 (Free to Download w/ Nag Screen)
I keep all my documentation sets in Dash (iOS, Rails, Unity3D, and several more). You can download several cheat sheets that include sample code and key commands. To take it a step further, Dash includes a snippet manager which works very well.
xScope : $49.99 (Trial Available)
I’m a perfectionist. It drives me nuts when things are not aligned. This tool helps me with that. It has many features, but the ones I use most often is the Dimensions and Crosshair features. The crosshair verifies alignment and dimensions gives me a quick look at the size of a particular element. You can get much more out of xScope, but that’s where I use it the most.
Sketch : $99.00 (Trial Available)
I’ve been using Photoshop since Photoshop 4.0 (Yes, that doesn’t include a CS in front of it… 1996 anyone?). I have a subscription to Adobe Creative Cloud and still use Photoshop. It’s just difficult to beat this juggernaut given my time with it, but Sketch has done a phenomenal job trying. If I had zero experience with Photoshop I would learn Sketch because it makes several tasks much easier to deal with. It’s also far cheaper. Even with Photoshop experience I would recommend it.
If you’re new to this jump into Sketch. There are a lot of designers who will be sending you Sketch files in the future instead of PSD files.
Slack : Free (Upgraded functionality available starting at $6.67)
Communication. It’s necessary and Slack makes that much more enjoyable. With recent updates managing many teams became much easier. The free version will not archive your chat history which could be a problem for some. For those people write a simple chat bot that archives the content for you. Slack has a ton of integrations — https://bbiz.slack.com/services/new.
Scrivener : $45 (Trial Available)
If you publish any writing then you need to grab Scrivener. It makes managing your content much easier. I can research, draft, and create the final version within Scrivener. There is a lot to this app so find a quick overview video on YouTube to get some bearings.
Hemingway Editor : $6.99 (Free via Web)
This editor highlights common writing errors. It catches wordy sentences, passive voice, and complicated words to help write clear content. I’ve been using this much more over the past month or so. If you need this app without an internet connection you can grab the desktop app.
For certain things it makes little sense to re-invent solutions. For a full-blown project I could easily use 20-40 libraries. Facebook’s Paper app attributes somewhere around 150 libraries! They know when they should drop back and invent something—it’s usually doesn’t exist.
If you spot problems with any of the libraries you use then jump in and fix it. At least file a bug report to help those maintaining the project.
Submodules or CocoaPods? The debate rages among some of you out there. I’ve abused both and I’ve come to enjoy CocoaPods a lot. Once you get the Podfile syntax down it becomes simple to maintain a set of libraries.
AFNetworking (Swift: Alamofire)
Nothing beats AFNetworking in the networking library department. I’ve been using this for a long time and have come to enjoy it.
Animation is much more fun with Pop. Move view objects, give them a little bounce, and get a nice feeling app. You can do fun things with Pop fairly easily. The most difficult thing you’ll deal with is chaining animations together. For that it requires experimentation to get the feel right.
If you’re writing an app that requires a chat component then take advantage of this great library. You get a lot of great features out of the box and it works with table and collection controllers.
Work with phone numbers in your app? This library is an iOS port from Google’s phone number handling library.
Imagine calling a web service and immediately turn the JSON response into an array of objects. RestKit is a powerful object mapping engine that does just that. It takes some time to get your head around, but after that you’ll be flying.
CocoaLumberjack + NSLogger
Move away standard console logging. I’ve been using CocoaLumberjack for a long time now. You can write log data to many destinations (non blocking) and use NSLogger to stream log data over Bonjour.
Masonry (Swift: Snappy)
Auto Layout constraints are way too verbose for my liking. Masonry calms that down by providing a much nicer syntax for you to work with.
Having the ability to change characteristics of your app, on the fly, is extremely useful. Game developers take advantage of the ability to tweak variables all the time. Your app can benefit from this too. I most often use it when I need to give a team member the ability to change animation settings. It’s also a good place to disable & enable functionality for those who want it.
SDWebImage & Haneke
To help cache and manage images I rely on a 3rd party caching library focused on doing that job well. I’ve used SDWebImage for this task in the past, but another contender looks interesting—Haneke. Check out this great blog post by Bogdan Poplauschi who explored caching library performance and features.
While this is a comprehensive list of my most-used tools and libraries, it goes further. I’m discovering new libraries that developers have built all the time, but have little time to experiment with them as much as I would like.
Save some time, buy a tool and support some developers. Don’t hesitate to jump in and experiment with any libraries you discover. In fact, helping authors can be a great learning experience. If you feel like it’s too daunting then take a step back and introduce yourself to the maintainer. File a bug report that you’ve discovered. Do some small things that get you moving. Don’t feel like you have to make a dent right away. Your curiosity is what’s needed.
What are the top tools and libraries that you take advantage of?