Monday, August 31, 2015

August in iOS

Last year I began working with iOS right around the time Swift came out. While I'm glad to have some familiarity with Objective C, Swift is much more comfortable (coming from working mostly in Ruby and Javascript). I soon dove in! While this blog's been silent in 2015 so far, I've got tons of draft posts sitting around that need to see the light of day.

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:

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 Nanodegree

With 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)
You can find a much more detailed guide at

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!

Wednesday, December 31, 2014

December #TMIL

This month I learned that this year I learned to keep a New Year's resolution alive, that documenting everything is usually a good idea, and most important, to relax and have fun during the holidays.

Happy 2015!

NovEmber #TMIL

Over the summer, I decided it was time to learn a client-side Javascript framework. I chose to start with Ember, mostly because it felt more like Rails and I kept hearing about the combination of an Ember app with a Rails backend. While I usually jump right in and try to build something, I had enough other coding side projects going on at the time (and it was summer!), so I joined the Ember Weekly mailing list, attended a few of the NYC meetups and kept a loose eye on things... which have been moving along quickly! By November, it was time for another look.

October #TMIL - Browser Extensions

From the Unfinished Business department:

At the Books in Browsers Conference hackathon in October, I worked with a few others to port the Readium Chrome extension, an in-browser epub reader, to Firefox. The core team had already been working on a branch which we didn't notice before diving in. Oops. However, it seems like they ran into the same issue that prevented us from going all the way: working with the user's filesystem from the extension.

Tuesday, December 30, 2014

September #TMIL - Back to Drupal

Last fall, I finally got around to moving, a Drupal site, to a new host. It was getting a little ridiculous that I had no way to ssh into the hosted space and couldn't simply git push origin master or similar to deploy (no need for anything fancy given the traffic and simplicity of the site - see my previous workaround here). Why didn't I just quickly redo the site in Sinatra or Rails? Mostly because it works fine as-is, I like Drupal (the nostalgia factor of being the first web framework I learned well, also it's a great CMS and community) and jumping around between different environments keeps you sharp. This post rolls through a few things I came across while moving the site, maybe it'll help someone out there.