SlideShare uma empresa Scribd logo
1 de 99
Baixar para ler offline
why you should care
@jcemer
Types and
Immutability
@jcemer

jcemer.com
2012 - Event-driven Programming

2012 - CoffeeScript
2013 - OO and Functional Programming
2014 - Async Control Flow
2015 - Modern Paradigms and Concepts
2017 - Managing and Evolving Code
2017 - Types and Immutability
JavaScript is a high-
level, dynamic, weakly
typed, object-based, 

multi-paradigm, and

interpreted language 
According Wikipedia
01Data
Types
A type is a set of
similar values
with associated
operations
4
2.1
893
12
2.3
5.3 *
56
1
3
4
6
9.4
ObjectString
Number
Undefined
Null
Boolean
Symbol
Literal
Array
Function
Date
JSON
…
Primitives
undefined?
Types in
JavaScript have
always been a
headache
class Product {
constructor (name, cost, tax)
{
this.name = name
this.cost = cost
this.tax = tax
}
price() {
return this.cost * 

(1 + this.tax)
}
}
Product
Name
Cost
Tax
Price()
String
Number
Number
Number
const item = new Product("Banana", 2, "%30")
item.price()
this.name = name
this.cost = cost
this.tax = tax
}
price() {
return this.cost * 

(1 + this.tax)
}
}
This is Not 

a Number™
There is a typo here!
const item = new Product("Banana", 2, .3)
item.prices()
this.name = name
this.cost = cost
this.tax = tax
}
price() {
return this.cost * 

(1 + this.tax)
}
}
Modern

errors
The new
keyword is
missing
Common Mistake #1:

Incorrect references
to this
The 10 Most Common Mistakes
JavaScript Developers Make 

by Ryan J. Peterson
function Product(name, cost, tax) {
if (!(this instanceof Product)) {
throw new Error("Constructor called as a function")
}
this.name = name
this.cost = cost
this.tax = tax
}
Product("Banana", 2, "%30")
1 * 'foo'
'foo' * 1
'foo' + 1
[] + {}
({}) + {}
null + 1
5 % undefined
null.prop
undefined()
1. NaN
2. undefined is not a function
3. incorrect this reference
4. cannot read/set any
property of undefined/null
5. silent errors
Those are all typical
examples of runtime
errors from a
dynamic language
02Type
Checking
flow.org
Static type checking
is performed before
running code
eslint.org
Let’s add types to
help programmers
and not computers
Product
Name
Cost
Tax
Price()
String
Number
Number
Number
/* @flow */
class Product {
name: string
cost: number
tax: number
constructor (name, cost, tax) {
this.name = name
this.cost = cost
this.tax = tax
}
price() {
return this.cost * (1 + this.tax)
}
}
const item = new Product("Banana", 2, "%30")
Type annotations
Type incompatible!
typescript

lang.org
primitives

objects (arrays, classes, …)

literal
+
Types
any


nullable or maybe


union and intersection
+
Advanced Types
Any value
null or Product
Product or FreeProduct
new types (aliases)


interfaces


generics
+
Fancy Types
Cost is a number
Any value with price method
“a way of abstracting a type away”
Type Signature
allows you to
foresee problems
Types as Design Tools 

by Kris Jenkins
/* @flow */
function crazy() : number | string | Array<null> {
const rand = Math.random()
if (rand > .5) {
return 0
}
if (rand < .5) {
return []
}
return rand.toString()
}
const ops : number | string | Array<null> = crazy()
Type smells!
A Type System is,
first and foremost, 

a communication
mechanism
Tweet by Sarah Mei
A Type System replaces
direct communication
with other humans, when
such communication isn't
practical - large teams,
open source, etc
Tweet by Sarah Mei
03IO Data
Parsing
interface ItemsResponse {
results: string[]
}
http.get<ItemsResponse>('/api/items')
.subscribe(data => {
this.results = data.results
})
It should return a
result property
with an array of
strings
from Angular documentation
interface ItemsResponse {
results: string[]
}
{
"results": [
"Item 1",
"Item 2",
]
}
Code
API Responses
{
"results": [
8,
4,
]
}
Oops!
Trust me, 

I'm an 

engineer
/* @flow */
const someValue: any = null
const strLength: number = someValue.length
any is a 

bad guy!
Using any is
completely unsafe,
and should be avoided
whenever possible
from Flow documentation
Runtime exception:
the case of broken
data not being
handled
elm-lang.org
Elm is a statically
typed language
with no runtime
exceptions
type alias Product =
{ name : String
, cost : Float
, tax : Float
}
price : Product -> Float
price {cost,tax} =
cost * (tax + 1)
Almost only
type annotation
item : Product
item = { name = "Banana", cost = 2, tax = 0.3 }
itemPrice : Float
itemPrice = price item
-- 2.6 : Float
type alias Product =
{ name : String
, cost : Float
, tax : Float
}
price : Product -> Float
price {cost,tax} =
cost * (tax + 1)
> import Json.Decode exposing (..)
> resultsDecoder = field "results" (list string)
> decodeString resultsDecoder "bla"
Err "Given an invalid JSON: Unexpected token b in JSON…"
: Result.Result String (List String)
> decodeString resultsDecoder "{ "results": ["1", "2"] }"
Ok ["1","2"] : Result.Result String (List String)
Request
Response
Ok
Render results
Show an error 

message
Err
A Result wraps any
computation that may
fail, this is a great way
to manage errors
Elm documentation
There is no
exception in Elm,
the code must cover
all edge cases
Relax, you don’t
need to move away
from JavaScript!
var t = require("tcomb")
const Results = t.interface({
results: t.list(t.String)
}, "Results")
Results({
results: ["1", "2"]
})
Results({
results: [2]
})
// TypeError: [tcomb] Invalid
value 2 supplied to Results/
results: Array<String>/0:
String
Check the
types values 

at runtime 
github.com/

gcanti/tcomb
+
github.com/
gcanti/

babel-plugin-
tcomb
bit.ly/

runtime-type-
validation
+
We should focus our
efforts on either avoiding
—or fixing!—the corner
case value coercions
Fixing Coercion, Not
The Symptoms by Kyle Simpson
04Immuta
bility
All JavaScript
primitives are
immutable
But JavaScript
objects are
mutable
Oops!
Side effects
User
Product
Data model UI components
user.father.name = "Peter"
X
X
X
X
X
X
X
X
Father Mother …
…
…
A small change on
mutable data implies
on check and render
all descendants
components
No way to
watch 

changes!
🙏
Immutability
is a very good
paradigm
Immutable data
just is, once
created, it will be
the same forever
const newUser = {
...user,
father: {
...user.father,
name: "Peter"
}
}
Create a new
user with a
new father
user === newUser // false
user.father === newUser.father // false
user.name === newUser.name // true
user.mother === newUser.mother // true
UI components
Re-render
user === newUser 

// false
product === newProduct 

// true
No re-render
Immutable 

data removes
complexity
Immutable Data and React 

by Lee Byron
Immutability improve
performance when used
with React Pure
Component or Angular
OnPush Change Detection
redux.js.org



github.com/

jcemer/
minimalistic-
shop
Oops
const item = [0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1,
0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0,
0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0,
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0,
1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1,
0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0,
0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0,
1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0,
0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0,
0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1,
0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1,
0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0,
1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0,
1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1,
0, 1, 1, 0, 1, 0, …]
// item.push(42) without mutation:
var itemNew = item.concat([42])
// item.unshift(42) without mutation:
var itemNew = [42].concat(item)
// item[10] = 42 without mutation:
var itemNew = item.slice(0, 10)

.concat(42)

.concat(item.slice(11))
// item.splice(10, 0, 42) without mutation:
var itemNew = item.slice(0, 10)

.concat(42)

.concat(item.slice(10))
Ok,

Enough is
enough!
Array manipulation
is very optimized
when performed
with mutation
05
Persistent
data
structures
facebook.

github.io/
immutable-js/
Think about
managing the data
like code on Git
Immutable data structures for
functional JS by Anjana Vakil
const item = Immutable.List(

[0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, …]
)
const item2 = item.push(42)
const item3 = item.unshift(42)
const item4 = item.set(10, 42)
const item5 = item.insert(10, 42)
Hash Array
Mapped Trie
Immutable Data
and React
Immutable data
structures for
functional JS
youtu.be/Wo0qiGPSV-s
youtu.be/I7IdS-PbEgI
const user = {
name: "Paul",
father: { name: "John" },
mother: { name: "Ana" }
}
const item = Immutable.fromJS(user)
const newItem = item.setIn(

["father", "name"], "Peter"

)
Deep change
ImmutableJS has poor
docs, hard debugging
and enforces a new API
for data manipulation
redux.js.org/
docs/

recipes/
UsingImmutableJ
S.html
06Immutable
languages
All values in Elm
are immutable
According Wikipedia 🤔
There are many tools
and languages
nowadays that enforce
Pure Functional
Paradigm
staltz.com/

is-your-javascript-
function-actually-
pure.html
It’s an incredible blessing,
that we went from 0 viable
ways to do FP in the browser
to 4 in just a few years
JavaScript vs Elm vs PureScript vs
GHCjs vs Scalajs by Isaac Shapira
***
I hope you learned
something new!
@jcemer
Thank you
Special
thanks
Hugo Bessa
Rafael Rinaldi
Rodrigo Willrich
Zeh Fernandes
Marcelo Boeira
Felipe Fialho
Rachel Mason

Mais conteúdo relacionado

Mais procurados

Approaching (almost) Any NLP Problem
Approaching (almost) Any NLP ProblemApproaching (almost) Any NLP Problem
Approaching (almost) Any NLP ProblemAbhishek Thakur
 
Clean Code Development
Clean Code DevelopmentClean Code Development
Clean Code DevelopmentPeter Gfader
 
Lecture on Rubinius for Compiler Construction at University of Twente
Lecture on Rubinius for Compiler Construction at University of TwenteLecture on Rubinius for Compiler Construction at University of Twente
Lecture on Rubinius for Compiler Construction at University of TwenteDirkjan Bussink
 
Introduction to Client-Side Javascript
Introduction to Client-Side JavascriptIntroduction to Client-Side Javascript
Introduction to Client-Side JavascriptJulie Iskander
 
JavaScript Fundamentals with Angular and Lodash
JavaScript Fundamentals with Angular and LodashJavaScript Fundamentals with Angular and Lodash
JavaScript Fundamentals with Angular and LodashBret Little
 
03. haskell refresher quiz
03. haskell refresher quiz03. haskell refresher quiz
03. haskell refresher quizSebastian Rettig
 
Swift for TensorFlow - CoreML Personalization
Swift for TensorFlow - CoreML PersonalizationSwift for TensorFlow - CoreML Personalization
Swift for TensorFlow - CoreML PersonalizationJacopo Mangiavacchi
 
JavaScript Foundations Day1
JavaScript Foundations Day1JavaScript Foundations Day1
JavaScript Foundations Day1Troy Miles
 

Mais procurados (20)

Solid principles
Solid principlesSolid principles
Solid principles
 
Prototype Framework
Prototype FrameworkPrototype Framework
Prototype Framework
 
jQuery
jQueryjQuery
jQuery
 
Scala best practices
Scala best practicesScala best practices
Scala best practices
 
Approaching (almost) Any NLP Problem
Approaching (almost) Any NLP ProblemApproaching (almost) Any NLP Problem
Approaching (almost) Any NLP Problem
 
Clean Code Development
Clean Code DevelopmentClean Code Development
Clean Code Development
 
ddd+scala
ddd+scaladdd+scala
ddd+scala
 
Grammarware Memes
Grammarware MemesGrammarware Memes
Grammarware Memes
 
JavaTalks: OOD principles
JavaTalks: OOD principlesJavaTalks: OOD principles
JavaTalks: OOD principles
 
Lecture on Rubinius for Compiler Construction at University of Twente
Lecture on Rubinius for Compiler Construction at University of TwenteLecture on Rubinius for Compiler Construction at University of Twente
Lecture on Rubinius for Compiler Construction at University of Twente
 
core.logic introduction
core.logic introductioncore.logic introduction
core.logic introduction
 
Introduction to Client-Side Javascript
Introduction to Client-Side JavascriptIntroduction to Client-Side Javascript
Introduction to Client-Side Javascript
 
JavaScript Fundamentals with Angular and Lodash
JavaScript Fundamentals with Angular and LodashJavaScript Fundamentals with Angular and Lodash
JavaScript Fundamentals with Angular and Lodash
 
03. haskell refresher quiz
03. haskell refresher quiz03. haskell refresher quiz
03. haskell refresher quiz
 
Python review2
Python review2Python review2
Python review2
 
Functional DDD
Functional DDDFunctional DDD
Functional DDD
 
Swift for TensorFlow - CoreML Personalization
Swift for TensorFlow - CoreML PersonalizationSwift for TensorFlow - CoreML Personalization
Swift for TensorFlow - CoreML Personalization
 
JavaScript Foundations Day1
JavaScript Foundations Day1JavaScript Foundations Day1
JavaScript Foundations Day1
 
Lodash js
Lodash jsLodash js
Lodash js
 
Scala vs java 8
Scala vs java 8Scala vs java 8
Scala vs java 8
 

Semelhante a Types and Immutability: why you should care

Types Working for You, Not Against You
Types Working for You, Not Against YouTypes Working for You, Not Against You
Types Working for You, Not Against YouC4Media
 
Chapter 2&3 (java fundamentals and Control Structures).ppt
Chapter 2&3 (java fundamentals and Control Structures).pptChapter 2&3 (java fundamentals and Control Structures).ppt
Chapter 2&3 (java fundamentals and Control Structures).ppthenokmetaferia1
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxAbhishek Tirkey
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxGauravPandey43518
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftMichele Titolo
 
Monads and Monoids by Oleksiy Dyagilev
Monads and Monoids by Oleksiy DyagilevMonads and Monoids by Oleksiy Dyagilev
Monads and Monoids by Oleksiy DyagilevJavaDayUA
 
Java script objects 1
Java script objects 1Java script objects 1
Java script objects 1H K
 
Software fundamentals
Software fundamentalsSoftware fundamentals
Software fundamentalsSusan Winters
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Pedro Rodrigues
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme SwiftMovel
 
Types in JavaScript: why you should care
Types in JavaScript: why you should careTypes in JavaScript: why you should care
Types in JavaScript: why you should careJean Carlo Emer
 
Using a mobile phone as a therapist - Superweek 2018
Using a mobile phone as a therapist - Superweek 2018Using a mobile phone as a therapist - Superweek 2018
Using a mobile phone as a therapist - Superweek 2018Peter Meyer
 
Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!Paige Bailey
 

Semelhante a Types and Immutability: why you should care (20)

Python: The Dynamic!
Python: The Dynamic!Python: The Dynamic!
Python: The Dynamic!
 
Types Working for You, Not Against You
Types Working for You, Not Against YouTypes Working for You, Not Against You
Types Working for You, Not Against You
 
Arrays
ArraysArrays
Arrays
 
Chapter 2&3 (java fundamentals and Control Structures).ppt
Chapter 2&3 (java fundamentals and Control Structures).pptChapter 2&3 (java fundamentals and Control Structures).ppt
Chapter 2&3 (java fundamentals and Control Structures).ppt
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in Swift
 
Monads and Monoids by Oleksiy Dyagilev
Monads and Monoids by Oleksiy DyagilevMonads and Monoids by Oleksiy Dyagilev
Monads and Monoids by Oleksiy Dyagilev
 
Oct27
Oct27Oct27
Oct27
 
Intro to Python
Intro to PythonIntro to Python
Intro to Python
 
Java
JavaJava
Java
 
Meet scala
Meet scalaMeet scala
Meet scala
 
Java script objects 1
Java script objects 1Java script objects 1
Java script objects 1
 
Software fundamentals
Software fundamentalsSoftware fundamentals
Software fundamentals
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme Swift
 
Types in JavaScript: why you should care
Types in JavaScript: why you should careTypes in JavaScript: why you should care
Types in JavaScript: why you should care
 
Using a mobile phone as a therapist - Superweek 2018
Using a mobile phone as a therapist - Superweek 2018Using a mobile phone as a therapist - Superweek 2018
Using a mobile phone as a therapist - Superweek 2018
 
Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!Python 101++: Let's Get Down to Business!
Python 101++: Let's Get Down to Business!
 
Computation Chapter 4
Computation Chapter 4Computation Chapter 4
Computation Chapter 4
 

Último

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Último (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Types and Immutability: why you should care