Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
My talk on i4cup meetup
Search
vixentael
PRO
April 28, 2016
Programming
0
230
My talk on i4cup meetup
My talk on small local i4cup meetup. Telling about my Swift fuckup :)
vixentael
PRO
April 28, 2016
Tweet
Share
More Decks by vixentael
See All by vixentael
Building security into autonomous & robotic systems
vixentael
PRO
0
50
Using YubiKey and FIDO U2F for secure authentication
vixentael
PRO
0
2.6k
Data is a new security boundary
vixentael
PRO
0
7.6k
Cryptographic protection of ML models
vixentael
PRO
0
3.7k
e2ee != security != privacy
vixentael
PRO
0
2.7k
Maintaining cryptographic library for 12 languages
vixentael
PRO
1
4.6k
10 lines of encryption, 1500 lines of key management
vixentael
PRO
2
2.1k
Security, privacy and cryptography at WWDC19
vixentael
PRO
1
890
Data encryption: CyberKids edition
vixentael
PRO
0
770
Other Decks in Programming
See All in Programming
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
620
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1k
AgentCoreとHuman in the Loop
har1101
5
250
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
210
CSC307 Lecture 10
javiergs
PRO
1
660
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
Python’s True Superpower
hynek
0
110
CSC307 Lecture 01
javiergs
PRO
0
690
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.6k
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
40k
WCS-LA-2024
lcolladotor
0
450
Why Our Code Smells
bkeepers
PRO
340
58k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
RailsConf 2023
tenderlove
30
1.3k
Leo the Paperboy
mayatellez
4
1.4k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
New Earth Scene 8
popppiees
1
1.5k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
Transcript
i4☕
Code that smells aka ‘bydlo-code’
kill me, please
don’t write code that smells
None
there was a dev team…
there was a dev team… …writing on ObjC
and they decided to switch to Swift!
and they decided to switch to Swift! in production!
None
it was nice morning and PM decided to install app
it was nice morning and PM decided to install app
on device!
None
it’s not us! it’s new 7.3 Xcode!
oh no, it’s us :(
"loadData has not been implemented" found in logs
None
– loadData(…) -> … – loadData(…) -> … ChildTableViewController <T>
BaseTableViewController <T>
BaseTableViewController <T> – loadData(…) -> … ChildTableViewController <T> – loadData(…)
-> … generics stub overriden
BaseTableViewController <T> – loadData(…) -> … ChildTableViewController <T> – loadData(…)
-> … generics stub overriden not called at all
A – architecture
Problem solving
What if we disable optimization?
let’s disable optimization..
too many optimizations! swift compiler optimization!
Why debug is ok?
…Testability
Debug Release Optimization Testability WMO yes WMO no
WMO https://developer.apple.com/swift/blog/?id=27 if method has no ‘internal’ access, compiler may
mark it as ‘final’
Testability allows you to use all ‘internal’ methods in tests
like ‘public’
everything is ok overriden methods may be lost Debug Release
Optimization Testability WMO yes WMO no
tweet all the things!
tweet all the things!
sudden help!
sudden help! swift contributor
https://gist.github.com/PaulTaykalo/5c97010874a93626ca3c Minimal crashable code
http://openradar.appspot.com/radar?id=4971716266688512 Filed Radar
SIL devirtualization: Conservatively avoid filtering devirt candidates on generic base
classes Fix by @jckarter https://github.com/apple/swift/pull/1954
SIL devirtualization: Conservatively avoid filtering devirt candidates on generic base
classes Fix by @jckarter https://github.com/apple/swift/pull/1954
Fix by @jckarter fix! https://github.com/apple/swift/pull/1954
Tests https://github.com/apple/swift/pull/1954
Swift 2.2 Patch https://github.com/apple/swift/pull/1954
Lessons learnt
Lesson #1 every decision has consequences
sooner or later they’ll appear Lesson #1 every decision has
consequences
Lesson #2 always try build in release on device
at least once a day Lesson #2 always try build
in release on device
and community Lesson #3 twitter rulez
Lesson #4 PMs are useful
sometimes Lesson #4 PMs are useful
team: Vitaliy, Igor, Paul Thanks community: @akosma, @jckarter PM: Anna
None