SlideShare a Scribd company logo
1 of 99
Download to read 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

More Related Content

What's hot

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
 

What's hot (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
 

Similar to 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
 

Similar to 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
 

Recently uploaded

Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Recently uploaded (20)

Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Types and Immutability: why you should care