SlideShare a Scribd company logo
1 of 159
Download to read offline
a learning curve
a steep learning curve
you
a steep learning curve
superstar
a steep learning curve
you
you
superstar
a steep learning curve
you
superstar
a steep learning curve
me
RxJava in baby steps
@brwngrldev
asynchronous data streams
GPS Updates
Time
GPS Updates
Time
-36.34543, 3.23445
-36.34543, 3.23445

-36.24543, 3.23425

GPS Updates
Time
-36.34543, 3.23445

-36.24543, 3.23425

-35.34543, 3.13445
GPS Updates
Time
Time
server response
i want
toys!!!
Time
server response
Time
server response
toys
Time
i want
toys!!!
server response
Time
server response
Which of the following is an
asynchronous data stream?
A: click events
B: database access
C: server response
D: all of the above
A: click events
B: database access
C: server response
D: all of the above
Which of the following is an
asynchronous data stream?
scientific Research
scientific Research
Data Transformation
Observable.just(5, 6, 7)
.map { ";-) ".repeat(it) }
.subscribe { println(it) }
Data Transformation
Observable.just(5, 6, 7)
.map { ";-) ".repeat(it) }
.subscribe { println(it) }
;-) ;-) ;-) ;-) ;-)
;-) ;-) ;-) ;-) ;-) ;-)
;-) ;-) ;-) ;-) ;-) ;-) ;-)
chaining
Observable.just(5, 6, 7)
.map { ";-) ".repeat(it) }
.filter { it.length < 24 }
.subscribe { println(it) }
chaining
;-) ;-) ;-) ;-) ;-)
Observable.just(5, 6, 7)
.map { ";-) ".repeat(it) }
.filter { it.length < 24 }
.subscribe { println(it) }
RxJava is. . . ?
A: the silver bullet
B: simply magic
C: pure voodoo
D: a library
RxJava is. . . ?
A: the silver bullet
B: simply magic
C: pure voodoo
D: a library
listOf(5, 6, 7)
.map { it * 5 }
.filter { it > 25 }
kotlin collections
listOf(5, 6, 7)
.map { it * 5 }
.filter { it > 25 }
kotlin collections
5 6 7
listOf(5, 6, 7)
.map { it * 5 }
.filter { it > 25 }
kotlin collections
5 6 7
map
25 30 35
listOf(5, 6, 7)
.map { it * 5 }
.filter { it > 25 }
kotlin collections
5 6 7
map
25 30 35
filter
30 35
listOf(5, 6, 7)
.asSequence()
.map { it * 5 }
.filter { it > 25 }
.toList()
kotlin sequences
kotlin sequences
listOf(5, 6, 7)
.asSequence()
.map { it * 5 }
.filter { it > 25 }
.toList()
5 6 7
5 6 7
map
filter
kotlin sequences
25
listOf(5, 6, 7)
.asSequence()
.map { it * 5 }
.filter { it > 25 }
.toList()
5 6 7
map
filter
kotlin sequences
25 30
30
listOf(5, 6, 7)
.asSequence()
.map { it * 5 }
.filter { it > 25 }
.toList()
5 6 7
map
filter
kotlin sequences
25 30 35
30 35
listOf(5, 6, 7)
.asSequence()
.map { it * 5 }
.filter { it > 25 }
.toList()
asynchronous data streams
RxJava
numbers
.map { it * 5 }
.filter { it > 25 }
.subscribe()
RxJava
numbers
.map { it * 5 }
.filter { it > 25 }
.subscribe()
5
25
map
filter
RxJava
numbers
.map { it * 5 }
.filter { it > 25 }
.subscribe()
5 6
map
filter
25 30
30
RxJava
numbers
.map { it * 5 }
.filter { it > 25 }
.subscribe()
5 6
map
filter
25 30
30 35
7
35
35
flexible
threading
schedulers
Observable.just(5, 6, 7)
.map { ";-) ".repeat(it) }
.subscribe { println(it) }
Observable.just(5, 6, 7)
.subscribeOn(Schedulers.io())
.map { ";-) ".repeat(it) }
.subscribe { println(it) }
The Basics
observable
The Basics
observableobserver
The Basics
operators observableobserver
observable
hot observable
Time
hot observable
Time
i want
hugs!!!
hot observable
Time
hugs
hot observable
Time
hugs hugs
hot observable
Time
hugs hugs hugs
Cold observable
Time
Cold observable
Time
Cold observable
Time
Cold observable
Time
hugs
Cold observable
Time
hugs hugs
Cold observable
Time
hugs hugs hugs
where?
Observable.create<Int> { subscriber -> }
Observable.create<Int> { subscriber -> }
Observable.just(item1, item2, item3)
Observable.create<Int> { subscriber -> }
Observable.just(item1, item2, item3)
Observable.interval(2, TimeUnit.SECONDS)
Observable.create<Int> { subscriber ->
}
Observable.create<Int> { subscriber ->
Logger.log("create")
Logger.log("complete")
}
Logger.log("done")
Observable.create<Int> { subscriber ->
Logger.log("create")
subscriber.onNext(5)
subscriber.onNext(6)
subscriber.onNext(7)
Logger.log("complete")
}
Logger.log("done")
Observable.create<Int> { subscriber ->
Logger.log("create")
subscriber.onNext(5)
subscriber.onNext(6)
subscriber.onNext(7)
subscriber.onComplete()
Logger.log("complete")
}
Logger.log("done")
A: emit items
B: be cold
C: be hot
D: all of the above
Observables can. . .
A: emit items
B: be cold
C: be hot
D: all of the above
Observables can. . .
observer
interface Observer<T> {
fun onError(e: Throwable)
fun onComplete()
fun onNext(t: T)
fun onSubscribe(d: Disposable)
}
interface Observer<T> {
fun onError(e: Throwable)
fun onComplete()
fun onNext(t: T)
fun onSubscribe(d: Disposable)
}
interface Observer<T> {
fun onError(e: Throwable)
fun onComplete()
fun onNext(t: T)
fun onSubscribe(d: Disposable)
}
interface Observer<T> {
fun onError(e: Throwable)
fun onComplete()
fun onNext(t: T)
fun onSubscribe(d: Disposable)
}
interface Observer<T> {
fun onError(e: Throwable)
fun onComplete()
fun onNext(t: T)
fun onSubscribe(d: Disposable)
}
observer’s lifecycle
onSubscribe
observer’s lifecycle
onNext Normal
flow
onSubscribe
observer’s lifecycle
onComplete
Normal
flow
onSubscribe
onNext
observer’s lifecycle
onComplete onError
Normal
flow
onSubscribe
onNext
val observer = object : Observer<Int> {
override fun onError(e: Throwable) {
Logger.log(e)
}
override fun onComplete() {
Logger.log("on complete")
}
override fun onNext(t: Int) {
Logger.log("next: $t")
}
override fun onSubscribe(d: Disposable) {
Logger.log("on subscribe")
}
}
interface Consumer<T> {
fun accept(t: T)
}
val consumer = object : Consumer<Int> {
override fun accept(t: Int) {
Logger.log("next: $t")
}
}
val consumer = Consumer<Int> { t -> Logger.log("next: $t") }
obs.subscribe(consumer)
consumer
obs.subscribe(Consumer<Int> { t -> Logger.log("next: $t") })
consumer
obs.subscribe({ t -> Logger.log("next: $t") })
consumer
obs.subscribe{ t -> Logger.log("next: $t") }
consumer
obs.subscribe{ Logger.log("next: $it") }
consumer
A: have a lifecycle
B: always complete
C: Never Error
D: all of the above
Observers. . .
Observers. . .
A: have a lifecycle
B: always complete
C: Never Error
D: all of the above
operator
Time
Operator: map()
Time
Operator: map()
:-):-(
Time
Operator: map()
:-)
:-)
:-(
:-(
Time
Operator: map()
:-)
:-) :-)
:-(
:-(
:-(
Time
Operator: map()
:-)
:-) :-) :-)
:-(
:-(:-(:-(
Operator: map()
Observable.just(5, 6, 7)
.map { ";-) ".repeat(it) }
.subscribe { println(it) }
Operator: map()
;-) ;-) ;-) ;-) ;-)
;-) ;-) ;-) ;-) ;-) ;-)
;-) ;-) ;-) ;-) ;-) ;-) ;-)
Observable.just(5, 6, 7)
.map { ";-) ".repeat(it) }
.subscribe { println(it) }
Operator: map()
Observable.just(5, 6, 7)
.map(object: Function<Int, String> {
override fun apply(t: Int): String {
return ";-) ".repeat(t)
}
})
.subscribe { println(it) }
Operator: map()
Observable.just(5, 6, 7)
.map(object: Function<Int, String> {
override fun apply(t: Int): String {
return ";-) ".repeat(t)
}
})
.subscribe { println(it) }
Operator: map()
Observable.just(5, 6, 7)
.map(object: Function<Int, String> {
override fun apply(t: Int): String {
return ";-) ".repeat(t)
}
})
.subscribe { println(it) }
Operator: map()
Observable.just(5, 6, 7)
.map(object: Function<Int, String> {
override fun apply(t: Int): String {
return ";-) ".repeat(t)
}
})
.subscribe { println(it) }
.map(object: Function<Int, String> {
override fun apply(t: Int): String {
return ";-) ".repeat(t)
}
})
.map { ";-) ".repeat(it) }
what’s the output?
Observable.just(1, 2, 3)
.map { it * 2 }
.subscribe { println(it) }
A: 1, 2, 3
B: a, b, c
C: 2, 4, 6
D: 6, 2, 4
Observable.just(1, 2, 3)
.map { it * 2 }
.subscribe { println(it) }
what’s the output?
Observable.just(1, 2, 3)
.map { it * 2 }
.subscribe { println(it) }
A: 1, 2, 3
B: a, b, c
C: 2, 4, 6
D: 6, 2, 4
what’s the output?
what’s the output?
Observable.just(1, 2, 3)
.map { it * 2 }
.filter { it < 6 }
.subscribe { println(it) }
A: 2, 3, 1
B: 2, 4
C: 1, 2, 3
D: 6, 4
what’s the output?
Observable.just(1, 2, 3)
.map { it * 2 }
.filter { it < 6 }
.subscribe { println(it) }
what’s the output?
Observable.just(1, 2, 3)
.map { it * 2 }
.filter { it < 6 }
.subscribe { println(it) }
A: 2, 3, 1
B: 2, 4
C: 1, 2, 3
D: 6, 4
Operator: flatmap()
via reactivex.io
Operator: flatmap()
via reactivex.io
item
Operator: flatmap()
via reactivex.io
item observable
Operator: flatmap()
Observable.just( , )
.flatMap( { Observable.just( ) } )
.subscribe { println(it) }
:-( :-(
time
flatmap
time
flatmap
:-(
time
flatmap
:-(
time
flatmap
:-(
time
flatmap
:-( :-(
time
flatmap
:-( :-(
time
flatmap
:-( :-(
time
flatmap
:-( :-(
Long Running
asynchronous
Operator: flatmap()
val users // Observable<User>
Operator: flatmap()
val users // Observable<User>
val posts: Observable<Post>
Operator: flatmap()
val users // Observable<User>
val posts: Observable<Post>
posts = users.flatMap { getUsersPosts(it.id) }
Operator: flatmap()
val users // Observable<User>
val posts: Observable<Post>
posts = users.flatMap { getUsersPosts(it.id) }
posts.subscribe { println(it) }
via reactivex.io
Flowable Maybe
backpressure
Disposable
Single
completable
should you use
rxjava?
like functional programing?
Process items asynchronously?
compose data?
handle errors gracefully?
should you use
rxjava?
should you use
rxjava?
like functional programing?
Process items asynchronously?
compose data?
handle errors gracefully?
it
depends
The Basics
operators observableobserver
you
www.adavis.info
@brwngrldev
• Reactive Programming on Android with RxJava (http://amzn.to/2yOAkxn)

• Reactive Programming with RxJava (http://amzn.to/2zQtqb5)

• RxJava Playlist (https://goo.gl/9fw1Zv)

• Learning RxJava for Android Devs (https://goo.gl/VWxFLK)

• RxJava Video Course (https://caster.io/courses/rxjava)
resources
slide design:
@lauraemilyillustration
font: Elliot 6, fontSquirrel.com

More Related Content

What's hot

The Groovy Puzzlers – The Complete 01 and 02 Seasons
The Groovy Puzzlers – The Complete 01 and 02 SeasonsThe Groovy Puzzlers – The Complete 01 and 02 Seasons
The Groovy Puzzlers – The Complete 01 and 02 SeasonsBaruch Sadogursky
 
Cinemàtica directa e inversa de manipulador
Cinemàtica directa e inversa de manipuladorCinemàtica directa e inversa de manipulador
Cinemàtica directa e inversa de manipuladorc3stor
 
CppConcurrencyInAction - Chapter07
CppConcurrencyInAction - Chapter07CppConcurrencyInAction - Chapter07
CppConcurrencyInAction - Chapter07DooSeon Choi
 
Java practice programs for beginners
Java practice programs for beginnersJava practice programs for beginners
Java practice programs for beginnersishan0019
 
FEAL - CSAW CTF 2014 Quals Crypto300
FEAL - CSAW CTF 2014 Quals Crypto300FEAL - CSAW CTF 2014 Quals Crypto300
FEAL - CSAW CTF 2014 Quals Crypto300YOKARO-MON
 
algorithm design file
algorithm design filealgorithm design file
algorithm design filesuraj kumar
 
À la découverte des Observables - HumanTalks Paris 2017
À la découverte des Observables - HumanTalks Paris 2017À la découverte des Observables - HumanTalks Paris 2017
À la découverte des Observables - HumanTalks Paris 2017Nicolas Carlo
 
(Appendix_Codes) Game Programming Portfolio - Soobum Lee
(Appendix_Codes) Game Programming Portfolio - Soobum Lee(Appendix_Codes) Game Programming Portfolio - Soobum Lee
(Appendix_Codes) Game Programming Portfolio - Soobum LeeSOOBUM LEE
 
Kaggle Google Quest Q&A Labeling 反省会 LT資料 47th place solution
Kaggle Google Quest Q&A Labeling 反省会 LT資料 47th place solutionKaggle Google Quest Q&A Labeling 反省会 LT資料 47th place solution
Kaggle Google Quest Q&A Labeling 反省会 LT資料 47th place solutionKen'ichi Matsui
 
12X1 T01 01 log laws
12X1 T01 01 log laws12X1 T01 01 log laws
12X1 T01 01 log lawsNigel Simmons
 
Dagger & rxjava & retrofit
Dagger & rxjava & retrofitDagger & rxjava & retrofit
Dagger & rxjava & retrofitTed Liang
 
Grand centraldispatch
Grand centraldispatchGrand centraldispatch
Grand centraldispatchYuumi Yoshida
 
Chart parsing with features
Chart parsing with featuresChart parsing with features
Chart parsing with featuresSRah Sanei
 
Introduction to Polyhedral Compilation
Introduction to Polyhedral CompilationIntroduction to Polyhedral Compilation
Introduction to Polyhedral CompilationAkihiro Hayashi
 

What's hot (20)

The Groovy Puzzlers – The Complete 01 and 02 Seasons
The Groovy Puzzlers – The Complete 01 and 02 SeasonsThe Groovy Puzzlers – The Complete 01 and 02 Seasons
The Groovy Puzzlers – The Complete 01 and 02 Seasons
 
Cinemàtica directa e inversa de manipulador
Cinemàtica directa e inversa de manipuladorCinemàtica directa e inversa de manipulador
Cinemàtica directa e inversa de manipulador
 
CppConcurrencyInAction - Chapter07
CppConcurrencyInAction - Chapter07CppConcurrencyInAction - Chapter07
CppConcurrencyInAction - Chapter07
 
Java practice programs for beginners
Java practice programs for beginnersJava practice programs for beginners
Java practice programs for beginners
 
Rkf
RkfRkf
Rkf
 
Scala @ TomTom
Scala @ TomTomScala @ TomTom
Scala @ TomTom
 
FEAL - CSAW CTF 2014 Quals Crypto300
FEAL - CSAW CTF 2014 Quals Crypto300FEAL - CSAW CTF 2014 Quals Crypto300
FEAL - CSAW CTF 2014 Quals Crypto300
 
algorithm design file
algorithm design filealgorithm design file
algorithm design file
 
Solr sparse faceting
Solr sparse facetingSolr sparse faceting
Solr sparse faceting
 
À la découverte des Observables - HumanTalks Paris 2017
À la découverte des Observables - HumanTalks Paris 2017À la découverte des Observables - HumanTalks Paris 2017
À la découverte des Observables - HumanTalks Paris 2017
 
Revisão OCPJP7 - Class Design (parte 03)
Revisão OCPJP7 - Class Design (parte 03)Revisão OCPJP7 - Class Design (parte 03)
Revisão OCPJP7 - Class Design (parte 03)
 
(Appendix_Codes) Game Programming Portfolio - Soobum Lee
(Appendix_Codes) Game Programming Portfolio - Soobum Lee(Appendix_Codes) Game Programming Portfolio - Soobum Lee
(Appendix_Codes) Game Programming Portfolio - Soobum Lee
 
Kaggle Google Quest Q&A Labeling 反省会 LT資料 47th place solution
Kaggle Google Quest Q&A Labeling 反省会 LT資料 47th place solutionKaggle Google Quest Q&A Labeling 反省会 LT資料 47th place solution
Kaggle Google Quest Q&A Labeling 反省会 LT資料 47th place solution
 
12X1 T01 01 log laws
12X1 T01 01 log laws12X1 T01 01 log laws
12X1 T01 01 log laws
 
Dagger & rxjava & retrofit
Dagger & rxjava & retrofitDagger & rxjava & retrofit
Dagger & rxjava & retrofit
 
Grand centraldispatch
Grand centraldispatchGrand centraldispatch
Grand centraldispatch
 
Chart parsing with features
Chart parsing with featuresChart parsing with features
Chart parsing with features
 
Ass2 1 (2)
Ass2 1 (2)Ass2 1 (2)
Ass2 1 (2)
 
Introduction to Polyhedral Compilation
Introduction to Polyhedral CompilationIntroduction to Polyhedral Compilation
Introduction to Polyhedral Compilation
 
1st and 2nd Semester M Tech: Computer Science and Engineering (Dec-2015; Jan-...
1st and 2nd Semester M Tech: Computer Science and Engineering (Dec-2015; Jan-...1st and 2nd Semester M Tech: Computer Science and Engineering (Dec-2015; Jan-...
1st and 2nd Semester M Tech: Computer Science and Engineering (Dec-2015; Jan-...
 

Similar to RxJava In Baby Steps

Running Free with the Monads
Running Free with the MonadsRunning Free with the Monads
Running Free with the Monadskenbot
 
"Kotlin и rx в android" Дмитрий Воронин (Avito)
"Kotlin и rx в android" Дмитрий Воронин  (Avito)"Kotlin и rx в android" Дмитрий Воронин  (Avito)
"Kotlin и rx в android" Дмитрий Воронин (Avito)AvitoTech
 
Teoria y problemas de funciones cuadraticas fc324 ccesa007
Teoria y problemas de funciones cuadraticas  fc324  ccesa007Teoria y problemas de funciones cuadraticas  fc324  ccesa007
Teoria y problemas de funciones cuadraticas fc324 ccesa007Demetrio Ccesa Rayme
 
BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...
BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...
BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...Spark Summit
 
Counting Sort and Radix Sort Algorithms
Counting Sort and Radix Sort AlgorithmsCounting Sort and Radix Sort Algorithms
Counting Sort and Radix Sort AlgorithmsSarvesh Rawat
 
ECCV2008: MAP Estimation Algorithms in Computer Vision - Part 1
ECCV2008: MAP Estimation Algorithms in Computer Vision - Part 1ECCV2008: MAP Estimation Algorithms in Computer Vision - Part 1
ECCV2008: MAP Estimation Algorithms in Computer Vision - Part 1zukun
 
The Ring programming language version 1.9 book - Part 69 of 210
The Ring programming language version 1.9 book - Part 69 of 210The Ring programming language version 1.9 book - Part 69 of 210
The Ring programming language version 1.9 book - Part 69 of 210Mahmoud Samir Fayed
 
Datastage real time scenario
Datastage real time scenarioDatastage real time scenario
Datastage real time scenarioNaresh Bala
 
関数潮流(Function Tendency)
関数潮流(Function Tendency)関数潮流(Function Tendency)
関数潮流(Function Tendency)riue
 
The Ring programming language version 1.5.3 book - Part 69 of 184
The Ring programming language version 1.5.3 book - Part 69 of 184The Ring programming language version 1.5.3 book - Part 69 of 184
The Ring programming language version 1.5.3 book - Part 69 of 184Mahmoud Samir Fayed
 
Teoria y problemas de funciones cuadraticas fc324 ccesa007
Teoria y problemas de funciones cuadraticas  fc324  ccesa007Teoria y problemas de funciones cuadraticas  fc324  ccesa007
Teoria y problemas de funciones cuadraticas fc324 ccesa007Demetrio Ccesa Rayme
 
I dont know what is wrong with this roulette program I cant seem.pdf
I dont know what is wrong with this roulette program I cant seem.pdfI dont know what is wrong with this roulette program I cant seem.pdf
I dont know what is wrong with this roulette program I cant seem.pdfarchanaemporium
 
Online Approximate OLAP in SparkSQL
Online Approximate OLAP in SparkSQLOnline Approximate OLAP in SparkSQL
Online Approximate OLAP in SparkSQLDataWorks Summit
 
Preparation Data Structures 07 stacks
Preparation Data Structures 07 stacksPreparation Data Structures 07 stacks
Preparation Data Structures 07 stacksAndres Mendez-Vazquez
 
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...akaptur
 
Frege - consequently functional programming for the JVM
Frege - consequently functional programming for the JVMFrege - consequently functional programming for the JVM
Frege - consequently functional programming for the JVMDierk König
 

Similar to RxJava In Baby Steps (20)

Running Free with the Monads
Running Free with the MonadsRunning Free with the Monads
Running Free with the Monads
 
"Kotlin и rx в android" Дмитрий Воронин (Avito)
"Kotlin и rx в android" Дмитрий Воронин  (Avito)"Kotlin и rx в android" Дмитрий Воронин  (Avito)
"Kotlin и rx в android" Дмитрий Воронин (Avito)
 
Teoria y problemas de funciones cuadraticas fc324 ccesa007
Teoria y problemas de funciones cuadraticas  fc324  ccesa007Teoria y problemas de funciones cuadraticas  fc324  ccesa007
Teoria y problemas de funciones cuadraticas fc324 ccesa007
 
Java operators
Java operatorsJava operators
Java operators
 
Operators
OperatorsOperators
Operators
 
03
0303
03
 
BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...
BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...
BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...
 
Counting Sort and Radix Sort Algorithms
Counting Sort and Radix Sort AlgorithmsCounting Sort and Radix Sort Algorithms
Counting Sort and Radix Sort Algorithms
 
Graph Algebra
Graph AlgebraGraph Algebra
Graph Algebra
 
ECCV2008: MAP Estimation Algorithms in Computer Vision - Part 1
ECCV2008: MAP Estimation Algorithms in Computer Vision - Part 1ECCV2008: MAP Estimation Algorithms in Computer Vision - Part 1
ECCV2008: MAP Estimation Algorithms in Computer Vision - Part 1
 
The Ring programming language version 1.9 book - Part 69 of 210
The Ring programming language version 1.9 book - Part 69 of 210The Ring programming language version 1.9 book - Part 69 of 210
The Ring programming language version 1.9 book - Part 69 of 210
 
Datastage real time scenario
Datastage real time scenarioDatastage real time scenario
Datastage real time scenario
 
関数潮流(Function Tendency)
関数潮流(Function Tendency)関数潮流(Function Tendency)
関数潮流(Function Tendency)
 
The Ring programming language version 1.5.3 book - Part 69 of 184
The Ring programming language version 1.5.3 book - Part 69 of 184The Ring programming language version 1.5.3 book - Part 69 of 184
The Ring programming language version 1.5.3 book - Part 69 of 184
 
Teoria y problemas de funciones cuadraticas fc324 ccesa007
Teoria y problemas de funciones cuadraticas  fc324  ccesa007Teoria y problemas de funciones cuadraticas  fc324  ccesa007
Teoria y problemas de funciones cuadraticas fc324 ccesa007
 
I dont know what is wrong with this roulette program I cant seem.pdf
I dont know what is wrong with this roulette program I cant seem.pdfI dont know what is wrong with this roulette program I cant seem.pdf
I dont know what is wrong with this roulette program I cant seem.pdf
 
Online Approximate OLAP in SparkSQL
Online Approximate OLAP in SparkSQLOnline Approximate OLAP in SparkSQL
Online Approximate OLAP in SparkSQL
 
Preparation Data Structures 07 stacks
Preparation Data Structures 07 stacksPreparation Data Structures 07 stacks
Preparation Data Structures 07 stacks
 
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
 
Frege - consequently functional programming for the JVM
Frege - consequently functional programming for the JVMFrege - consequently functional programming for the JVM
Frege - consequently functional programming for the JVM
 

More from Annyce Davis

Getting a Grip on GraphQL
Getting a Grip on GraphQLGetting a Grip on GraphQL
Getting a Grip on GraphQLAnnyce Davis
 
No internet? No Problem!
No internet? No Problem!No internet? No Problem!
No internet? No Problem!Annyce Davis
 
First Do No Harm - 360|AnDev
First Do No Harm - 360|AnDevFirst Do No Harm - 360|AnDev
First Do No Harm - 360|AnDevAnnyce Davis
 
First Do No Harm - Droidcon Boston
First Do No Harm - Droidcon BostonFirst Do No Harm - Droidcon Boston
First Do No Harm - Droidcon BostonAnnyce Davis
 
Creating Gradle Plugins - Oredev
Creating Gradle Plugins - OredevCreating Gradle Plugins - Oredev
Creating Gradle Plugins - OredevAnnyce Davis
 
Developing Apps for Emerging Markets
Developing Apps for Emerging MarketsDeveloping Apps for Emerging Markets
Developing Apps for Emerging MarketsAnnyce Davis
 
Develop Maintainable Apps - edUiConf
Develop Maintainable Apps - edUiConfDevelop Maintainable Apps - edUiConf
Develop Maintainable Apps - edUiConfAnnyce Davis
 
Creating Gradle Plugins - GR8Conf US
Creating Gradle Plugins - GR8Conf USCreating Gradle Plugins - GR8Conf US
Creating Gradle Plugins - GR8Conf USAnnyce Davis
 
From Grails to Android: A Simple Journey
From Grails to Android: A Simple JourneyFrom Grails to Android: A Simple Journey
From Grails to Android: A Simple JourneyAnnyce Davis
 
Google I/O 2016 Recap
Google I/O 2016 RecapGoogle I/O 2016 Recap
Google I/O 2016 RecapAnnyce Davis
 
Screen Robots: UI Tests in Espresso
Screen Robots: UI Tests in EspressoScreen Robots: UI Tests in Espresso
Screen Robots: UI Tests in EspressoAnnyce Davis
 
Creating Gradle Plugins
Creating Gradle PluginsCreating Gradle Plugins
Creating Gradle PluginsAnnyce Davis
 
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code AnalysisAnnyce Davis
 
Develop Maintainable Apps
Develop Maintainable AppsDevelop Maintainable Apps
Develop Maintainable AppsAnnyce Davis
 
Android Testing, Why So Hard?!
Android Testing, Why So Hard?!Android Testing, Why So Hard?!
Android Testing, Why So Hard?!Annyce Davis
 
Measuring Audience Engagement through Analytics
Measuring Audience Engagement through AnalyticsMeasuring Audience Engagement through Analytics
Measuring Audience Engagement through AnalyticsAnnyce Davis
 
DC Media Innovations Kick-Off Meetup
DC Media Innovations Kick-Off MeetupDC Media Innovations Kick-Off Meetup
DC Media Innovations Kick-Off MeetupAnnyce Davis
 

More from Annyce Davis (18)

Getting a Grip on GraphQL
Getting a Grip on GraphQLGetting a Grip on GraphQL
Getting a Grip on GraphQL
 
No internet? No Problem!
No internet? No Problem!No internet? No Problem!
No internet? No Problem!
 
First Do No Harm - 360|AnDev
First Do No Harm - 360|AnDevFirst Do No Harm - 360|AnDev
First Do No Harm - 360|AnDev
 
First Do No Harm - Droidcon Boston
First Do No Harm - Droidcon BostonFirst Do No Harm - Droidcon Boston
First Do No Harm - Droidcon Boston
 
Creating Gradle Plugins - Oredev
Creating Gradle Plugins - OredevCreating Gradle Plugins - Oredev
Creating Gradle Plugins - Oredev
 
Developing Apps for Emerging Markets
Developing Apps for Emerging MarketsDeveloping Apps for Emerging Markets
Developing Apps for Emerging Markets
 
Develop Maintainable Apps - edUiConf
Develop Maintainable Apps - edUiConfDevelop Maintainable Apps - edUiConf
Develop Maintainable Apps - edUiConf
 
Creating Gradle Plugins - GR8Conf US
Creating Gradle Plugins - GR8Conf USCreating Gradle Plugins - GR8Conf US
Creating Gradle Plugins - GR8Conf US
 
From Grails to Android: A Simple Journey
From Grails to Android: A Simple JourneyFrom Grails to Android: A Simple Journey
From Grails to Android: A Simple Journey
 
Google I/O 2016 Recap
Google I/O 2016 RecapGoogle I/O 2016 Recap
Google I/O 2016 Recap
 
Say It With Video
Say It With VideoSay It With Video
Say It With Video
 
Screen Robots: UI Tests in Espresso
Screen Robots: UI Tests in EspressoScreen Robots: UI Tests in Espresso
Screen Robots: UI Tests in Espresso
 
Creating Gradle Plugins
Creating Gradle PluginsCreating Gradle Plugins
Creating Gradle Plugins
 
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code Analysis
 
Develop Maintainable Apps
Develop Maintainable AppsDevelop Maintainable Apps
Develop Maintainable Apps
 
Android Testing, Why So Hard?!
Android Testing, Why So Hard?!Android Testing, Why So Hard?!
Android Testing, Why So Hard?!
 
Measuring Audience Engagement through Analytics
Measuring Audience Engagement through AnalyticsMeasuring Audience Engagement through Analytics
Measuring Audience Engagement through Analytics
 
DC Media Innovations Kick-Off Meetup
DC Media Innovations Kick-Off MeetupDC Media Innovations Kick-Off Meetup
DC Media Innovations Kick-Off Meetup
 

Recently uploaded

The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 

Recently uploaded (20)

The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 

RxJava In Baby Steps