Weekly Roundup: Things I Have Learned

If you've been reading our weekly roundups for a while, now, you probably know that in addition to iOS development, the other thing I'm really passionate about is photography. I've been shooting at least a photo a day every day since Jaunary 1, 2013, and in that time I've learned a couple things that should be self-evident, but weren't necessarily to me at first.

Rule 1: Understand your tools and how they operate inside and out. I've spent 2014 shooting almost entirely with manual cameras and black and white film, and virtually every aspect of the experience has positively informed my digital photography. Being forced to memorize full, half, and third-stop apertures, and often working with a camera that doesn't even have a built-in light meter (i.e. to figure out the proper exposure for a scene I need to use a dedicated, external light meter) has improved my ability to eyeball and set up a photograph even when I'm working with a DSLR.

Similarly, I've probably saved myself hours of time and a ton of frustration over the years by memorizing Xcode and OS X's keyboard shortcuts. Want to jump to the beginning of the line you're on? Ctrl+A. End? Ctrl+E. Want to jump a single word forward or back? Opt+Left or Right Arrow. Spend an hour or two reading through lists of some of OS X's 'hidden' keyboard shortcuts and you'll make yourself significantly more productive. (and impress the hell out of your friends and coworkers.)

Rule 2: Use the right tool for the job. If you're trying to shoot a landscape, you're likely going to want to bring a wide angle lens, which can capture the entire scene. If you're shooting a portrait, you're probably going to want a shorter telephoto lens (and perhaps a strobe or a reflector, or both). If you're doing street photography, leave the hand cannon at home, and bring along a rangefinder instead[1].

By the same token, if you're trying to build a simple app, skip the bloated extras, and use what's built in. Heck, I bet most of the time you probably don't even need AFNetworking (not that I don't love it; I use it in virtually every app I build, but I think that for simple cases it's overkill).

Rule 3: Every rule can be bent or broken. I have, on a few occasions, very successfully captured landscapes using a telephoto lens. This sounds crazy, but I very intentionally used a telephoto lens in order to allow me to capture a single landscape scene across 20 different photos. The net outcome of this was that, after stitching the photos back together in Photoshop, I had a single photo that could be printed at a size of 10 feet by 1.5 feet. The only rules that cannot be broken in the iOS world are the ones that Apple (sometimes arbitrarily) set.

Break the rest, but know why you're doing it.

Rule 4: Remember that, at the end of the day, these are just tools that help us accomplish a goal. Lots of photographers obsess over camera gear in a way that makes software developers look like a bunch of luddites. The cameras and lenses we have access to today put everything that the greatest photographers of the 20th century had available to them, and yet lots of my peers waste endless hours convincing themselves that if only they could spend $10,000 on the latest and greatest Leica hardware (and that's a low estimate on the cost of some Leica setups), they'd finally be able to create beautiful photographs. I bet you almost anything that Wil Shipley, Craig Hockenberry, Daniel Jalkut, or Brent Simmons could produce utterly stunning software with a 2008 MacBook Air and an iPhone 4.

Don't convince yourself that external, purchase-driven limitations prevent you from creating something amazing. They almost certainly do not.

Best,
Aaron

[1] I know this sounds like it contradicts 4 in some ways. But just make sure you read 3, too :). If you're stuck wanting to use your massive DSLR for street photography, drop $80 on a nifty fifty and get back to shooting.


What We're Reading


Control of the Week

ZSSRichTextEditor

ZSSRichTextEditor

A beautiful rich text WYSIWYG editor for iOS with syntax highlighted source view.

MIT licensed.

Find out more Add to Favorites  See a Video


Weekly Roundup

MSSlidingPanelController

MSSlidingPanelController

The MSSlidingPanelController is a library which allows to easily integrate in your iOS 7 project a sliding panel mechanism.

It is able to manage two panels which can be configured separatly. Either for the left and right panel, it is possible to set the width, the status bar color, the status bar color transition, the opening and closing gestures and the interactions with the center view. Furthermore, the controller is now fully compatible with Storyboard.

For more information, consult the README file! By the way, two examples are available to help you!

BSD licensed.

Find out more Add to Favorites


NKOColorPickerView

NKOColorPickerView

A block-based and easy-to-use Color Picker View for iOS.

MIT licensed.

Find out more Add to Favorites


BPForms

BPForms

Dynamic forms for iPhone/iPad

MIT licensed.

Find out more Add to Favorites


SOMotionDetector

SOMotionDetector

Simple library to detect motion type (walking, running, automotive)

MIT licensed.

Find out more Add to Favorites


BBBadgeBarButtonItem

BBBadgeBarButtonItem

Create a BarButtonItem with a badge on top. Easily customizable. Your BarButtonItem can be any custom view you wish for. The badge on top can display any number or string of any size or length. Reproducing the behavior of a badge value on a tabBarItem in a Navigation Bar.

MIT licensed.

Find out more Add to Favorites


SECollectionViewFlowLayout

SECollectionViewFlowLayout

A flow layout for UICollectionView that implements swiping to select multiple cells

MIT licensed.

Find out more Add to Favorites


MSPageViewController

MSPageViewController

Create UIPageViewControllers using only storyboards

License unspecified.

Find out more Add to Favorites


TKGallery

TKGallery

TKGallery is a simple iOS photo browser with dynamic grid view of images, TKGallery can display one or more images by providing either UIImage objects or from NSUrls. Photos can be zoomed and panned. The browser can also be used to allow the user to share image to social networking sites from main detail imageView.

MIT licensed.

Find out more Add to Favorites


DKPaginatedTableViewController

DKPaginatedTableViewController

Paginated Table View Controller - allows create table view controllers with paging.

Please use Project with Example.

MIT licensed.

Find out more Add to Favorites


BJTableCeption

BJTableCeption

Create categories for UITableView Sections to better organize your rows. It's like a table inside of a table.

MIT licensed.

Find out more Add to Favorites


TAPKeyboardPop

TAPKeyboardPop

A small category on UIViewController to enable animating keyboard dismissal with the interactive pop gesture (just like in iMessage).

MIT licensed.

Find out more Add to Favorites


UIView+Shake

UIView+Shake

UIView category that adds shake animation

MIT licensed.

Find out more Add to Favorites


PIImageDoodler

PIImageDoodler

App to take any picture from photo album and draw custom drawing and erase it.

License unspecified.

Find out more Add to Favorites


NVDate

NVDate

NVDate is library for handling NSDate manipulation in iOS Development.

MIT licensed.

Find out more Add to Favorites


TAXSpreadSheet

TAXSpreadSheet

A view that display cells like spreadsheet.

MIT licensed.

Find out more Add to Favorites


TAXHeaderSheet

TAXHeaderSheet

A spreadsheet view that have header/footer.

MIT licensed.

Find out more Add to Favorites


XCTestAsync

XCTestAsync

An extension to XCTest to enable running asynchronous unit tests

MIT licensed.

Find out more Add to Favorites


ARSPopoverController

ARSPopoverController

Convenient popover without own background. Take your viewcontroller and do show it above your interface

BSD licensed.

Find out more Add to Favorites

Join the Mailing List

Sign up for the mailing list to get our articles and the coolest new open source controls delivered right to your inbox.

We'll never share your email with anyone else.

(optional)
(optional)