Coming soon to a (small|big) screen near you

Coming soon to a (small|big) screen near you

Yet again, this year has been huge for iOS developers. Not only did Apple release Apple Watch, and brought apps to small displays attached to your wrist, but they are also going after your big screens with the imminent launch of new app-enabled Apple TV.

In this keynote, Paul will discuss the recent Apple announcements – like the the new tvOS, iPad Pro and Pencil – and where all of these fit within Apple’s yearning for your hearts and abode. We will also discuss the various changes in the Apple SDKs, tools and business, and try predicting next year’s developments – HomeKit anyone?!

B726bf6980ae838cb19d2f0ee2cec9ef?s=128

Paul Ardeleanu

October 07, 2015
Tweet

Transcript

  1. Coming soon to a screen near you Paul Ardeleanu Software

    Engineer @ LUPO
  2. Coming soon to a screen near you (small | big)

    Paul Ardeleanu Software Engineer @ LUPO
  3. None
  4. [“hip” , ”hip”]

  5. None
  6. None
  7. None
  8. http://bit.ly/imworld

  9. Living la Vida Nerdy!

  10. What is this talk’s about?

  11. None
  12. https://archive.org/details/byte-magazine-1981-04

  13. None
  14. http://agilemanifesto.org

  15. What is this talk’s purpose? • Overview of the Apple

    platform • the WHY? • 2015 additions & updates • the HOW? • Predictions • the WHAT?
  16. Who am I ?

  17. None
  18. None
  19. http://pardel.net

  20. None
  21. Overview

  22. AAPL

  23. Hardware

  24. Software

  25. Software

  26. None
  27. Apple needs developers

  28. • maximise the number of developers • keeping existing developers

    happy
  29. Swift

  30. Swift history 1.0 unveiled at WWDC 14 - official Sept

    2014 1.1 - Oct 14 1.2 - April 15 2.0 - WWDC 15 - official Sept 2015
  31. struct MyAppAccount { let latch = Latch(service: (NSBundle.mainBundle().bundleIdentifier ?? "com.example.MyApp"))

    var username: String? { get { return getValueForKey("username") } set(newObject) { setValueForKey("username", value: newObject) } } var password: String? { get { return getValueForKey("password") } set(newObject) { setValueForKey("password", value: newObject) } } private func getValueForKey(key: String) -> String? { guard let data = latch.dataForKey(key), let value = NSString(data: data, encoding: NSUTF8StringEncoding) else { return nil } return value as String } private func setValueForKey(key: String, value: String?) { if let value = value where value.characters.count > 0, let data = value.dataUsingEncoding(NSUTF8StringEncoding) { latch.setObject(data, forKey: key) } else { latch.removeObjectForKey(key) } } } var account = MyAppAccount() account.username = "email@example.com" account.password = "password"
  32. Benefits • Safety • type safe language - type checks

    performed at compilation • Optimisation • compiler optimised for performance • language optimised for development • Expressivity (a.k.a. Magic)
  33. Optionals var answer1 = 42 var answer2: Int = nil

    var theAnswer: Int? ❗ theAnswer = 42 ✔ nil {Some 42}
  34. Closures sortedFilters = filters.filter({ (filter) -> Bool in return filter.parent

    == nil }).sort({ (filter1: Filter, filter2: Filter) -> Bool in return filter1.displayOrder < filter2.displayOrder })
  35. Generics func swapTwoStrings(inout a: String, inout _ b: String) {

    let temporaryA = a a = b b = temporaryA } func swapTwoDoubles(inout a: Double, inout _ b: Double) { let temporaryA = a a = b b = temporaryA }
  36. Generics func swapTwoStrings(inout a: String, inout _ b: String) {

    let temporaryA = a a = b b = temporaryA } func swapTwoDoubles(inout a: Double, inout _ b: Double) { let temporaryA = a a = b b = temporaryA } func swapTwoValues<T>(inout a: T, inout _ b: T) { let temporaryA = a a = b b = temporaryA }
  37. Emojis

  38. None
  39. LLVM & Clang gcc => llvm-gcc => llvm

  40. http://lowlevelbits.org/bitcode-demystified/

  41. App Thinning http://lowlevelbits.org/bitcode-demystified/

  42. Playgrounds

  43. None
  44. None
  45. None
  46. 2015 Updates

  47. iOS 9

  48. https://developer.apple.com/ support/app-store/ https://developer.android.com/about/ dashboards/index.html

  49. iOS 9 API changes • Contacts (Added) • ContactsUI (Added)

    • CoreSpotlight (Added) • GameplayKit (Added) • MetalKit (Added) • MetalPerformanceShaders (Added) • ModelIO (Added) • ReplayKit (Added) • simd (Added) • WatchConnectivity (Added)
  50. None
  51. None
  52. iOS 9.1 to tvOS 9.0 API Differences https://developer.apple.com/library/prerelease/tvos/releasenotes/General/tvOS90APIDiffs/index.html • Accelerate

    • Accounts (Removed) • AddressBook (Removed) • AddressBookUI (Removed) • AssetsLibrary (Removed) • AudioToolbox • AudioUnit • AVFoundation • AVKit • CloudKit • Contacts (Removed) • ContactsUI (Removed) • CoreAudioKit (Removed) • CoreBluetooth • CoreData • CoreFoundation • CoreGraphics • CoreLocation • CoreMIDI (Removed) • CoreMotion (Removed) • CoreSpotlight • NotificationCenter (Removed) • ObjectiveC • PassKit (Removed) • Photos (Removed) • PhotosUI (Removed) • PushKit (Removed) • QuickLook (Removed) • ReplayKit (Removed) • SafariServices (Removed) • simd • Social (Removed) • StoreKit • Swift • TVMLKit (Added) • TVServices (Added) • Twitter (Removed) • UIKit • VideoToolbox (Removed) • WatchConnectivity (Removed) • WatchKit (Removed) • WebKit (Removed) • CoreTelephony (Removed) • Darwin • EventKit (Removed) • EventKitUI (Removed) • ExternalAccessory (Removed) • Foundation • GameController • GameKit • GSS (Removed) • HealthKit (Removed) • HomeKit (Removed) • iAd (Removed) • LocalAuthentication (Removed) • MachO • MapKit (Removed) • MediaPlayer • MessageUI (Removed) • Metal • MultipeerConnectivity (Removed) • NetworkExtension (Removed) • NewsstandKit (Removed)
  53. Storage • no persistent storage on device • consume data

    from: • iCloud • web service
  54. 2 ways of building TV apps • TVMLKit : XML

    & Javascript • Native : UIKit, TVServices, Metal, CloudKit, etc.
  55. TVML Templates var Template = function() { return `<?xml version="1.0"

    encoding="UTF-8" ?> <document> <loadingTemplate> <activityIndicator> <text>Loading...</text> </activityIndicator> </loadingTemplate> </document>` } https://developer.apple.com/library/prerelease/tvos/ documentation/TVMLJS/Reference/TVJSFrameworkReference/
  56. application.js App.onLaunch = function(options) { var javascriptFiles = [ `${options.BASEURL}js/ResourceLoader.js`,

    `${options.BASEURL}js/Presenter.js` ]; evaluateScripts(javascriptFiles, function(success) { if (success) { resourceLoader = new ResourceLoader(options.BASEURL); var index = resourceLoader.loadResource(`${options.BASEURL}templates/Index.xml.js`, function(resource) { var doc = Presenter.makeDocument(resource); doc.addEventListener("select", Presenter.load.bind(Presenter)); navigationDocument.pushDocument(doc); }); } else { /* Be sure to handle error cases in your code. You should present a readable, and friendly error message to the user in an alert dialog. See alertDialog.xml.js template for details. */ var alert = createAlert("Evaluate Scripts Error", "There was an error attempting to evaluate the external JavaScript files.\n\n Please check your network connection and try again later."); navigationDocument.presentModal(alert); throw ("Playback Example: unable to evaluate scripts."); }
  57. • maximise the number of developers • keeping existing developers

    happy
  58. Predictions

  59. Swift

  60. http://www.apple.com/live/2015-june-event/

  61. Naive vs. Native

  62. None
  63. My Connector

  64. Multi-platform solutions iOS/OSX Android Windows C++

  65. +

  66. None
  67. HomeKit

  68. HomeHub

  69. iPad Pro

  70. good artists copy, real artists steal

  71. iPad Pro

  72. New technologies & devices

  73. Car

  74. None
  75. Lockheed Lounge

  76. Apple Car

  77. http://appleinsider.com/articles/15/02/18/high-res-photos-reveal- apple-mysterious-vans-equipment-package

  78. My predictions • autonomous electric car • on the market

    in 3-5 years • direct sales only • starting at $150,000
  79. Tesla

  80. https://www.nasa.gov/content/nasas-journey-to-mars

  81. None
  82. None
  83. None
  84. None
  85. https://en.wikipedia.org/wiki/Abraham_Maslow

  86. https://www.youtube.com/watch?v=XCvwCcEP74Q

  87. https://www.youtube.com/watch?v=XCvwCcEP74Q

  88. Privacy

  89. None
  90. https://www.startwithwhy.com why how what

  91. http://www.flickr.com/photos/adrianblack/371301544/

  92. Then the iPhone happened…

  93. None
  94. THANK YOU! @pardel pardel.net paul@lupo.uk Paul Ardeleanu Software Engineer @

    LUPO
  95. Question Time @pardel pardel.net paul@lupo.uk Paul Ardeleanu Software Engineer @

    LUPO