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
April 28, 2016
Programming
0
210
My talk on i4cup meetup
My talk on small local i4cup meetup. Telling about my Swift fuckup :)
vixentael
April 28, 2016
Tweet
Share
More Decks by vixentael
See All by vixentael
Using YubiKey and FIDO U2F for secure authentication
vixentael
0
1.2k
Data is a new security boundary
vixentael
0
4.5k
Cryptographic protection of ML models
vixentael
0
2.7k
e2ee != security != privacy
vixentael
0
2.1k
Maintaining cryptographic library for 12 languages
vixentael
1
3.6k
10 lines of encryption, 1500 lines of key management
vixentael
2
1.6k
Security, privacy and cryptography at WWDC19
vixentael
1
640
Data encryption: CyberKids edition
vixentael
0
570
"Defense in depth": trench warfare principles for building secure distributed applications
vixentael
3
860
Other Decks in Programming
See All in Programming
Good first issues of TypeProf
mame
4
3.1k
見えないものに着目すると上手くいく、モデリングの勘所 / invisible-driven-design
minodriven
18
3.8k
来週から実践できる! LayerXのバクラク事業部で行われている Go 関連の読書会のご紹介 / Bakuraku Go Reading Group
upamune
5
290
プログラミング&実行できるWEBアプリを手作り
ohmori_yusuke
3
230
入門プロパティベーステスト/learning-property-based-testing
kiway
6
1.1k
The Frontend Rubyist
largo
0
480
パッケージ開発論
e99h2121
1
310
アイテムレビュー基盤で導入したアーキテクチャとその成果 / Item Review Introduction Architecture Outcome
chichi1091
1
1.1k
「正の影響力」を目指して書くこと
honey32
2
110
バリデーション付きフォームを宣言的に実装する / Declaratively Implementing a Form with Validation
studio_rookery
0
190
メッセージとイベントを中核に置いたシステム設計の有用性について
j5ik2o
PRO
8
640
[RubyKaigi 2024] Ruby Mixology 101: adding shots of PHP, Elixir, and more
palkan
1
400
Featured
See All Featured
Optimizing for Happiness
mojombo
372
69k
What the flash - Photography Introduction
edds
64
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
246
20k
Producing Creativity
orderedlist
PRO
338
39k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
How to Ace a Technical Interview
jacobian
273
22k
Imperfection Machines: The Place of Print at Facebook
scottboms
261
12k
BBQ
matthewcrist
80
8.8k
Designing on Purpose - Digital PM Summit 2013
jponch
112
6.5k
Navigating Team Friction
lara
179
13k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
KATA
mclloyd
16
12k
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