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
Type Safety in an Unsafe World with Kotlin
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Cody Engel
February 02, 2021
Technology
47
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Type Safety in an Unsafe World with Kotlin
Cody Engel
February 02, 2021
More Decks by Cody Engel
See All by Cody Engel
Kotlin 2 ½ Years Later
codyengel
0
92
Tech Community, Population Us
codyengel
0
69
Kotlin Lunch and Learn
codyengel
0
66
How To Make A Better Sandwich
codyengel
0
45
Other Decks in Technology
See All in Technology
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
1.9k
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
130
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
140
Building applications in the Gemini API family.
line_developers_tw
PRO
0
3.1k
MCP Appsを作ってみよう
iwamot
PRO
4
550
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
820
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
820
脆弱性対応、どこで線を引くか
rymiyamoto
1
370
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
0
2k
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
620
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
600
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
How to Ace a Technical Interview
jacobian
281
24k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
It's Worth the Effort
3n
188
29k
Context Engineering - Making Every Token Count
addyosmani
9
960
A Tale of Four Properties
chriscoyier
163
24k
Why Our Code Smells
bkeepers
PRO
340
58k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Speed Design
sergeychernyshev
33
1.8k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
Transcript
Type Safety in an Unsafe World with Kotlin Cody Engel,
Staff Software Engineer @ PayPal
What is Type Safety? It is kind of confusing. Photo:
Matthew Hamilton via Unsplash
Robin Milner, A Theory of Type Polymorphism in Programming “Well
typed programs cannot go wrong.”
Going Wrong Syntactically valid, but meaningless. Type Safety by Michael
Hicks - http://bit.ly/ple-type-safety
Well Typed It may crash, but that is by design
in Kotlin. Type Safety by Michael Hicks - http://bit.ly/ple-type-safety
Well Typed, Continued This is by design in Ruby and
may also crash. Type Safety by Michael Hicks - http://bit.ly/ple-type-safety
Cody Engel, Type Safety in an Unsafe World with Kotlin
“Some languages have stricter behavior than others.”
What is Kotlin? It is a strict, yet concise programming
language. Photo: Marc Reichelt via Unsplash
Define Types Name can be inferred to be a String.
Define Mutability A variable defined as “var” can change.
Define Structures Structured data is more predictable.
Define Nullability Nullability is opt-in.
Define Concurrency Coroutines make concurrency simpler.
And The Unsafe World? That would be our APIs. Photo:
Jason Yoder via Unsplash
is_admin As a boolean it works well. Unfortunately, this wasn’t
how it was actually modeled.
is_admin Our permissions class was never safer! However this is
how we would model that information in Kotlin.
is_admin Okay, technically this isn’t too bad. Although, it is
not the best way to model a boolean with JSON.
is_admin Extension functions to the rescue. This could also be
an extension property, but extension functions look better in Keynote
is_admin Strings can also represent numeric values which can represent
booleans. I was pretty excited to make use of extension functions, so it was fine.
is_admin Unfortunately String already has a toBoolean function. And that
function is for converting “true” and “false” into a boolean
is_admin I can’t recall if this was actually possible with
the API. However there is a good chance it could have been possible based on customer configurations.
is_admin Fortunately, it isn’t too difficult to add. Nonetheless, it’d
be great if this wasn’t required in the first place
is_admin It was nullable though. That’s okay though, nullability is
actually pretty simple with Kotlin.
is_admin Updating our extension function to be on a nullable
Any works. Since we type cast on non-null types, the else branch catches our null case.
Making The World a Safer Place How to design safer
APIs. Photo: Matthew Rumph via Unsplash
Stick to a strict API when rolling your own specification.
Use an industry standard specification, such as Open API.
Look at JSON alternatives such as Protocol Buffers.
Let’s build some great and safe APIs. • YouTube -
bit.ly/cody-yt • Twitter - bit.ly/cody-twitter • Medium - bit.ly/cody-medium Thanks!