iOhYes Retired

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 and John Sextro.



#100: There Were Complications

February 3, 2016 at 2:00AM • 53 minutes

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


#99: Knocking Boots with UIKit Dynamics

January 19, 2016 at 9:00AM • 52 minutes

With Special Guest Dov Frankel

Discussion

UIKit Dynamics with Dov Frankel

Picks

John

Nolan

Darryl

  • Paw - OS X HTTP & REST Client

Dov Frankel

Alternative show title suggestions

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


#98: We Heard You Like Rants

January 13, 2016 at 9:15AM • 1 hour 2 minutes

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

Nolan

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


#97: iTunes Store Store

December 30, 2015 at 9:30AM • 1 hour 5 minutes

(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

John


#96: Discovering Core Bluetooth

December 16, 2015 at 11:45AM • 1 hour 7 minutes

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

Tweet Shoutouts

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

Darryl


#95: It’s Not About What’s Next; It’s About What’s Important

December 9, 2015 at 11:30AM • 52 minutes

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

Tweet Shoutouts

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

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/


#94: One Handed is a Little Awkward

December 1, 2015 at 1:30PM • 51 minutes

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

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

John

Darryl


#93: A Potluck Conference

November 18, 2015 at 10:00AM • 48 minutes

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

Tweet Shoutouts

Discussion: The Hitchhiker’s Guide to Attending Conferences

  • What conferences do we attend?
  • Are we attending any upcoming conferences?
  • Choosing a conference
  • 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

Nolan

Darryl

Alternative show title suggestions

  • Hallway sessions
  • Vote with your feet


#92: Background on Background

November 11, 2015 at 10:00AM • 1 hour 3 minutes

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

Tweet Shoutouts

Discussion: Background work

  • Getting the User’s Attention
    • Local Notification
  • Background Data Callbacks
  • 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

Darryl


#91: You're In Don Melton Territory

November 4, 2015 at 3:15PM • 1 hour 2 minutes

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

Tweet Shoutouts

Discussion

  • The new Apple TV
  • Our media setups
    • John
      • Rev 3 Apple TV
      • Chromecast for kids
      • FireStick for Dad
    • Nolan
    • 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

Darryl

John

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