Becoming Bilingual @ Coursera

March 16, 2016

Photo under CC by Tsahi Levent-Levi

Halfway through my HCI degree I “saw the light” and moved from a flip phone to an Apple iPhone in 2010 despite being notoriously cheap. The following year I wrote my first iOS app for the device. Since then I’ve worked at Apple in the iOS division for two and a half years, watched every Apple keynote, been developing in Swift pre-1.0 and worked on Coursera’s iOS app while releasing another iOS app on the side…

So why have I been working on Android in Java for the last nine months?

read more …

Tags

Pack List: 500 Trail Miles of Experience in Your Hand

October 10, 2015

Pack List App Icon

The culture of outdoor recreation has been evolving, but the software tools that exist for it have remained stagnate. I’ve seen about a dozen experience-sharing or trail-finding apps rise and fall while the majority my own research still relies on distributed blogs, word of mouth and in person training. That is why I created Pack List, the iOS App to puts years of knowledge and hundreds of miles of backcountry experience in your hand.

read more …

Tags

Modular Architecture for iOS in Swift

September 23, 2015
CC liscense

Photo under CC by Pascal

I spoke at AltConf 2015 about the Modular Architecture we at Coursera use to write our iOS App. This architecture strives to encapsulate and bound our features to reduce complexity and improve reliability. Some great advantages of this approach are:

read more …

Tags

HTML Rending in Swift with Dynamic UITableViewCells

August 9, 2015

I’m a firm believer that native UI is superior to the web view experience on mobile. However, if you want rich-text user generated content support across both web and native platforms a markup language rendered natively is definitely the way to go. Trying to support the full-HTML standard natively sounds like a nightmare, but if you allow a restricted subset of the tags the problem becomes more manageable. In this article I’m going to walk through what solutions to HTML rendering exist on iOS and how I’ve implemented it under the intensive re-use / responsive scenario of rendering it in a UITableViewCell.

read more …

Tags

Advanced UI Testing: Strategies, Hidden Gems and Limitations

July 5, 2015
xcode icon derivative

Image by Yung-Luen Lan

Previously I’ve introduced using UI Testing and discussed the differences between UI Testing in Xcode and the prior UI Automation Instrument. However, there is a lot more to learn about UI style testing. In this article I’ll speak about how to think about the end-end life-cycle of tests, some limitations of the Xcode solution and some undiscussed functionality.

read more …

Tags

Xcode UI Testing vs. The UI Automation Instrument

June 28, 2015
xcode icon derivative

Image by Yung-Luen Lan

Previously I introduced how to use Xcode UI Testing (UIT) in Xcode 7, but what about the existing UI testing that has been in existence for years via the UI Automation (UIA) Instrument? In this article I’m going to step through the differences and similarities between these two competing solutions to iOS UI testing.

read more …

Tags

How to Use iOS UI Testing in Xcode

June 21, 2015
xcode icon derivative

Image by Yung-Luen Lan

In Xcode 7, automated UI Testing was finally integrated into the IDE to allow developers to seemlessly run integration testing on top of unit testing. Thankfully, this was also introduced in a standard development language (Swift) as opposed to the prior JavaScript implementation. Today I’m going to walk through how this new Xcode feature works and how to utilize it.

read more …

Tags

First Thoughts on Apple’s App Analytics

May 4, 2015

I’ve been digging into eventing data for some time now on the Coursera App using Amplitude to gauge usage, follow user flows and investigate potential production issues. With that experience as a baseline, I’m pretty happy with Apple’s App Analytics. Combining the two systems (internal eventing + Apple’s analytics) I’ve finally been able to create a complete funnel from referrals and app views to app launch and feature usage. However, there are a few peculiar things about the system which tries so hard to be beautiful, but sometimes ends up convoluted.

read more …

Tags

Swift-Snippets: A Max Function for Optionals

March 22, 2015

The other day I needed to compare several values to determine which one was the maximum. Great, there is a max function built into the swift language!

One catch, that max function only takes unwrapped values and I needed to compare optionals. Simply unwrapping these optionals and then calling the built in max function doesn’t scale because you have the same number of permutations as the max comparison implementation itself. Therefore, I decided to write a generic max function that takes optionals:

read more …

Tags

Enjoy Your iPhone More by Ditching These Apps

January 12, 2015

The best replacements for Apple’s worst apps on iOS 8: Notes, Weather and Reminders

Image taken by Brice Pollock under CC standard license

I’m a huge fan of Apple and iOS. However, lately I’ve become increasingly frustrated with the default apps in iOS 8. This frustration is mainly due to the atrocious syncing between OS X and iOS. I’m definitely not the only one who has noticed the drop in quality. So, if you are feeling the pain as well, here are some great replacements for three core iOS Apps: Notes, Weather and Reminders.

read more …

Tags