iOhYes: Recent Episodes

iOhYes

A podcast by iOS developers for iOS developers, delivering news, tips, and rants for professional iOS/Mac developers, with something for enterprise and indie developers alike. Hosted by Darryl Thomas & John Sextro.

View Details

Thanks to all of our listeners, sponsors, former guests and hosts and to Dan and Haddie and the rest of the 5by5 network. This will be our last episode. We hope you've enjoyed the series as much as we've enjoyed producing it.

View Details

Discussion: tvOS Development with special guest Mark Sands

Recreating the Parallax effect

3D transform Sheen (Glossy effect) Shadow Wobble

Top Shelf Extension on tvOS Open Source project

Re:Lax on GitHub

CAR Files

Compiled asset catalog

Theme Engine from Alex

CAR file inspector

Bill of Materials

Tree graph structure

Folklore.org Stories from Andy Hertzfeld about his life on the original Macitosh project tvML Blog post - tvOS App Development Changes by Jared Sinclair

Special Shoutout to Mark’s collaborated on this project James Rantanen

View Details

Discussion: Your App Build Pipeline

Dependency management

Carthage Punic - Clean room implementation of Carthage CocoaPods SPM

Build systems

CircleCI Travis

XCTool from Facebook

Xcode Server

Are you using it? Let us know @iohyespodcast

Darryl's Pick

Punic, Clean room implementation of Carthage

View Details

Discussion: Energy Profiler

For more info see Ep. 104, Power Struggles

Apple really wants us to be good citizens of the battery. Apps that quickly drain the battery will be shunned by users

Remember the Facebook background audio “bug” (some say ploy to allow the fb app to stay alive in background)

“App as patient” metaphor iOS Energy Gauge / Energy Report

provides a high-level overview of energy usage as you test your app

Energy logging on phone

Good for long periods of data collection

Energy Instrument

for best results, target an iOS device wirelessly (I wasn’t able to get this working because you need Bonjour and multicast enabled on your wireless network access point) 20 / 20 is bad, 1 / 20 is good

Energy experts at Apple recommend

Do it never (Do it less) Do it later

Use the background activity scheduler APIs

Do it more efficiently

Picks

John

This Week in Swift from Natasha the Robot

View Details

Discussion: Time Profiler

But first: a brief rundown of the Instruments UI

Toolbar

Record/Stop Pause Target Selection Status display Strategy Selection

CPU data Instrument data Thread data

Detail/inspector toggles

Timeline

Plots data along the time your app was sampled Can be filtered and zoomed Disclosure arrow can toggle display of just the current run or of all runs in the trace document

Detail

Contents vary by Instrument, but this will generally be a table with some representation of the sampled data

Inspectors

Record Settings Display Settings Extended detail (often the heaviest stack trace)

What is Time Profiler?

An Instrument providing sample-based analysis of an application’s activity Periodically samples the call stack to determine where an app is spending its time

These are instantaneous samples. They don’t track the duration of a function call, but rather how many times when sampled was the application currently in said function call. No distinction between a fast function called many times and a slow function called few times Extremely fast functions may not get sampled at all, if they happen to occur in between samples

Provides a detail view listing call trees, optionally separated by thread and/or state, allowing the developer to drive down into calls to identify areas that may need to be optimized

Weight - Percentage of samples in which a function appeared and an aggregate summary of samples (count * sample interval) Self Weight - Aggregate summary of samples in which the function was at the top of the call stack Symbol Name - The thing represented in the current row (may be a function, method, closure/block, thread, or app) Category Additional columns available:

Count Self Count Library

Picks

John

SelfControl

Darryl

WWDC 2016 Session 418 - Using Time Profiler in Instruments

Alternative show title suggestions

Try harder n squared complexity my code, vs not my code expected or unexpected notion of runs

View Details

Discussion - Allocations and Leaks instruments

Extraordinarily hard to spot Tough to find offending code without help from tools Unbounded Memory Growth (memory growth without a chance to collect (deallocate) memory True Leaks (retain cycles) Allocations

Generation Analysis Tracks allocations still resident when the generation is marked

  • As you do multiple generations you will see only the new allocations since the last generations

Simulate Memory Warning (did it help, do you have anything observing for this?) I have unbounded memory growth, now what?

  • Look for the biggest offenders (sorting)
  • Drill into the code and look for ways to release unnecessary allocations

Good ‘ol fashion memory management If you’re intentionally holding onto objects, consider implementing an observer for UIApplicationDidReceiveMemoryWarningNotification to release them

Leaks / Retain Cycles aka. Strong Reference Cycles

Persistent vs. Transient Static Code Analyis Narrow list to your code Use / Observe (detective work) “You’re in the ballpark” now what?

Reference counting Weak and Unowned

Closure example with capture list; weak and unowned

Apple says, “Use a weak reference whenever it is valid for that reference to become nil at some point during its lifetime. Use an unowned reference when you know that the reference will never be nil once it has been set during initialization.”

Picks

Darryl

Visual Debugging with Xcode WWDC 2016 Session 410 demonstrates the use of the new Memory Graph Debugger starting at about 24 minutes in

John

"Weak, Strong, Unowned, Oh My!" - a Guide to References in Swift by Hector Matos

View Details

Discussion - Notifications in iOS 10

Brief breakdown of WWDC sessions related to notifications

What’s New in the Apple Push Notification Service Introduction to Notifications Advanced Notifications

New stuff

APNS Token-based authentication UserNotifications (and UserNotificationsUI) Framework (Unifies Remote and Local Notifications) Access to user-defined notification settings Expanded content

Titles Subtitles Media attachments

Scheduling and handling within Extensions In-app presentation Removal/update of pending notifications Dismissal actions Service Extensions

APNS Token-based authentication

Uses JSON Web Tokens (libraries widely available to assist with token generation) For server-side solutions where using a certificate isn’t practical/feasible Addresses issue of certificate expiration (though tokens also expire, new ones can be generated on the fly)

UserNotifications Framework

Provides a single notifications API across iOS, watchOS and tvOS

iOS: Full support for scheduling and management of notifications watchOS: Support for forwarded notifications and local notifications on the watch tvOS: Support for badging app icons

Key components/concepts:

UNUserNotificationCenter

Authorization requests Scheduling via requests (by providing content and triggers)

UNNotificationRequest

Identifier Content Trigger

UNMutableNotificationContent UNNotificationAttachment

Audio Images Video

Triggers

Push (UNPushNotificationTrigger is not instantiated by apps) UNTimeIntervalNotificationTrigger UNCalendarNotificationTrigger UNLocationNotificationTrigger

UNUserNotificationCenterDelegate Protocol

userNotificationCenter:willPresentNotification:withCompletionHandler: userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler

UNNotificationCategory - defines a type of notification, allows actionable notifications and content extensions UNNotificationAction - represents a task you can perform in response to a notification UNNotificationServiceExtension - Entry point for service extensions. Allows you to process the payload of a push notification before it is presented (eg: end-to-end encryption or notification attachments). Use in conjunction with “mutable-content: 1” in the aps portion of an APNS payload.

UserNotificationsUI Framework

Provides the UNNotificationContentExtension protocol View controllers adopt this protocol, using the VC’s view to display the notification contents Custom content is sandwiched between a header with the application icon and title and the default notification payload (default payload can be hidden using an attribute in the Info.plist) No user interaction Actions are displayed and extensions can respond to them by intercepting action responses Protocol provides a didRecieveNotification: method you can use to set up UI in response to the notification

Picks

Darryl

New Swift, Core Data and Cocoa Books - Use Your Loaf

John

List of Public Slack Groups Mr Robot returns to USA Network July 13

View Details

John and Darryl recap and grade their WWDC wish-lists and discuss changes to the Human Interface Guidelines for iOS.

WWDC Wishlist Scorecard

John

Get serious about home automation, maybe make Apple TV an automation hub (Half Credit) Siri as a Service (3rd party integration) (Yes) Refactoring for Swift (in Xcode) (No) Announce date to sunset Obj-C (No) Xcode for iPad Pro (Half Credit)

Darryl

More voice command vocabulary. Something like AppleScript (Half Credit) Make Buttons Great Again (Quarter Credit) Better accessibility hierarchy visualization tools built into Xcode (Three Quarters Credit) Additional accessibility tools for checking things like color contrast. (TBD) Improved dynamic font API (Yes, but not what I’d hoped for) Upgrade pricing/trials (No: but we got clarification on subscriptions on The Talk Show) Faster watch app loading. A way of deferring the most expensive parts? (Yes!) Simulators and Xcode bots for Linux? (Lol)

iOS 10 HIG Changes

Widgets

Available on “Search” and above “Quick Action List” when you 3D touch an icon on Home screen Panning/Scrolling not supported Avoid backgrounds / no background images Allow jump to app, but no “Open App” button. Allow interaction via content

Messages

Can now integrate with Message by providing a messaging extension Content with Focus and Value Constrained space Simple/Intuitive interface

Integration with Siri

Don’t

Advertise Impersonate Siri

Do

Minimize visual/touch interactions Respond quickly Take people directly to content Improve accuracy via custom vocabulary Provide example requests

Expanded Notifications

Detail view Actions that make sense There be dragons, destructive actions

Picks

Darryl

Auto Adjusting Fonts for Dynamic Type

Build Phase

John

Audio-Technica ATH-ANC7B QuietPoint Active Noise-Cancelling Closed-Back Headphones - Wired

Alternative show title suggestions

Stuck in my craw Return of bezels Cocoa-isims I hate you I’m not a fun person

View Details

Darryl and Nolan are joined by Amro Mousa and Matt Massicotte to discuss the WWDC 2016 Keynote and Developer State of the Union. Also, Whisky.

The Whiskies

Mars Iwai Tradition Japanese Whisky Amrut Fusion Single Malt Whisky Laphroaig Single Malt Whisky - 10 Year

Keynote

Pre-keynote observation

Hated the music Apple TV Events app worked fine

Tim takes the stage

Talks about Orlando, offering sypathies. Called it an act of terrorism and hate. Talks about Apple's diversity Stream restarted Moment of silence where there would normally be an energizing video Bill Graham Auditorium 27th WWDC 13 Million Registered devs, growth of 2M y-t-y 72% first-time attendies 2 Million Apps on App Store $50 Billion paid to developers

watchOS (Kevin Lynch)

Optimizations to App Launch time!!! Instant response in watchOS 3 Apps stay in memory, support background updates App dock replaces contacts! Swipe up is now Control Center Streamlined notification response workflow Scribble! Handwriting (grafitti?) recognition Improved watch faces

Minnie Mouse watch face Activity watch face in 3 variants. Acts kinda like a full-screen complication Numerals Improved face switching with edge to edge swipe

Demo

Time to first woman on stage: approx. 15 minutes Timer improvements Reminders improvements Find my Friends

SOS

Press and hold side button, and 911 is called after a countdown, notifies emergency contacts withlocation Watch shows Medical ID info Works internationally (calls the right emergency number)

Jay (Blahnic?) Activity sharing: allows you to view friends' activity and send messages Support for Wheelchair users

Changes algorithms used to detect movement "Time to roll" notification Wheelchair-specific workouts

Breath App

Simple deep breathing sessions to calm and reduce stress Supports reminder notifications 1 to 5 minute sessions Supports haptic feedback Summary with time and heart rate

New APIs

In-app Apple Pay Background workout info SpriteKit & SceneKit Native Events Speaker Audio Inline video Game Center

Preview available today, release in Fall

tvOS (Eddy Cue)

1300 Video Channels 6000 Apps New Remote App! w/ all the features of the physical remote Siri

Search Movies by topic Search YouTube! Live Tune-In ("Watch ESPN 2")

iPad and AppleTV

Better authentication with Single sign-on

Also available on iOS

Dark Mode ReplayKit PhotoKit HomeKit Multiplayer Game sessions and more controller support

OS X (now macOS) (Craig)

Sierra Continuity

AutoUnlock - proximity-based unlock of Mac Universal Clipboard

iCloud Drive

10 Billion documents today Desktop syncing (and available on iOS) Storage optimization (purges recoverable/unneeded files)

Apple Pay on the web

Authenticates using TouchID on iPhone

Tabs

System-wide support for tabs for all multi-windowed apps

Picture in Picture Siri

Siri button/icon on dock File search with filterable results 200% more snark Result pinning

Craig doesn't blink at paying $140 for movie tickets Developer preview today, public beta in July, Release Fall

iOS

Biggest iOS release ever Experience

Redesigned lock screen

Raise to wake a la watchOS Notification redesign 3d touch on notifications Rich notification content Clear all Quicker access to camera, widgets and control center

3d touch now supports display of widgets from app icons

Siri

2 Billion requests a week Developer API!!!

Messaging

Slack WhatsApp WeChat

Photosearch Workouts Payments VoIP calling Sounds like it's not a complete opening

QuickType Intelligent keyboard

Deep learning (LSTMs) for completion suggestions

Example: "Where are you?" provides option to send location

Contextual event creation

Photos

Places map view Face recognition Object and scene recognition Memories clusters photos into collections that may be relevant

Automatically creates a slideshow movie of photos and videos Provides length and mood controls to change editing and music of movie

Also on macOS

Maps

Proactive destinations Destination filtering Continued use of carosel (like the Memories stuff) Accessibility impact? Destinations along your route Alternative routes with time-saving estimations CarPlay gets instrument panel turn-by-turn Map Extensions!!

Book Reservations Request a ride

Music

15 Million paid subscribers All new design

Clarity and simplicity Improved library UI

Lyrics Don't make developers participate!!!

News

2000 publications, 60 million readers Redesigned

For you is categorized, with smart topics

Subscriptions Breaking news notifications

HomeKit

Home app

Access to scenes and individual accessory control

Integrated into control center Interactive notifications iPhone, iPad, Watch

Phone

Voicemail Transcription (Kinda like Google Voice) Extension API (detect spam, etc) VoIP API! Side note: https://twitter.com/chockenberry/status/742422670046683137 (Buttons look more like buttons)

Messages

Most-frequently used app on iOS Rich links Different camera and photo picker. Big emoji (shit) Emojifier Bubble effects Tap-back quick responses Handwriting Digital touch Fullscreen effects Annoying demo https://twitter.com/_DavidSmith/status/742425105809039360 iMessage Apps

Stickers Annoying photo manipulation Payment Can I block Jibjab?

Differential privacy One more thing: a video :( Developer preview Today, public beta July, release Fall

Developers (Tim)

Swift playgrounds on iPad

(get insight from Amro re: hour of code with his 6 yr old) Developer keyboard Released today with the beta Free

First "emotional" Apple video in a while to actually make me emotional

Developer State of the Union

iMessage Apps

Extensions

App Store iMessage App Store

"Get app" link Sticker art, UIKit Display in the same space as the keyboard would, but can be expanded to fullscreen MSSession, MSConversation, MSMessage Privacy measures Simulator support for viewing both sides of a conversation

Siri

SiriKit (first version) Speech, Intent, Action, Response Vocabulary

Plist for app vocabulary, code for user vocab

AppLogic, User Interface

Extension, NSUserActivity

Example: Hologram Domain, Intent, Recipent, Content

Swift 3 Swift on iPad

File Format Docs Lesson materials Record sessions Compatible with Xcode playgrounds

Xcode 8

Source Editor

Active line highlighting Swift color literals Swift image literals Markup generation App Extensions

Selection Transforms Pasteboard modification

Unified API Reference

Fully available offline

Interface Builder

Design-time effects Device size configuration bar Improved size-class support Canvas operations at any zoom level!!

Captured crash logs Test without building Runtime issues

UI Threads

Thread sanitizer Identify race conditions and more

Memory

Display object graph Identifies leaks with backtraces to where captures happen Reference Cycle graph

Provisioning

New signing actions Configuration and issue details Actionable messages Provisioning report Automatic code signing with a dedicated profile Customized code signing per build configuration

Platform

Compression

Open-sourcing lczse

Traffic prioritization Logging

Unified Levels In memory trace Privacy New console application

File Systems

HFS+ 18+ years old Apple File System

Scalable Modern

Flash/SSD Resilient 64-bit Encryption

Cloning (copy on write)

Fast Zero space File and directories

Snapshots

Full volume Mountable Supports reverting

Coming "Soon". Not specified

Differential Privacy

Adds noise to individual responses so that individual responses can't be identified Privacy budget limits submissions per period

iOS

Share app from homescreen via 3D touch Activity based integration Extensions

Notifications

Service Extension

Modifies push payload before notification surfaces. Allows encryption or additional content downloads.

Content extensions

Widgits

New vibrant look Additional compact size

iCloud available to all signed apps on macOS Sierra, not just App Store CloudKit Sharing

Allows control over who can access data CKShare class governs permissions

watchOS

Glanceable Actionable Responsive Glances are no longer "necessary" Workout apps run continuously during a workout even with screen off or when in another app Raw access to crown events Gesture recornizers Gyroscope Complications gallery SceneKit/SpritKit

tvOS

Talking about stuff we already knew, but which wasn't discussed in WWDC2015

Focusable elements TVMLKit Handoff

Multipeer connectivity 4 simultaneous game controllers Updated controller policy: can require game controllers

Graphics

Color

Wide Color (P3) gamut

APIs Sharing PDF/print System apps Cameras capture deep color API to access DNGs API to capture LivePhotos

Metal

Games

ReplayKit streaming GameCenter invitations via sharing GameCenter sessions GameplayKit

Picks

Matt: Human Resource Machine Amro: Provenance

View Details

Discussion - WWDC Wish List

John

Get serious about home automation, maybe make Apple TV an automation hub Siri as a Service (3rd party integration) Refactoring for Swift (in Xcode) Announce date to sunset Obj-C Xcode for iPad Pro

Darryl

More voice command vocabulary. Something like AppleScript dictionaries? Make Buttons Great Again Better accessibility hierarchy visualization tools built into Xcode Additional accessibility tools for checking things like color contrast. Improved dynamic font API, better support for font replacement in IB Upgrade pricing/trials Faster watch app loading. A way of deferring the most expensive parts? Simulators and Xcode bots for Linux?

Past Wish Lists

WWDC 2015 New Year’s 2016

Picks

Darryl

Samuel Ford’s Blog - Discovered as a part of the Swift dynamism conversation. Pretty good stuff.

John

Multi-Client monitor from Dell

View Details

Discussion

Swift 3.0

To be available later this year

  • Winding Down the Swift 3 release - Chris Lattner
  • New “blue sky” proposals will be considered for post-3.0 development (~August)
  • Generics features (among other dependencies) are preventing the previously-planned ABI stability
  • ABI stability will come in a later release and is considered of “highest priority”

CareKit

Why use it?

enable people to actively manage their own medical conditions through app-based care plans, and symptom and medication monitoring, while sharing insights with care teams and others you trust Examples:

Surgery recovery app Depression treatment app High blood pressure treatment app

What is it?

open source framework can integrate with ResearchKit able to access HealthKit data, when granted permission

((Opinion)) Why the focus from Apple on Health Apps? Is this a legacy from Steve Jobs? Components of CareKit

Care Card Symptom and Measurement Tracker Care Plan Store Insights Documents Connect Privacy concerns

Downloader beware. Make sure you understand the privacy policy for the app. Make sure the app is from a reputable source

Picks

Darryl

Writing good code: how to reduce the cognitive load of your code

John

Start CareKit app for tracking the effectiveness of depression medication

View Details

Discussion

Buglife

Buglife.com

What is it? What was the motivation? How do we incorporate it into our apps? Pricing

Core product is free Planned introduction of paid plans for enterprise teams How did you arrive at this strategy?

Who did the voiceover for your demo video?

Fiverr.com

Creating a 3rd-party service and framework for iOS apps

You’re not only the primary engineer but also a PM. What is your process for user research and determining a roadmap? Are there any key (and perhaps unexpected) differences from developing first-party applications? How do you obtain information about framework stability as a third-party? (crashes, logging, etc)

Picks

Dave

Making your own Passbook business card - just in time for WWDC!

Darryl

X-rite Color Munki - Display/monitor calbration (including iOS devices) Testing IBOutlets and IBActions With Curried Functions in Swift

Nolan

SwiftyBeaver - Swift based logging framework and service

John

Word Flow Keyboard New keyboard with single handed typing via swipe capabilities

View Details

Discussion

Testing normal networks (aka, not the US)

62.5% of the world’s 3.2 Billion internet users have 2G connections (or worse). That number is growing. LTE speeds aren’t going to catch up for at least a decade if not much longer. When building robust networking between your client apps and your services, the common case should be the default case. AKA: not WiFi and not LTE. Things that help a great deal:

Test on 2G and flaky networks

Helps to do real world testing in parking garages, elevators and in transit. Simulation will be the highest reproducible ROI way to test

Fail fast and accurately. Timeouts play a part in this. Be dynamic with how you handle the network.

Slower speeds should have less networking

Use modern tech, like HTTP/2 Defer, defer, defer (and prioritize) Robustly handle errors

If at first you don’t succeed, try again! And again and again. Retry policies can get you from one-9 of success to three-9s very simply.

Design your network API in a robust manner!

Simulating bad connections:

Using Network Link Conditioner - iOS and Mac Simulation over WiFi with router firmware Simulation by throttling via your network services with custom headers Simulation in your app by controlling the flow of data being received

Expert mode: drop down to the TCP level!

Timeouts

List of timeouts:

TCP: connection timeout (TLS connection timeout too), SYN timeout, keepalive/idle timeout, retransmission timeout NSURL: request timeout (max time between data being received in response - default is 60 seconds), resource timeout (time for entire transfer to complete - default is 7 days) Custom timeouts: transaction timeouts (time from initiation to completion including redirects and retries), queue timeout (how long can the request be queued without starting before it times), idle timeout (how long can a request do nothing regarding upload or download before timeout)

NSURLSession has a problem with scale. Every different configuration setting requires another NSURLSession to be maintained and managed. Timeouts, different default headers, different TLS settings, different cookie settings, different NSURLCache, cellular vs non-cellular

Robust API design

Transactional APIs Robust error codes (not just HTTP status codes!)

Retry policies to the rescue

Picks

Darryl

Pain Free Constraints with Layout Anchors - A bit of follow-up from last week’s episode. I felt like John and I were having trouble explaining anchors, and I remembered this article from a few weeks back.

Nolan

Performance Culture

Alternative show title suggestions

Just remember: You’re wrong Not all requests are made equal Item potency

View Details

Discussion

Auto Layout

Stack Views, FTW (Auto Layout without constraints) (New in iOS 9, similar to what’s available in watchOS and NSStackView, which is available from OS X 10.9) UILayoutGuide

New in iOS 9 Defines a rectangular geometry that can interact with Auto Layout Eliminates the need (in many cases, at least) for views that are included solely for layout purposes (container views, spacing views, etc) Views can still provide a greater degree of encapsulation Provide anchors that can be used to generate constraints

Anatomy of constraints

The layout of your view hierarchy is defined as a series of linear equations. Each constraint represents a single equation. Your goal is to declare a series of equations that has one and only one possible solution. Two basic types of attributes

Size attributes (for example, Height and Width) Location attributes (for example, Leading, Left, and Top) The following rules apply:

You cannot constrain a size attribute to a location attribute. You cannot assign constant values to location attributes. You cannot use a nonidentity multiplier (a value other than 1.0) with location attributes. For location attributes, you cannot constrain vertical attributes to horizontal attributes. For location attributes, you cannot constrain Leading or Trailing attributes to Left or Right attributes.

Rule of Thumb for clarity

Whole number multipliers are favored over fractional multipliers.

Positive constants are favored over negative constants. Wherever possible, views should appear in layout order: leading to trailing, top to bottom. Constraint Priorities

1000 is required < 1000 is optional

Intrinsic Content Size

Content Compression Resistance Content Hugging

Debugging Auto Layout

Error Types

Unsatisfiable Layouts. Your layout has no valid solution.

Usually 2 or more required constraints conflict

Ambiguous Layouts. Your layout has two or more possible solutions.

  • Need additional constraints

conflicting optional constraints

Logical Errors. There is a bug in your layout logic.

Tips and Tricks

take advantage of the logs use meaning identifiers on views and constraints Debug > View Debugging > Show Alignment Rectangles

Picks

Darryl

App Cooker & App Taster - Prototyping tool for Watch, iPhone and iPad apps

Nolan

We Haven’t Forgotten How To Program Enough

John

Mysteries of Auto Layout Part 1 and Part 2 from WWDC 2015 My choice for a smart watch, Fitbit Blaze

View Details

Discussion

Push Notification Overview

Notifications

Intended for user Certificate required Can be disabled Remote vs. Local

Local - schedule by the app on device

Best example is Reminders app Schedule by

elapsed time or exact time location based

Remote - come from your server

Actions

Interactive Notifications Categories

Text Input

New type of “Action” Behavior is “.textInput”

APNS (Apple Push Notification Service)

Device token created by APNS, need to store on server, associated with particular client app Payload must include aps, but can also include custom values, as well Payload “aps dictionary”: alert (string or dictionary), badge, sound, content-available, category Payload alert dictionary: title, body, title-loc-key, title-loc-args, action-loc-key, loc-key, loc-args, launch-image Silent notifications (content-available == 1) wakes your app in the background so that you can fetch data, etc. Feedback service, how to discover tokens that are no longer active Device tokens are 32 bytes, may be increasing to 100 bytes soon New provider API released in 2015

HTTP/2

notification requests to APNS get a response multiplexed binary

Notification requests

POST json

Notification responses

200 OK 400 BAD REQUEST with json payload and reason

Instant Feedback

Allows you to learn about inactive tokens in the notification response via 410 status code in the response

Simplified Certificate Handling

Now one certificate for all push actions

Push notifications payload size increased from 2KB to 4KB

View Details

Motivation / Staying Productive

Flow

Mihaly Csikszentmihalyi

Flow theory postulates three conditions that have to be met to achieve a flow state:

One must be involved in an activity with a clear set of goals and progress. This adds direction and structure to the task. The task at hand must have clear and immediate feedback. This helps the person negotiate any changing demands and allows them to adjust their performance to maintain the flow state. One must have a good balance between the perceived challenges of the task at hand and their own perceived skills. One must have confidence in one's ability to complete the task at hand.

Clear Distractions

What things easily distract you when you need to get work done Make a list of these things Twitter, imgur, reddit, tv, music Clear these distractions Use a distraction free setting Get comfortable Change your setting

Pairing

Workout metaphor Hard to slack Intensity Don't have to do it every day

Just 5 minutes

I use this technique with my kids for studying 5 minutes doesn't really work for me Instead I say write 5 lines Sunk cost fallacy works in our favor I'm already here. I have something started. I might as well keep going.

Push the peanut forward

You don't have to love it You recognize that you just need to make some progress Commit to sit down and get started

Free Writing

Used by writer Set a timer, at least 5 minutes Don't use the IDE Don't write actual code, just pseudo code Don't think just let the pseudo code flow

Pomodoro Method

Sit down in front of your computer Set a 20 minute timer You must take a 5 minute break The importance of the break, related to exercise

David Burns MD

Write down, on a scale of 1 to 10, how satisfied do you think that you will feel by completing the work that you need to do Write down, on a scale of 1 to 10, how painful will it be to do the work Do this before as an estimate and then after recording the actual Keep a running list and refer to it often

View Details

Discussion - Energy Efficiency for iOS Apps

Apple’s Energy Efficiency Guide

Are you telling me I have to worry about my app’s power consumption?

This is iOS. I thought Apple was taking care of that for me...right??

What is Energy?

Power is an instantaneous measurement of energy at any given point in time Energy is power used over time (Joules measured over watt-hours) Low power used over a long(er) period of time can amount to the same energy expenditure as short bursts of high power (more on this later)

Major sources of energy consumption/power draw

Device wake

Aside from being powered off, a device in its sleep state is consuming the lowest amount of energy possible Whenever possible, avoid preventing the device from sleeping or forcing it to awaken Use technologies like push and background tasks judiciously

CPU Usage

An idle CPU uses ~10x the power of a sleeping CPU Just 1% CPU use costs 10% more than idle 10% CPU use costs 200% that of an idle CPU 100% CPU can result in 1000% (10x) power draw compared to idle

Networking / Bluetooth Graphics/animation/video Sensors

Location (Wi-Fi/GPS) Accelerometer Gyroscope Magnetometer

Disk IO. Use batch operation whenever possible

Mitigating energy costs

Batching, Batching, Batching

Operations have a dynamic and fixed energy cost

Fixed cost represents the energy used while the device is waiting to enter an idle state The same amount of work, performed across multiple threads, can have a significantly lower total energy cost compared against single-threaded work requiring a longer time to execute

Network and other inter-device (BT, for example) operations require radios to be powered up. Avoid continuous communications and state polling, batching operations whenever possible Defer any operations that aren’t time-sensitive to time that the app will be otherwise active (take advantage of fixed cost you’re already having to pay)

Prioritize operations using Quality of Service Classes (iOS 8+)

Classes

User-interactive User-initiated Utility Background

Can be set on both NSOperationQueue and individual NSOperation objects GCD queues can be created with QOS class attributes

Use timers efficiently, or better yet, avoid them

GCD provides mechanisms you can use instead of timers, for example dispatch_block_wait() If you must use timers (not just NSTimer: basically anything that takes a time interval as a deadline), take advantage of APIs that allow for timer coalescing using tolerances.

Minimize I/O React to Low Power Mode (iOS 9)

NSProcessInfoPowerStateDidChangeNotification [[NSProcessInfo processInfo] isLowPowerModeEnabled]

Instruments to the Rescue

Energy Diagnostics Logging

Other Resources

Performance Tips from Apple

Picks

John

‘Operator’ font created by Hoefler & Co., a font design company

Darryl

Achieving All-day Battery Life

Alternative show title suggestions

Power Draw Contribute to Sleep Don’t write an app (You should) Get off of the main thread They DID bone it I ripped them off

View Details

Discussion

Pushing info to clients

Long Polling

Client sends request to server, waits for response or timeouts (Loop) Can send and receive information, but not full-duplex iOS Implementation

NSURLConnection sendSynchronousRequest

Common uses

Fallback from Websockets and SSE when streams are unreliable or impractical

HTTP Streams

Can only push information to your client If you need to send info back to server use standard rest approach Transported over simple HTTP Built in support for re-connection and event-id iOS Implementation

Server Sent Events (SSE) NSURLSession, NSInputStream, NSSteamEvent Setup the connection Implement code to handleEvents from the input stream

Common uses

Stock ticker streaming “Status” feed updating Push Notifications

Websockets

Designed to overcome many of the pitfalls/shortcomings described in RFC 6202 Standardized by IETF (Internet Engineering Task Force) in 2011 Can send and receive information (full-duplex pipe) Protocol based on TCP Uses HTTP only for initial handshake, while leveraging existing HTTP infrastructure iOS Implementation

CFStreamCreatePairWithSocketToHost takes url, read and write stream Cast read and write stream to NSInputStream and NSOutputStream, respectively Set delegate for input and output streams Schedule both in a run loop (Can do without but will block the execution of other code) Open connection Write code to handleEvents from the input stream Implement message sending via the output stream

Server considerations

Not as easy to get started with as a generic web server Buy one, borrow one or build one

Common uses

Chat Player vs. Player games Real time interactions

Popular Abstractions/Frameworks

TRVSEventSource from Travis Jeffery SignalR from Microsoft

At-a-glance Comparison

Websockets SSE Long Polling

Client Performance Best Best Worst

Server Performance Best Worst Worst

Complexity Highest Lowest Mid

When to Use 2-way messaging Push to Client Just getting started

Picks

Darryl

Proportional Spacing with Auto Layout

John

Google Cloud Vision API Detects types of images, landmarks, recognizes text, does image sentiment analysis and can even detect “inappropriate content” Agile and Beyond 2016 May 5-6 in Ypsilanti, MI

Alternative show title suggestions

Uncanny valley The cooker's always on Canonical Framing Technique

View Details

John and Darryl compliment each other and congratulate Nolan and Chad.

Discussion

Congratulations to the O'Brien family on the birth of Evelyn Jane!

Evelyn Jane O'Brien joined her parents and 2 sisters at 3:32am, Feb 20th 2016Baby and Mama are healthy and doing well????????????????????????????????????????— Nolan O'Brien (@NolanOBrien) February 20, 2016

Congratulations to Chad and Kim Etzel, who are expecting in August!

...and in case that tweet was too obtuse, hopefully this will clear things up ????????? pic.twitter.com/f5qSlcjlqW— Chad Etzel (@jazzychad) February 21, 2016

View Details

Discussion

HTTP/1.1 review

Widespread adoption in 1996 with full standard in 1997 RFC 2068 and later replaced with one in 1999 RFC 2616 Request (URL, method, headers, body) & Response (status code, headers, body) Inherently async Built for HyperText, makes it have problems

Head of line blocking

combining payloads to 1 response multiple connections (Connection: Keep-Alive vs Close) HTTP Pipelining

No cancellation, have to tear down connection No prioritization, round robin over connections

iOS/Mac

NSURLRequest (NSHTTPURLRequest) and NSURLResponse (NSHTTPURLResponse) NSURLConnection and NSURLSession

HTTP/2

Started by Google with SPDY (2012 - 2016), latest is SPDY/3.1 HTTP/2 is a binary protocol, where 1 and 1.1 are text Previous episode on SPDY with M Schore Reached standard in 2015 with RFC 7540 and adopted by Apple with iOS 9, Mac OS X 10.11 Resolves many issues with new features:

multiplexing (helps with head of line problem in HTTP/1.1)

cancellation header compression

Always there plain text, optimal for compression

dynamic prioritization

be responsible, set lower priority when possible

not guaranteed that the server will prioritize because it is optional in HTTP/2 spec push responses (Nolan’s not a fan)

not supported by Apple

Upgrade to HTTP/2 dynamically with Upgrade Header or ALPN

Application Layer Protocol Negotiation, ALPN is during TLS and far more efficient than Upgrade header NPN (Next Protocol Negotiation)

Picks

Nolan

Akamai HTTP/2 Demo - Good info at https://http2.akamai.com HTTP/2 Test - Test supported domains

Darryl

What Every iOS Developer Should Be Doing With Instruments - Great introduction to Instruments by Kevin Kazmeirczak

John

ClockKit Tutorial: Add Complication to an Already Existing Watch Project from Kristina Thai

Jason

RescueTime - Time management software

View Details

Thanks for sticking with us through 100 episodes!

Discussion: Complications with ClockKit

Extension running on the Watch Provides text and images for the complication, watchOS draws it Data is collected in the form of a timeline You determine how dense the timeline is Works with Time Travel feature Complication Families - CLKComplicationFamily

Modular Small Modular Large Utilitarian Small Utilitarian Large Circular Small

Complication Layout CLKComplicationTemplate

Header image Header text Body 1 text Body 2 text

CLKImageProvider CLKText Provider Timelines

CLKComplicationTimelineEntry

Contains NSDate and CLKComplicationTemplate

CLKComplicationDataSource protocol

CLKComplicationServer

Used to obtain active complications and to request refresh/update of timelines

Picks

Nolan

iOS 9.3 Beta 2 - Release Notes - Apple reserves two-letter prefixes for use in framework classes. When naming your own classes, please use a three-letter prefix. The guidelines can be reviewed here: (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html)

Darryl

Cook Watcher - An extremely simple cooker simulator demonstrating the implementation of Complications

John

PipSpin A new game from my friend Matt Burton. Developed with Unity. Available on iOS and Android.

Alternative show title suggestions

Epic Episode 100 Complication Families Temporal in nature Overly complicated complications Geoduck Digging It’s Complicated

View Details

With Special Guest Dov Frankel

Discussion

UIKit Dynamics with Dov Frankel

Dov’s Blog Post

UIKit Dynamics - a brief intro “Afterglo” app updated with UIKit Dynamics Why Dov decided to go with UIKit Dynamics Technical overview of UIKit Dynamics Pros/Cons/Gotchas Designer resources

Catalog app WWDC videos

Helpful resources

Getting Started with UIKit Dynamics (WWDC 2013) Advanced Techniques with UIKit Dynamics (WWDC 2013) What's New in UIKit Dynamics and Visual Effects (WWDC 2015) UIKit Dynamics Catalog, Apple's sample code that shows a bunch of behaviors in action UICollectionView + UIKit Dynamics (objc.io's October 2013 issue) UIKit Dynamics Tutorial: Getting Started, a Ray Wenderlich tutorial, updated for Swift and iOS 8

Picks

John

A simple tip to reduce app store rejections from Brenden Mulligan at LaunchKit

Nolan

Star Wars: The Ultimate Vinyl Collection

Darryl

Paw - OS X HTTP & REST Client

Dov Frankel

Swift API Design Guidelines

Alternative show title suggestions

gravity and collisions parallax effect Delightful!! spring field just turn off autolayout!

View Details

Nolan suffers Darryl's tirades regarding what he feels are some disturbing modern software development practices.

Discussion - Darryl’s Rants

Design Patterns that fly in the face of Apple’s established practices and tooling Lulling oneself into a false sense of security through dogmatic test writing CocoaPods, Fastlane and the like (Unscrutinized code-borrowing and massive dependency chains)

Picks

John

Angel’s Envy Rye

Nolan

Argumentum Ad Ignotas Extraneus - AKA: Chad’s logical fallacy of Appealing to Rando

Darryl

Kangaroo Mobile Desktop - Very cool $99 portable PC with ~4hrs of battery and docking for expanded i/o. Comes with Windows 10 Home, runs Ubuntu well.

Alternative show title suggestions

Darryl’s Make-up Rants

View Details

(Special Note: Tweet Shoutouts section will now appear at the bottom of the show notes. We hope this improves your show notes browsing experience.)

Discussion - iOS App Developers’ Apple New Year’s Wish List

All I want for 2016 is…

The ability to develop apps on the iPad Pro

Maybe just offer a Swift REPL or Swift Playground

Better Tools

MSDN offers symbols to subscribers for debugging into Windows OS with Visual Studio, Apple should do the same for iOS and Mac OS X debugging. Let us step through the OS code in Xcode so identifying internal bugs can happen faster. Microsoft Symbol Server Info.aspx#using_the_microsoft_symbol_server)

More communication and outreach with the app developer community

Step 1, Open up the Radar system Newsletter / Community Group / Etc. App camps for girls Groups support and sponsorships

Improve on the App Stores

Nolan rants about technical underpinning of App Stores and why it will take a top down approach to fix it Monetary split

Indie devs are struggling. How about giving the devs a larger percentage of the cut, 10/90 (currently 30/70) How about a sliding scale

1 to 10000 (10/90) 10001 to 100000 (20/80) 100001+ (30/70)

Permit subscriptions and trials Trials a far more effective than “Demos” or Free versions. Permit the customer to become attached to a product that when the trial ends they realize they want to pay for it. Permit upgrade pricing

Devs can’t just support the same version forever, permit them to discount the cost of upgrading from a previous version so they maintain brand loyalty Example: Version 1 was $10, Version 2 comes out and is $10. Having Version 2 be an upgrade from Version 1 for $5 would really be a value to loyal customers.

Permit devs to address their customers’ concerns/reviews

Example 1:

Customer: Hey! The app doesn’t install when I download it, what a junk app! Dev: I’m sorry that you aren’t able to install! All installs are managed by Apple and a failure to install usually means there is an issue with the new version of the app propagating through Apple’s CDNs and it will take some time for the CDNs to hydrate properly for the install to work. Here’s an Apple support email address for you to share your concern!

Example 2:

Customer: Hey! I can’t log in anymore! I hate this app! Dev: I’m sorry to hear that, can you provide me your login name or email and I’ll be happy to look into this for you.

Good suggestion. The Google Play Store lets you do this.

Picks

Nolan

Why 2015 Was a Great Year for Humity The developing world is the future of the internet Network Link Conditioner

John

Videos from Function Swift conference BrowserTV

View Details

Darryl and Nolan take a journey of exploration through the world of Bluetooth and Core Bluetooth.

Tweet Shoutouts

@iOhYesPodcast ep.94 you guys talked about the struggle to make income as an indie dev. Is it possible for a newb dev to go indie in 2016?— Kyle Lee (@Kilo_Loco) December 9, 2015

iOhYes: 95 - Great non technical episode of @iOhYesPodcast with @jaimeejaimee I'll start my #tinychallenges in Jan https://t.co/rR2W5udvGb— You can call me Joe (@mokagio) December 10, 2015

.@iOhYesPodcast Got to listen to the podcast on my way to the tvOS tech talk. Love the tiny challenges concept. @jaimeejaimee— Jeremiah Jessel (@JCubedApps) December 10, 2015

@iOhYesPodcast Sorry to keep you gentlemen in suspense. Ep #93 was great — motivation, conference philosophy, and plenty of tips!— Greg Heo (@gregheo) December 11, 2015

@iOhYesPodcast @dh_thomas Thanks for the ep #95 pick! I enjoyed the non-tech talk — like refactoring your life rather than your code ;)— Greg Heo (@gregheo) December 11, 2015

@jaimeejaimee @iOhYesPodcast great interview! Thank you Jaimee for being so open about your life, I know I learned from #tinychallenges— Dale Fairclough (@faircoder) December 12, 2015

Discussion - News we missed

Swift is Open Source!

Apple starting to accept pull requests (notably the removal of C-style for loops) Docs are also open, and a call has been made for translations

Apple to remove headphone jacks??

Audio over Lightning? Bluetooth

Discussion - Core Bluetooth

Bluetooth’s Background

Invented by Ericsson in 1994 as a wireless alternative to RS-232 serial interfaces IEEE 802.15.1 (Bluetooth) part of IEEE 802.15 (Personal Area Network: PAN) within IEEE 802 (Local and Metropolitan Area Networking, LAN & MAN) Wikipedia Link The name is a nod to King Harald "Blåtand" Gormsson (Bluetooth is an anglicanized version of "Blåtand"). King Bluetooth is said to have united the Danish tribes into a single kingdom. The logo is a bind rune forming the initials H. B. (sort-of)

Versions

1.2

1 Mbps data rate, > 80 kbps application throughput Probably the first version considered “viable.”

2.0 + EDR

3 Mbps data rate, > 80 kbps application throughput

3.0 + HS

24 Mbps data rate, but not really: The connection is negotiated over a BT link, but 802.11 is used for data transfer

4.0 (Classic and HS) & 4.0 LE (Branded as Bluetooth Smart)

24 Mbps data rate, but not really: See 3.0 + HS and LE has extremely low throughput by design (like less than 100 kbps) Bluetooth LE

Totally new protocol specifically designed for low energy consumption and simplified communications Peripheral devices can implement just LE, just Classic or both

Bluetooth LE and Core Bluetooth

Core Bluetooth provides a layer of abstraction over the GATT profile (Generic Attribute Profile) Peripherals are “servers” Centrals are “clients” Peripherals serve one or more Service(s) Services have Characteristics (can be thought of as attributes or properties) Characteristics have a value, which may be readable, writable or notifiable

Using CBCentralManager

Instantiate the manager and then check for availability (implement the -centralManagerDidUpdateState: delegate method and check for PoweredOn state Scan for services with service UUIDs you provide using -scanForPeripheralsWithServices:options: When peripherals are discovered, the -centralManager:didDiscoverPeripheral:advertisementData:RSSI: delegate method will be called

Connect to a peripheral using -connectPeripheral:options:, which in turn will call the delegate’s -centralManager:didConnectPeripheral: method. At this point, you can start using the peripheral directly. (And get responses through the CBPeripheralDelegate protocol) Discover services with -discoverServices:, which will result in the delegate’s -peripheral:didDiscoverServices: method being called Similarly, discover characteristics of a service using -discoverCharacteristics:forService:, from which you can expect a -peripheral:didDiscoverCharacteristicsForService:error: message Depending on the peripheral’s configuration, values for a characteristic can be read, written to or monitored for changes (notified) Characteristic values are expected to be small. (Like 20 bytes or smaller.) If you need to send larger payloads, it’s possible to roll-your-own streaming protocol atop characteristics.

I don’t really recommend this, but it’s a fairly common approach I suspect some of this comes from the legacy of BT being treated as a dumb serial link Apple has recognized this trend and in recent versions of iOS/OS X, they have tried to accommodate higher throughput by negotiating higher MTUs when possible. They even demonstrate how this can be done in one of their WWDC sessions.

Picks

Nolan

Star Wars Trilogy: Despecialized Edition Star Wars Machete Order

Darryl

WWDC 2012 Session 703 - Core Bluetooth 101 WWDC 2012 Session 705 - Advanced Core Bluetooth WWDC 2012 Session 701 - iOS Accessories WWDC 2013 Session 703 - Core Bluetooth WWDC 2013 Session 307 - What's New in Core Location WWDC 2014 Session 708 - Taking Core Location Indoors WWDC 2014 Session 713 - What's New in iOS Notifications

View Details

Nolan and Darryl speak with special guest Jaimee Newberry about how she redesigned her life through tiny challenges.

Tweet Shoutouts

@iOhYesPodcast hey I'm from Belgium and I ca confirm you guys are first string here ;)— Erol (@RealBAYKAL) December 5, 2015

Hey @iOhYesPodcast I'm probably not the first to write in but the first gen iPad mini gets no flavor of multitasking love.— Vic Hudson (@vichudson1) December 3, 2015

Discussion - An Interview with Jaimee Newberry

No Excuses - tiny steps toward huge life changes

After a 15-year, award-winning design career (web & iOS), Jaimee successfully shifted focus from hands-on product creation to coaching and inspiring world-renowned product teams. Through actionable examples, relatable stories, and constant experimentation she helps companies create more compassionate teams and vastly improved digital products. She also coaches individuals experiencing career stagnance or burnout, she writes, speaks, podcasts, YouTubes, and is an independent mom.

Jaimee made this career shift by applying her typical process for designing a product (website or app) to her life, as if her life were the product. (Sometimes she tried Agile methodologies, UX methods, etc.) She started out with smaller objectives and working through side projects to clear obstacles (aka: excuses) from her path. Jaimee continues doing that through her monthly challenges, which have become playful and exploratory things that grow different skill sets and push her own boundaries of fear and comfort.

Picks

Nolan

Mailbox Shuts Down - Daring Fireball - Despite acclaim and an early acquisition, Mailbox was just not built to last. Jaimee’s Website - Jaimee’s personal site with link and video’s to talks (and monthly challenges!)

Darryl

Open-source Swift: Booleans - With the recent open-sourcing of Swift, Greg Heo dives into the details of Swift’s Bool implementation.

Jaimee \o/

Tiny Challenges - On Twitter @tinychallenges Tiny Habits - Dr BJ Fogg NaNoWriMo - National Novel Writing Month

View Details

Darryl and John sit down with Jason Kozemczak to discuss multitasking on the iPad and Jason's experience enabling an app for multitasking.

Tweet Shoutouts

@iOhYesPodcast also great final speech by @johnsextro pushing the community to present new ideas at conferences, in order to validate them— You can call me Joe (@mokagio) November 18, 2015

I ?? conferences, which means I have high expectations for this @iOhYesPodcast episode! https://t.co/eM017RTJkK— Greg Heo (@gregheo) November 19, 2015

@iOhYesPodcast I’ll have to see about putting you up. But iOhYes #australia is a great idea— Ashton Williams (@AshtonDev) November 20, 2015

@AshtonDev @iOhYesPodcast pic.twitter.com/EmZ6uahAKg— You can call me Joe (@mokagio) November 23, 2015

Here you go @iOhYesPodcast. Brand new icon for you with flat design w/ san fransico font. #ui #design #icon #ios pic.twitter.com/Eyk0sGBtHr— Rizwan (@rizzu26) November 23, 2015

Discussion - iPad Multitasking

First introduced with iOS 9 Variants

Slide-Over

supported by ALL iPads on iOS 9

Split View

Slide-Over on steroids iPad Mini 4, iPad Air 2, iPad Pro

Picture in Picture

All iPad apps opted-in

Apps with no Launch storyboard are opted out UIRequiresFullScreen in Info.plist Even “opted-out” apps are still running in a multitasking environment

Supporting multi-tasking in Instacart for iOS Are we concerned about other apps impacting the perceived performance of your own app? A push from Apple toward Universal apps?

Has multi-tasking effectively killed separate iPad / iPhone apps? Is this a further “squeeze” of indie developers? Another “platform” that needs to be supported by a single purchase (iPhone / iPad / Apple Watch / whatever comes next)

Split Views and Unexpected Keyboards - Use Your Loaf

Picks

Jason

The Effective Engineer

John

Apptimize

Darryl

Gooey Apple Pie Easy Pie Dough

View Details

John, Nolan and Darryl talk about how to get the most out of attending a conference.

Tweet Shoutouts

@vichudson1 @iOhYesPodcast haha. Nope, you can’t get rid of me that easily.— Darryl H. Thomas (@dh_thomas) November 10, 2015

@mix1009g @iOhYesPodcast it’s cool stuff! Pull requests welcomed. ;)— Darryl H. Thomas (@dh_thomas) November 11, 2015

@iOhYesPodcast Just listened to the episode with @AshtonDev got home and immediately am more productive with the breakpoint tricks. Thanks!!— Brock Taylor (@brockstaylor) November 17, 2015

Discussion: The Hitchhiker’s Guide to Attending Conferences

What conferences do we attend? Are we attending any upcoming conferences? Choosing a conference

Sure WWDC or AltConf, but what else Top 10 confs of 2015 from RayWenderlich.com

Why should I go to a conference?

Inspiration Networking Jobs Emerging technologies Training

What type of conference should I attend?

Structured Unconference (Open spaces) Vendor controlled

How to get the most from a conference

Be unique Be polite, well mannered and inclusive Prepare and practice an elevator pitch (self / project / company / app) Be outgoing, but not annoying Get outside of your comfort zone (get away from the people you already know) Participate Identify your ‘must see’ sessions If a session isn’t working for you, get out, checkout the “hallway sessions”

Sometimes the best of the conference happens in the hallways

Make arrangements to stay late Some of the best networking happens after the conference

Everything in moderation; don’t let one night of overindulgence ruin your conference experience

When possible, get a room at the venue Do you have something to promote? People love free giveaways. Stickers, buttons, pens, etc. Find out who else is attending and attempt to make plans with people that you want to meet

Picks

John

Logitech MX Master Wireless Mouse

Nolan

@Scale Conference Flight 2015 How do I write block syntax again?

Darryl

The Sin in Singleton - Ben Sandofsky

Alternative show title suggestions

Hallway sessions Vote with your feet

View Details

Nolan and Darryl discuss background operations on iOS, including some of the less-obvious pitfalls you can avoid.

Tweet Shoutouts

@iOhYesPodcast I didn’t get an Apple TV dev kit, nor will buy it. As long as @netflix & co will support rev 3 I’ll stick with it— You can call me Joe (@mokagio) November 5, 2015

@iOhYesPodcast overscan on the ?TV is killing me. Fairly old but 1080p60 tv has no adjustments! Consoles have own controls, ?TV has none ????— Ashton Williams (@AshtonDev) November 5, 2015

@AshtonDev @iOhYesPodcast and imho, the margin guides ought to be set to the content-safe borders.— Darryl H. Thomas (@dh_thomas) November 5, 2015

@dh_thomas @iOhYesPodcast yeah surprised you have to add the safe zone guides yourself https://t.co/HyW9m028Qx @jim_rutherford— Ashton Williams (@AshtonDev) November 5, 2015

@iOhYesPodcast @Plex for the new #AppleTV is fantastic. Good design and excellent PQ when running movies from my NAS. Plus, it’s #free!— BaraLabs, LLC (@BaraLabs) November 5, 2015

How do you get the WWDC videos on the new Apple TV? And the apple events?— ????? (@scottaw) November 6, 2015

@scottaw @RonnieLutes1 I do have this github link from @dh_thomas on this weeks @iOhYesPodcast to roll your own.

https://t.co/v8liidTHDZ— Vic Hudson (@vichudson1) November 6, 2015

Discussion: Background work

Getting the User’s Attention

Local Notification

Background Data Callbacks

Bluetooth Location Updates Newsstand Downloads Accessory callbacks

WWDC 2014 Session 701 - Designing Accessories for iOS and OS X

Elevated Multitasking Background Work

VoIP Audio / Airplay

This is what Facebook has been scrutinized for

Background Processing Work

[UIApplication backgroundTimeRemaining] - (10 seconds with no background tasks/fetches running) Background work is often paired with greatly diminished CPU priority and can often end up with as little as 4% of the CPU Background Tasks *[UIApplication beginBackgroundTaskWithName:expirationHandler:]

[UIApplication endBackgroundTask:] [UIApplication backgroundTimeRemaining] - (600 secs pre-iOS 7, otherwise 180 secs)

Background Fetch

Project checkbox “Background Fetch” to enable Specify [UIApplication setMinimumBackgroundFetchInterval:]

Minimum == as frequently as the OS will permit Never == disable BG fetch callbacks

[UIApplication backgroundTimeRemaining] - (~45 secs)

Push Fetch

Effectively the same behavior as background fetch

Background URL Sessions

Download to file or Upload from file Performed out of process Calls back either on completion or when authentication is needed

Remember to clean up when going into the background

No OpenGL Suspend timers Expect Network Failures Clean up Bonjour and other shared resources (Address Book, Calendar, etc) Clear sensitive info from screen Clean up alerts (if needed) Stop updating UI Save the app state Clear unneeded resources Clean up Audio Sessions (Facebook Bug)

Opt out

Set UIApplicationExitsOnSuspend to YES

Picks

Nolan

Background Modes in Swift

Darryl

Anova Precision Cooker Wi-Fi

View Details

With the recent release of the new Apple TV, John, Nolan and Darryl discuss their home media setups.

Tweet Shoutouts

Congrats @jazzychad on the new job! Your contributions to @iOhYesPodcast will be missed!— Vic Hudson (@vichudson1) October 29, 2015

@iOhYesPodcast is becoming like Game of Thrones, never know when a host you like is going to get killed. Best of luck @jazzychad— Doug Whitmore (@gooddoug) November 1, 2015

Discussion

The new Apple TV Our media setups

John

Rev 3 Apple TV Chromecast for kids FireStick for Dad

Nolan

Rev 3 Apple TV Mac Mini (Media Server)

Plex server Don Melton Scripts

400 titles

Darryl

Panasonic TV Rev 4 (New) Apple TV Sound Bar PS4 Dropped optical out on the Apple TV Misses the Front-row app

Picks

Nolan

LifeSpan Desk Treadmill - TR1200-DT3 Building Mobile Applications for Unreliable Networks - Coworker Jie Jin gives talk at Twitter Flight conference Plex HandBrake - Transcode your movies into streamable h.264 Don Melton Scripts - Scripts for transcoding video

Darryl

wwimp - worldwide instructional media player - The missing [popular developer conference] session player for AppleTV

John

Can I Stream It

Alternative show title suggestions

Get more Boos Do you listen to this show? We Have A lot of Disney DVDs Wanna rip it myself 128 game systems I think you might have a problem The most unique video game consoles Hockey puck style If it’s nerdy, I buy it

View Details

Darryl and Nolan welcome Chad back to the show and discuss iOS apps he’d like to see built.

Tweet Shoutouts

@iOhYesPodcast You are ace! Love to hear your thoughts about my videos on Swift 2 and Protocol Oriented Programming https://t.co/fp1jbMTZzi— Paul Napier MadApper (@MadApperApps) October 20, 2015

@iOhYesPodcast Hey guys! I'm a newer listener and I like the podcast. I am learning Core Data and write about it at https://t.co/ylidFm0KOo— Jeremiah Jessel (@JCubedApps) October 22, 2015

@iOhYesPodcast Thanks for the detailed response on the show! Great advice, and I'm getting out there. Heading to @SwiftSummit next week. 1/2— Sean Allen (@SeanA0400) October 21, 2015

@iOhYesPodcast I've had 3 phone and 1 tech interview out of 45 companies. Hearing your story about 14/200 companies helped a lot. Thanks!— Sean Allen (@SeanA0400) October 21, 2015

@iOhYesPodcast @johnsextro of course I have my Xcode snippets on github https://t.co/lN2zkWuUYp I think they are pretty good— Ashton Williams (@AshtonDev) October 22, 2015

Discussion - Chad’s App Ideas

A or B (push notif polls) Photo sorting (ELO ranking) Emoji social network Daily Trophy TV Water Cooler Good day/Bad day Movie/trailer rating Podcasting creation Gifs creation app Step counter (w/ watch app) - not possible yet

Picks

Nolan

Unravel, a Chrome Extension for Crashlytics

Tweet from James Reggio

Darryl

tvOS Apprentice Pre-orders

Chad

Please, Don’t Touch Anything - goofy civilization destruction indie game MVVM in Swift

Alternative show title suggestions

Steal These Ideas Black Book of Ideas Darryl Steals Chad’s Ideas

View Details

John, Nolan and Darryl discuss Xcode 7’s new support for UI tests.

Tweet Shoutouts

@iOhYesPodcast keyboard cursor on 6S, 6S+ requires a force touch, rather than two fingers— Dov Frankel (@DovFrankel) October 14, 2015

@iOhYesPodcast 3D Touch on the6S keyboard will move the cursor like iPad. 9 beta 2 had it. Removed in 3.— Shared Instance (@sharedinst) October 16, 2015

@AshtonDev @iOhYesPodcast Enjoyed Ashton's appearance on the latest epidode of iOhYes talking about hidden power features of XCode— Adam Campbell (@AnAdamInAus) October 15, 2015

@AshtonDev finally guest on @iOhYesPodcast sharing great tips to level up your Xcode skills https://t.co/CUAFA0HcPx— You can call me Joe (@mokagio) October 15, 2015

@AshtonDev @iOhYesPodcast setting default values through schemes is useful when running acceptance tests suites too— You can call me Joe (@mokagio) October 15, 2015

@iOhYesPodcast Just finished an iOS bootcamp, no CS degree, minimal developer experience. Job hunt as Jr. Dev has been rough. Any advice?— Sean Allen (@SeanA0400) October 16, 2015

@iOhYesPodcast Just finished an iOS bootcamp, no CS degree, minimal developer experience. Job hunt as Jr. Dev has been rough. Any advice?— Sean Allen (@SeanA0400) October 16, 2015

Discussion: App Testing with Xcode 7

Are you (hosts) testing your apps?

John’s philosophy on testing

Why should I test?

When should I test? Automated vs. Manual

Problems with the old, Instruments-based UI testing solution

JavaScript JavaScript JavaScript

Alternatives prior to Xcode 7

KIF Subliminal Quick Slepnir

Apple’s new UI testing in Xcode * Requires iOS 9/Mac OS X 10.11

Test Recording Leverages “Accessibility” UI Testing Targets API components Assertions, XCTAssert

Elements, XCUIElement

Proxy for UI things, exposes object type and accessibility label

Queries, XCUIElementQuery

Tree navigation, similar to XPath Relationships and Filtering “app.tables” is actually a convenience method for app.descendantsMatchingType(‘table’)

Application, XCUIApplication

Proxy for the application under test, separate and new process

Dealing with Gotchas

Simulating events

No long press, roll your own with pressForDuration No 3d touch press (AFAIK)

Wait for…

using waitForExpectationsWithTimeout without an explicit wait, a total of 3 attempts will be made to resolve a query before failing

Race conditions Item not visible to accessibility

Note: “isAccessibilityElement” does NOT need to be true in order to be “visible to accessibility”

Resources

WWDC Session UI Testing in Xcode Joe Masilotti’s UI Testing in Xcode Big Nerd Ranch’s UI Testing in Xcode 7, Part 1 Giovani Lodi’s Xcode 7 UI Testing, a first look

Picks

John

Quick BDD Framework for iOS (Swift and Obj-C) Use code snippets Apple Doc on Snippets

Nolan

Star Wars: Episode VII Got nothing for iOS, but here’s the latest Star Wars trailer

Darryl

iOS Security Guide (iOS 9 and later)

Alternative Show Title Suggestions

Javascript, Javascript, Javascript! Get the hell out of non-profits Jump on the band wagon Gotcha I Love Star Wars

View Details

Tweet Shoutouts

@iOhYesPodcast One thing I forgot to mention: taxes. Self-employment tax is shocker. As I rule I just stash 50% of every check for the gov't— Sommer Panage (@Sommer) October 7, 2015

Stumble Into Aerial Work - Inspiring episode of @iOhYesPodcast with @Sommer and with actionable tips too! https://t.co/4LWUdf0vhj— You can call me Joe (@mokagio) October 7, 2015

@dh_thomas @iOhYesPodcast glad you enjoyed my post on map and for loops ????— You can call me Joe (@mokagio) October 7, 2015

@iOhYesPodcast @sommer !!! Ok, let's work on rollercoasters together in our next career segments. I've wanted to code coaster CAD software— Chad Etzel (@jazzychad) October 9, 2015

@iOhYesPodcast LOVED the episode this week about @sommer leaving #iosdev to follow her passion. Such a unique take on a interesting topic.— Andy Obusek (@obusek) October 12, 2015

Discussion - Tips for Increasing Productivity in Xcode

About Ashton

Developer at Odecee

Enterprise application development based in Melbourne and Sydney How long have you been there? What types of projects have you worked on?

Frequent? Melbourne Cocoaheads speaker Devoted iOhYes listener and quite possibly the most prolific author of Tweet Shoutouts

Darryl and Ashton first met at WWDC’13

Social Links

@AshtonDev on Twitter Ashton-W on GitHub Blog: Ashton-W.net

Breakpoints

Beyond line-based breakpoints: categorical breakpoints Types of Breakpoints

All Exception breakpoint Stop on any and all Exceptions. Objective-C Exception breakpoint Stop on Objective-C Exceptions, eg: NSException. Swift Error breakpoint Stop on Swift Errors, e.g.: types conforming to ErrorType. New in Xcode 7.1 beta 3. Test Failure breakpoint Stop when a Test fails. XCTest and compatible frameworks only. Symbolic Breakpoints Stop on a Symbol. A symbol is a selector or method name, or a function name. Methods can be scoped to a class. eg: pathsMatchingExtensions: eg: [SKTLine drawHandlesInView] eg: people::Person::name() eg: _objc_msgForward OpenGL/ES error breakpoints Symbolic breakpoints

Particularly useful for breaking in private API Also handy for performing debugger setup in UIApplicationMain

import UIKit Load/init Reveal library (or chisel, or whatever)

Breakpoint actions

Play sound Execute LLDB command AppleScript or Shell Script Log Message - %B %H @expr@

Conditions Options: Continue User breakpoints Shared breakpoints - The only breakpoints feature Ashton doesn’t like Ashton’s User Breakpoints Ashton’s Cocoaheads talk on breakpoints Ashton’s Blog Post on Xcode Breakpoints Reveal

Scheming Defaults

Defaults domains

Apple’s NSUserDefaults Domains reference

NSUserDefaults Configuring defaults in schemes Ashton’s Cocoaheads talk on scheming defaults

Designable and Inspectable Views in Interface Builder

We’ll cover this topic on another show Ashton’s slides and sample code from /dev/world

Picks

Darryl

Automated Xcode version and build numbering via Git - Another pick from our friend @mokagio. Since we’re talking about Xcode productivity, I figured this one fit in well.

John

2 finger swipe on keyboard to move cursor xCode Keyboard Shortcut

Ashton

GammaThingy - iOS app you have to build yourself - uses private APIs to implement changing display color temperature. no jailbreak required. Flux

Alternative show title suggestions

Another Attack Vector Feature toggle Scheming Default Pro Tips You’re holding it wrong Undocumented features

View Details

Tweet Shoutouts

@iOhYesPodcast Hard 2 believe the guy who’s upset @ lower-case keyboard baseline would be able to feel micro-chgs in 6S vibration motor…????— BaraLabs, LLC (@BaraLabs) September 28, 2015

@iOhYesPodcast kudos on explaining image formats. It's good for devs to know - you don't always get a designer that knows the technical side— Ashton Williams (@AshtonDev) September 30, 2015

@iOhYesPodcast @NolanOBrien this series on JFIF/JPEG technical details from Numberphile is amazingly good https://t.co/X8YfxWWxsS— Chad Etzel (@jazzychad) September 30, 2015

Very informative episode of @iOhYesPodcast on image formats. Recommended for #iosdev https://t.co/vzLhORtFnu— You can call me Joe (@mokagio) September 30, 2015

@iOhYesPodcast Re JPEG2000 legalities: isn't en/decode supposed to be patent-free? Many open-source and proprietary implementations.— Greg Fiumara (@gfiumara) October 4, 2015

Homework Follow-up

Live Photos are indeed stored as separate .jpg and .mov files on the device, with no packaging convention. The Core Data model establishes a linkage. (Dug around using iBrowse)

Discussion

A talk with Sommer Panage - Pursuing one’s dreams while paying the bills http://www.sommerpanage.com/

Formerly worked at Apple and Twitter as a software engineer Ran off to join the circus Vertical Rope Artist

Watch Sommer’s Demo on Vimeo

Taking the plunge

How did you decide? How did you prepare?

Supplementing income

Teaching

Codepath Dave Bellona episode: iOhYes Episode 48 - Unicorn Designer

Contracting

Would you do anything differently, given your experience?

Picks

Nolan

Search WWDC Videos by term - Very cool, search the transcript and get the timestamp in the search results

Darryl

When to use map, flatMap or for loops in Swift - Giovanni Lodi (@mokagio) Momentum Habit Tracker

John

Don’t break the chain Jerry Seinfled’s Productivity Secret

Sommer

Blade Habit List

Alternative show title suggestions

Bag of Stars Vertical Rope Artist Stumble into aerial work She tripped on a rope Don’t forget the incidentals They’re getting accessibility whether they like it or not Doing my dream – or – living my dream A little nuts My heart has always been in the theme park Do what you love

View Details

Tweet Shoutouts

@iOhYesPodcast Sorry, I lied last week. As a dev & listener I like longer podcasts & rants b/c I learn so much! btw, first name -> Frank— BaraLabs, LLC (@BaraLabs) September 23, 2015

@jazzychad @iOhYesPodcast sounds like you wanted to embed a tableViewController in your tvOS storyboard, give that a try— Ashton Williams (@AshtonDev) September 23, 2015

@jazzychad @iOhYesPodcast it’s the road to awesome! Let’s you adjust the frame (of the whole tvc) and still use static cells— Ashton Williams (@AshtonDev) September 23, 2015

@jazzychad @iOhYesPodcast about overscan, you still want an edge to edge UI just make sure content in within. Insets and custom views/cells— Ashton Williams (@AshtonDev) September 23, 2015

@iOhYesPodcast my handle is pronounced “mo+ka+jo” ??

That’s due to the italian way of say “gio” that sounds like “jo”— You can call me Joe (@mokagio) September 23, 2015

Yeah, you can disable lowercase letters on iOS 9 keyboard. Thanks for the tip @iOhYesPodcast— Marián ?erný (@mariancerny) September 24, 2015

@iOhYesPodcast Late listener but about extensions: they are only syntactic sugar for external functions operating on a type, so it's ok :)— PorstUndGargel (@PorstUndGargel) September 27, 2015

Discussion

Live Photos - Combo of JPEG and MOV

JPEG

around 2.5 MB 12 MP 95% quality

MOV

around 2 MB 720p 12 FPS (up to 15 FPS?) 1.5 secs before and after JPG h.264 encoded

Formats

Bitmap

Decoded in memory representation 4 bytes per pixel (even when no alpha) - on iOS at least 1920x1080 - 8,294,400 bytes (~8MB)

Lossless vs Lossy PNG (Portable Network Graphics)

lossless (can have alpha) Will be ~3.5MB (naive compression can be poor but tools like PNG Crush can help)

JPEG (Joint Photographic Experts Group)

lossy (no alpha) ~1.1MB at 95% quality and ~650KB at 85% quality Hardware decoding support

How Apple quality vs ImageMagick interpreted quality

0.830 == 95% 0.575 == 85% 0.465 == 75% 0.400 == 65%

WebP

lossy (no alpha) or lossless (alpha) ~850KB at 95% quality and ~500KB at 85% quality ~2.6MB lossless limited support

JPEG–2000

lossy (no alpha) or lossless (alpha) over engineered (one format for all use cases) - complex ~800KB at 95% quality and ~650KB at 85% quality limited support

Progressive JPEG

~10% smaller than JPEG (~1MB at 95% and ~550KB at 85%) Using ImageIO you can get things to load progressively (iOS 8+ only) Hardware decoding support ~25% to first scan

Progressive JPEG–2000

Same size as non-progressive 5 different “progressive modes” - again complex Only RPCL and RLCP modes will work with ImageIO on Apple OSes, super fragile too (but it works) ~25% to first full frame

PVRTC Other texture graphics SVG (scalable vector graphics)

Resolution independent

GIF (Graphics Interchange Format)

Uses a palette of 256 predefined colors, limiting quality

APNG (Animated PNG)

Can get very large very fast

Picks

Darryl

Building Push-Triggered Sync - OmniGroup Dev Blog

Part 1 - Building Push-Triggered Sync, Part One: Choosing a Language Part 2 - Building Push-Triggered Sync, Part Two: First Steps Part 3 - Building Push-Triggered Sync, Part III: Connecting to APNs

John

LiveCoding.tv

Nolan

LivePhotoDemo APNGKit SwiftSVG ImageMagick iOS 9 Adoption Rate Twitter Dealing with Unreliable Networks - fixed URL from last week Shackleton Shackleton Whisky Pappy Van Winkle - $1000+ per bottle

Alternative show title suggestions

Heft of images No silver bullets I’m lazy A billion people on the Internet 0 to 255 of transparency J-FIF Make informed defaults (When you) do do WebP lawyers, no thank you brother’s babies The GOVERNMENT!

View Details

Tweet Shoutouts

Hey @iOhYesPodcast! I'm about a month into having an ?Watch. So far the health aspects really work for me.

https://t.co/DiaJy2XrRM— Vic Hudson (@vichudson1) September 20, 2015

@iOhYesPodcast there is an open source lib to simulate 3D touch on the Simulator’s SpringBoard https://t.co/3rBZO5dM2S via @_theiostimes— You can call me Joe (@mokagio) September 20, 2015

. @iOhYesPodcast Can you guys push aside the @tim_cook development team and fix their podcast App; They broke it, AGAIN!, with IOS 9— Rob Jago (@aWork_Rob) September 21, 2015

@iOhYesPodcast @fbOpenSource KVOController is the best way to use KVO imo. They have handled so many edge cases and bugs for you. Nicer API— Ashton Williams (@AshtonDev) September 21, 2015

@iOhYesPodcast you know ... @mokagio runs a regular blog, newsletter, and has done multiple awesome SWIFT conference talks :) get him on ????— Ashton Williams (@AshtonDev) September 21, 2015

Discussion

Apple TV

NextMuni Not universal app, separate binary Overscan Can’t set left and right padding on table view

3D Touch

Twitter Bookmarks Home icon shortcut menus Dynamic shortcuts are possible Will iPads support 3D touch in the future?? How to test, not supported in simulator (currently)

Homework: Long press as 3D touch press

Conrad Kramer hack on home screen for 3D

DLib talks to simulator to trigger 3D touch menu SBShortcutMenuSimulator

Impressions of iOS9

Left swipe for spotlight search and proactive Siri Proactive app suggestions Upper case / lower case letters on the keyboard itself “Back to” button 40% adoption

KVOController

Malware version of xCode (incident from this week) XcodeGhost iOS malware

Picks

Chad

SBShortcutMenuSimulator

John

Refactor Mega Controller

Alternative show title suggestions

Apple Ninjas Good??? Hate interface builder all over again The view is the table view Calibration Image Monitor Snob This is gonna bite a lot of people Deep Press Inception Tuba Beat the clock Internal 3D touch Any code is a security hole Kinda meh Tinee Tiny

View Details

Tweet Shoutouts

@iOhYesPodcast awesome discussion on indie development! #nailonthehead— MadApper (@MadApperApps) September 9, 2015

I want @AshtonDev on @iOhYesPodcast!

His talk was brilliant ???? And he’s also the one who introduced me to the podcast— Call me Joe (@mokagio) September 10, 2015

@iOhYesPodcast after that last episode I guess I have to come on the show ????— Ashton Williams (@AshtonDev) September 14, 2015

@iOhYesPodcast Good intro to KVO options in swift: http://t.co/IacWR1FsYV Curious on your preferred approach.— Ding0 Bytes (@ding0bytes) September 11, 2015

.@iOhYesPodcast Tiebreaker: shorter podcast with rant at the end. Best of both worlds! (does this tweet make me a show host now? ????)— BaraLabs, LLC (@BaraLabs) September 14, 2015

Discussion - Apple Event

Apple Watch

New designer bands New colors

iPad Pro

Pencil… $99 Keyboard $169

iPhone

6S, 6S+ Force Touch.. I mean, 3D Touch

AppleTV

Native apps TVML 10/100 ethernet (slight diversion to how crappy this is)

Picks

Nolan

@scale conference - great talks and sessions with leaders in engineering including Twitter, Facebook, Pinterest, Google, LinkedIn and more Dealing with Unreliable Networks - Jess Garms [NOTE: the video has no audio at the moment…hopefully will be fixed soon] - Practical advice coming from how the Twitter apps interact with the network.

Chad

Fastlane - tools for automating iOS development tasks

Darryl

Piwik iOS SDK - Self-hosted analytics service. Primarily for web, but has an iOS SDK. This isn’t so much a pick as a request for comment. Has anyone used this? What are your thoughts?

John

GitUp - The Git interface you’ve been missing

Alternative show title suggestions

More things…to deal with Tears of blood A Thousand Bucks Is A Lot Of Money Question Mark??? On the S-Train Don’t kill me Woe be unto thee It’s too late Licensing Dongle Gigger-bit

View Details

Tweet Shoutouts

@iOhYesPodcast Length is fine! More rants!— Rauli Rikama (@raulirikama) September 3, 2015

@iOhYesPodcast I actually have a zip library too (UnzipKit). Don’t let the name fool you, it zips also https://t.co/nDppHOge6Y— Dov Frankel (@DovFrankel) September 4, 2015

@AshtonDev Thanks for the quick PRs to add Mac OS X support to ZipUtilities. // cc @iOhYesPodcast— Nolan O'Brien (@NolanOBrien) September 5, 2015

Note: He actually added Mac OS X Framework, iOS Dynamic Framework, Carthage and CocoaPods support!

Note: The conference Ashton spoke at that Darryl mentioned is DevWorld. He spoke about designable and inspectable views. Ashton’s slides/code can be found here: https://github.com/Ashton-W/devworld-designables

Discussion

What are some nice patterns or not-so-nice anti-patterns/bugs you notice in iOS apps? How can devs go about fixing those problems?

Nolan notices

Requiring login/signup to use the app

My wife’s personal pet-peeve Old Fab.com app vs Zappos app

Suboptimal table views

Stuttering

Get off the main thread: includes networking and UIImage rendering

Content flashing in once it scrolls into view

Prefetch content before it comes on screen: can be easy with table view buffering

Requesting all permissions on first app launch with no context!

On demand prompting Interstitial

Even better: don’t indicate they will be prompted, rather outline the feature and why it needs the permissions and have the user explicitly ask to grant permissions (Periscope does something like this )

Example: (User selects post a photo) Prompt says something like: “A picture is worth a thousand words. We’d like for you to be able to share any of you iPhone’s photos. By enabling us to access your photo library, you can choose from photos you already have to share with friends and family.” Below is a empty checkmark with text “Enable access to photo library” and below that is a “Close” button. Hitting the checkmark will ask for access and user knows exactly why they were prompted. Hitting close will save the setting as “on” or “off” based on if the checkmark was successfully checked.

Chad notices

Social login (FB/Twitter) only to ask for username/password/email afterward anyway Bad pull-to-refresh implementations (Apple, Twitter)

Darryl notices

Lack of accessibility Not conforming to the design language of the platform (Note that I didn’t say HIG) Re-inventing system-provided controls/mechanisms for the provider’s gain, not the user’s Facebook/Twitter/SocialMediaX sign-in as the only option Crappy validation. Example: + is perfectly legal in email addresses Collecting address book information to build a social graph

Picks

Chad

Reverse-Engineering iOS Apps: Hacking on Lyft Recall - new iOS Game by Chad

Darryl

Protocol Oriented Programming in the Real World - Matthew Palmer talks about his experience rewriting Locksmith to be Protocol-oriented.

Nolan

GitHub - nixzhu/Proposer - Proposer - Swift 1.2 project for asking for permission Racing the Beam - By Nick Montfort and Ian Bogost

Platform Studies - MIT Press

Alternative show title suggestions

Chad’s Right My Two Favorite Words I agree with Chad Stop Crapping Up Your Apps

View Details

Tweet Shoutouts

@iOhYesPodcast platitude: 1/3 of our 'productive years' are spent working -> If we make someones job easier we improve .33 of their life :)— Ding0 Bytes (@ding0bytes) August 17, 2015

@iOhYesPodcast my vote would be shorter, more focused episodes. Then just let loose on the new @jazzychad rants podcast ;)— Mark DeLaVergne (@markdelavergne) August 19, 2015

@iOhYesPodcast Longer episodes, more rants!!!— Andy Obusek (@obusek) August 20, 2015

@iOhYesPodcast ep. 81. Result type is useful for async calls. Cannot use throw there.— Kedar Vaidya (@kedarv) August 22, 2015

Note:The keyword Darryl was having trouble recalling is indirect.

@iOhYesPodcast Do you have any suggestions for tools like Uncrustify, but for swift?— Amanda (@_ukebox) August 24, 2015

Discussion

So you want to develop an app…

So you want to be an indie app developer? Why? Are you crazy???

Similarities to Indie music

Examples

Fully independent Indies

Daniel Jalkut Red Sweater Gus Mueller Flying Meat Tapbots

Former Indies that have grown into larger companies

Omnigroup Panic

What motivates a person to develop an app independently?

Hobby Scratch own itch Can anyone really make a living? Get a foot in the door with another company Win the lottery (a la Flappy Bird) Have all of the really good ideas for apps been taken?

Picks

Chad

ZipUtilities Open Source Zip library for iOS (and OS X eventually) by Nolan Twitter Bookmarks Recall

Darryl

$44 iVapo Stainless Steel Apple Watch Band Is your app iOS 9 ready? - a last-minute survival guide for stressed mobile PMs written by Harry Fuecks

John

Swift Interview Questions from RayWenderlich.com

Nolan

what if? - Randall Munroe Both hilarious and fascinating Appbot App reviews into insights.  For iOS, Mac, Android, Amazon and Windows apps.

View Details

Tweet Shoutouts

"@mtjc_podcast is just a bunch of Canadians being happy and friendly and taking about IOS" LOL @iOhYesPodcast— Jack Wu (@JackTripleU) August 12, 2015

@JackTripleU @iOhYesPodcast we're actually 50/50 US/CDN. The yanks were absent on Canada Day, eh?— MTJC Podcast (@mtjc_podcast) August 12, 2015

@JackTripleU @iOhYesPodcast Oh and thanks for the mention. A case of maple syrup is on the way. BTW how do you say OS X? Asking for a friend— MTJC Podcast (@mtjc_podcast) August 12, 2015

@iOhYesPodcast inspiring story about how accessibility enabled someone to grocery shops themselves for the first time— Andy Obusek (@obusek) August 13, 2015

Discussion - UIStackView

Referred to by Apple as “your first stop for interfaces built with Auto Layout” in the description of WWDC15 Session 218 Manages the constraints of a vertical or horizontal linear layout Easy migration of IB-based layouts using the new “Embed in Stack View” button Subviews that are to be managed by the stack view are added to the arrangedSubviews property. This allows decorative views to be added directly to subviews without affecting the arrangement.

Potential pitfall: Removing a view from the arrangedSubviews array does not remove it as a subview. The stack view no longer manages the view’s size and position, but the view is still part of the view hierarchy, and will be rendered on screen if it is visible.

Multiple distribution styles

UIStackViewDistributionFill - A layout where the stack view resizes its arranged views so that they fill the available space along the stack view’s axis. When the arranged views do not fit within the stack view, it shrinks the views according to their compression resistance priority. If the arranged views do not fill the stack view, it stretches the views according to their hugging priority. UIStackViewDistributionFillEqually - A layout where the stack view resizes its arranged views so that they fill the available space along the stack view’s axis. The views are resized so that they are all the same size along the stack view’s axis. UIStackViewDistributionFillProportionally - A layout where the stack view resizes its arranged views so that they fill the available space along the stack view’s axis. Views are resized proportionally based on their intrinsic content size along the stack view’s axis. UIStackViewDistributionEqualSpacing - A layout where the stack view positions its arranged views so that they fill the available space along the stack view’s axis. When the arranged views do not fill the stack view, it pads the spacing between the views evenly. If the arranged views do not fit within the stack view, it shrinks the views according to their compression resistance priority. UIStackViewDistributionEqualCentering - A layout that attempts to position the arranged views so that they have an equal center-to-center spacing along the stack view’s axis, while maintaining the spacing property’s distance between views. If the arranged views do not fit within the stack view, it shrinks the spacing until it reaches the minimum spacing defined by its spacing property. If the views still do not fit, the stack view shrinks the arranged views according to their compression resistance priority.

Picks

Chad

Thoughts on Swift 2 Errors

Darryl

WWDC15 Session 218 WWDC15 Session 219 The Genius of Protocols - Wooji Juice

Alternative show title suggestions

Your first stop Not your final destination Beefing it up Microphone Hungry

View Details

Tweet Shoutouts

@iOhYesPodcast A sample of my Swift JSON code. Every field is optional, though. Took trial and error on some types http://t.co/SqYehQXhpo— Dov Frankel (@DovFrankel) August 6, 2015

@dh_thomas @iOhYesPodcast I can’t believe you read it all out... ???? Did you use kCFStringTransformToUnicodeName ?— Ashton (@AshtonDev) August 6, 2015

@iOhYesPodcast Really enjoyed the discussion on developer / programmer / hacker / software engineer / keyboard-head-banger in episode 78— Mark DeLaVergne (@markdelavergne) August 6, 2015

Discussion

What has Jason been up to? Sharing economy + Mobile (is there anything else on this topic? Chad, if so could you tee up with Jason - ok will do)    * What’s different today as opposed to the days of Cosmo.com and Webvan? Why does Instacart work now?

Picks

Chad

A Eulogy for Objective-C

John

Question to ask yourself before including a third-party library

Nolan

Announce baby O’Brien #3 CODE: The Hidden Language of Computer Hardware and Software - by Charles Petzhold

Jak

The Death and Life of Great American Cities Jobs @ Instacart

Alternative show title suggestions

I’ll never admit to that Maybe we’ve already talked about this 7 months and 1 day later Those were not the steaks I dressed up as a shark Close to many, many years We’re all like stooges   Some things really matter to people, and other things don’t Picking produce is hard Those goldfish I’m not some kind of grocery expert Admittedly, I’m an engineer The tables have turned! We don’t share that much code We have broken windows N minus 1 Buy all THE things! Bananas and Whisky Searching for Bananas You can’t do all the things I do all the things Comfortable My door is plenty secure

View Details

Tweet Shoutouts

@iOhYesPodcast +1 for Code Poet ????— Sabes™ (@GarySabo) July 29, 2015

@iOhYesPodcast re Hacker vs Engineer- Nice article from @jaredsinclair on "Judicious Use of Shitty Code." http://t.co/tS1YknL05e— Andy Obusek (@obusek) July 30, 2015

@iOhYesPodcast ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????— Ashton (@AshtonDev) July 29, 2015

@iOhYesPodcast looks like we have an opensource book writing tool http://t.co/HhkQa6Pi30— Ashton (@AshtonDev) July 31, 2015

@iOhYesPodcast My degree says Computer Science. My job title says Mobile Engineer. My time-sheets say Senior Software Engineer. I make apps.— Ashton (@AshtonDev) July 30, 2015

@iOhYesPodcast Yep - objects aren't equatable.Just having one of my adversarial swift days, thank you for listening:) http://t.co/tlIvSVECgy— Ding0 Bytes (@ding0bytes) July 30, 2015

@iOhYesPodcast definitely FTEquivalent in my experience. Useful for commoditised services (ie servicedesks with 200 headcount but 150 FTE.)— Ding0 Bytes (@ding0bytes) July 30, 2015

@iOhYesPodcast lack of clarity yesterday still bothering me: FTE is useful as a means of describing the capacity of a project or a service.— Ding0 Bytes (@ding0bytes) July 31, 2015

..but it should not be used to describe individual people, unless alienation is the express objective of the exercise.— Ding0 Bytes (@ding0bytes) July 31, 2015

@iOhYesPodcast @NolanOBrien that flew under my OpenRadar. I’m sure you’ll bring some interesting __attributes to the show.— Nick Takayama (@ntakayama) July 31, 2015

@iOhYesPodcast @NolanOBrien @5by5 @jazzychad @dh_thomas @johnsextro Wow, what an upgrade! ????????????— Jason Kozemczak (@jak) July 31, 2015

Discussion

Swift 2.0 in Practice (continued)

Custom Subclasses

throwaway required initializers

Property observers (will/didSet etc) and initialization redundancy JSON Parsing

SwiftyJSON Argo Another way Roll your own? What’s wrong with NSJSONSerialization? JSON in Swift - article talking about NSJSONSerialization vs SwiftyJSON vs Argo

Picks

Chad

Configuring App Transport Security Exceptions in iOS 9 and OSX 10.11

Darryl

Swift Error Handling and Objective-C Interop in Depth - Benjamin Encz More Than Just Code Podcast

Nolan

Dirty Coding Tricks More Dirty Tricks from Game Developers

Thanks Amro Mousa @amdev for the article(s)

Boxes: Organize. Discover. Buy. Sell.

Shameless plug for a startup I advised

Also Mentioned

Build Phase Podcast Making Crash Bandicoot - All Things Andy Gavin

Alternative show title suggestions

Shoot Me Now Judicious use of gritty code Bumps in the road Whack Whack Colon Whack Whack

View Details

Tweet Shoutouts

@dh_thomas @jazzychad @iOhYesPodcast In the last few years I’ve been of the mindset that models should be dumber. Easy to bloat them.— Amro Mousa (@amdev) July 22, 2015

@iOhYesPodcast how come show notes aren’t as detailed as they once were. Would always go there for Twitter names and Pick links ????— Ashton (@AshtonDev) July 23, 2015

@iOhYesPodcast I’m using CoreData just fine from a framework written in Swift for bike2Go (for Philly bike share) https://t.co/IBcRpXT9O6— Andy Obusek (@obusek) July 23, 2015

@iOhYesPodcast found you guys a month ago and love the show! But now I'm all caught up on new episodes and am having withdrawals #iOhNo!— Dale Fairclough (@faircoder) July 25, 2015

@iOhYesPodcast I haven't had any issues using it, but to be fair my model is very simple.— Giovanni Lodi (@mokagio) July 26, 2015

@iOhYesPodcast Wait... we still don't have .contains on Swift arrays without using a protocol? NSMutable FTW. Again. http://t.co/ff7a8RwwOP— Ding0 Bytes (@ding0bytes) July 27, 2015

Discussion

Programmer vs. Developer vs. Engineer discussion

Re: Episode 76 Episode 76 had a great topic that was really thought provoking regarding Programmer vs Developer vs Engineer. Everyone can probably has an opinion on what those titles mean Fascinating: we’re inclined to rank things Their all title for someone who makes software or code Maybe “Software Producer” or “Talent” is less biased Code Poet is my favorite (thx John)

Alternate views

Instead, I like to examine the skills Instead of Programmer vs Developer vs Engineer; look at Programming, Development and Engineering as buckets of skills

Full-time Equivalent

The 5 skills

Hacking * bringing together a system of potentially disparate computer apps/tools/functions to achieve a goal * Gluing together anything you can get your hands on to build a workflow or solution takes talent and skill * Often the goal of Hacking is really “discovery” or “exploration” Movie Reference: Hackers Programming

writing code/scripts to pull together potentially disparate functionality and/or frameworks to achieve a goal You create a whole that is more valuable than the sum of its parts amassing and consuming huge amounts of knowledge about APIs and Frameworks that are available and then using them effectively

Development

the process of bringing together talent, ideas and requirements to build a new application or feature Deals with other people and takes input from all over to build something new it’s inherently collaborative and requires other skills like interpersonal skills and communications skills often called soft skills which I find ironic because it’s so hard

Engineering

the use of science and creativity to solve complex problems It needs an academic foundation combined with creativity and ingenuity to solve hard problems These skills get amplified in value when complemented by others who can fill in any knowledge or skill gaps

Architecture

the design of a large complex system or application that requires numerous contributors to fully implement it is a skillset that can envision, design, and clearly document and communicate a complex system in a cogent way that everyone tasked with implementing the system are able to apply their skills to succeed with little or no impediment?

Picks

Darryl

Swift’s Type System - Ole Begemann A response to Brent Simmons’ blog post, Solving Problems I Don’t Have, Except that I Do Have Them, in which he points out the things he likes most about Swift, of which static type checking is probably the least significant.

Chad

deferring (haha) to Nolan

John

Hacking with Swift - A load of free tutorials with Swift from Paul Hudson @twostraws Twelve South Dual Screen Wallpaper Collection

Nolan

Apple Radar

Everyone should file bugs and feature requests

Open Radar

Dupe any bugs/requests that you can to open radar Be a community Share your Open Radar with us.  Any radar we can get on board with we will mention on the show and dupe to Apple Radar ourselves.

Quick Radar

Makes filing radars easier Easily can file to both Apple and Open radars Can automatically Tweet the radar out too First radar plug: My own Radar

Asking Apple for @defer support in Objective-C https://twitter.com/NolanOBrien/status/618098575826751488 Anyone interested in using a macro for defer support until Xcode supports it can look at the Open Radar for the code on how to Special thanks to Ashton @AshtonDev  for the inspiration

Alternative show title suggestions

SequenceType Feedback from Ding0bytes Full-time Equivalent Spam Killer Hex Editor Not the Southern Kind of Cracker Soft skills are hard Software is easy, people are hard Sell yourself I’m a svengali Getting my hemispheres correct All the ripples String this racket Skin this cat Made with catgut I Try To Avoid Titles I make people smile and sometimes cry

View Details

We discuss specifics regarding value types and references, including how to use them and when to use them. Chad sheds some light on his struggles getting familiar with Protocol-Oriented Programming.

View Details

We discuss what it means to be a software developer and the differences between programmer, developer and engineer (if there really are any differences). Do you think there's a difference or should there be a difference in those terms? Let us know. Send a tweet to @iohyespodcast

View Details

We interview Greg Heo about his work as Swift Lead for RayWenderlich.com and discuss the latest on Swift 2.

View Details

We talk with author and app developer Jeff Kelley about his new book, Developing for Apple Watch (Your App on Their Wrists). We grill him on the book writing process, the difficulties of writing the book before he had the watch and things to come with WatchOS.

View Details

We wrap up the finals bits of discussion on Chad's overall WWDC experience and then move on to discuss the evolution of Storyboards and the uptake in adoption.

View Details

Chad and Darryl are joined by Nolan O'Brien and Jason Harris to discuss the recent announcements at WWDC and to drink whisky. (But mostly to drink whisky.)

View Details

We continue our discussion of Swift by covering Operators and spend a little time talking about things we like to see at WWDC.

View Details

Automatic Reference Counting (ARC) including what's new (not much) and suggestions for when to use weak vs. unowned.

Optional Chaining including Nil protection, multiple optional calls chained and the Law of Demeter.

Generics including generic functions, generic types, associated type, type constraints and the use of the Where clause.

View Details

Darryl finishes up some homework assignments and address some corrections. He covers Overriding private methods, private methods in notification selectors, factory methods and follow-up on initializers.

View Details

Chad and Darryl continue our series on Swift. This time they take a look at Inheritance, Initializer and Deinitializers.

We cover the tweet shoutouts, homework assignments and wrap things up with our picks of the episode.

View Details

We welcome special guest Kim Etzel (wife of host Chad Etzel) to the show to discuss ResearchKit from the perspective of someone in the research community with an interest in gaining the benefits of ResearchKit.

ResearchKit

Build surveys for modal presentation on an iOS device. Use customizable visual consent templates to explain the details of your study and obtain a signature from the participant. Be sure to get your visual consent flow approved by your institutional review board (IRB) or ethics committee. Use active tasks to invite users to perform activities under semi-controlled conditions, using iPhone sensors to collect data.

Related Open Source

AppCore

Dashboard with progress graphs Data storage back end JSON serialization and deserialization Integration with Sage Bionetworks' Bridge service

GlucoSuccess Asthma Health mPower Share the Journey

AthenaCareNetwork.org

View Details

WWDC Swift Type Casting Nested Types Extensions Protocols

View Details

Swift Methods, including instance methods, type methods, self and mutating structs and enums. Subscripts Access Control, public internal and private

View Details

This week we pickup where we left off with our deep dive into swift. We identify a few corrections that you helped us with and then we dive deep into properties.

We follow that up with a discussion of Methods, Self and Visibility

View Details

Apple Watch

Pre-order starts this Friday April 10

Models/Prices Are you getting one? Which model? Apple marketing “how to” videos

“Guided Tour” - http://www.apple.com/watch/guided-tours/

Writing a watch app with WatchKit - https://github.com/jazzychad/FlickrWatch

FlickrWatch app

Interface Builder woes Obj-C version Swift version Interop from Obj-C to Swift Network calls? https://github.com/jazzychad/FlickrWatch/issues/1

Louie Mantia’s see-through watch face concept

View Details

Swift

Follow-up/Corrections 2 episodes ago, Darryl mistakenly referred to Swift 1.3 beta. He meant to say 1.2 beta.

Tuples

Contents can be decomposed in a manner very similar to the decomposition of an enum value’s associated values Elements can be accessed using dot notation with its zero-based index.

Particularly useful as the return value of functions

Group values into a single compound value. Values need not be of the same type Multiple ways of getting at the composed values

“_” can be used to ignore parts of a tuple.

Elements of a tuple can be named, and subsequently accessed by name using dot syntax. If the data structure is likely to persist beyond a temporary scope, consider a class or structure instead.

Functions

syntax parameters

local vs. external parameter names variadic in-out default parameter values

return

multiple return values option tuple return types void defined as empty tuple ()

function types

syntax as parameters as return types

Closures

terseness Types

Global Functions Nested Functions Closure Expressions

Trailing Closures

View Details

Swift

Data

value types

enums

can have initializers, can be extended and can conform to protocols Swift enums do NOT get default integer values

structs

auto-gen’ed memberwise initializers (not so in classes) No ref counting, since value type

reference types

classes

very similar to structs (but ref type) inheritance Ref count for memory management

Swift Diff: dot syntax allows us to directly set sub-properties without intermediate assignment (reduces instance creation and malloc) Rookie Question: What is the key deciding factor between creating a struct vs. class or class vs. struc?

View Details

The Discussion

Swift

Syntax

variable / constant declaration / type inference if/for loops switch statements optionals

View Details

Apple Event Recap

Are our development tools secure?

View Details

Tweet Shoutouts

@iOhYesPodcast #57 marketing tip- I heard I needed to market myself as well as my apps so I created an ios dev blog - http://t.co/m5Sif9HtQr

— Darrell Nicholas (@dwnicholas) March 3, 2015

@iOhYesPodcast yet another good episode http://t.co/FxrcP7g9HH. The conversation bridges with the "t-shaped people" from @thisagilelife

— Giovanni Lodi (@mokagio) March 4, 2015

The Discussion

Sprite Kit using Swift

Sprite Kit Basics

Projects are organized into Scenes The Scene Editor

Allows you to visually layout sprites and components of a scene.

SKView - like other views but contains a sprite kit scene SKScene SKSpriteNode SKAction Comes with a physics engine built right in….Niiiiice!

Physics World

Included in Scenes by default Configurable Gravity Physics Bodies Contact Delegate for collision detection

Implement SKPhysicsContactDelegate

Sprite Kit and Scene Kit

3d vs 2d

Sprite Kit vs. Unity

Sprite Kit

Native Free

Unity

Cross-platform Superior visual scene designer Built-in asset store More powerful??? Than sprite kit / scene kit

Chad’s Recommendations for Sprite Kit best practices Tutorial at RayWenderlich.com Apple’s SpriteKit Programming Guide

Open Source Project of the Week

HLSpriteKit from Karl Voskuil Includes gesture target, layout manager, custom SKNode subclasses, extended scene

Picks

Chad

10 More Bullets - http://www.newgrounds.com/portal/view/627247 rlite - https://github.com/seppo0010/rlite - self-contained, serverless, zero-configuration, transactional redis-compatible database engine.

John

Citizenfour, documentary about Edward Snowden. (Shhh. The NSA is listening) Top 70 Programming Quotes of All Time

Alternative show title suggestions

Kids These Days 10 More Bullets

View Details

Tweet Shoutouts

@iOhYesPodcast also tips for good ways for indie devs to market a new app on a budget. I got it all wrong on my first app QuickSchedule...

— Darrell Nicholas (@dwnicholas) February 18, 2015

JNCO Jeans are about to make a comeback!! (@jak @iOhYesPodcast) http://t.co/dp80hI7wMW

— Kim Etzel (@KimEtzel84) February 20, 2015

@iOhYesPodcast nice chat on #reactjs native. I guess we'll just have to wait till it's open source to play with it... http://t.co/SCj6UShf0Y

— Giovanni Lodi (@mokagio) February 22, 2015

@iOhYesPodcast finally, regarding remote logging, I've implemented this simple remote logger https://t.co/hh4UzTAg0v, what do you think?

— Giovanni Lodi (@mokagio) February 22, 2015

The Discussion

Generalization vs Specialization

Back to Work #209: Habitual Ritual What causes some folks to collect hobbies/interests while others focus on and master one thing? Opinion: Is It Better to Specialize or Generalize? - Nora Dunn (no, not the SNL Nora Dunn) What type are we?

John

Restless. I like to learn a little bit about a lot of stuff. I wish that I could learn a lot about a large number of things, but I don’t have the time nor the mental capacity. I believe in the axiom that “Someone always knows more ‘Karate’” and that frustrates my efforts to go deep in any one area.

Chad

Cop-out. Somewhere in the middle.

Darryl

Generalist. I have always collected hobbies and dabbled in things superficially. This has transferred over to my professional life with two major (but complementary) career changes.

How does this serve us with regard to iOS development? How has this hindered us?

Open-Source Project of the Week

DDAntennaLogger - Giovanni Lodi Giovanni asked what we thought of his simple remote logger. I was unfamiliar with both CocoaLumberjack and Antenna, so I’m passing the question along to our listeners. What do you folks think? Open up some issues/pull requests for Giovanni.

Picks

Chad

Origami

Darryl

Slender from MartianCraft is one of those rare tools that fits neatly between development and design. Slender will scan your Xcode or Web projects and provide information on how image assets are being used. Exposing retina issues, unused assets, wasted space, and designer mistakes.

John

TaimurAyaz/TAOverlay, Simple overlays with a minimalistic design. Other World Computing, for Mac upgrades

Alternative show title suggestions

Not a hater Collecting hobbies Cop-out OCD Thing Systems on a hole In Love with what they do The way the winds are blowing Saxophone I really, really like bowling...a lot Baby Carrots Dark and Brooding Competent and Confident Grammar show Going to the model moon Question mark?

View Details

Tweet Shoutouts

@iOhYesPodcast I'm an ATM tech by day, iOS dev after work,Trying to switch away from ATM to iOS FullTime,Your show helps get me thru the day

— Darrell Nicholas (@dwnicholas) February 11, 2015

The Discussion

React Native  -http://jlongster.com/First-Impressions-using-React-Native

What is React.js? - http://facebook.github.io/react/ What is React Native? https://twitter.com/andy_matuschak/status/560511204867575808

“I say with confidence as a former UIKit author: React's model for the UI layer is vastly better than UIKit's. React Native is a huge deal.”

Flexbox - http://css-tricks.com/snippets/css/a-guide-to-flexbox/

Reimplemented in C, Java, JS https://github.com/facebook/css-layout

React Native Videos

https://www.youtube.com/watch?v=KVZ-P-ZI6W4 https://www.youtube.com/watch?v=7rDsRXj9-cU

Stated pros of React over similar JS->native libs

JS layer runs async batches operations NOT write once run anywhere Instead, Learn once write anywhere

Open-Source Project of the Week

Teleport-NSLog

Picks

Chad

Controlling Complexity in Swift

Darryl

Changes to the Swift Standard Library in 1.2 beta 1

Provides a really good summary of the changes in Swift 1.2 with a bonus section on how to implement CopyOnWrite collections using isUniquelyReferenced (as well as a plea to consider using ManagedBuffers instead).

John

InVision - turn your graphic mockups into a prototype.

Alternative show title suggestions

Violent agreement Mmmm Master stroke Perilous Dear Internet JS Threading is hard Panacea for Multithreading Super Against It Dogmatism How Comprehensive Maschetti Order One other point Log All the Things JS No fighting here Copy on assign

View Details

Tweet Shoutouts

@iOhYesPodcast my ideal workspace: my own office. I need a dedicated space that's mine with a door so I can choose the noise level. #ep52

— Kim Etzel (@KimEtzel84) January 30, 2015

@iOhYesPodcast @dh_thomas @johnsextro I thought it was a great episode. I'll have to listen again to get more of the detailed parts

— Nolan O'Brien (@NolanOBrien) February 2, 2015

The Discussion

Continuous Delivery Challenges in Mobile Development

CD (Continuous Deliver) is well accepted and understood in web development.

What is the view of CD in iOS development? Is the review process “barrier” just too long and uncertain to make it viable? At what frequency do app updates become bothersome to users?

Is Apple trying to help solve this with the “Autoupdate” capability?

If CD doesn’t work for Prod releases is it worth setting up for “user acceptance testing” purposes? Tool support?

Other reference articles

http://sdtimes.com/year-agile-devops-continuous-delivery-took-life-cycle/ http://appdevelopermagazine.com/1519/2014/6/4/Simplifying-Mobile-Application-Development-with-Continuous-Delivery/

Open-Source Project of the Week

Spring (Written by Meng To, a self taught UI/UX developer living in San Francisco) A library that can help you add animations to your app.

Written in Swift. They have a demo app that lets you play with the animations. Works with Storyboards as well.

Picks

Chad

NEOColorPicker

Darryl

Random Swift Things - Brent Simmons

John

Battle of Brothers, The one year game dev duel. (from Ilea Cristian) Herman Miller Living Office, great ideas for improving on the open-plan office space.

Alternative show title suggestions

No Windows 3.1 Release Anticipation Discredit Tech Buzz Boxed Software or Box Software Gold Master Maniacal Focus on Quality Unit Test Hater Bleeding Edge Waiting is Terrible Spoilers

View Details

Tweet Shoutouts

Super shoutout to iCatcher by @joeisanerd , @iOhYesPodcast , and other software-development podcasts: https://t.co/Vaj2Vp7o2h

— Josh Adams (@vermont42) January 21, 2015

@johnsextro @iOhYesPodcast Sooner or later I'll run into you, and when that time comes, our TDD planning will commence! — marksands (@marksands) January 26, 2015

The Discussion

SceneKit

For a discussion of Apple’s Metal Framework, see Episode 44

@iOhYesPodcast Hello from Romania, Europe! Very nice podcast:) If you accept topic suggestions I would like to hear about SpriteKit/SceneKit

— Ilea Cristian (@ileacristian) October 22, 2014

Here you go, Ilea, this one’s for you…

What is SceneKit?

Objective-C framework for building apps and games that use 3D graphics High-performance rendering engine High-level, descriptive API Supports animation based on the Core Animation framework with defined animatable properties Abstracts away the rendering algorithms used to display a scene, meaning you don’t need to worry about things like:

Object ordering Culling Shaders (though you can write your own if you like)

What is SceneKit not?

A game engine (you must provide your own logic) An escape from linear algebra Cross-platform (but who wants to support Android anyway?) A fully-featured substitute for solutions like Unity3D

Why use SceneKit?

Very easy way to get your feet wet with 3D graphics Suitable for simple games Rapid implementation of visualization apps

Major features

Available on Mac OS X and iOS Integrated inspection (model viewer, material editor, particle editor) and debugging in Xcode COLLADA importing Supports geometries, materials, lights and cameras Animatable properties LoD substitution (level-of-detail, allowing for variable geometry complexity) Actions (allows for animation triggers, sound effects, etc) Skinning and Deformations Static/dynamic shadowing Physics, including joints and inverse kinematics Particles Ray casting/hit testing Custom OpenGL shader programs JavaScriptCore bridging SpriteKit overlays for performant 2D UI elements that don’t require an additional compositing pass

The basics (iOS-specific)

Assets are contained within a Scene Assets container in your Xcode project Xcode performs optimizations at build-time (up-axis correction, vertex interleaving, PVRTC image format favoring, etc) Scenes can be imported from COLLADA (in Xcode. The dae file is converted to a bplist [retaining the .dae extension] before it is put on the device) or un-archived from plists. Scenes consist of a graph of nodes.

Root node: defines the world’s coordinate space sub-Nodes: populate the world with visible content by attaching:

Cameras Lights Geometries

Scenes can be built-up (or modified after load) programmatically. sub-Nodes from other scenes can be added to a scene, but a root node must not be added to another scene. Important classes

SCNView - a view that displays SceneKit content SCNScene - The container for all SceneKit content SCNNode - The basic building block of a scene SCNGeometry - A three-dimensional object that can be attached to a node. Also known as a mesh or model. SceneKit has several built-in primitives that can be used, or custom meshes can be imported or built from vertex data. Surface appearance is defined by materials attached to the geometry. SCNMaterial - A reusable definition of surface appearance properties for an object SCNLight - A light source that can be attached to a node, providing shading in the rendered scene SCNCamera - A virtual camera that can be attached to a node, providing a point of view for rendering a scene.

Open-Source Project of the Week

iOS-8-SceneKit-Globe-Test - @schwa iOS 8 Scene Kit (swift!) project showing a spinning (earth) globe with diffuse, ambient, specular and normal materials. Also cloud layer. Yum.

Picks

John Follow @johnsextro

“As I learn WatchKit” (AILW) series, by _DavidSmith

Darryl Follow @dh_thomas

SceneKit Sample Projects

Bananas: A simple SceneKit platforming game SceneKit slides for WWDC 2014 SceneKit Vehicle Demo

Alternative show title suggestions

Shader writing Lots of polygons bones and joints inverse kinematics draw call, draw call, draw call root node for the world particle emitters hold on to the root node root node the maths skin is a reserved not a geologist camera bob the one with the monkeys

View Details

With our Special Guest, Nolan O'Brien

Tweet Shoutouts

@iOhYesPodcast Loved the dive into BDD and the UICV tricks last episode. I'm determined to see @jazzychad embrace testing sooner or later :D

— marksands (@marksands) January 20, 2015

@iOhYesPodcast Congrats on your partnership with 5 By 5 Network! Also, your name iohyes is fantastically clever. — Ninjevade (@Ninjevade) January 18, 2015

The Discussion

Time Estimation and Deadlines for development projects/tasks

What are your techniques? Are they effective/accurate? Estimating with a team vs. by yourself If you’re doing UI work (w/ or w/o a designer) vs. non-UI work How often do you reassess your estimation? When do you admit that your estimation is wrong or you won’t make your deadline? How to prioritize tasks when a deadline is looming and not everything will get done?

Open-Source Project of the Week

CocoaMarkdown - Markdown parsing and rendering in Objective-C

Picks

Nolan O'BrienFollow @nolanobrien

SimPholders 2.0

A rewrite of simpholders in Swift.  A tool for viewing your iOS Simulator folders, the apps installed and what was recently run.  Great tool now that Simulators are unreadable GUIDs.

Darryl Follow @dh_thomas

NSHipster (Nate Cook) - JavaScriptCore A deep dive into using JSContext and related classes to evaluate JavaScript on iOS. Among the many use cases for JavaScriptCore is game scripting (although LUA is perhaps a more popular solution), which may come in handy for a future episode of iOhYes.

Chad @jazzychad

“How to Ship Without a Deadline”

John Follow @johnsextro

#NoEstimates

http://noestimates.org/blog/ (Neil Killick) http://twitter.com/noestimates http://twitter.com/woodyzuill

Alternative show title suggestions

Modus Operandi Soto Brothers Coding Soto Brothers Fungibility Wa-gile-fall #vague tweets Its “Super” In and out triangle Marty you’re not thinking 4th dimensionally Gold master Stamping CDs Agreeing Snicker I look up to you Chad

View Details

Hosts: John Sextro, Chad Etzel and Darryl H. Thomas Audio Engineer and Post-Producer: Darryl H. Thomas

Released Friday, January 16, 2015

Tweet Shoutouts

@jak @iohyespodcast why oh why!

— Soheil (@soheil) January 9, 2015

@jon_m_hill @iOhYesPodcast you're too good to me

— Jason Kozemczak (@jak) January 10, 2015

@iOhYesPodcast just found out @jak is leaving. Not cool man

— Doug Whitmore (@gooddoug) January 11, 2015

The Discussion

The Open-Office Trap published in the New Yorker, by Maria Konnikova

1997 - The University of Calgary study (before, 4 weeks after and 6 months after)

Disruptive, stressful, cumbersome, dissatisfied, resentful Productivity fell

2005 Study

When workers couldn’t change the way that things looked, adjust the lighting and temperature, or choose how to conduct meetings, spirits plummeted.

johnsextro This article sounds like a bunch of crying from a pretentious primadonna http://t.co/x3jDzAerwC Types of open floor plans

the blank slate - just tables and chairs moveable walls - rolling or sliding walls/whiteboards used to create separation Team Area / Pit / Bullpen - semi-private partitions, not easily reconfigured

John’s opinions

Cubicles, they suck

False sense of privacy They don’t contain nor block noise They get in the way and are a waste of space

Offices, slight better but still bad

They can contain and block noise But they are a terribly inefficient use of space Stifling to collaboration and fascist

Darryl’s opinions (read: facts)

Open floor plans, they suck

Amusing article (http://verynicewebsite.net/2015/01/be-yourself-as-long-as-its-your-best-self/) Workers are left with no sense of personal space as a company grows The universally proposed “solution” to noise is headphones, read: OTHER NOISE People feel free to interrupt your workflow in person, as if IM and email wasn’t bad enough Note: I think this actually works well for teams up to 10 quiet people (no phone calls, etc), beyond that, it’s untenable My favored compromise solution: Bullpen cubes (cubes that can accommodate teams of 4-5 people)

Cubicles, I hated them until I no longer had them

I miss my partitions Cubes actually do affect noise levels: they discourage yelling across the room and deflect and diffuse/absorb audio a bit (when built properly)

Shared offices, I love ‘em

Office with up to 3 occupants Can get cramped, but with good office-mates, it’s pretty harmonious Especially good if your office mate is always going to meetings (and you aren’t)

Open-Source Project of the Week

Sleipnir, BDD framework

Sleipnir is not dependent of NSObject Sleipnir is not using XCTest

Picks

Darryl Follow @dh_thomas

30th Annual International Technology and Persons with Disabilities Conference (#csun15, San Diego, March 2-6, 2015) As the name implies, this is a conference related to technology and how we make it accessible to those with disabilities. I’ll be attending for the first time. Traditionally web-heavy, there are a few iOS-specific sessions this year in addition to several sessions that are universally useful regardless of platform. Early-bird registration ($455) ends February 3, 2015

Chad @jazzychad

UICollectionView initial content offset sol’n

John Follow @johnsextro

Ninjevade - developed by a friend of mine, Matt Burton. He just recently released it to iTunes.

Alternative show title suggestions

Rail against the environment Bullpen 5by5 Code of Conduct Rage coding Do that thing You and your damn physics There was a ‘B’ somewhere Those germs can move

View Details

Hosts: Jason Kozemczak, John Sextro and Chad Etzel Audio Engineer and Post-Producer: Darryl H. Thomas

Released Friday, January 9, 2015

Tweet Shoutouts

@jazzychad @_dml your @iOhYesPodcast from earlier this year on your games/failure/marketing challenges was particularly painful. Shit's hard

— Darshan Shankar (@DShankar) December 12, 2014

@Javi @iOhYesPodcast pic.twitter.com/NpjLgsQvpL — Nacho Soto (@NachoSoto) December 13, 2014

Finally subscribed to @iOhYesPodcast

— Amro Mousa (@amdev) December 27, 2014

The Discussion

Farewell to Jason

Chad’s story John’s story

How to get started as an iOS app developer today

Open-Source Project of the Week

Design Patterns in Swift

Includes behavioral, creational and structural patterns Includes an example implementation of each pattern and then how to use the code implemented via the pattern.

Picks

Jason Follow @jak

Design Details podcast, hosted by Brian Lovin and Brynn Jackson Episode 1 is out now, featuring Sam Soffes riffing on freelancing, equity as payment, motorcycles, selling apps, and more

Chad Follow @jazzychad

Getting interactivePopGestureRecognizer dismiss callback/event

John Sextro Follow @johnsextro

SnapPower, the nightlight reinvented

Alternative show title suggestions

Farewell Jason Dubius Introduction Insane in all the right ways - ce That’s Chad Twitter Arguments Calling HR One new thing

View Details

Tweet Shoutouts

Listening @iOhYesPodcast new episode while traveling to the Pacific Ocean side of the city. http://t.co/2eCdvxMyFO

— Yoshimasa Niwa (@niw) December 6, 2014

Listened to @iOhYesPodcast on my evening walk. @superme's typography reminds me of titles from a Lynch movie. //@jazzychad @dh_thomas @jak

— Jon Gary (@recordtronic) December 8, 2014

@iOhYesPodcast finally, an honest discussion and overview of dev'ing and product. Thanks @jazzychad — Nolan O'Brien (@NolanOBrien) December 8, 2014

The Discussion

WatchKit / Pebble

WatchKit design decisions: code runs in the phone, not on the watch. API is synchronous, but with no getters. The big success of WatchKit is making the API transport-agnostic: no mention of Bluetooth.

It may even use Ad-Hoc Wifi to send larger amounts of data.

General confusion around the limitations of WatchKit:

It’s NOT the API to make watch apps, but a way to extend iOS apps by “projecting” data to the watch. Native apps coming later.

A win of making watch apps extensions is that, at least for now, the user doesn’t need to manage which apps you install on the watch, eliminating one of the frictions of the Pebble.

Another consequence is it eliminates the need to log into apps separately for the watch, like you have to do with Pebble apps. Apple needs to get App Store discovery right.

beta 2 released today (Dec. 10); API changes in 8.2b2

[WKInterfaceController +openParentApplication:reply:] [UIApplicationDelegate -application:handleWatchKitExtensionRequest:reply:]

From the docs: “A dictionary containing data to return to the WatchKit app. The contents of the dictionary must be serializable to a property list file. The contents of this dictionary are at your discretion and you may specify nil.” (emphasis our own)

Default row appearance in WKInterfaceTable, which can be overridden by specifying bg color, margin, corner radius and height in IB Blog post by _DavidSmith

Lister example app updated today w/ Watch extension (app and glance)

Open-Source Project of the Week

Fox, A property based testing library for Objective-C and Swift, by Jeff Hui (@jeffhui) Docs / examples / more info at http://fox-testing.readthedocs.org/en/latest/

Picks

Jason Follow @jak

Bobler, a micro-podcasts app (Instagram for audio?) follow Jason (@jak_)

Darryl Follow @dh_thomas

Build Phase, a weekly technical podcast discussing iOS development and design. Hosted by Thoughtbot developers Mark Adams and Gordon Fontenot. Lots of discussions related to TDD, architectural design and an exploration of functional programming with Swift.

Javier Soto Follow @javi

MMWormhole, a clever cross-process message passing implementation

John Sextro Follow @johnsextro

Day One, Journaling App Serial, Podcast

Alternative show title suggestions

Burrito Soto Thanks Chad “Is that French?” Feed your feed Feed you podcast fever “Underscore? That’s a cool name”

View Details

Tweet Shoutouts

Just listened @iOhYesPodcast. I thought Swift is not good for beginners since at this moment, it adds extra complexity on UIKit ObjC APIs...

— Yoshimasa Niwa (@niw) November 25, 2014

@dh_thomas @niw @iohyespodcast would be interesting to get @sandofsky's take, or someone who took his class (@allidryer @franklin_ho) — Evan Davis (@wahoo) November 25, 2014

@wahoo @dh_thomas @niw @iohyespodcast I'm going all-swift on new projects. Anecdotally, big companies with existing code aren't moving.

— Ben Sandofsky (@sandofsky) November 25, 2014

@wahoo @dh_thomas @niw @iOhYesPodcast @sandofsky @allidryer I found the APIs straightforward with Swift. Definitely good for beginners. — Franklin Ho (@franklin_ho) November 25, 2014

The Discussion

Super

Implementation UI Design/effects Custom components Tests

Open-Source Project of the Week

ZLSwipeableView - https://github.com/zhxnlai/ZLSwipeableView

Interesting example of ui dynamics in action with a good readme and a good delegate protocol

Picks

Jason Follow @jak

“A week of iOS bugs” post by Alex Dieulot

Darryl Follow @dh_thomas

Tom Harrington - Sharing data between iOS apps and app extensions Overview of file-based data sharing. When I originally read this article and marked it as pick-worthy, there was considerably more information about how to use file coordination as a notification mechanism between apps and extensions. It turns out, Apple has specifically warned against using file coordination in extensions (Tech note 2408). The article has been updated accordingly.

Chad Etzel Follow @jazzychad

Super - https://super.me/

Alternative show title suggestions

The Floodgate of Nerd Hatred Gesture Privilege Crazy Chess Game Snow iOS

View Details

Tweet Shoutouts

@iOhYesPodcast love the first 5 minutes of glorious nonsense in the latest episode. Well done.

— Jon Hill (@jon_m_hill) November 14, 2014

@iOhYesPodcast #Hockeyapp Android / iOS, group and user level permission, crash logging / tracking, github integration, user feedback, etc.

— James Parker (@parkej60) November 15, 2014

Listened to @iOhYesPodcast #46 hoping for C languages as a topic, got a great discussion on OO design. More Gang-of-Four Design Patterns!

— Nolan O'Brien (@NolanOBrien) November 18, 2014

The Discussion

WatchKit has been released: we’ll cover this in-depth in a later episode, but let’s discuss initial reactions briefly. Learning to program in Swift from a designer’s perspective

Why learn to program? (12 min)

Does learning to program help the designer communicate with engineers?

What is recommendation for mockups to other designers (18 min) What approach are you taking?

Codepath Somewhat similar program in St. Louis called LaunchCode

Will this knowledge help you understand the trade offs between out of the box UI and custom? (28 min)

Facebook Groups AsyncDisplayKit, originally designed to make “Paper” possible

How do you deal with MVP demands in UI design? (38 min)

Key interactions

Base level functionality UX

Closed loop system Open loop system

What has been the most surprising aspect of learning Swift? (44 min) Difference: learning Obj-C vs. Swift (47 min) What pitfalls have you run into, and how have you overcome them? How can we as engineers better communicate in terms a designer will relate to?

Open-Source Project of the Week

A great open-source resource was my classmates work on Github. We had to submit work using Github and it quickly became a great resource for looking at other classmates’ code. If you search for “CodePath” and filter for Swift on Github, you’ll find many of the designer and engineering assignments for the Swift classes.

Picks

Jason Follow @jak

Flashlight - unofficial Spotlight plugin system / manager You can download an alpha build from its Github page. Python-based plugins w/ customizable icons, command pattern-matching, and HTML-based UI. You can browse and download plugins from the source on Github.

John Follow @johnsextro

Anker 5 port High Speed Desktop USB Charger $25.99 “Design is One”, documentary on Massimo Vignelli Follow on pick offered by Dave, Architect and the Painter

Darryl Follow @dh_thomas

Dash API Docs for iOS The API documentation you know and love from OS X is now available as an iOS app. Personally, I don’t find myself searching API docs on mobile devices all that frequently, but I see this as another way to support Bogdan Popescu’s efforts. I use the Mac app all the time.

Dave Bellona Follow @davidbellona

Matthew Sander’s iOS posts on animations, custom segues, and adaptive layouts in Swift. He’s a designer at Us Two, the firm that developed Monument Valley. Great resource for for beginners and intermediate designers who code. Ivo Mynttinen’s iOS Design Guidelines is a solid breakdown of screen resolutions, design elements, and patterns on iOS 8.

Alternative show title suggestions

The why Slow code Modal Segue Hidden behind the longpress Farting out apps / Facebook farting out apps Bourbon guy Fix that redundancy Red dots with white circles Thank you Swift Accent grave Accent aigu Obj-C for 2nd graders

View Details

Tweet Shoutouts

@iOhYesPodcast Great discussion last podcast. Can you guys go deeper into SOLID in a future-sode? Please overclock @jazzychad when you do.

— Sir Adam Huda (@thinktopdown) November 1, 2014

my favorite trope from @iOhYesPodcast: @dh_thomas insults @jak and @jazzychad laughs hysterically. i want more moments just like this please — Kim Etzel (@KimEtzel84) October 31, 2014

The Discussion

TestFlight Beta Testing

Getting started

Xcode iTunes Connect

Inviting Beta Testers

Internal vs. External

Does this mean that other beta testing services are “Sherlocked”?

HockeyApp, etc.

Should people using other beta testing tools migrate?

Are there advantages to being part of this ecosystem? Are there advantages to staying away from TestFlight? Does TestFlight give you anything special that you can’t get from another service?

Open-Source Project of the Week

2048, An open source version of the game “2048”

git clone https://github.com/ik/2048.git

Is this damaging to the original developer of the game or does this follow the old adage, “There’s no such thing as bad publicity”

Darryl’s opinion:

Article on the “Threes ripped off by 1024, which is in turn ripped off by 2048” “controversy”: 2048’s Massive Popularity Triggers Cloning Controversy - Kotaku At what point does a game define a new genre, which makes cloning inevitable? If game mechanics vary slightly, is that enough of a distinction? (I think so, but there are many who would consider the game mechanics to be every bit as much of the “art” as the game’s content.)

Jason's opinion:

The market usually doesn’t care about fairness. Being an indie developer means running a business. Businesses must always be evolving to “put themselves out of business” or else your competitors or copycats will.

Picks

Jason Follow @jak

Dave Verwer’s iOS dev weekly

Weekly (obviously) curated iOS development videos / articles / stories Sponsored job postings from great companies Available by email (recommended) and the web

John Follow @johnsextro

Armchair - App Review Manager written in Swift for iOS and OS X

Similar to UAAppReviewManager and Appirater but 100% Swift, works on iOS and OS X Prompts the user to rate your app only after passing the rules that you have established. Very configurable

Chad Follow @jazzychad

Mike Ash articles

“Let’s Build NSZombie” “Let’s build NSAutoreleasePool”

Darryl Follow @dh_thomas

Follow-up from previous pick: Wolf Rentzsch discussed KZPlayground in depth in Edge Cases episode 110, “Scripting with C” Use Your Loaf: Continuous Integration with Xcode Server How-to article for setting up CI covering everything from OS X Server installation to key management to Bot configuration

Alternative show title suggestions

Cordial Cherry Dr. Jak Shut up Break my own rule Recused Piecemeal solutions Defining Genre Autorelease pool Leak out Cascading Pool Draining

View Details

Tweet Shoutouts

@iOhYesPodcast Have been happily using Storyboards in a team of 8 developers. 100+ screens, 20+ storyboards. Enterprise ready!

— Ashton (@AshtonDev) October 20, 2014

@iOhYesPodcast Great show with Adam! Speaking of Adam, When can I expect to hear an iOhYes show on threading, Mr. Axe? POSIXtively exciting!

— Adam Hitt (@nibsandxibs) October 21, 2014

@iOhYesPodcast Hello from Romania, Europe! Very nice podcast:) If you accept topic suggestions I would like to hear about SpriteKit/SceneKit

— Ilea Cristian (@ileacristian) October 22, 2014

Send us your shoutouts: @iohyespodcast

John is on “special assignment” this week, so we have decided to play for you a previously unreleased discussion we think you all will enjoy.

The Discussion

OO Inheritance vs Composition (w/ iOS related examples)

The problems of Inheritance in things like UIViewControllers

ViewController vs TableViewController split inheritance tree problem

Composition

What is it? How is it different than Inheritance? Chad’s Twitter Login Helper example Axiom - Prefer composition over inheritance

Dependency injection SOLID

Single Responsibility principle (SRp) Open closed principle (OCp) Liskov Substitution principle (LSp) Interface Segregation principle (ISp) Dependency inversion principle (DIp), depend on abstraction, not concretions.

Advanced User Interfaces with Collection Views - WWDC 2014 Session 232

Open-Source Project of the Week

https://github.com/mattt/euler Euler - unicode mathematic operators in Swift Is this ok/operator overloading opinions?

Picks

Jason Follow @jak

Matthew Cheok’s latest “design teardown”: Tweetbot-style “tip” alerts

Chad Follow @jazzychad

https://gitgo.io/ - Private git hosting

Darryl Follow @dh_thomas

Playgrounds for Objective-C - Kryzsztof Zablocki Uses the iOS simulator to provide quick prototyping/parameter tweaking similar to Swift Playgrounds (but faster). Includes a demonstration video. Source available on GitHub and as a CocoaPod, if you’re into that kind of thing.

Alternative show title suggestions

OO in the dark ages Is-A vs. Has-A Don’t use this in production Late to the composition train Everything implements Rectangle Throw out the baby with the bath water Let’s talk about biology A dog has legs Overclock with Coffee SOLID You’re fired I don’t want you to use Emoji

View Details

Tweet Shoutouts

@iOhYesPodcast Hi guys, you have a very cool podcast! Thanks for mentioning my LNNotificationsUI framework!

— Leo Natan (@LeoNatan) October 9, 2014

@dh_thomas @jazzychad @iOhYesPodcast "We can fix it in post processing"

— Brandon Carpenter (@bhcarpenter) October 9, 2014

@iOhYesPodcast Re: Photo Extensions - seems like they can only be launched from the Photos App. In other news, you're awesome. — Gavin Aiken (@gavaiken) October 8, 2014

Very interesting discussion of OpenGL and Metal by @dh_thomas on @iOhYesPodcast — Ashton (@AshtonDev) October 14, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

Sextro Apologizes to Lastpass What apps are using size classes with great success?

Adam’s experience

Story boards/XIBs Scaling/Sizing Death to Paper Prototypes Turning IB over to UI Designers Previews Problems with keeping designs in sync

Mobile Payments

Who are the big players / competitors?

Google Wallet, PayPass, PayWave, ISIS (LOL)

Technologies

NFC

Samsung, Motorola, HTC, Nokia, Blackberry, now Apple w/ Apple Pay

Secure Enclave and Secure Element - Apple Security Docs, pp 24-29

Secure Enclave - Coprocessor on A7 Secure Element - Java on the iPhone!??!

EMV/JavaCard - EuroPay, Mastercard, Visa, how most CC transactions are made outside of US. Coming to US 2015.

Apple Pay

Coming in iOS 8.1? (not available in Beta 2 still, only available for select partners) When to use Apple Pay

In-App Contactless

How do people get started?

developer.apple.com/apple-pay PKPaymentAuthorizationViewController merchant identifier

Apple Pay Guidelines Apple Pay App Review Guidelines

Open-Source Project of the Week

Apple Pay Stubs from Stripe

Provides a mock payments ViewController (w/ test credit cards, addresses, etc.) for testing  integration with PassKit / Apple Pay.

git clone https://github.com/stripe/ApplePayStubs.git

Android Ink

Picks

John Follow @johnsextro

iWerkz Foldable Bluetooth Keyboard

Jason Follow @jak

Dart Scoreboard Pro by Jon Hill (@jon_m_hill)

2 - 4 player games Cricket / Cut Throat 301/501 game style coming soon

Adam Follow @adamaxe

3 and 4 party Payment Networks Badass games Vidgets

Alternative show title suggestions

Band back together There are no bugs I’m back. I gotta whole new earring. Soft Crash Right now Big PITA Miscommunication abounds A large team, like an 8-person team ;) Philosophical hump Pixel-perfectness Diff with Diff Special Applesauce Super-dork

View Details

Tweet Shoutouts

NONE

Send us your shoutouts: @iohyespodcast

The Discussion

Quick revisit of Widgets and Extensions

What “Today view” widgets are you using?

Darryl - Transit, Pedometer++. I wish I could move the Tomorrow Summary above 3rd party widgets John - Paste+ Jason - Omnifocus, Yahoo News Digest, Duolingo Chad - e*trade

What extensions are you using?

Darryl - ¯\_(?)_/¯ Jason - Camera+ photo editing, 1Password Safari extension Chad - 1Password, Transmit

What do you still want to see exist?

Jason - VSCO CAM photo editing, more 3rd-party 1Password integration Chad - Better YouTube support

Metal - Low-overhead GPU access for iOS 8

What is Metal?

Modern, Thin API for GPU programming (graphics and simd compute) Designed for A7 and newer SoCs (iPhone 5S and newer) Shader/kernel language based on C++11

Who should/will use Metal?

In-house/roll-your-own 3D engines/frameworks

For most folks, using Metal or OpenGL directly is overkill (but fun!) Alternative, higher-level APIs include SceneKit (3D) and SpriteKit (2D), which provide much more than just graphics rendering support, including graph management

Third-party 3D engines/frameworks Compute-heavy applications and filters with highly parallelizable work

DSP Image filters Protein folding? Note: Swift currently doesn’t support importing C unions or SIMD vector types. Chris Lattner acknowledged this, citing feature prioritization (so it’s reasonable to be hopeful it’s coming in the not-so-distant future). In the meantime, if you need to work with SIMD, you may want to stick with Objective-C when using Metal.

Practical differences between Metal and OpenGL ES

In Metal, command buffers are exposed, giving control over when the commands are sent to the GPU to the application and putting the onus of asynchronous framing on the application Most state is stored in immutable state objects that are created at setup, not in each draw cycle, allowing for quick state change that doesn’t require expensive recompilation of shaders/validation Streamlined API. OpenGL provides many ways to do (effectively) the same task largely due to its evolution. Metal sheds many of the legacy techniques. Metal provides direct access to the A7’s shared memory. Thread safety/synchronization is the responsibility of the app.

Additional resources

AnandTech : Some Thoughts on Apple’s Metal API Rendering Pipeline: What’s the Big Deal with Apple’s Metal API? Unity Blog: Metal, A New Graphics API for iOS 8 Obligatory Ray Wenderlich link: iOS 8 Metal Tutorial with Swift Metal By Example

Open-Source Project of the Week

ScrimpyCat's Metal Examples

There are surprisingly few open source projects using Metal so far, but here’s a repo with some sample code illustrating the use of basic Metal APIs and shaders.

git clone https://github.com/ScrimpyCat/Metal-Examples.git

Picks

John Follow @johnsextro

Razer Tartarus a game controller repurposed (note: I’m actually using an older version called the Nostromo N52)

Darryl Follow @dh_thomas

Mike Ash: Swift and C Swift provides rich facilities for OO and functional programming, but it also allows extensive bridging to C APIs. Learn all about how to call C functions, work with "unsafe" pointers, manage memory, and more.

Chad Follow @jazzychad

AWS iOS SDK AWS Mobile Analytics

“100 million free events per month” “$1.00 per million events per month”

Jason Follow @jak

UX Companion iOS app A glossary of user experience terms, with links on how to apply and learn more about each topic. Basically, a phrase book for speaking to designers that you work with.

Alternative show title suggestions

You are ruining his segue The patron saint of brown-nosers Sudo OCD Drunk Darryl Are you learning English? Emoticon for shrugging shoulders Too old a man Long story short Boy have they Sure Are you using the knob at all? That’s a lot of letters

View Details

Tweet Shoutouts

@dh_thomas @jak @iOhYesPodcast @johnsextro I did it so I'd have something for those form fields.

— Brent Engels (@ebrent) September 28, 2014

@johnsextro @jak @iOhYesPodcast @dh_thomas Something like "Scaled Points the Game as it climbed to 10,000 daily unique users" — marksands (@marksands) September 29, 2014

@iOhYesPodcast @johnsextro @dh_thomas my CV is heavily edited. 2 - 3 accomplishments (w/ numbers if possible) per position

— Jason Kozemczak (@jak) September 28, 2014

@iOhYesPodcast @johnsextro @dh_thomas Schools are optimized at the top of the funnel (recruiting / financial aid); alumni network sometimes

— Jason Kozemczak (@jak) September 28, 2014

@iOhYesPodcast @johnsextro @dh_thomas choose higher Ed for learning / personal growth, not for securing a job. — Jason Kozemczak (@jak) September 28, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

Apple’s Black Box...The App Store review process

“Apple Takes Down an Indie Dev” “Transparency and Due Process” “Seeing the App Store Forest for the Trees” 

Open-Source Project of the Week

In-app notifiers!

https://www.cocoacontrols.com/controls/dtitoastcenter-swift https://github.com/jazzychad/CENotifier https://github.com/LeoNatan/LNNotificationsUI Caution that native-looking in-app notifs could get you in trouble with Apple!

Picks

John Follow @johnsextro //

thatthinginswift.com How Objective-C patterns we already know translate into Swift

Darryl Follow @dh_thomas

Oyster - Your Regex IDE Oyster helps you interactively build and test regular expressions, storing each “pearl” in an easy to access library. //

Chad Follow @jazzychad

CAEmitterLayer reference CAEmitterCell reference //

Jason Follow @jak

Functional Programming in Swift from objc.io folks out now

eBook ($39) and paperback ($59) available Paperbook + eBook available for $69 includes playgrounds / spreadsheet sample project

Alternative show title suggestions

Its a trap Fairness more than transparency Opaque is the same as black Go Indie Not entirely true Evangelists Evangelists, They exist They exist Poke the bear Launch into Obscurity Trusted ecosystem I want a unicorn That’s why they need the spaceship I really dig it

View Details

Tweet Shoutouts

@jazzychad StarbuckFeedViewController is the harbinger of death? @iohyespodcast #diversifyshoutouts

— Kim Etzel (@KimEtzel84) September 22, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

Getting Hired

Getting a foot in the door

Networking

IRL

Family Friends Former Co-workers

Online

Twitter Facebook LinkedIn IRC

Local events, meetups, hack nights Alumni Open Source Consulting, contracting and freelance

Interviewing

Your resume

Length Content Detail Cover letter References

How to dress

Socks are optional

Stretching the truth

John says go for it, but stay within bounds. Darryl says don’t do it!! Honesty is the best policy. Instead, demonstrate/document your ability to learn quickly.

Open-Source Project of the Week

Github Resume Generate a resume based on your work as documented and stored on GitHub, http://resume.github.io/

Picks

Darryl (@dh_thomas)

Core Intuition Jobs Board - Focused job site for Cocoa developers Daniel Jalkut explains his (and Manton Reece’s) motivations on Bitsplitting

John (@johnsextro)

What Color is Your Parachute? 2014, by Richard N. Bolles

Alternative show title suggestions

Socks Are Optional Wear a Tuxedo All the Gold Things

View Details

Tweet Shoutouts

@iOhYesPodcast +1 for Hopper. It's what made the Internet hate me for a day http://t.co/Akz4gwXdTe /cc @dh_thomas

— marksands (@marksands) September 13, 2014

@dh_thomas @iOhYesPodcast is good stuff :)

— Ashton (@AshtonDev) September 15, 2014

@AshtonDev @iOhYesPodcast and I keep thinking about network reachability

— dbradby (@dbradby) September 15, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

iOS 8 released today

Mixpanel’s iOS 8 real-time adoption graph

Currently ~ 9.8% iOS 8 Data may be biased (User agent visits to sites that use Mixpanel)

Lots of excitement around extensions

1Password, Yahoo! Weather, PCalc, etc. Last-minute fixes by Apple around extension

“The App Store appears to be mangling code signing of these extensions (which are signed separately to their parent applications), causing the bug.”

What Tumblr learned building their Extension

Healthkit woes

Inside the Airbnb iOS Brand Evolution

Branching strategy

Merge to master often w/ separate target Using macros to “hide” WIP Code names for symbols? Good idea? Refactor Through Deletion

Picks

Chad (@jazzychad)

Disk Maker X Transmit for iOS by Panic

Jason (@jak)

Vangogh - “Vangogh is an iOS library for testing how well an application works for people with various kinds of color vision deficiencies.”

John (@johnsextro)

Frustrated by Evernote’s lack of support for Markdown, I’m evolving my note taking and writing workflow.  It’s currently a work in progress, so I’ll provide future updates here as it evolves.

Sublime Text 2 Marked 2 MarkdownEditing, from Brett Terpstra (SublimeText package), A markdown editing package for SublimeText 2 & 3 Editorial, universal app for iPhone and iPad markdown writing Dropbox as the backend repo

Alternative show title suggestions

Reachability confusion Reachability disambiguation I don’t feel bad That’s why they make chocolate and vanilla Does that make it better? We all know how the sausage is made It’s probably a Core Data issue Skinning a cat with long-lived branches Make rows Feature Drivers Project Starbuck [[9C858B84-0732-4652-952C-8AD2D537AB0 alloc] init] #If and #Elses Everything is made of spit and duct tape I’m not a maven on AirBNB Why not just throw it away Burning it down with fire Negative lines of code John2005 Future John Sometimes it’s good to start fresh Straight to mah bukket Eye opening Sure

View Details

Tweet Shoutouts

We have 7/11s in San Francisco!!! They're stand alone stores like at market/3rd. @iOhYesPodcast @johnsextro @jazzychad @jak @dh_thomas

— Kim Etzel (@KimEtzel84) September 5, 2014

@jazzychad dang Chad! Now I have to come up with a use for http://t.co/tFYN9A7xWY which I wasn't prepped for ;) CC: @iOhYesPodcast

— Nolan O'Brien (@NolanOBrien) September 5, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

iPhone 6 (4.7”) and iPhone 6 Plus (5.5”)

[caption id="" align="alignright" width="190"] JNCO Jeans[/caption]

Retina HD

326ppi @ 1334x750 (compare to iPhone 5: 1136x640, same ppi) 401ppi @ 1920x1080 Apps that have not been updated for adaptive layout are scaled up

Dual domain pixels - accurate colors at wider angles of view Plus has 185% more pixels than 5s

Does the Plus have the GPU horsepower to drive this, or are we in the same situation as the first Retina iPad? We’re probably in good shape: the 5s has oodles of GPU to spare, and the A8 has up to 50% greater performance, according to Apple. Screen not all that different from an iPad Air, which had an A7 in it Relevant: http://www.anandtech.com/show/8514/analyzing-apples-a8-soc-gx6650-more

Very thin, but at the cost of a protruding camera.  They both have a bump? What do you get with a ridiculously large phone?

Need a pair of JNCO Jeans to fit the 6 Plus in your pocket Plus leverages adaptive layout to provide "regular" size-class content when in landscape. (Referred to as 2-up in the keynote) Expanded keyboard in landscape: Cut, copy, paste, etc Springboard supports landscape Sleep/wake button moves to the side Reachability slides the top of the screen down so you can reach it.

Is this a necessary concession of ridiculous phone size? Will we see the iPad adopt this?

A8 SoC

2 billion transistors (up from 1 billion) 20-nanometer process 13% smaller than A7 Looks like the performance gain curve may be beginning to flatten (but we need more data) …but maybe it’s a conscious trade-off to gain 50% greater energy efficiency??

Obligatory game demo

Super Evil Megacorp - Vainglory Was that the singer from Tears for Fears playing the demo?

M8 Motion Coprocessor

Adds a barometer for relative elevation Can estimate distance

Carrier Aggregation for faster LTE Voice Over LTE (VoLTE) - Simultaneous voice and data WiFi Calling (T-Mobile & EE for now) Better camera (Surprise!!!!) and better processing

Pretty significant improvements. Too many to enumerate Plus supports optical image stabilization

Apple Pay

$12B/year in cc/debit transactions in the U.S. Contrived video showing how difficult using a card is

She even fumbled while removing her card from its sleeve Is paying with a card really so inconvenient

Followed by a video showing how easy Apple Pay is “Secure Element” chip stores device-specific payment info on the device

Credit card number is not stored

Single-use payment numbers and dynamic security codes for each transaction!

Darryl has wanted this to be the standard for quite a while (Tweets from 2011)

Apple does not collect transaction details Developer APIs available via PassKit (Getting started with Apple Pay PDF) Nick Arnott (@noir): 9/10/14, 7:11 AM 220,000 locations sounds like a lot until you realize that’s out of roughly 14.26 million credit card terminals in the US. Long way to go. Very clear write-up by Nick Arnott on iMore: Apple Pay and security: What you need to know

Apple Watch (One more thing…)

Starts at $350, iPhone required - This is definitely an accessory item Flexible Retina display - single-crystal-thick sapphire

Touch- and force-sensitive

Gyroscope and accelerometer built in, but location relies on phone, so you’ll still need to bring it with you when you exercise Really interesting input/navigation “Glances” mini-widgets LOLling at the zoomed-out photo collection view Was Yo on to something? Apple seems to think so, given their “communicate with taps” feature Is this watch thin enough? Apple has always limited its product lines to simplify purchase decisions. Is this lineup too broad? Why the emphasis on +/- 50ms accuracy? WatchKit (No link available yet)

Actionable notifications Apps Glances

Picks

Chad (@jazzychad)

Points - The Game

Darryl (@dh_thomas)

Hopper Hopper is a reverse engineering tool for OS X and Linux, that lets you disassemble, decompile and debug your 32/64bits Intel Mac, Linux, Windows and iOS executables. Static Analysis: Following Along at Home with Hopper’s Decompiler Feature by Melissa Elliott (@0xabad1dea), A bit out-of-date, but very useful walk-through of Hopper

Jason (@jak)

Product Hunt on iOS

John (@johnsextro)

Flappy Bird recreated in Swift from FullStackEDU.com they claim that they will be offering a course in game programming with Swift in the near future.

Alternative show title suggestions

Bigger Than a Pop Tart You’ve got your damn phablet now. I hope you’re happy. Ridiculous JNCO Jeans iPad Mini, Mini I cried the whole rest of the day You’ve made a bad choice, John You’re fired They both have a bump? So contrived Somewhat mentally deficient Seems like a non-brainer Yo was on to something Send my heartbeat to chad Time you get out of the thing Balked out loud

View Details

Tweet Shoutouts

@iOhYesPodcast @jazzychad got myself a new handle, thanks Chad! @chewybyte aka @NolanOBrien

— @chewybyte (@chewybyte) August 30, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

Extensions

What are they

Turns out..."Extensions" is not a single concept.  Multiple flavors known as extension points. App Extension lets you extend custom functionality and content beyond your app and make it available to users while they’re using other apps. App Extensions are a separate binary that runs independent of your app.

Extensions Points

Today - interact with the “Today” view of notification center Share - Post to sharing website (twitter) or share content with others Action - manipulate or view content within the context of another app Photo Editing - edit a photo with Photos app Finder (OS X only) won’t discuss Document Provider - manager files Custom Keyboard - replace custom keyboard

Apple is really stressing “Trust” as a key when creating a custom keyboard.  Your users are giving you access to everything they type including passwords and other sensitive data.

App extension must exactly match one of the types of extensions.  You can’t create a generic extension that matches more than one extension points. What can’t they do

Access a sharedApplication object Use any API marked in header files with the NS_EXTENSION_UNAVAILABLE macro Access camera or mic Perform background tasks Receive data via AirDrop

Distribution

App Extensions must be delivered via a Containing App on iOS.

Common Needs

Sharing data with containing app requires special considerations.  Need to use a share container.  Watch out for data corruption/ Deploying to older version of iOS

Need to take advantage of conditional linking Use dlopen command if systemVersion return iOS 8.0 or later

Open-Source project of the week

https://github.com/ioscreator/ioscreator

Contains tons, and I do mean tons, of code samples for doing just about everything under the sun on iOS. Great for someone looking to try something new or for those just getting started with iOS development.

Picks

Chad (@jazzychad)

Desert Golfing, $0.99

Darryl (@dh_thomas)

Let’s Write Some x86-64 - Nick Desaulniers (@LostOracle)

An easy-to-follow introduction to x86-64 assembly

Synalyze It!

Synalyze It! allows you to create a grammar for your binary files interactively (or you can download shared grammars for common file formats). Unlike in regular hex editors or viewers the files are interpreted automatically for you. Additionally Synalyze It! is a full-featured Hex Editor for Mac OS X allowing you to edit files of unlimited size and interpret the bytes with dozens of text encodings.

Jason (@jak)

OmniFocus 2 (Mac and iOS), OmniFocus + Getting Things Done helps me stay sane.

John (@johnsextro)

iOS8 Day-by-Day, from shinobicontrols - a series of blog posts covering new technologies and APIs available in iOS8

Alternative show title suggestions

Touch the User Hope for the best while expecting the worst Get the eyeballs Beigher Hole 287 Zen and the art of golfing Hone assembly skills Hex editor on speed I wanna go lower level I don’t get anything done You had ONE job Put a bird on it apps

View Details

Tweet Shoutouts

@dh_thomas @iOhYesPodcast @shelly Enjoyed the show with @Sommer. Good job, guys.

— Steven Aquino (@steven_aquino) August 22, 2014

@dh_thomas @iOhYesPodcast Perfect timing, thx! #ios #appdev

— Brent Engels (@ebrent) August 22, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

“On the feasibility of Large Scale Infections of iOS Devices”

2 Security Issues

the iTunes syncing process is vulnerable to Man-in-the-Middle (MitM) attacks an iOS device can be stealthily provisioned for development through USB connections. This weakness allows a compromised computer to arbitrarily remove installed third-party apps from connected iOS devices and install any app signed by attackers in possession of enterprise or individual developer licenses issued by Apple.

CloudKit

Cost model - https://developer.apple.com/icloud/documentation/cloudkit-storage/

Any hard numbers yet?

vs. Parse

Parse supports JS, Android, Java, etc. Cloudkit - iOS 8+ / OS X 10.10+ devices CKRecord == PFObject, CKQuery == PFQuery, CKAsset == PFFile? What’s the difference in pricing? CK doesn’t have any server-side capabilities (just data storage + pub/sub on changes)

This seems like potential tech-debt

CKDiscoverAllContactsOperation

https://developer.apple.com/library/prerelease/ios/documentation/CloudKit/Reference/CKDiscoverAllContactsOperation_class/index.html#//apple_ref/occ/cl/CKDiscoverAllContactsOperation “The search of the user’s address book does not return any personal data about the user’s contacts. The search returns only the IDs of the corresponding user records, which contain only data that your app puts there.” Requires user permission Implications: if this is successful, Apple will have a giant graph of users’s contacts.

Open-Source project of the week

Signal from Whisper Systems (source: https://github.com/WhisperSystems/Signal-iOS)

Background

Moxie’s former(?) company/organization is compatible w/ RedPhone, their secure call Android app “Signal provides end-to-end encryption for your calls, securing your conversations so that nobody can listen in.” Available on the App Store: https://itunes.apple.com/app/id874139669

Secure text messaging to come

Picks

Chad (@jazzychad)

Weird iOS  -- Really weird iOS apps sfxr  --  Random sound effect generating app

Jason (@jak)

YouTab  - “The Wiki of Chords and Lyrics,” synchronized to recordings / Youtube videos. Play along with and learn your favorite songs, right in your web browser. Built-in editor for adding new songs. 1Password app extension

John (@johnsextro)

Do you use Core Data?  Checkout Core Data Editor

Alternative show title suggestions

Sniffing your SMS Let’s see what happens A big bad way A fart in the wind If it doesn’t happen now Zombie botnet apocalypse I was being the studio audience We don’t need a studio audience The ultimate lock-in I don’t know when to quit

View Details

Tweet Shoutouts

@iOhYesPodcast great episode - filled my wait in the airport. Great topics and discussion. I think an all Jazzy Chad episode is overdue ;)

— Nolan O'Brien (@NolanOBrien) August 4, 2014

@iOhYesPodcast @jazzychad @jak just listened to my first podcast episode, good stuff guys! (and this coming from an Android guy)

— Michael Shafrir (@mcs) August 10, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

Mobile Accessibility - getting into the details

iOhYes Podcast Episode 35 - Includes a discussion with Neem Serra about the importance of making apps accessible

The basics

UIAccessibility protocol reference

Advanced APIs

UIAcessibilityContainer protocol reference

UIAccessibilityAction protocol reference

UIAccessibilityPostNotification() reference

Thoughts on accessible design

What considerations should be made in terms of information density? How do we maintain accessibility as design trends toward gesture-driven UI? How does one strike a balance between avoiding too many user preferences and providing adaptability for special needs?

New stuff in iOS 8

Accessibility on iOS - WWDC 2014

Additional resources

Apple’s Accessibility Developer Portal Verifying App Accessibility on iOS iOS Best Practices - via Web Accessibility

Open-Source project of the week

Riemann Sum: UIAccessibility Demo - Sommer Panage on GitHub

The application allows the user to model one of 3 functions in a graph and select the number of rects to approximate the integral using a Riemann Sum. (This demo uses the Left Riemann Sum.)

This app has been made fully accessible to demonstrate the use of Apple's UIAccessibility protocols / classes. It demonstrates basic accessibility additions via customization of accessibilityLabel properties thru more advanced accessibility via custom accessibility containers.

git clone https://github.com/spanage/riemann_sum_ax_ios

Picks

Chad (@jazzychad)

That Thing In Swift: http://thatthinginswift.com/

Darryl (@dh_thomas)

Vovis: Soon-to-be-available project. An out-of-band VoiceOver visualizer to help identify potential accessibility issues. I’ll be sharing it on GitHub soon. (Hopefully before the next episode.)

Beyond Visual Interfaces with Kevin Jones at Madison+ UX

Kevin Jones demonstrates the challenges of navigating 2-dimensional interfaces designed for sighted users when using screen readers, which may be considered 1-dimensional, and provides suggestions as to how design might be optimized for screen readers.

Sommer (@sommer)

Tommy Edison: a lot of us don't actually know a blind person. Tommy does 2 awesome YouTube series: one answering common questions sighted people have for blind people and the other reviewing films from the blind perspective. Each is a quick and interesting:

https://www.youtube.com/user/TommyEdisonXP

https://www.youtube.com/user/BlindFilmCritic Flesky: https://itunes.apple.com/us/app/fleksy-keyboard-happy-typing/id520337246?mt=8 incredible keyboard for sighted and non-sighted users alike. Shows promise for learned custom gestures.

View Details

Announcements

We discontinued the news segment of the show to allow us to focus more on creating meaningful and deep discussions on topics affecting iOS developers.

Tweet Shoutouts

None :(

Send us your shoutouts: @iohyespodcast

The Discussion

Making Money in the App Store

http://blog.jaredsinclair.com/post/93118460565/a-candid-look-at-unreads-first-year http://www.marco.org/2014/07/28/app-rot http://txt.jazzychad.net/gist/19a05ad4e7ef77072b44

Open-Source project of the week -- SGImageCache

http://chairnerd.seatgeek.com/a-lightweight-ios-image-cache/ https://github.com/seatgeek/SGImageCache

Picks

John (@johnsextro)

Cloak, personal VPN Overcast, new podcast listening app from Marco Arment

Jason (@jak)

NPR One

Chad (@jazzychad)

Mobile Animations showcase Controling animation timing

View Details

Announcements

We discontinued the news segment of the show to allow us to focus more on creating meaningful and deep discussions on topics affecting iOS developers.

Tweet Shoutouts

@iOhYesPodcast i want to meet the person who has spent more than 30 minutes in Swift who is not worried about this ... or maybe i don't ... — @johndoooooooooooooe (@johndoe) July 3, 2014

@iOhYesPodcast I’m mostly ignoring swift for the next year or so. — Keith Slater (@_keithslater) July 3, 2014

@iOhYesPodcast there will be problems. The question is will the benefits of Swift be worth the pain of dealing with those problems. — JARinteractive (@JARinteractive) July 3, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

Accessibility for Apps

Neem and Darryl

Advocates for blind, deaf want more from Apple Power of Selective Quoting Marco Arment's response: Apple’s App Review Should Test Accessibility xScope 4 - A powerful set of tools that are ideal for measuring, inspecting & testing on-screen graphics and layouts. (Including tools for testing for color blindness issues) Craig Hockenberry's comments on Twitter@gruber Doing VoiceOver in Twitterrific wasn't easy/cheap, but was the right thing to do. The only "profit" is hearing how it helps people.https://twitter.com/chockenberry/status/487281074863497217@gruber As making a profit with apps gets harder every day, doing the extra accessibilty work is the first thing to get chopped.https://twitter.com/chockenberry/status/487281329323528194@gruber Apple CAN do something about making it profitable to implement accessibilty. Surprising that there's no App Store section for it…https://twitter.com/chockenberry/status/487281751153057793 Maccessibility PodcastMaccessibility is devoted to connecting, compiling, and providing easy access to the best resources for blind, visually impaired, and other disability groups using Apple products. It is maintained by a dedicated group of visually impaired volunteers, who are Apple enthusiasts themselves. Apple: Accessibility for Developers

Jason and John

The categories of disablement

Sight (Blindness, low visibility, color blindness) Hearing Touch Interaction Voice Interaction

Neem says, “People don’t care about accessibility.”  Is that true?  What factors affect our caring? Should we really put accessibility of apps into the same category as wheelchair ramps, mother’s nursing rooms and other legislation driven solutions? Why is this different from making applications on computers accessible? Is it different? Are there apps that should be required to be “accessible”?

Should Apple enforce accessibility for these apps? What about a self rating system allowing a developer to indicate a yes/no for accessibility.

Picks

John (@johnsextro)

HiRise, Twelve South Free Training, Effective Agile Coaching with John Sextro

Jason (@jak)

Realm (http://realm.io) - mobile, soon-to-be cross platform, database

Not built on SQLite Migrations, thread-safety, querying Standalone desktop app for browsing /updating DBs Android coming soon

View Details

News

“Yo” gets $1.2M in venture capital Google announces new design language Material Apple ending development on Aperture

Tweet Shoutouts

@iOhYesPodcast maybe Slingshot wants to distance itself from Facebook to target a younger audience?

— Keith Slater (@_keithslater) June 23, 2014

@iOhYesPodcast I have 700+ contacts on my phone. It's my primary method to keep track of people. Is slingshot going to spam my contacts?

— Kim Etzel (@KimEtzel84) June 23, 2014

@iOhYesPodcast I'm worried bc I have business contacts in my phone. A spam from Facebook is less harmful bc those contacts are all friends.

— Kim Etzel (@KimEtzel84) June 23, 2014

Send us your shoutouts: @iohyespodcast

The Discussion

Elevate

Quick description What did launch day/week look like for you and the team? Getting featured on iTunes. How many iOS developers worked on this app? 2 dev, 2 UI, 2 Android, 5 game devs

How did you break up work?

Game devs write the games in Lua

Any technical challenges related to working on the app with other devs?

Any tips for others?

Try to break things up in a way so that pieces can be independently developed

Knowing that you’re starting from scratch, what frameworks/technologies/stacks do you make sure you incorporate early? RAC, Mantle, Kiwi

Why?

Tell us about your product development / design / development process

What’s your process for working with designers / product managers? How do balance what’s possible vs. what’s cost-effective.

Elevate has some great animations / interactions that make the app feel alive as you use it. There were likely other interactions etc. that didn’t make it into the app. How do you decide what stays and what goes?

What’s one feature of the app that looks complicated, but isn’t. Why? Particles!

NSBSpriteSheetLayer

What’s one feature of the app that looks simple, but isn’t. Why?

Picks

Chad (@jazzychad)

DateTools - https://github.com/MatthewYork/DateTools HPGrowingTextView - https://github.com/HansPinckaers/GrowingTextView

John (@johnsextro)

Swift Cheat Sheet from Ray Wenderlich My “Swift testing” pick of the show, http://iosunittesting.com/ a site with dedicated to the dicussion of unit testing your iOS development.

Nacho Soto (@nachosoto)

New 1Password Beta with Touch ID support Swift AL DSL. The future is here: https://github.com/indragiek/SwiftAutoLayout

View Details

News

Facebook Labs releases “Slingshot” iOS 8 beta 2 and Xcode DP 2 released today

iOS 8 beta impressions so far.

New emojis.  Emojipedia goes down under the load of visitors to checkout the new emjois.

new emoji list

Tweet Shoutouts

No shoutouts :(

Send us your shoutouts: @iohyespodcast

The Discussion

  1. Trend of contact-graph login in social apps

  2. Swift cottage industry (new websites, books, communities, opportunities)

  3. Decision making process to use Swift/Obj-C in a project

Picks

Chad (@jazzychad)

iOS Version history chart

Jason (@jak)

http://www.swiftcast.tv/

Swift screencasts 1st screencast on July 1st

John (@johnsextro)

TDD katas with Swift

http://swiftdd.com/ http://codekata.com/

View Details

WWDC Keynote Flashcast

We're departing from our usual format this episode to bring you a special post-keynote roundtable discussion of Apple's exciting announcements.

Apologies for the audio quality: we had some difficulties, but we wanted to get this episode to you as quickly as possible.

Tweet Shoutouts

@NolanOBrien - great show this week. @goaway was a great guest to have. @jazzychad tcp/ip com as a service instead of HTTP? I like it!

Send us your shoutouts: @iohyespodcast

The Discussion

WWDC - What’s the show floor like? iOS 8 - Extensions, Widgets, TouchID API,

Compatibility - iPad 2, 4s. wow Enterprise - Peer to Peer Airplay, no Wifi necessary Kits - Cloudkit, HomeKit, HealthKit, PhotoKit, SceneKit Hand-Off

Swift - Hoo boy. Who saw this coming?

Why? Playground

XCode 6 - IB Live rendering, View Debugging, Performance Tests, iOS Dynamic Framework support

View Debugging - So good. Basically revealapp Cocoa Touch Framework - built in support Application Extension list - Action, custom keyboard, doc picker, share, today Previewing - orientations, localizations No refactoring, No mocking

CloudDrive - Amazon Competitor?

Picks

Adam (@adamaxe)

Swift Programming Language

Darryl (@dh_thomas)

All of Yosemite

Neem (@teamneem)

Fish Have No Souls

John (@schwa)

Waterlogue

View Details

The News

Apple rumored to buy Beats for $3.2B Apple planning iPad split screening in iOS 8

Tweet Shoutouts

Send us some @iohyespodcast

The Discussion

SPDY overview, http://www.chromium.org/spdy/ Why is SPDY important to mobile / iOS developers?

Why not just straight HTTP?

TCP “Slow Start” helps protect the network, but isn’t really necessary anymore and is a shortcoming of HTTP today.

Reduce round trips Multiplexes requests

prioritization interleaving gets rid of “head of line” blocking

Header compression

headers are bloated and redundant

Server Push (pseudo duplexing)

CocoaSPDY https://github.com/twitter/CocoaSPDY

How does one integrate it into existing apps? Any gotchas?

CRIME Attack Content hinting by size of the compression

Downsides?

Need a server that supports SPDY

netty jetty apache (with mod_spdy) nginx Tengine

Any improvements / new features on the way?

“Server Push” coming soon

In theory...works with AFNetworking How can developers contribute?

Github https://github.com/twitter/CocoaSPDY @goaway

Recommended server implementations? “SPDY does not clearly outperform HTTP over cellular networks” - http://conferences.sigcomm.org/co-next/2013/program/p303.pdf

Heterogeneous nature of mobile networks makes it difficult to quantify performance

Picks

Mike (@goaway)

CocoaAsyncSocket

Jason (@jak)

Viewfinder open sources entire stack (including iOS app)

John

40 Secrets to Making Money with In-App Purchases, by Riccardo D’Antoni

Chad

iOS Bytes podcast

View Details

The News

Facebook releases Pop OSX Beta program

Tweet Shoutouts

@iOhYesPodcast Nice to see that there's an iOS podcast out of St. Louis

— Keith Slater (@_keithslater) April 28, 2014

.@iOhYesPodcast great episode. Really enjoyed the discussion on com patterns. I'm totally a delegate pattern first guy...

— Nolan O'Brien (@NolanOBrien) April 28, 2014

The Discussion

AppDelegate responsibilities and breaking them out

related: https://github.com/JaviSoto/JSDecoupledAppDelegate

Permission Dialogs Push Notifications

Picks

Chad (@jazzychad)

PushServer Letters

Jason (@jak)

http://x-callback-url.com/

View Details

The News

iPhone 6 Leaks? Article on Mac Rumors OpenSSL redux

Tweet Shoutouts

@dh_thomas @iOhYesPodcast no need to apologize to providing an addict with his vice. For me, pedantic discussion on tech.

— Nolan O'Brien (@NolanOBrien) April 3, 2014

@iOhYesPodcast I'm surprised following the inheritance article no one mentioned EventKit as their (least)favorite API #3LevelsDeep

— marksands (@marksands) April 4, 2014

The Discussion

Communication Pattern, from Objc.io

Leaving out pub-sub, other non-ios paradigms ESCObservable

Picks

John (@johnsextro)

pttrns.com, Mobile user interface patterns dribbble.com, (Yes, 3 b’s) Show and tell for designers. Not just mobile, color palettes, icons, web, etc.

Shoutout to Alex Garibay for pointing me to pttrns and dribbble

#noestimates on Twitter

Adam (@adamaxe)

Half-Life on github Optimizely - AB Testing

Luther (@lutherbaker)

http://www.industriallogic.com/blog/stop-using-story-points/, by Joshua Kerievsky http://www.cregle.com/pages/ipen2

Eric (@theknlght)

Spotify iOS SDK John's add-on pick, "How Spotify builds products"

View Details

The News

Apple’s $2bn lawsuit against Samsung started this week Microsoft releases Office for iPad suite

Tweet Shoutouts

If apple released a music streaming service would it be able to beat out spotify? cc @iOhYesPodcast http://t.co/jkWlR16pZe

— Kim Etzel (@KimEtzel84) March 26, 2014

Wish I had an @iOhYesPodcast to listen to while waiting for my flight... #BoredOfFreakonomicsRadioReruns

— Nolan O'Brien (@NolanOBrien) March 31, 2014

The Discussion

“Class Hierarchies: don’t do that!” by Ragan Wald

Super classes as brittle dependencies Interfaces + Composition? What’s the trade-off?

What’s your least favorite and most favorite iOS API?

Least - Address Book Least - Core Audio

Picks

John (@johnsextro)

iOS 7 Design Cheat Sheet

Jason (@jak)

Pencil Case

Adam (@adamaxe)

ObjC.io - I know we already picked it, but it is just that good :D Anti-pick - April Fools Day

Alternative Show Titles

by Darryl Thomas

Stuck in my craw Most Hipster Thing Ever I like my subclasses 3 deep

View Details

The News

iOS 7.1 update announcement from Apple

Article from The Verge CarPlay announced TestFlight acquired by Apple @iOhYesPodcast A good discussion topic next episode would be https://t.co/jtrVqhrXZF and alternative solutions to TF "just in case".

— marksands (@marksands) February 21, 2014 Alternative Tools ota.io vessel.io appblade.com hockeyapp.com HockeyKit DeployGate Crashlytics Labs Beta - http://www.crashlytics.com/blog/from-crashlytics-labs-announcing-our-beta-distribution-tool/

Tweet Shoutouts

@iOhYesPodcast @adamaxe I say flappy bird never comes back, crazy marketing stunt for his next game.

— Eric Jones (@TheKnlght) February 28, 2014

@jacksonh @kastiglione @iOhYesPodcast I’ve been toying with the idea of making OGS an OSS project which is friendly to newbs.

— T-Slice (@swizzlr) March 7, 2014

Listening to @iOhYesPodcast got me thinking, I bet I could write a webapp with my phone.

— Roderic Campbell (@roderic) February 27, 2014

The Discussion

Background process memory limits on iOS 7 (or, Why do my apps keep restarting all the time?) Should we drop iOS 6 support in light of the TLS bug to be responsible developers?

Picks

John (@johnsextro)

4k is for Programmers The 4k TV/Monitor that I’m using

Jason (@jak)

@codereviewapp by @jacksonh

Chad

objc.io, A periodical about best practices and advanced techniques in Objective-C. Letters, new iOS game Chad created.

Alternative Show Titles

by Darryl Thomas

What Are You Thinking? Chad's 13" Tube

View Details

The News

OmniGroup Open Sources OmniGraphSketcherFree Flesky, a keyboard app with an SDK StackMob sudden end of life New Apple device configuration options

Tweet Shoutouts

@marksands - Unfair to call Flappy Bird Crappy Bird?

The Discussion

Worm in the Apple, Apple TLS bug - Discussion of what this means to support of iOS 6.

Actual Source What is it? Description of bug, Deep Dive Description

“Note the two goto fail lines in a row. The first one is correctly bound to the if statement but the second, despite the indentation, isn't conditional at all. The code will always jump to the end from that second goto, err will contain a successful value because the SHA1 update operation was successful and so the signature verification will never fail.” Lack of curly braces on single line conditional to blame, or lack of testing the code?

What does it mean for users? How could this have happened and gone undiscovered for so long?

Background User Input recording discovered - Reported Monday night. Ars Article

Can you actually infer keyboard touch events? Potential attackers can use such information to reconstruct every character the victim inputs

Note that the demo exploits the latest 7.0.4 version of iOS system on a non-jailbroken iPhone 5s device successfully

The only way to prevent attacks is to open the iOS task manager and stop questionable apps from running in the background

Picks

John (@johnsextro)

MindNode for mind mapping on the Mac and iPad. Allows for document sharing via Dropbox and MyMindNode

Joe Hainline (@josephhainline)

Rookiesapp.com of course!

Neem Serra (@teamneem)

Ray Wenderlich’s blog - Simplified tutorials that are easy to follow with complex results Xscope - measuring, inspecting & testing on-screen graphics and layouts, $30 but very helpful for making apps match the mocks.  Cool color blindness testing!

Adam Hitt

bitfulsoftware.com - Fluxboard - Kanban board for your GitHub issues.

https://projecteuler.net - Ultimate Code Kata resource!

View Details

The News

Saga of Flappy Bird Stackmob shutting down? - pastebin

The Discussion

Are we in a “web 2.0” of iOS apps?

See: Yahoo suite, Storehouse, FB Paper, iOS Weather, Tweet Bot, Rdio, etc. How long will this “fad” last? What aspects do you like about this trend? What do you dislike? These apps are "flat", but they're skeueomorphic in other ways (subtle animations, "sticky" modals, etc.)

Are largely gesture-based apps "useable" (e.g. Storehouse, FB Paper, etc.)

Certainly beautiful. Few affordances Deference to content vs. intuitive feel

Picks

Chad (@JazzyChad)

NSHipster: Associated Objects

Jason (@jak)

Bolts Framework (like Promises/Futures, available for several platforms)

Adam (@adamaxe)

Leankit

View Details

The News

Mac Turns 30 Apple's First Quarter Financial Results

The Discussion

Human-Computer Interaction and Wearable Computing

"Her", the movie Siri Google Now Wearables

Google Glass Google Contact Lenses Pebble watch Fitbit/Fuelband

Listener Feedback, Send a Tweet to @iOhYesPodcast

Redux: Kim Etzel - @kimetzel84 - haha! The next @iOhYesPodcast should be titled "How Santa Forced Me To Upgrade To 7"

Picks

Chad (@JazzyChad)

Core Animation Programming Guide 

John (@jcsextro)

Distimo

View Details

The News

Infinite Scrolling from Kane Bennett We never get to the end of news, tweets, etc iOS App Switcher from Vinh Phuc Dinh Interesting take on customizing screenshot shown in app switcher view

The Discussion

Auto Layout

Xib VFL Constraints 3rd Party - Masonry

Listener Feedback, Send a Tweet to @iOhYesPodcast

Hector Zarate - iOSCowboy - guys when is the next episode coming? Christmas special?

Kim Etzel - @kimetzel84 - haha! The next @iOhYesPodcast should be titled "How Santa Forced Me To Upgrade To 7Picks

Adam (@adamaxe)

iOS7 Tech Talks

Eric (@TheKnlght)

NSURLProtocol NSHipster about NSURLProtocol

Luther (@LutherBaker)

ELMLayoutManagement The Transformation Priority Premise

John (@jcsextro)

Google Alerts Notifications on relevant Tweets, tweetbeep.com, tweetalarm.com, twilert.com, I pay for and use HootSuite.com.

View Details

The News

Apple Released the iPad Air and iPad Mini Retina Those iOS 7 icons zoom at you doing 20 miles/hour

The Discussion

Downsides to iOS 7 app auto-updates from the developers perspective. A tale of 2 Games

Different revenue models

Free In App Purchase Paid

Download Numbers Press Getting Featured Tetra

Free, in "Board games and puzzles" Tried to get press. Sent out pitch emails, but no traction Released the week before Burning Man Showed up in an AppAdvice article Featured in International App stores 24,400 Downloads

5,000 in US/UK 19,000 Other International

138 unlock purchases, half from US/UK, other half from other international users.

WordGrid

No press 197 purchases of the app #16 top paid word game

Library created for social gaming, not publicly available, more to come in the future. Are paid apps dead?

Listener Feedback, Send a Tweet to @iOhYesPodcast

Hector Zarate - @hecktorzr: “Love your show. I listen to it while commuting to the office. Best from Warsaw, Poland.”

We'd love to hear from you if you are using a co-lo Mac Mini or are running iPhone 4 with iOS 7, please tweet us.

Picks

Chad (@jazzychad)

The Mantle Project by GitHub WordGrid

Jason (@jak)

Anti-pick: Cocoapods

John (@johnsextro)

Transporter, your own private cloud TapForTap, ad network

View Details

The News

iPhone 5s and 5c (5s outpacing 5c ~ 3:1) App Store offers “last compatible version” install iOS 7 at ~ 65%, less than 1 week after release

The Discussion

“Made for iOS 7”

Has the new design language of iOS 7 made it even more difficult to differentiate apps from one another? Do we think these apps “take advantage” of the iOS 7 hotness? Do Apple’s apps take advantage of these? (blur / depth / etc.) Do Apple’s own apps realize the “promise of iOS 7”? “Confusing UI in iOS7"

isYoMamaWearsCombatBootsSupported 64-bit migration

What are the pain points? What are the wins? Could this mean more RAM in future devices on the IOS platform?

Future-proofing your app

How far do we go to manage API changes, DB migrations, etc. How much is too much? Best strategies for deprecating builds?

What every iOS dev should do day 1

Setup logging/analytics Setup crash reporting Monitor your app rating

Listener Feedback, Send a Tweet to @iOhYesPodcast We'd love to hear from you and if we like your Tweet we will talk about it on the next episode of iOhYes. Picks

Chad (@jazzychad)

iOS 7 before and after

Jason (@jak)

Reveal.app by Itty Bitty Apps