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
- Wearing Apple
- Android Development Tips For iOS Devs
- Xcode Debugger Quick Look
- App Purchases Twice as Likely Among iOS 7 Users
- Steve Jobs Hated The Idea Of A Multi-Button Mouse, Designer Claims
- Agile Is Dead (Long Live Agility)
- The Flight of the Birdman: Flappy Bird Creator Dong Nguyen Speaks Out
- ReactiveCocoa
- API Design, the Main Thread, and Queues
Control of the Week
ZSSRichTextEditor
A beautiful rich text WYSIWYG editor for iOS with syntax highlighted source view. MIT licensed. |
Weekly Roundup
MSSlidingPanelController
NKOColorPickerView
A block-based and easy-to-use Color Picker View for iOS. MIT licensed. |
BPForms
Dynamic forms for iPhone/iPad MIT licensed. |
SOMotionDetector
Simple library to detect motion type (walking, running, automotive) MIT licensed. |
BBBadgeBarButtonItem
SECollectionViewFlowLayout
A flow layout for UICollectionView that implements swiping to select multiple cells MIT licensed. |
MSPageViewController
Create UIPageViewControllers using only storyboards License unspecified. |
TKGallery
DKPaginatedTableViewController
Paginated Table View Controller - allows create table view controllers with paging. Please use Project with Example. MIT licensed. |
BJTableCeption
Create categories for UITableView Sections to better organize your rows. It's like a table inside of a table. MIT licensed. |
TAPKeyboardPop
A small category on UIViewController to enable animating keyboard dismissal with the interactive pop gesture (just like in iMessage). MIT licensed. |
UIView+Shake
UIView category that adds shake animation MIT licensed. |
PIImageDoodler
App to take any picture from photo album and draw custom drawing and erase it. License unspecified. |
NVDate
NVDate is library for handling NSDate manipulation in iOS Development. MIT licensed. |
TAXSpreadSheet
A view that display cells like spreadsheet. MIT licensed. |
TAXHeaderSheet
A spreadsheet view that have header/footer. MIT licensed. |
XCTestAsync
An extension to XCTest to enable running asynchronous unit tests MIT licensed. |
ARSPopoverController
Convenient popover without own background. Take your viewcontroller and do show it above your interface BSD licensed. |