SlideShare a Scribd company logo
1 of 109
Download to read offline
Système distribué de
calculs financiers
Par Xavier Bucchiotty
ME
@xbucchiotty

https://github.com/xbucchiotty

http://blog.xebia.fr/author/xbucchiotty
Build a
testable,
composable and
scalable
cash-flow system
Step 1

Step 2

Step 3

Step 4

Stream API

Iteratees

Akka actor

Akka cluster
Use case
Financial debt management
CAUTION
initial = 1000 €
duration = 5 years
fixed interets rate = 5%
Date

1000 €
Amort

Interests

Outstanding

2013-01-01

200 €

50 €

800 €

2014-01-01

200 €

40 €

600 €

2015-01-01

200 €

30 €

400 €

2016-01-01

200 €

20 €

200 €

2017-01-01

200 €

10 €

0 €
initial = 1000 €
duration = 5 years
fixed interets rate = 5%
Date

1000 €
Amort

Interests

Outstanding

2013-01-01

200 €

50 €

800 €

2014-01-01

200 €

40 €

600 €

2015-01-01

200 €

30 €

400 €

2016-01-01

200 €

20 €

200 €

2017-01-01

200 €

10 €

0 €

date = last date + (1 year)
initial = 1000 €
duration = 5 years
fixed interets rate = 5%
Date

1000 €
Amort

Interests

Outstanding

2013-01-01

200 €

50 €

800 €

2014-01-01

200 €

40 €

600 €

2015-01-01

200 €

30 €

400 €

2016-01-01

200 €

20 €

200 €

2017-01-01

200 €

10 €

0 €

amort = initial / duration
initial = 1000 €
duration = 5 years
fixed interets rate = 5%
Date

1000 €
Amort

Interests

Outstanding

2013-01-01

200 €

50 €

800 €

2014-01-01

200 €

40 €

600 €

2015-01-01

200 €

30 €

400 €

2016-01-01

200 €

20 €

200 €

2017-01-01

200 €

10 €

0 €

outstanding = last oustanding - amort
initial = 1000 €
duration = 5 years
fixed interets rate = 5%
Date

1000 €
Amort

Interests

Outstanding

2013-01-01

200 €

50 €

800 €

2014-01-01

200 €

40 €

600 €

2015-01-01

200 €

30 €

400 €

2016-01-01

200 €

20 €

200 €

2017-01-01

200 €

10 €

0 €

interests = last outstanding * rate
val f = (last: Row) => new Row {
def date =
last.date + (1 year)
def amortization =
last amortization
def outstanding =
last.outstanding - amortization
def interests =
last.outstanding * fixedRate
}
Step 1
Stream API
Date

Amort

Interests

Outstanding

2013-01-01

200 €

50 €

800 €

2014-01-01

200 €

40 €

600 €

2015-01-01

200 €

30 €

400 €

2016-01-01

200 €

20 €

200 €

2017-01-01

200 €

10 €

0 €
Date

Amort

Interests

Outstanding

first

2013-01-01

200 €

50 €

800 €

f(first)

2014-01-01

200 €

40 €

600 €

f(f(first))

2015-01-01

200 €

30 €

400 €

2016-01-01

200 €

20 €

200 €

2017-01-01

200 €

10 €

0 €
case class Loan( ... ) {
def first: Row
def f:(Row => Row)
def rows =
Stream.iterate(first)(f)
.take(duration)
}
case class Portfolio(loans: Seq[Loan]) {
def rows =
loans.stream.flatMap(_.rows)
}
Date

Amort

Interests

Total paid

2013-01-01

200 €

40 €

240 €

2015-01-01

200 €

30 €

230 €

200 €

20 €

220 €

2017-01-01

200 €

10 €

210 €

2013-01-01

200 €

50 €

250 €

2014-01-01

200 €

40 €

240 €

2015-01-01

200 €

30 €

230 €

2016-01-01

200 €

20 €

220 €

2017-01-01

200 €

10 €

210 €

2013-01-01

200 €

50 €

250 €

2014-01-01
Loan 3

250 €

2016-01-01

Loan 2

50 €

2014-01-01
Loan 1

200 €

200 €

40 €

240 €

2015-01-01

200 €

30 €

230 €

2016-01-01

200 €

20 €

220 €

2017-01-01

200 €

10 €

210 €

Total

3450 €
// Produce rows
val totalPaid = portfolio.rows
// Transform rows to amount
.map(row => row.interests + row.amortization)
//Consume amount
.foldLeft(0 EUR)(_ + _)
// Produce rows
val totalPaid = portfolio.rows
// Transform rows to amount
.map(row => row.interests + row.amortization)
type RowProducer = Iterable[Row]
type RowTransformer[T] = (Row=>T)
//Consume amount
.foldLeft(0 EUR)(_ + _)
type AmountConsumer[T] = (Iterable[Amount]=>T)
RowProducer
(Iterable[Row])

//Loan
Stream.iterate(first)(f) take duration
//Porfolio
loans => loans flatMap (loan => loan.rows)

+ on demand computation
- sequential computation
RowTransformer
(Row => T)

object RowTransformer {
val totalPaid = (row: Row) =>
row.interests + row.amortization
}

+ function composition
- type limited to «map»
AmountConsumer
(Iterable[Amount] => T)

object AmountConsumer {
def sum = (rows: Iterable[Amount]) =>
rows.foldLeft(Amount(0, EUR))(_ + _)
}

+ function composition
- synchronism
Step 1

Stream API
5000 loans
50 rows

~ 560 ms
Pros

Cons

On demand computation

Sequential computation

Function composition

Synchronism
Transformation limited to «map»
Step 2
Iteratees
Integrating Play iteratees
libraryDependencies ++= Seq(
"com.typesafe.play" %%
"play-iteratees" %
"2.2.0-RC2"
)
Producer
Enumerator

Input

Status

Iteratee
Consumer
Enumerator
Iteratees are immutable
Input

Status

Asynchronous by design
Type safe
Iteratee
Enumerator
enumerate and interleave
case class Loan(initial: Amount,
duration: Int,
rowIt: RowIt) {
def rows(implicit ctx: ExecutionContext) =
Enumerator.enumerate(
Stream.iterate(first)(f).take(duration)
)
}

Data producer
case class Portfolio(loans: Seq[Loansan]) {
def rows(implicit ctx: ExecutionContext) =
Enumerator.interleave(loans.map(_.rows))
}

producers can be
combined
Date

Amort

Interests

Total paid

2013-01-01

200 €

50 €

250 €

2014-01-01

200 €

40 €

240 €

2015-01-01

200 €

30 €

230 €

2016-01-01

200 €

20 €

220 €

2017-01-01

200 €

10 €

2013-01-01

200 €

50 €

210 €
250 €

2014-01-01

200 €

40 €

240 €

2015-01-01

200 €

30 €

230 €

2016-01-01

200 €

20 €

220 €

2017-01-01

200 €

10 €

210 €

2013-01-01

200 €

50 €

250 €

2014-01-01

200 €

40 €

240 €

2015-01-01

200 €

30 €

230 €

2016-01-01

200 €

20 €

220 €

2017-01-01

200 €

10 €

210 €
3450 €

Total
Iteratee
Consumer as a state machine
Iteratees consume
Input
object Input {
case class El[+E](e: E)
case object Empty
case object EOF
}
and propagates a
state
object Step {
case class Done[+A, E]
(a: A, remaining: Input[E])
case class Cont[E, +A]
(k: Input[E] => Iteratee[E, A])
case class Error[E]
(msg: String, input: Input[E])
}
Enumerator

Status

Continue

Iteratee

Input

El(...)

def step = ...
val count = 1

computes

Iteratee
def step = ...
val count = 0
Enumerator

Status

Done

Iteratee

Input

def step = ...
val count = 1

EOF

computes

Iteratee
def step = ...
val count = 1
Enumerator

Status

Error

Input

Iteratee

El(...)

def step = ...
val error = "Runtime Error"

computes

Iteratee
def step = ...
val count = 1
val last: RowConsumer[Option[Row]] = {
def step(last: Option[Row]): K[Row,Option[Row]]= {
case Input.Empty => Cont(step(last))
case Input.EOF => Done(last, Input.EOF)
case Input.El(e) => Cont(step(Some(e)))
}
Cont(step(Option.empty[Row]))
}
object AmountConsumer {
val sum: AmountConsumer[Amount] =
(rows: Iterable[Amount]) =>
rows.foldLeft(Amount(0, EUR))(_ + _)
}
object AmountConsumer {
val sum: AmountConsumer[Amount] =
Iteratee.fold[Amount, Amount]
(Amount(0, EUR))(_ + _)
}
import RowTransformer.totalPaid
import AmountConsumer.sum
val totalPaidComputation: Future[Amount] =
portfolio.rows.run(sum)
import RowTransformer.totalPaid
import AmountConsumer.sum
val totalPaidComputation: Future[Amount] =
portfolio.rows |>>> sum
Enumeratee
map and filter
Producer
Enumerator

Input

Status

Iteratee
Consumer
Producer
Enumerator
Input[A]

Transformation
Enumeratee

Status

Input[B]

Iteratee
Consumer
object RowTransformer {
val totalPaid =
Enumeratee.map[Row](row =>
row.interests + row.amortization
)
}

Data transformation
def until(date: DateMidnight) =
Enumeratee.filter[Row](
row => !row.date.isAfter(date)
)

Data filtering
type RowProducer

= Iterable[Row]

type RowTransformer[T]

= (Row=>T)

type AmountConsumer[T]

= (Iterable[Amount]=>T)

type RowProducer

= Enumerator[Row]

type RowTransformer[T]

= Enumeratee[Row, T]

type AmountConsumer[T]

= Iteratee[Amount, T]
Futures are
composable
map, flatMap, filter
onComplete, onSuccess, onError, recover
// Produce rows
val totalPaidComputation: Future[Amount] =
portfolio.rows &> totalPaid |>>> sum
// Blocking the thread to wait for the result
val totalPaid =
Await.result(
totalPaidComputation,
atMost = defaultTimeout)
totalPaid should equal(3480 EUR)
We still have function composition
and prepares the code for asynchronism
RowProducer
//Loan
Enumerator.enumerate(
Stream.iterate(first)(f).take(duration)
)
//Porfolio
Enumerator.interleave(loans.map(_.rows))

+ on demand computation
+ parallel computation
RowTransformer
val totalPaid = Enumeratee.map[Row](row =>
row.interests + row.amortization
)

+ Function composition
+ map, filter, ...
AmountConsumer
def sum = Iteratee.fold[Amount, Amount]
(Amount(0, EUR))(_ + _)

+ Function composition
+ Asynchronism
Step 1

Step 2

Stream API

Iteratees

5000 loans
50 rows

5000 loans
50 rows

~ 560 ms

~ 3500 ms

?
simple test
complex test
Thread.sleep((Math.random() * 1000) % 2) toLong)
Step 1

Step 2

Stream API

Iteratees

5000 loans
50 rows

5000 loans
50 rows

~ 560 ms

~ 3500 ms

with pause

with pause

~ 144900 ms

~ 157285 ms

?
Cost of using this
implementation of iteratees
is greater than gain of
interleaving for such small
operations
Bulk interleaving
//Portfolio
val split =
loans.map(_.stream)
.grouped(loans.size / 4)
Step 1

Step 2

Stream API

Iteratees

5000 loans
50 rows

5000 loans
50 rows

~ 560 ms

~ 4571 ms

with pause

with pause

~ 144900 ms

~ 39042 ms
Pros

Cons

On demand computation

Sequential computation

Function composition

Synchronism
Transformation limited to «map»
Pros
On demand computation
Function composition
Sequential computation
Synchronism

Cons
Pros

Cons

On demand computation

No error management

Function composition

No elasticity

Parallel computation

No resilience

Asynchronism
Step 3
Akka actor
Integrating Akka
libraryDependencies ++= Seq(
"com.typesafe.akka" %%
"akka-actor" %
"2.2.0"
)
Actors are objects
They communicate with each other by
messages
asynchronously
class Backend extends Actor {
def receive = {
case Compute(loan) =>
sender.tell(
msg = loan.stream.toList,
sender = self)
}
}
case class Compute(loan: Loan)
case class Loan
def rows(implicit calculator: ActorRef,
ctx: ExecutionContext) = {
val responseFuture =
ask(calculator,Compute(this))
val rowsFuture = responseFuture
.mapTo[List[Row]]
rowsFuture.map(Enumerator.enumerate(_))
)
}
}
val system =
ActorSystem.create("ScalaIOSystem")
val calculator = system.actorOf(Props[Backend]
.withRouter(
RoundRobinRouter(nrOfInstances = 10)
)
,"calculator")
}
Supervision
val simpleStrategy = OneForOneStrategy() {
case _: AskTimeoutException => Resume
case _: RuntimeException => Escalate
}
system.actorOf(Props[Backend]
...
.withSupervisorStrategy(simpleStrategy)),
"calculator")
Routee 1

Compute

Router

Routee 2

Routee 3
Routee 1

AskTimeoutException

Router

Routee 2
Resume

Routee 3
Actor System
Routee 1

Router

Routee 2

Routee 3
RowProducer
//Loan
ask(calculator,Compute(this))
.mapTo[List[Row]]
.map(Enumerator.enumerate(_))
//Porfolio
Enumerator.interleave(loans.map(_.rows))

+ parallel computation
- on demand computation
RowTransformer
val totalPaid = Enumeratee.map[Row](row =>
row.interests + row.amortization
)

+ Nothing changed
AmountConsumer
def sum = Iteratee.fold[Amount, Amount]
(Amount(0, EUR))(_ + _)

+ Nothing changed
Step 1

Step 2

Step 3

Stream API

Iteratees

Akka actor

5000 loans
50 rows

5000 loans
50 rows

5000 loans
50 rows

~ 560 ms

~ 4571 ms

~ 4271 ms

with pause

with pause

with pause

~ 144900 ms

~ 39042 ms

~ 40882 ms
Pros

Cons

On demand computation

No error management

Function composition

No elasticity

Parallel computation

No resilience

Asynchronism
Pros

Cons

No error management

On demand computation

Function composition

No elasticity

Parallel computation

No resilience

Asynchronism
Pros

Cons

Error management

No on demand computation

Function composition

No elasticity

Parallel computation

No resilience

Asynchronism
Step 4
Akka cluster
Integrating Akka Cluster
libraryDependencies ++= Seq(
"com.typesafe.akka" %%
"akka-cluster" %
"2.2.0"
)
Cluster Router
ClusterRouterConfig

Can create actors on different nodes of the cluster
Role
Local actors or not
Control number of actors per node per system
Cluster Router
AdaptiveLoadBalancingRouter

Collect metrics (CPU, HEAP, LOAD) via JMX or Hyperic Sigar
and make load balancing
val calculator = system.actorOf(Props[Backend]
.withRouter(
RoundRobinRouter(nrOfInstances = 10)
)
,"calculator")
}
val calculator = system.actorOf(Props[Backend]
.withRouter(ClusterRouterConfig(
local = localRouter,
settings = clusterSettings)
)
, "calculator")
}
Actor System
Routee 3

Actor System
Routee 1

Routee 4

Elasticity

Router

Routee 5

Routee 3

Routee 6

Actor System
application.conf
cluster {
seed-nodes = [
"akka.tcp://ScalaIOSystem@127.0.0.1:2551",
"akka.tcp://ScalaIOSystem@127.0.0.1:2552"
]
auto-down = on
}
Actor System
Routee 3

Actor System
Routee 1

Routee 4

Resilience

Router

Routee 5

Routee 3

Routee 6

Actor System
RowProducer
//Loan
ask(calculator,Compute(this))
.mapTo[List[Row]]
.map(Enumerator.enumerate(_))
//Porfolio
Enumerator.interleave(loans.map(_.rows))

+ Nothing changed
RowTransformer
val totalPaid = Enumeratee.map[Row](row =>
row.interests + row.amortization
)

+ Nothing changed
AmountConsumer
def sum = Iteratee.fold[Amount, Amount]
(Amount(0, EUR))(_ + _)

+ Nothing changed
Pros

Cons

Error management

No on demand computation

Function composition

No elasticity

Parallel computation

No resilience

Asynchronism
Pros
Error management
Function composition
Parallel computation
Asynchronism
No elasticity
No resilience

Cons
No on demand computation
Pros

Cons

Error management

No on demand computation

Function composition

Network serialization

Parallel computation
Asynchronism
Elasticity
Resilience
Step 1

Step 2

Step 3

Step 4

Stream API

Iteratees

Akka actor

Akka cluster

5000 loans
50 rows

5000 loans
50 rows

5000 loans
50 rows

5000 loans
50 rows

~ 560 ms

~ 4571 ms

~ 4271 ms

~ 6213 ms

with pause

with pause

with pause

with pause

~ 144900 ms

~ 39042 ms

~ 40882 ms

~ 77957 ms
1 node / 2 actors
Step 1

Step 2

Step 3

Step 4

Stream API

Iteratees

Akka actor

Akka cluster

5000 loans
50 rows

5000 loans
50 rows

5000 loans
50 rows

5000 loans
50 rows

~ 560 ms

~ 4571 ms

~ 4271 ms

~ 5547 ms

with pause

with pause

with pause

with pause

~ 144900 ms

~ 39042 ms

~ 40882 ms

~ 39695 ms
2 nodes / 4 actors
Conclusion
Step 1

Step 2

Step 3

Step 4

Stream API

Iteratees

Akka actor

Akka cluster

powerful library

elegant API

error
management

elasticity

low memory

enable
asynchronism
and parallelism

control on
parallel execution
via configuration

resilience

performance
when single
threaded

monitoring
It’s all about trade-off
But do you really need
distribution?
Hot subject
Recet blog post from «Mandubian» for Scalaz stream machines and
iteratees [1]
Recent presentation from «Heather Miller» for spores (distribuables
closures) [2]
Recent release of Scala 2.10.3 and performance optimization of Promise
Release candidate of play-iteratee module with performance optimization
Lots of stuff in the roadmap of Akka cluster 2.3.0
Hot subject

[1] : http://mandubian.com/2013/08/21/playztream/

[2] : https://speakerdeck.com/heathermiller/on-pickles-and-sporesimproving-support-for-distributed-programming-in-scala
THANK
YOU

FOR watching

Merci!

More Related Content

What's hot

Migrating one of the most popular e commerce platforms to mongodb
Migrating one of the most popular e commerce platforms to mongodbMigrating one of the most popular e commerce platforms to mongodb
Migrating one of the most popular e commerce platforms to mongodbMongoDB
 
FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)
FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)
FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)François Sarradin
 
Answer key chapter 4
Answer key chapter 4Answer key chapter 4
Answer key chapter 4Phannith Met
 
TensorFlow in Practice
TensorFlow in PracticeTensorFlow in Practice
TensorFlow in Practiceindico data
 
Processing Collections with Java8 Stream APIs
Processing Collections with Java8 Stream APIsProcessing Collections with Java8 Stream APIs
Processing Collections with Java8 Stream APIsZameer Ahmed Shaik
 
C++ L02-Conversion+enum+Operators
C++ L02-Conversion+enum+OperatorsC++ L02-Conversion+enum+Operators
C++ L02-Conversion+enum+OperatorsMohammad Shaker
 
Intermediate Microeconomic Theory Cheat Sheet 3
Intermediate Microeconomic Theory Cheat Sheet 3Intermediate Microeconomic Theory Cheat Sheet 3
Intermediate Microeconomic Theory Cheat Sheet 3Laurel Ayuyao
 
F# Presentation
F# PresentationF# Presentation
F# Presentationmrkurt
 
SPL 6.1 | Advanced problems on Operators and Math.h function in C
SPL 6.1 | Advanced problems on Operators and Math.h function in CSPL 6.1 | Advanced problems on Operators and Math.h function in C
SPL 6.1 | Advanced problems on Operators and Math.h function in CMohammad Imam Hossain
 
C tech questions
C tech questionsC tech questions
C tech questionsvijay00791
 
Fat Arrow (ES6)
Fat Arrow (ES6)Fat Arrow (ES6)
Fat Arrow (ES6)Ryan Ewing
 

What's hot (18)

Migrating one of the most popular e commerce platforms to mongodb
Migrating one of the most popular e commerce platforms to mongodbMigrating one of the most popular e commerce platforms to mongodb
Migrating one of the most popular e commerce platforms to mongodb
 
FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)
FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)
FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)
 
C++ L11-Polymorphism
C++ L11-PolymorphismC++ L11-Polymorphism
C++ L11-Polymorphism
 
Day 1
Day 1Day 1
Day 1
 
Answer key chapter 4
Answer key chapter 4Answer key chapter 4
Answer key chapter 4
 
informatics practices practical file
informatics practices practical fileinformatics practices practical file
informatics practices practical file
 
TensorFlow in Practice
TensorFlow in PracticeTensorFlow in Practice
TensorFlow in Practice
 
C++ L10-Inheritance
C++ L10-InheritanceC++ L10-Inheritance
C++ L10-Inheritance
 
Processing Collections with Java8 Stream APIs
Processing Collections with Java8 Stream APIsProcessing Collections with Java8 Stream APIs
Processing Collections with Java8 Stream APIs
 
Quality Python Homework Help
Quality Python Homework HelpQuality Python Homework Help
Quality Python Homework Help
 
Vcs5
Vcs5Vcs5
Vcs5
 
C++ L02-Conversion+enum+Operators
C++ L02-Conversion+enum+OperatorsC++ L02-Conversion+enum+Operators
C++ L02-Conversion+enum+Operators
 
Intermediate Microeconomic Theory Cheat Sheet 3
Intermediate Microeconomic Theory Cheat Sheet 3Intermediate Microeconomic Theory Cheat Sheet 3
Intermediate Microeconomic Theory Cheat Sheet 3
 
F# Presentation
F# PresentationF# Presentation
F# Presentation
 
SPL 6.1 | Advanced problems on Operators and Math.h function in C
SPL 6.1 | Advanced problems on Operators and Math.h function in CSPL 6.1 | Advanced problems on Operators and Math.h function in C
SPL 6.1 | Advanced problems on Operators and Math.h function in C
 
C Language Lecture 17
C Language Lecture 17C Language Lecture 17
C Language Lecture 17
 
C tech questions
C tech questionsC tech questions
C tech questions
 
Fat Arrow (ES6)
Fat Arrow (ES6)Fat Arrow (ES6)
Fat Arrow (ES6)
 

Viewers also liked

Accenture: Video-over-internet-consumer-survey-May 2013
Accenture: Video-over-internet-consumer-survey-May 2013Accenture: Video-over-internet-consumer-survey-May 2013
Accenture: Video-over-internet-consumer-survey-May 2013Brian Crotty
 
Babelfish Articles #12 Jan-June 2015
Babelfish Articles #12 Jan-June 2015Babelfish Articles #12 Jan-June 2015
Babelfish Articles #12 Jan-June 2015Brian Crotty
 
Babelfish Articles July-Dec 2015 10-12-15
Babelfish Articles July-Dec 2015 10-12-15Babelfish Articles July-Dec 2015 10-12-15
Babelfish Articles July-Dec 2015 10-12-15Brian Crotty
 
Comscore Global+future+in+focus por2
Comscore Global+future+in+focus por2Comscore Global+future+in+focus por2
Comscore Global+future+in+focus por2Brian Crotty
 
Babelfish Articles Jan-Sep 2016 12-09-16 final
Babelfish Articles Jan-Sep 2016  12-09-16 finalBabelfish Articles Jan-Sep 2016  12-09-16 final
Babelfish Articles Jan-Sep 2016 12-09-16 finalBrian Crotty
 
JWT The future-100-­-trends-and-change-to-watch-in-2016
JWT The future-100-­-trends-and-change-to-watch-in-2016JWT The future-100-­-trends-and-change-to-watch-in-2016
JWT The future-100-­-trends-and-change-to-watch-in-2016Brian Crotty
 
eBit Web shoppers 32a edição
eBit Web shoppers 32a ediçãoeBit Web shoppers 32a edição
eBit Web shoppers 32a ediçãoBrian Crotty
 

Viewers also liked (7)

Accenture: Video-over-internet-consumer-survey-May 2013
Accenture: Video-over-internet-consumer-survey-May 2013Accenture: Video-over-internet-consumer-survey-May 2013
Accenture: Video-over-internet-consumer-survey-May 2013
 
Babelfish Articles #12 Jan-June 2015
Babelfish Articles #12 Jan-June 2015Babelfish Articles #12 Jan-June 2015
Babelfish Articles #12 Jan-June 2015
 
Babelfish Articles July-Dec 2015 10-12-15
Babelfish Articles July-Dec 2015 10-12-15Babelfish Articles July-Dec 2015 10-12-15
Babelfish Articles July-Dec 2015 10-12-15
 
Comscore Global+future+in+focus por2
Comscore Global+future+in+focus por2Comscore Global+future+in+focus por2
Comscore Global+future+in+focus por2
 
Babelfish Articles Jan-Sep 2016 12-09-16 final
Babelfish Articles Jan-Sep 2016  12-09-16 finalBabelfish Articles Jan-Sep 2016  12-09-16 final
Babelfish Articles Jan-Sep 2016 12-09-16 final
 
JWT The future-100-­-trends-and-change-to-watch-in-2016
JWT The future-100-­-trends-and-change-to-watch-in-2016JWT The future-100-­-trends-and-change-to-watch-in-2016
JWT The future-100-­-trends-and-change-to-watch-in-2016
 
eBit Web shoppers 32a edição
eBit Web shoppers 32a ediçãoeBit Web shoppers 32a edição
eBit Web shoppers 32a edição
 

Similar to Open XKE - POC d'une architecture distribuée de calculs financiers par Xavier Bucchiotty

Adopting F# at SBTech
Adopting F# at SBTechAdopting F# at SBTech
Adopting F# at SBTechAntya Dev
 
Code quailty metrics demystified
Code quailty metrics demystifiedCode quailty metrics demystified
Code quailty metrics demystifiedJeroen Resoort
 
Introducing the WSO2 Complex Event Processor
Introducing the WSO2 Complex Event ProcessorIntroducing the WSO2 Complex Event Processor
Introducing the WSO2 Complex Event ProcessorWSO2
 
Akka: Actor Design & Communication Technics
Akka: Actor Design & Communication TechnicsAkka: Actor Design & Communication Technics
Akka: Actor Design & Communication TechnicsAlex Fruzenshtein
 
Very basic functional design patterns
Very basic functional design patternsVery basic functional design patterns
Very basic functional design patternsTomasz Kowal
 
Small pieces loosely joined
Small pieces loosely joinedSmall pieces loosely joined
Small pieces loosely joinedennui2342
 
Reactive programming every day
Reactive programming every dayReactive programming every day
Reactive programming every dayVadym Khondar
 
Rajeev oops 2nd march
Rajeev oops 2nd marchRajeev oops 2nd march
Rajeev oops 2nd marchRajeev Sharan
 
12th CBSE Practical File
12th CBSE Practical File12th CBSE Practical File
12th CBSE Practical FileAshwin Francis
 
Type safe embedded domain-specific languages
Type safe embedded domain-specific languagesType safe embedded domain-specific languages
Type safe embedded domain-specific languagesArthur Xavier
 
Java Foundations: Data Types and Type Conversion
Java Foundations: Data Types and Type ConversionJava Foundations: Data Types and Type Conversion
Java Foundations: Data Types and Type ConversionSvetlin Nakov
 
Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features WSO2
 
Taming Distribution: Formal Protocols for Akka Typed
Taming Distribution: Formal Protocols for Akka TypedTaming Distribution: Formal Protocols for Akka Typed
Taming Distribution: Formal Protocols for Akka TypedRoland Kuhn
 
aming distribution: formal protocols for Akka Typed
aming distribution: formal protocols for Akka Typedaming distribution: formal protocols for Akka Typed
aming distribution: formal protocols for Akka TypedJ On The Beach
 

Similar to Open XKE - POC d'une architecture distribuée de calculs financiers par Xavier Bucchiotty (20)

Adopting F# at SBTech
Adopting F# at SBTechAdopting F# at SBTech
Adopting F# at SBTech
 
F sharp - an overview
F sharp - an overviewF sharp - an overview
F sharp - an overview
 
Code quailty metrics demystified
Code quailty metrics demystifiedCode quailty metrics demystified
Code quailty metrics demystified
 
Introducing the WSO2 Complex Event Processor
Introducing the WSO2 Complex Event ProcessorIntroducing the WSO2 Complex Event Processor
Introducing the WSO2 Complex Event Processor
 
Intro to Akka Streams
Intro to Akka StreamsIntro to Akka Streams
Intro to Akka Streams
 
Akka: Actor Design & Communication Technics
Akka: Actor Design & Communication TechnicsAkka: Actor Design & Communication Technics
Akka: Actor Design & Communication Technics
 
Time for Functions
Time for FunctionsTime for Functions
Time for Functions
 
Very basic functional design patterns
Very basic functional design patternsVery basic functional design patterns
Very basic functional design patterns
 
web3j Overview
web3j Overviewweb3j Overview
web3j Overview
 
Object Oriented Programming with C++
Object Oriented Programming with C++Object Oriented Programming with C++
Object Oriented Programming with C++
 
Small pieces loosely joined
Small pieces loosely joinedSmall pieces loosely joined
Small pieces loosely joined
 
Reactive programming every day
Reactive programming every dayReactive programming every day
Reactive programming every day
 
Rajeev oops 2nd march
Rajeev oops 2nd marchRajeev oops 2nd march
Rajeev oops 2nd march
 
12th CBSE Practical File
12th CBSE Practical File12th CBSE Practical File
12th CBSE Practical File
 
operators.ppt
operators.pptoperators.ppt
operators.ppt
 
Type safe embedded domain-specific languages
Type safe embedded domain-specific languagesType safe embedded domain-specific languages
Type safe embedded domain-specific languages
 
Java Foundations: Data Types and Type Conversion
Java Foundations: Data Types and Type ConversionJava Foundations: Data Types and Type Conversion
Java Foundations: Data Types and Type Conversion
 
Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features
 
Taming Distribution: Formal Protocols for Akka Typed
Taming Distribution: Formal Protocols for Akka TypedTaming Distribution: Formal Protocols for Akka Typed
Taming Distribution: Formal Protocols for Akka Typed
 
aming distribution: formal protocols for Akka Typed
aming distribution: formal protocols for Akka Typedaming distribution: formal protocols for Akka Typed
aming distribution: formal protocols for Akka Typed
 

More from Publicis Sapient Engineering

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainPublicis Sapient Engineering
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurPublicis Sapient Engineering
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...Publicis Sapient Engineering
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin Publicis Sapient Engineering
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?Publicis Sapient Engineering
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?Publicis Sapient Engineering
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéPublicis Sapient Engineering
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...Publicis Sapient Engineering
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !Publicis Sapient Engineering
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizPublicis Sapient Engineering
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéPublicis Sapient Engineering
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectPublicis Sapient Engineering
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...Publicis Sapient Engineering
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018Publicis Sapient Engineering
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...Publicis Sapient Engineering
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...Publicis Sapient Engineering
 

More from Publicis Sapient Engineering (20)

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
 
Xebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to CloudXebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to Cloud
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
 
XebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern InfrastructureXebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern Infrastructure
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
 
XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilité
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID Connect
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
 
XebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an aprèsXebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an après
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
 

Recently uploaded

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
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
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
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
 

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
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
 

Open XKE - POC d'une architecture distribuée de calculs financiers par Xavier Bucchiotty