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
39
0
Share
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
80
Tech Community, Population Us
codyengel
0
65
Kotlin Lunch and Learn
codyengel
0
64
How To Make A Better Sandwich
codyengel
0
41
Other Decks in Technology
See All in Technology
明日からドヤれる!超マニアックなAWSセキュリティTips10連発 / 10 Ultra-Niche AWS Security Tips
yuj1osm
0
330
LLM とプロンプトエンジニアリング/チューターを定義する / LLMs and Prompt Engineering, and Defining Tutors
ks91
PRO
0
360
ある製造業の会社全体のAI化に1エンジニアが挑んだ話
kitami
2
920
【PHPカンファレンス小田原2026】Webアプリケーションエンジニアにも知ってほしい オブザーバビリティ の本質
fendo181
0
600
JEDAI in Osaka 2026イントロ
taka_aki
0
140
Zero-Downtime Migration: Moving a Massive, Historic iOS App from CocoaPods to SPM and Tuist without Stopping Feature Delivery
kagemiku
0
230
Claude Teamプランの選定と、できること/できないこと
rfdnxbro
1
2.3k
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
250
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
20260410 - CNTUG meetup #72 - DiskImage Builder 介紹:以 Kubespray CI 打造 RockyLinux 10 Cloud Image 為例
tico88612
0
120
DevOpsDays Tokyo 2026 軽量な仕様書と新たなDORA AI ケイパビリティで実現する、動くソフトウェアを中心とした開発ライフサイクル / DevOpsDays Tokyo 2026
n11sh1
0
110
AI前提とはどういうことか
daisuketakeda
0
180
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
53k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Balancing Empowerment & Direction
lara
5
1k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Are puppies a ranking factor?
jonoalderson
1
3.3k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
270
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
99
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
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!