SlideShare a Scribd company logo
Swift should I switch?
@wolfgang_damm
Wolfgang Damm
CTO & Co-Founder
wolfgang@pocket-lifestyle.com
www.pocket-lifestyle.com
Swift
Should I use it for production?
Current State
• TIOBE Index of language popularity
• Swift #27, increasing
• Objective-C #4, declining
• Github number of active repositories
• Swift #18, growing
• Objective-C #11, flat
Data as of February 2015
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
http://githut.info/
Swift 1.2
• Xcode 6.3 Beta
• Faster builds & executables
• Better compiler diagnostics
• Stability
• and changes to the language!
as! for failable casts
if let a = a, b = b, c = c {
Nullability Annotations
enums export to
Objective-C
Deferred initialisation
of let constants
Set
So is it ready for prime
time?
Duolingo Test Center
• New App written in Swift
• 3 month

(1 dev, design/backend inplace)
+ Value types, custom operators
+ Stronger, static type system, with
type inference
+ Generics especially for typesafe
collections
Duolingo Test Center
- Tooling: Xcode, crashes, very slow code
completion, basically no debugger, unstable/
unreliable syntax highlighting (got better)
- Swift language changes.

Known from the beginning, in retrospect only
little time spent on keeping source up to date
- Incomprehensible compiler errors
Duolingo Test Center
• Crash rate ~0.2% (crashes/downloads)

mostly in Objective-C third party library
• Swift eased process of building a solid
architecture. Eliminating classes of bugs by
design (e.g. Swift’s type system)
@brentsimmons
ObjC: “I am laughing out loud”
Swift: "LOL"
@brentsimmons
• Harder on 2nd look
• optionals, generics, and tuples, value vs reference
• functional design patterns
• strict type safety
• issue interoperation with Objective-C
• “Swift is happening.”
Random Thoughts from
Developers
• Common internal libraries, not rewriting just to
be Swift
• Sometimes interacting with Cocoa API’s harder
than thought
• Strict typing is a killer feature (finds bugs during
compile time)
So is it ready for prime
time?
Yes it is!
Our take aways
• Future of iOS will be Swift
• New code written in Swift
• Rewriting only were it makes sense (lot of code changes,
restructuring)
• Know Swift AND Objective-C
• Swift uses different patterns
• Hard to follow good patterns when interfacing with
Objective-C
Experience
Experience
• Compiler bugs: crashes instead of error
• Renew Certificate, otherwise it crashes submitted
build
• At first slower when writing code, but learning fast
• Choice between Objective-C vs Swift patterns
• Cocoapods support is still beta
• cocoapods --pre installs 1.0.36(beta)
pod 'Alamofire', :git => 'https://github.com/Alamofire/
Alamofire.git', :branch => ‘xcode-6.3'
pod 'SwiftyJSON', :git => 'https://github.com/
SwiftyJSON/SwiftyJSON.git', :branch => 'xcode6.3'
Favourite Swift Way
enum Router: URLStringConvertible {
static let baseURLString = "http://example.com"
case Root
case User(String)
case Post(Int, Int, String)
// MARK: URLStringConvertible
var URLString: String {
let path: String = {
switch self {
case .Root:
return "/"
case .User(let username):
return "/users/(username)"
case .Post(let year, let month, let title):
let slug = title.stringByReplacingOccurrencesOfString(" ", withString: "-").lowercaseString
return "/(year)/(month)/(slug)"
}
}()
return Router.baseURLString + path
}
}
Enum with associated value and computed property
Learn Swift
• Read “The Swift Programming Language” by Apple
• thatthinginswift.com
• swiftdoc.org
• learnswift.tips
• Start coding in Swift!
• github.com/raywenderlich/swift-style-guide
My experience learning
Swift
• Functional Programming is different
• Force yourself to using good practices. Make
use of strict types. Which is hard.
• Harder to define public interface (no header).
Standard access modifier is internal. Also makes
testing harder.
Single most hardest
thing in Swift?
;
Swift should I switch?
@wolfgang_damm
Wolfgang Damm
CTO & Co-Founder
wolfgang@pocket-lifestyle.com
www.pocket-lifestyle.com

More Related Content

What's hot (20)

PPTX
Effective Code Review (Or How To Alienate Your Coworkers)
Perforce
 
PDF
Try! Swift Tokyo2017
Amy Cheong
 
PDF
Eclipse OMR: a modern toolkit for building language runtimes
Mark Stoodley
 
PPTX
10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible
tylerturk
 
PDF
Trunk based development
go_oh
 
PDF
Better Swift from the Foundation up #tryswiftnyc17 09-06
Carl Brown
 
PDF
Juc boston2014.pptx
Brandon Mueller
 
PDF
Python Experience in KKBOX Group
Shuen-Huei Guan
 
PDF
Achieving Continuous Delivery with Puppet
Devoteam Revolve
 
PPTX
Ansible, Idempotency, and Jenkins
tylerturk
 
PDF
Swift GUI Development without Xcode
Carl Brown
 
PPTX
Moving 1,000 Users & 100 Branches into Streams
Perforce
 
PPTX
GitLab for CI/CD process
HYS Enterprise
 
PDF
Collaborative Package Development in R
egoodwintx
 
PPTX
Software development terminology
jstack
 
PPTX
Not your fathers language c++
명신 김
 
PDF
Why Python In Entertainment Industry?
Shuen-Huei Guan
 
PDF
GitLab - Java User Group
PhilippWestphalen
 
PDF
Professional iOS development
Aline Borges
 
PPTX
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Abhinav Gupta
 
Effective Code Review (Or How To Alienate Your Coworkers)
Perforce
 
Try! Swift Tokyo2017
Amy Cheong
 
Eclipse OMR: a modern toolkit for building language runtimes
Mark Stoodley
 
10/29 Austin Ansible MeetUp - AnsibleFest Talk & Extending Ansible
tylerturk
 
Trunk based development
go_oh
 
Better Swift from the Foundation up #tryswiftnyc17 09-06
Carl Brown
 
Juc boston2014.pptx
Brandon Mueller
 
Python Experience in KKBOX Group
Shuen-Huei Guan
 
Achieving Continuous Delivery with Puppet
Devoteam Revolve
 
Ansible, Idempotency, and Jenkins
tylerturk
 
Swift GUI Development without Xcode
Carl Brown
 
Moving 1,000 Users & 100 Branches into Streams
Perforce
 
GitLab for CI/CD process
HYS Enterprise
 
Collaborative Package Development in R
egoodwintx
 
Software development terminology
jstack
 
Not your fathers language c++
명신 김
 
Why Python In Entertainment Industry?
Shuen-Huei Guan
 
GitLab - Java User Group
PhilippWestphalen
 
Professional iOS development
Aline Borges
 
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Abhinav Gupta
 

Viewers also liked (8)

PPTX
Greedi.SeedPitch
Nyalls Carlton
 
PDF
Unit#1 maqasid e sharia
Alibazmi
 
ODP
Question 5) How have you attracted your target audience to the magazine?
amyyamyamy
 
DOCX
Đối tượng nào dễ bị bệnh mỡ máu cao
elvis322
 
PDF
Ecocentra Brochure_2015
Lama Bashour
 
PPTX
Internet and computer
Rhea Dellosa
 
DOC
CV OF OMKAR HALDANKAR
Omkar Haldankar
 
PPTX
Conventions of Documentaries
amyyamyamy
 
Greedi.SeedPitch
Nyalls Carlton
 
Unit#1 maqasid e sharia
Alibazmi
 
Question 5) How have you attracted your target audience to the magazine?
amyyamyamy
 
Đối tượng nào dễ bị bệnh mỡ máu cao
elvis322
 
Ecocentra Brochure_2015
Lama Bashour
 
Internet and computer
Rhea Dellosa
 
CV OF OMKAR HALDANKAR
Omkar Haldankar
 
Conventions of Documentaries
amyyamyamy
 
Ad

Similar to Swift should I switch? (20)

PPTX
Tech breakfast 18
James Leone
 
PPTX
PPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhi
afsana9597
 
PDF
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Aniruddha Chakrabarti
 
PPTX
TOP 10 REASON WHY SWIFT IS THE OPTION FOR IOS APP DEVELOPMENT.pptx
XiotDev Technologies
 
PDF
10 reasons why swift is best for i os app development
Moon Technolabs Pvt. Ltd.
 
PDF
Swift App Development Company.pdf
Techugo
 
PPTX
Developer’s viewpoint on swift programming language
Azilen Technologies Pvt. Ltd.
 
PDF
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
jussiefathey
 
PDF
Ios 12 Programming Fundamentals With Swift Swift Xcode And Cocoa Basics 5th E...
joettealhadi
 
PDF
TCC-MSCR
Marcel Rebouças
 
PDF
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
exzanyangdi
 
PDF
Advanced Swift Updated For Swift 5 Chris Eidhof
jksjzdl5949
 
PDF
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
mycielyonne
 
PDF
Swift, swiftly
Jack Nutting
 
PPTX
Swift
scandiweb
 
PDF
Mateusz Zając (Codete) - Swift in Production
Business Link Krakow
 
PDF
Swift-Changing the Face of App Development.pdf
Techugo Canada
 
PDF
Ios 9 Programming Fundamentals With Swift Swift Xcode And Cocoa Basics 2nd Ed...
garzovahuesw
 
PDF
Cocoa Design Patterns in Swift
Michele Titolo
 
Tech breakfast 18
James Leone
 
PPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhi
afsana9597
 
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Aniruddha Chakrabarti
 
TOP 10 REASON WHY SWIFT IS THE OPTION FOR IOS APP DEVELOPMENT.pptx
XiotDev Technologies
 
10 reasons why swift is best for i os app development
Moon Technolabs Pvt. Ltd.
 
Swift App Development Company.pdf
Techugo
 
Developer’s viewpoint on swift programming language
Azilen Technologies Pvt. Ltd.
 
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
jussiefathey
 
Ios 12 Programming Fundamentals With Swift Swift Xcode And Cocoa Basics 5th E...
joettealhadi
 
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
exzanyangdi
 
Advanced Swift Updated For Swift 5 Chris Eidhof
jksjzdl5949
 
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
mycielyonne
 
Swift, swiftly
Jack Nutting
 
Swift
scandiweb
 
Mateusz Zając (Codete) - Swift in Production
Business Link Krakow
 
Swift-Changing the Face of App Development.pdf
Techugo Canada
 
Ios 9 Programming Fundamentals With Swift Swift Xcode And Cocoa Basics 2nd Ed...
garzovahuesw
 
Cocoa Design Patterns in Swift
Michele Titolo
 
Ad

Recently uploaded (20)

PDF
What companies do with Pharo (ESUG 2025)
ESUG
 
PDF
MiniTool Power Data Recovery Crack New Pre Activated Version Latest 2025
imang66g
 
PPTX
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
PPTX
slidesgo-unlocking-the-code-the-dynamic-dance-of-variables-and-constants-2024...
kr2589474
 
PPTX
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
PDF
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
PPTX
Role Of Python In Programing Language.pptx
jaykoshti048
 
PPTX
Farrell__10e_ch04_PowerPoint.pptx Programming Logic and Design slides
bashnahara11
 
PDF
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
PDF
New Download MiniTool Partition Wizard Crack Latest Version 2025
imang66g
 
PPTX
Presentation about variables and constant.pptx
kr2589474
 
PDF
Salesforce Pricing Update 2025: Impact, Strategy & Smart Cost Optimization wi...
GetOnCRM Solutions
 
PDF
AI Image Enhancer: Revolutionizing Visual Quality”
docmasoom
 
PDF
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
PDF
Troubleshooting Virtual Threads in Java!
Tier1 app
 
PDF
SAP GUI Installation Guide for Windows | Step-by-Step Setup for SAP Access
SAP Vista, an A L T Z E N Company
 
PDF
How to Download and Install ADT (ABAP Development Tools) for Eclipse IDE | SA...
SAP Vista, an A L T Z E N Company
 
PDF
Why Are More Businesses Choosing Partners Over Freelancers for Salesforce.pdf
Cymetrix Software
 
PDF
Step-by-Step Guide to Install SAP HANA Studio | Complete Installation Tutoria...
SAP Vista, an A L T Z E N Company
 
PDF
System Center 2025 vs. 2022; What’s new, what’s next_PDF.pdf
Q-Advise
 
What companies do with Pharo (ESUG 2025)
ESUG
 
MiniTool Power Data Recovery Crack New Pre Activated Version Latest 2025
imang66g
 
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
slidesgo-unlocking-the-code-the-dynamic-dance-of-variables-and-constants-2024...
kr2589474
 
classification of computer and basic part of digital computer
ravisinghrajpurohit3
 
advancepresentationskillshdhdhhdhdhdhhfhf
jasmenrojas249
 
Role Of Python In Programing Language.pptx
jaykoshti048
 
Farrell__10e_ch04_PowerPoint.pptx Programming Logic and Design slides
bashnahara11
 
Using licensed Data Loss Prevention (DLP) as a strategic proactive data secur...
Q-Advise
 
New Download MiniTool Partition Wizard Crack Latest Version 2025
imang66g
 
Presentation about variables and constant.pptx
kr2589474
 
Salesforce Pricing Update 2025: Impact, Strategy & Smart Cost Optimization wi...
GetOnCRM Solutions
 
AI Image Enhancer: Revolutionizing Visual Quality”
docmasoom
 
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
Troubleshooting Virtual Threads in Java!
Tier1 app
 
SAP GUI Installation Guide for Windows | Step-by-Step Setup for SAP Access
SAP Vista, an A L T Z E N Company
 
How to Download and Install ADT (ABAP Development Tools) for Eclipse IDE | SA...
SAP Vista, an A L T Z E N Company
 
Why Are More Businesses Choosing Partners Over Freelancers for Salesforce.pdf
Cymetrix Software
 
Step-by-Step Guide to Install SAP HANA Studio | Complete Installation Tutoria...
SAP Vista, an A L T Z E N Company
 
System Center 2025 vs. 2022; What’s new, what’s next_PDF.pdf
Q-Advise
 

Swift should I switch?

  • 2. @wolfgang_damm Wolfgang Damm CTO & Co-Founder [email protected] www.pocket-lifestyle.com
  • 3. Swift Should I use it for production?
  • 4. Current State • TIOBE Index of language popularity • Swift #27, increasing • Objective-C #4, declining • Github number of active repositories • Swift #18, growing • Objective-C #11, flat Data as of February 2015 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html http://githut.info/
  • 5. Swift 1.2 • Xcode 6.3 Beta • Faster builds & executables • Better compiler diagnostics • Stability • and changes to the language!
  • 7. if let a = a, b = b, c = c {
  • 11. Set
  • 12. So is it ready for prime time?
  • 13. Duolingo Test Center • New App written in Swift • 3 month
 (1 dev, design/backend inplace) + Value types, custom operators + Stronger, static type system, with type inference + Generics especially for typesafe collections
  • 14. Duolingo Test Center - Tooling: Xcode, crashes, very slow code completion, basically no debugger, unstable/ unreliable syntax highlighting (got better) - Swift language changes.
 Known from the beginning, in retrospect only little time spent on keeping source up to date - Incomprehensible compiler errors
  • 15. Duolingo Test Center • Crash rate ~0.2% (crashes/downloads)
 mostly in Objective-C third party library • Swift eased process of building a solid architecture. Eliminating classes of bugs by design (e.g. Swift’s type system)
  • 16. @brentsimmons ObjC: “I am laughing out loud” Swift: "LOL"
  • 17. @brentsimmons • Harder on 2nd look • optionals, generics, and tuples, value vs reference • functional design patterns • strict type safety • issue interoperation with Objective-C • “Swift is happening.”
  • 18. Random Thoughts from Developers • Common internal libraries, not rewriting just to be Swift • Sometimes interacting with Cocoa API’s harder than thought • Strict typing is a killer feature (finds bugs during compile time)
  • 19. So is it ready for prime time?
  • 21. Our take aways • Future of iOS will be Swift • New code written in Swift • Rewriting only were it makes sense (lot of code changes, restructuring) • Know Swift AND Objective-C • Swift uses different patterns • Hard to follow good patterns when interfacing with Objective-C
  • 23. Experience • Compiler bugs: crashes instead of error • Renew Certificate, otherwise it crashes submitted build • At first slower when writing code, but learning fast • Choice between Objective-C vs Swift patterns • Cocoapods support is still beta • cocoapods --pre installs 1.0.36(beta)
  • 24. pod 'Alamofire', :git => 'https://github.com/Alamofire/ Alamofire.git', :branch => ‘xcode-6.3' pod 'SwiftyJSON', :git => 'https://github.com/ SwiftyJSON/SwiftyJSON.git', :branch => 'xcode6.3'
  • 25. Favourite Swift Way enum Router: URLStringConvertible { static let baseURLString = "http://example.com" case Root case User(String) case Post(Int, Int, String) // MARK: URLStringConvertible var URLString: String { let path: String = { switch self { case .Root: return "/" case .User(let username): return "/users/(username)" case .Post(let year, let month, let title): let slug = title.stringByReplacingOccurrencesOfString(" ", withString: "-").lowercaseString return "/(year)/(month)/(slug)" } }() return Router.baseURLString + path } } Enum with associated value and computed property
  • 26. Learn Swift • Read “The Swift Programming Language” by Apple • thatthinginswift.com • swiftdoc.org • learnswift.tips • Start coding in Swift! • github.com/raywenderlich/swift-style-guide
  • 27. My experience learning Swift • Functional Programming is different • Force yourself to using good practices. Make use of strict types. Which is hard. • Harder to define public interface (no header). Standard access modifier is internal. Also makes testing harder.
  • 29. ;
  • 31. @wolfgang_damm Wolfgang Damm CTO & Co-Founder [email protected] www.pocket-lifestyle.com