One new commitment I've made is to start posting a monthly rundown of tips, tricks and adventures as I get back into iOS development, similar to the TMIL (This Month I Learned) series I posted in 2014. Zooming back to last year when I wanted to start learning another programming ecosystem beyond the web world I know and love, here are a few of the resources that helped me get started (and very much continue to help) with the world of iOS:
- The Swift Programming Language (iBooks)
- WWDC videos (2015, 2014)
- Introducing iOS 8
- CS 193P
Zooming forward to a few months ago, I decided that this summer I'd get back into it. The Brooklyn Swift meetups have been an awesome source of keeping up, and it's exciting to follow the language as it develops. Among other technical tidbits, one exciting note from these meetups is the emerging open source ecosystem around iOS development. As was widely reported after the announcement at WWDC 2015, Swift itself will soon be open-sourced. While the language hasn't moved into the top GitHub languages just yet, there are plenty of repo's gaining popularity and it's on its way up in the TIOBE index (as of August 2015). Notably, more companies are following the lead of groups like Artsy and open sourcing their entire production apps. (e.g. Gilt) As noted at an earlier meetup, hopefully the emerging Swift community can build on the successful lessons of others.
Udacity NanodegreeWith the above in mind, and a million ideas, books and tutorials but never enough time, I thought I should add more to my learning load! So, I've enrolled in Udacity's iOS Developer Nanodegree program to help solidify my understanding and work on more significant apps to showcase. (My first project in the program, a work in progress called Pitch Perfect, can be found on my GitHub here.)
While there's the essential work of design, writing good algorithms and such, in web and backend development I've found that a prerequisite to getting anything done (and often most of the day-to-day work of being efficient) is knowing your environment and tools well. For me, that means keyboard shortcuts. Fortunately, they're laid out in a pretty consistent way in XCode.
- Navigator - use cmd-1, cmd-2, etc to jump between different the File, Debug, Test and other panels
- Utilities - use cmd-shift-1, cmd-shift-2, etc to jump between the Attributes, Size and other utility inspectors
- Jumping to a file - cmd-shift-O (the letter O, i.e. open) to open a file or jump to a symbol
- Getting around the menus - this is a must-use item found in most (all?) OS X apps, cmd-shift-? to open an application's Help search index, and using the arrow keys to select the item. In XCode, I've found this particularly helpful when adding constraints, such as 'pin' (rather than the tedium of using the mouse to select items from the Editor->Pin menu)
So far, the Pitch Perfect app has been a good reminder of the value of adding constraints to UI elements as you go (at least, that works better for me). Also, it's been fun playing around with the audio APIs. The first project fetches a local file and plays it back slow or fast. Though not part of the course, I'd like to next fetch a file from the web and play it back... But that's enough for tonight! See you next month!