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
Ad

More Related Content

What's hot (20)

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

Viewers also liked (8)

Greedi.SeedPitch
Greedi.SeedPitchGreedi.SeedPitch
Greedi.SeedPitch
Nyalls Carlton
 
Unit#1 maqasid e sharia
Unit#1 maqasid e shariaUnit#1 maqasid e sharia
Unit#1 maqasid e sharia
Alibazmi
 
Question 5) How have you attracted your target audience to the magazine?
Question 5) How have you attracted your target audience to the magazine?Question 5) How have you attracted your target audience to the magazine?
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
Đối tượng nào dễ bị bệnh mỡ máu caoĐối tượng nào dễ bị bệnh mỡ máu cao
Đối tượng nào dễ bị bệnh mỡ máu cao
elvis322
 
Ecocentra Brochure_2015
Ecocentra Brochure_2015Ecocentra Brochure_2015
Ecocentra Brochure_2015
Lama Bashour
 
Internet and computer
Internet and computerInternet and computer
Internet and computer
Rhea Dellosa
 
CV OF OMKAR HALDANKAR
CV OF OMKAR HALDANKARCV OF OMKAR HALDANKAR
CV OF OMKAR HALDANKAR
Omkar Haldankar
 
Conventions of Documentaries
Conventions of DocumentariesConventions of Documentaries
Conventions of Documentaries
amyyamyamy
 
Unit#1 maqasid e sharia
Unit#1 maqasid e shariaUnit#1 maqasid e sharia
Unit#1 maqasid e sharia
Alibazmi
 
Question 5) How have you attracted your target audience to the magazine?
Question 5) How have you attracted your target audience to the magazine?Question 5) How have you attracted your target audience to the magazine?
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
Đối tượng nào dễ bị bệnh mỡ máu caoĐối tượng nào dễ bị bệnh mỡ máu cao
Đối tượng nào dễ bị bệnh mỡ máu cao
elvis322
 
Ecocentra Brochure_2015
Ecocentra Brochure_2015Ecocentra Brochure_2015
Ecocentra Brochure_2015
Lama Bashour
 
Internet and computer
Internet and computerInternet and computer
Internet and computer
Rhea Dellosa
 
Conventions of Documentaries
Conventions of DocumentariesConventions of Documentaries
Conventions of Documentaries
amyyamyamy
 
Ad

Similar to Swift should I switch? (20)

Be armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS codeBe armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS code
Anastasia Kazakova
 
Swift programming language
Swift programming languageSwift programming language
Swift programming language
Nijo Job
 
Facilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-CFacilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-C
Aaron Taylor
 
PPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhi
PPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhiPPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhi
PPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhi
afsana9597
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
C4Media
 
iOS Application Security
iOS Application SecurityiOS Application Security
iOS Application Security
Egor Tolstoy
 
GitHub_Copilot_Presentation_For_Bachlor_Student_level
GitHub_Copilot_Presentation_For_Bachlor_Student_levelGitHub_Copilot_Presentation_For_Bachlor_Student_level
GitHub_Copilot_Presentation_For_Bachlor_Student_level
AhmedRaza524084
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
Jung Kim
 
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io   df14Ci of js and apex using jasmine, phantom js and drone io   df14
Ci of js and apex using jasmine, phantom js and drone io df14
Kevin Poorman
 
Xcode, Basics and Beyond
Xcode, Basics and BeyondXcode, Basics and Beyond
Xcode, Basics and Beyond
rsebbe
 
Hack in the Box GSEC 2016 - Reverse Engineering Swift Applications
Hack in the Box GSEC 2016 - Reverse Engineering Swift ApplicationsHack in the Box GSEC 2016 - Reverse Engineering Swift Applications
Hack in the Box GSEC 2016 - Reverse Engineering Swift Applications
eightbit
 
Tips for migration from swift 2.2 to swift 3.0
Tips for migration from swift 2.2 to swift 3.0Tips for migration from swift 2.2 to swift 3.0
Tips for migration from swift 2.2 to swift 3.0
Key Hui
 
CocoaConf DC - Automate with Swift - Tony Ingraldi
CocoaConf DC -  Automate with Swift - Tony IngraldiCocoaConf DC -  Automate with Swift - Tony Ingraldi
CocoaConf DC - Automate with Swift - Tony Ingraldi
Tony Ingraldi
 
C#: Past, Present and Future
C#: Past, Present and FutureC#: Past, Present and Future
C#: Past, Present and Future
Rodolfo Finochietti
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
Evolve
 
DEVNET-2006 Coding 210: Parsing JSON in C++
DEVNET-2006	Coding 210: Parsing JSON in C++DEVNET-2006	Coding 210: Parsing JSON in C++
DEVNET-2006 Coding 210: Parsing JSON in C++
Cisco DevNet
 
Monkey space 2013
Monkey space 2013Monkey space 2013
Monkey space 2013
Miguel de Icaza
 
Future of Kotlin - How agile can language development be?
Future of Kotlin - How agile can language development be?Future of Kotlin - How agile can language development be?
Future of Kotlin - How agile can language development be?
Andrey Breslav
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
Cisco DevNet
 
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
Adam Paxton
 
Be armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS codeBe armed to the teeth to maintain a high quality iOS code
Be armed to the teeth to maintain a high quality iOS code
Anastasia Kazakova
 
Swift programming language
Swift programming languageSwift programming language
Swift programming language
Nijo Job
 
Facilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-CFacilitating Idiomatic Swift with Objective-C
Facilitating Idiomatic Swift with Objective-C
Aaron Taylor
 
PPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhi
PPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhiPPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhi
PPT.pptxvkjvwbjbbikvhixhkiheihhiiihwxhhi
afsana9597
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
C4Media
 
iOS Application Security
iOS Application SecurityiOS Application Security
iOS Application Security
Egor Tolstoy
 
GitHub_Copilot_Presentation_For_Bachlor_Student_level
GitHub_Copilot_Presentation_For_Bachlor_Student_levelGitHub_Copilot_Presentation_For_Bachlor_Student_level
GitHub_Copilot_Presentation_For_Bachlor_Student_level
AhmedRaza524084
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
Jung Kim
 
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io   df14Ci of js and apex using jasmine, phantom js and drone io   df14
Ci of js and apex using jasmine, phantom js and drone io df14
Kevin Poorman
 
Xcode, Basics and Beyond
Xcode, Basics and BeyondXcode, Basics and Beyond
Xcode, Basics and Beyond
rsebbe
 
Hack in the Box GSEC 2016 - Reverse Engineering Swift Applications
Hack in the Box GSEC 2016 - Reverse Engineering Swift ApplicationsHack in the Box GSEC 2016 - Reverse Engineering Swift Applications
Hack in the Box GSEC 2016 - Reverse Engineering Swift Applications
eightbit
 
Tips for migration from swift 2.2 to swift 3.0
Tips for migration from swift 2.2 to swift 3.0Tips for migration from swift 2.2 to swift 3.0
Tips for migration from swift 2.2 to swift 3.0
Key Hui
 
CocoaConf DC - Automate with Swift - Tony Ingraldi
CocoaConf DC -  Automate with Swift - Tony IngraldiCocoaConf DC -  Automate with Swift - Tony Ingraldi
CocoaConf DC - Automate with Swift - Tony Ingraldi
Tony Ingraldi
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
Evolve
 
DEVNET-2006 Coding 210: Parsing JSON in C++
DEVNET-2006	Coding 210: Parsing JSON in C++DEVNET-2006	Coding 210: Parsing JSON in C++
DEVNET-2006 Coding 210: Parsing JSON in C++
Cisco DevNet
 
Future of Kotlin - How agile can language development be?
Future of Kotlin - How agile can language development be?Future of Kotlin - How agile can language development be?
Future of Kotlin - How agile can language development be?
Andrey Breslav
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
Cisco DevNet
 
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
The Big Easy: Native Mobile App Development with Appcelerator Titanium and Ja...
Adam Paxton
 
Ad

Recently uploaded (20)

Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Not So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java WebinarNot So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java Webinar
Tier1 app
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Not So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java WebinarNot So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java Webinar
Tier1 app
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 

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