Reactive programming: origins & ecosystem. Jonas Chapuis, Ph.D.

Size: px
Start display at page:

Download "Reactive programming: origins & ecosystem. Jonas Chapuis, Ph.D."

Transcription

1 Reactive programming: origins & ecosystem Jonas Chapuis, Ph.D.

2 Timeline Functional Reactive Animation (Fran Library, Haskell) Rx 1.0 for.net, Erik Meijer & team at Microsoft Elm language Rx for Java, Netflix Reactive streams standard Rx on all platforms & many other libraries today

3 Reactive programming ecosystem Standardization group Rx.NET 4.0 Flows API.NET RxJava 2.0 Monix (scala) JVM hack RxJS 5.0 Cycle.js Project reactor PHP Web/JS dart streams Kafka Streams

4 ReactiveX (Rx) Everyday at the office functional reactive programming Integrates in imperative languages Strong support for error handling & testing Platforms C# Java JavaScript Scala C++ Python Ruby Swift

5 Origin of FRP Functional Reactive Animation ( 97), Conal Elliott & Paul Hudak Domain-specific language (DSL) for describing animations Vectorized description of movement sampling is done at rendering time (e.g. 60 images/second)

6 Behaviors: continuous values over time f(time) -> value waggle = cos (pi * time) wiggle = sin (pi * time) orbitandlater = orbit `over` later 1 orbit where orbit = movexy wiggle waggle jake patorbitscharlotte = stretch wiggle charlotte `over` movexy wiggle waggle pat Source: Fran library tutorial

7 Even in 3D! spiralturn = turn3 zvector3 (pi*time) (uniongs (map ball [1.. n])) where n = 40 ball i = withcolorg color ( move3 motion ( stretch3 0.1 spherelowres )) where motion = vector3spherical 1.5 (10*phi) phi phi = pi * fromint i / fromint n color = colorhsl (2*phi) Source: Fran library tutorial

8 Events: discrete values over time List[(time, value)] followmouseanddelay u = follow `over` later 1 follow where follow = move (mousemotion u) jake Source: Fran library tutorial

9 Reactive behavior: until behaviora until event -> behaviorb redblue u = buttonmonitor u `over` withcolor c circle where c = red `until` click u -=> blue redbluecycle u = buttonmonitor u `over` withcolor (cycle red blue u) circle where cycle c1 c2 u = c1 `until` nextuser_ click u ==> cycle c2 c1 Source: Fran library tutorial

10 First-order FRP (Elm) DSL for web apps (compiles to JavaScript) Purely functional Drives the Prezi fancy presentations web service Concept of Signal Infinite sequences of values over time (events) Signals keep their history No variable mutation, it s all events (event sourcing) Signals compose together with transforms to describe program flow Signal graphs are static: pipes cannot be rerouted at runtime. This makes for a deterministic program which allows time-travel and hot-swapping.

11 Source: FRP flavors by Elm creator Evan Czaplicki Inputs

12 Source: FRP flavors by Elm creator Evan Czaplicki Transformations

13 State

14 Example: hot-swapping super mario Super mario demo

15 Functional Reactive Programming (FRP) Explicit consideration of time (latency) Traditional program flow: no consideration of latency FRP program: allows writing code which accounts for latency time (scheduler)

16 Interrupt code after 5 min oh my final Runnable dosomelengthystuff = new Thread() public void run() { /* Do stuff here. */ } }; final ExecutorService executor = Executors.newSingleThreadExecutor(); final Future future = executor.submit(stufftodo); executor.shutdown(); // This does not cancel the already-scheduled task. try { future.get(5, TimeUnit.MINUTES); } catch (InterruptedException ie) { /* Handle the interruption. Or ignore it. */ } catch (ExecutionException ee) { /* Handle the error. Or ignore it. */ } catch (TimeoutException te) { /* Handle the timeout. Or ignore it. */ } if (!executor.isterminated()) executor.shutdownnow(); // If you want to stop the code that hasn't finished. TimeoutException!

17 Ok, how about this: Observable.fromCallable(() -> dosomelengthystuff()).timeout(5, TimeUnit.MINUTES).retry(3).subscribe( result => /*handle result*/, exception => /* definite failure after 3 attempts, handle here*/);

18 Functional Reactive Programming (FRP) Composition through functional programming flatmap:

19 Flavors of FRP Representation of time Discrete (most libraries) Continuous (academic) Composition Fixed (Elm) Dynamic (Rx) Drive Push-based (Rx) Pull-based (scala s FS2, Ix)

20 Four essential effects Pull (Synchronous/Interactive) Push (Asynchronous/Reactive) single value Object (or Failure) Promise (aka. Future, Task) multiple values Iterable (Array Set Map) Observable (aka. Stream, Publisher) FRP

21 Yin & Yang Pull (Iterable) Push (Observable) MoveNext() OnNext() In memory collections Database queries Generated sequences Message queues Event streams Asynchronous computations Asynchronous queries Asynchronous enumerations

22 Higher-order FRP: asynchronous data flow Dynamic graphs, thanks to Signals of Signals We can switch signals, create new signals, etc. Switching signals means we lose hot-swapping or timetravelling Since we can t preventively keep all history of signals we haven t created yet!

23 High-order FRP: flatmap Core operation required: flatmap() flatmap: Signal (Signal a) -> Signal a Diagram: Reactive Programming with RxJava, T. Nurkiewicz & Ben Chrisensen, O Reilly

24 RxJS + React + Redux demo Time travelling through redux event sourcing Cancellation support Debouncing, timeout, etc. Avoid event loops with one directional binding & rich actions and epics Testing asynchronicity (cancellation, timeout, errors)

25 Summary Nowadays strong ecosystem, paradigm of choice to program for the cloud

26 Coming up next Typescript: an introduction Declarative and functional programming: program without loops Synchronous and asynchronous programming: latency, callbacks, observer pattern, promises, async/await Functional reactive programming: observables and observers Rx operators and marble diagrams Generators, resource handling, hot and cold observables Concurrency and schedulers, virtual time and testing Error handling, resilience, scalability and backpressure Reactive architectures: react/redux, distributed systems, microservices, actors

Introduction to reactive programming. Jonas Chapuis, Ph.D.

Introduction to reactive programming. Jonas Chapuis, Ph.D. Introduction to reactive programming Jonas Chapuis, Ph.D. Reactive programming is an asynchronous programming paradigm oriented around data flows and the propagation of change wikipedia Things happening

More information

Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase. Naresh Chintalcheru

Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase. Naresh Chintalcheru Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase Naresh Chintalcheru Who is Naresh Technology professional for 18+ years Currently, Technical Architect at Cars.com Lecturer

More information

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved.

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Reactive Programming in Java Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Prerequisites: Functional Programming as in Java 8 Streams of Java 8 Lambda expressions Method references Expectations

More information

Reaktive Anwendungen mit RxJava. Dr. Michael Menzel

Reaktive Anwendungen mit RxJava. Dr. Michael Menzel Reaktive Anwendungen mit RxJava Dr. Michael Menzel DIGITALIZATION DIGITALIZATION DIGITALIZATION DIGITALIZATION REACTIVE ARCHITECTURES How can we build highly interactive (responsive) systems, which are

More information

Mobile application development using the ReactiveX framework

Mobile application development using the ReactiveX framework Masaryk University Faculty of Informatics Mobile application development using the ReactiveX framework Bachelor s Thesis Robin Křenecký Brno, Spring 2018 Masaryk University Faculty of Informatics Mobile

More information

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved.

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Reactive Programming in Java Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Prerequisites: Core Java Lambda Expressions Method references Functional Programming Web - application development

More information

Spring MVC 4.x Spring 5 Web Reactive

Spring MVC 4.x Spring 5 Web Reactive Part 1 Spring MVC 4.x Spring 5 Web Reactive Rossen Stoyanchev @rstoya05 Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive Shortcut Annotations @RequestMapping @GetMapping @PostMapping

More information

Reactive programming and its effect on performance and the development process

Reactive programming and its effect on performance and the development process MASTER S THESIS LUND UNIVERSITY 2017 Reactive programming and its effect on performance and the development process Gustav Hochbergs Department of Computer Science Faculty of Engineering LTH ISSN 1650-2884

More information

Think like an Elm developer

Think like an Elm developer Think like an Elm developer Piper Niehaus Denver, CO, USA Backpacker / skier Nonprofit board chair Software Engineer at Pivotal Pivotal Tracker team Elm in Production since 2016 Internal Products and Services

More information

A Brief History of Distributed Programming: RPC. YOW Brisbane 2016

A Brief History of Distributed Programming: RPC. YOW Brisbane 2016 A Brief History of Distributed Programming: RPC YOW Brisbane 2016 Christopher Meiklejohn Université catholique de Louvain @cmeik christophermeiklejohn.com Caitie McCaffrey Distributed Systems Engineer

More information

Python Asynchronous Programming with Salt Stack (tornado, asyncio) and RxPY

Python Asynchronous Programming with Salt Stack (tornado, asyncio) and RxPY Python Asynchronous Programming with Salt Stack (tornado, asyncio) and RxPY PyCon Korea 2017 Kim Sol kstreee@gmail.com Python Asynchronous Programming with Salt Stack (tornado, asyncio) and RxPY Kim Sol

More information

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke Going Reactive Reactive Microservices based on Vert.x JavaLand Kristian Kottke Whoami Kristian Kottke Lead Software Engineer -> iteratec Interests Software Architecture Big Data Technologies Kristian.Kottke@iteratec.de

More information

Reactive Streams in the Web. Florian Stefan ebay Classifieds Group GOTO Berlin 2017

Reactive Streams in the Web. Florian Stefan ebay Classifieds Group GOTO Berlin 2017 Reactive Streams in the Web Florian Stefan ebay Classifieds Group GOTO Berlin 2017 Who am I? Florian Stefan mobile.de (ebay Classifieds Group) https://ebaytech.berlin/ fstefan@ebay.com @f_s_t_e_f_a_n https://github.com/florian-stefan/

More information

streams streaming data transformation á la carte

streams streaming data transformation á la carte streams streaming data transformation á la carte Deputy CTO #protip Think of the concept of streams as ephemeral, time-dependent, sequences of elements possibly unbounded in length in essence: transformation

More information

Modern app programming

Modern app programming Modern app programming with RxJava and Eclipse Vert.x #QConSP @vertx_project Who am I? Vert.x core team member since 2016 Working at since 2012 Contributing specifically to monitoring and clustering @tsegismont

More information

Rx is a library for composing asynchronous and event-based programs using observable collections.

Rx is a library for composing asynchronous and event-based programs using observable collections. bartde@microsoft.com Slides license: Creative Commons Attribution Non-Commercial Share Alike See http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode Too hard today (f g)(x) = f(g(x)) Rx is a library

More information

ECE 587 Hardware/Software Co-Design Lecture 07 Concurrency in Practice Shared Memory I

ECE 587 Hardware/Software Co-Design Lecture 07 Concurrency in Practice Shared Memory I ECE 587 Hardware/Software Co-Design Spring 2018 1/15 ECE 587 Hardware/Software Co-Design Lecture 07 Concurrency in Practice Shared Memory I Professor Jia Wang Department of Electrical and Computer Engineering

More information

Full Stack boot camp

Full Stack boot camp Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building

More information

The Reactive Landscape Clement Escoffier, Vert.x Core Developer, Red Hat

The Reactive Landscape   Clement Escoffier, Vert.x Core Developer, Red Hat The Reactive Landscape http://bit.ly/jfokus-reactive Clement Escoffier, Vert.x Core Developer, Red Hat Reactive all the things??? Elasticity Manifesto Actor System Asynchrony Programming Events 2 Message

More information

Asset tracking: Monitoring high-value mobile assets like locomotives, marine vessels and industrial equipment. Condition based Maintenance.

Asset tracking: Monitoring high-value mobile assets like locomotives, marine vessels and industrial equipment. Condition based Maintenance. 1 The Internet of Things (IoT) - expansion of the Internet to include physical devices; thereby bridging the divide between the physical world and cyberspace. These devices or \things" are uniquely identifiable,

More information

First Programming Language in CS Education The Arguments for Scala

First Programming Language in CS Education The Arguments for Scala First Programming Language in CS Education The Arguments for Scala WORLDCOMP 2011 By Dr. Mark C. Lewis Trinity University Disclaimer I am writing a Scala textbook that is under contract with CRC Press.

More information

Scala, Your Next Programming Language

Scala, Your Next Programming Language Scala, Your Next Programming Language (or if it is good enough for Twitter, it is good enough for me) WORLDCOMP 2011 By Dr. Mark C. Lewis Trinity University Disclaimer I am writing a Scala textbook that

More information

BE PROACTIVE USE REACTIVE

BE PROACTIVE USE REACTIVE BE PROACTIVE USE REACTIVE This morning we re going to talk about reactive programming. We ll cover some of the what, why, and how, hopefully with a bend towards grasping the fundamentals. We ll have some

More information

Optimizing Enterprise Java for a Microservices Architecture Otávio

Optimizing Enterprise Java for a Microservices Architecture Otávio Optimizing Enterprise Java for a Microservices Architecture Otávio Santana @otaviojava otaviojava@apache.org Enterprise Java Standards History J2EE 1.2 2000 Release Cadence J2EE 1.3 J2EE 1.4 2005 Java

More information

Cross-Platform, Functional, Reactive GUIs

Cross-Platform, Functional, Reactive GUIs Cross-Platform, Functional, Reactive GUIs Welcome! CARLOS AGUAYO SOFTWARE ENGINEER MANAGER @carlosaguayo81 Credits ANTONIO ANDRADE SOFTWARE ARCHITECT SUVAJIT GUPTA VP, ENGINEERING Modern UIs: Characteristics

More information

An Embedded Modeling Language Approach to Interactive 3D and Multimedia Animation 1

An Embedded Modeling Language Approach to Interactive 3D and Multimedia Animation 1 (To appear in IEEE Transactions on Software Engineering) An Embedded Modeling Language Approach to Interactive 3D and Multimedia Animation 1 Conal Elliott Microsoft Research http://research.microsoft.com/~conal

More information

Functional Programming Invades Architecture. George Fairbanks SATURN May 2017

Functional Programming Invades Architecture. George Fairbanks SATURN May 2017 Functional Programming Invades Architecture George Fairbanks SATURN 2017 3 May 2017 1 Programming in the Large Yesterday: Functional Programming is PITS, i.e., just inside modules Today: FP is also PITL

More information

Fire Exit Announcement

Fire Exit Announcement Fire Exit Announcement Please note the locations of the surrounding emergency exits & located the nearest lit EXIT sign to you In the event of a fire alarm or other emergency, please calmly exit to the

More information

Functional Programming Patterns And Their Role Instructions

Functional Programming Patterns And Their Role Instructions Functional Programming Patterns And Their Role Instructions In fact, the relabelling function is precisely the same as before! Phil Wadler's Chapter 7 of The Implementation of Functional Programming Languages.

More information

Process Concepts. CSC400 - Operating Systems. 3. Process Concepts. J. Sumey

Process Concepts. CSC400 - Operating Systems. 3. Process Concepts. J. Sumey CSC400 - Operating Systems 3. Process Concepts J. Sumey Overview Concurrency Processes & Process States Process Accounting Interrupts & Interrupt Processing Interprocess Communication CSC400 - Process

More information

The Rise and Rise of Dataflow in the JavaVerse

The Rise and Rise of Dataflow in the JavaVerse The Rise and Rise of Dataflow in the JavaVerse @russel_winder russel@winder.org.uk https://www.russel.org.uk 1 The Plan for the Session Stuff. More stuff. Even more stuff possibly. Summary and conclusions

More information

CPL 2016, week 6. Asynchronous execution. Oleg Batrashev. March 14, Institute of Computer Science, Tartu, Estonia

CPL 2016, week 6. Asynchronous execution. Oleg Batrashev. March 14, Institute of Computer Science, Tartu, Estonia CPL 2016, week 6 Asynchronous execution Oleg Batrashev Institute of Computer Science, Tartu, Estonia March 14, 2016 Overview Studied so far: 1. Inter-thread visibility: JMM 2. Inter-thread synchronization:

More information

IBM s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM s sole discretion.

IBM s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM s sole discretion. Please note Copyright 2018 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM IBM s statements

More information

A Formal Model for Direct-style Asynchronous Observables

A Formal Model for Direct-style Asynchronous Observables A Formal Model for Direct-style Asynchronous Observables Philipp Haller! KTH Royal Institute of Technology, Sweden!! Heather Miller! EPFL, Switzerland!! 27th Nordic Workshop on Programming Theory (NWPT)!

More information

Full Stack Reactive Angular 2, RxJava/JS, Vert.x, Docker

Full Stack Reactive Angular 2, RxJava/JS, Vert.x, Docker Full Stack Reactive Angular 2, RxJava/JS, Vert.x, Docker 02.03.2017 About Myself DR. ALEXANDER FRIED Chief Technology Officer 2 OUR SOLUTIONS DIGITAL ASSET MANAGEMENT Organize & Share Any File, Any Format,

More information

AWS Lambda in (a bit of) theory and in action. Adam Smolnik

AWS Lambda in (a bit of) theory and in action. Adam Smolnik AWS Lambda in (a bit of) theory and in action Adam Smolnik A bit of a function theory The term Lambda (λ) originated from Lambda calculus - a theoretical universal model for describing functions and their

More information

JS Event Loop, Promises, Async Await etc. Slava Kim

JS Event Loop, Promises, Async Await etc. Slava Kim JS Event Loop, Promises, Async Await etc Slava Kim Synchronous Happens consecutively, one after another Asynchronous Happens later at some point in time Parallelism vs Concurrency What are those????

More information

Refactoring to Functional. Hadi Hariri

Refactoring to Functional. Hadi Hariri Refactoring to Functional Hadi Hariri Functional Programming In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs,

More information

The Java ExecutorService (Part 1)

The Java ExecutorService (Part 1) The Java ExecutorService (Part 1) Douglas C. Schmidt d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA Learning

More information

Practical RxJava @SimonBasle @Couchbase @InfoQFR @bbl_fr the Plan & Goals RxJava 101 RxJava 101 migrate a Legacy application RxJava 101 learn Operators of interest migrate a Legacy application RxJava 101

More information

The Road to Reactive with RxJava. Or: How to use non blocking I/O without wanting to kill yourself

The Road to Reactive with RxJava. Or: How to use non blocking I/O without wanting to kill yourself The Road to Reactive with RxJava Or: How to use non blocking I/O without wanting to kill yourself Legacy An accomplishment that remains relevant long after a person has died Software is not so lucky

More information

A Sense of Time for JavaScript and Node.js

A Sense of Time for JavaScript and Node.js A Sense of Time for JavaScript and Node.js First-Class Timeouts as a Cure for Event Handler Poisoning James C. Davis Eric R. Williamson Dongyoon Lee COMPUTER SCIENCE - 1 - Contributions Attack: Event Handler

More information

AngularJS Fundamentals

AngularJS Fundamentals AngularJS Fundamentals by Jeremy Zerr Blog: http://www.jeremyzerr.com LinkedIn: http://www.linkedin.com/in/jrzerr Twitter: http://www.twitter.com/jrzerr What is AngularJS Open Source Javascript MVC/MVVM

More information

Architecture using Functional Programming concepts < + >

Architecture using Functional Programming concepts < + > Architecture using Functional Programming concepts < + > Jorge Castillo @JorgeCastilloPr 1 2 Kotlin and Functional Programming FP means concern separation (declarative computations vs runtime execution),

More information

JVM ByteCode Interpreter

JVM ByteCode Interpreter JVM ByteCode Interpreter written in Haskell (In under 1000 Lines of Code) By Louis Jenkins Presentation Schedule ( 15 Minutes) Discuss and Run the Virtual Machine first

More information

Big data systems 12/8/17

Big data systems 12/8/17 Big data systems 12/8/17 Today Basic architecture Two levels of scheduling Spark overview Basic architecture Cluster Manager Cluster Cluster Manager 64GB RAM 32 cores 64GB RAM 32 cores 64GB RAM 32 cores

More information

UI-Testing, Reactive Programming and some Kotlin.

UI-Testing, Reactive Programming and some Kotlin. UI-Testing, Reactive Programming and some Kotlin anders.froberg@liu.se Load up your guns, and bring your friends This is the end, My only Friend, the end Äntligen stod prästen i predikstolen I ll be back

More information

MEAP Edition Manning Early Access Program Rx.NET in Action Version 11

MEAP Edition Manning Early Access Program Rx.NET in Action Version 11 MEAP Edition Manning Early Access Program Rx.NET in Action Version 11 Copyright 2016 Manning Publications For more information on this and other Manning titles go to www.manning.com Manning Publications

More information

An overview of (a)sync & (non-) blocking

An overview of (a)sync & (non-) blocking An overview of (a)sync & (non-) blocking or why is my web-server not responding? with funny fonts! Experiment & reproduce https://github.com/antonfagerberg/play-performance sync & blocking code sync &

More information

High performance reactive applications with Vert.x

High performance reactive applications with Vert.x High performance reactive applications with Vert.x Tim Fox Red Hat Bio Employed By Red Hat to lead the Vert.x project Worked in open source exclusively for the past 9 years Some projects I've been involved

More information

Using the SDACK Architecture to Build a Big Data Product. Yu-hsin Yeh (Evans Ye) Apache Big Data NA 2016 Vancouver

Using the SDACK Architecture to Build a Big Data Product. Yu-hsin Yeh (Evans Ye) Apache Big Data NA 2016 Vancouver Using the SDACK Architecture to Build a Big Data Product Yu-hsin Yeh (Evans Ye) Apache Big Data NA 2016 Vancouver Outline A Threat Analytic Big Data product The SDACK Architecture Akka Streams and data

More information

Implementation of Programming Languages (project) Guido Salvaneschi Joscha Drechsler

Implementation of Programming Languages (project) Guido Salvaneschi Joscha Drechsler Implementation of Programming Languages (project) Guido Salvaneschi Joscha Drechsler Outline Administrivia Intro Schedule Topics GENERAL INFORMATION Administrivia Guido Salvaneschi, Joscha Drechsler Find

More information

Microprofile Fault Tolerance. Emily Jiang 1.0,

Microprofile Fault Tolerance. Emily Jiang 1.0, Microprofile Fault Tolerance Emily Jiang 1.0, 2017-09-13 Table of Contents 1. Architecture.............................................................................. 2 1.1. Rational..............................................................................

More information

Advanced React JS + Redux Development

Advanced React JS + Redux Development Advanced React JS + Redux Development Course code: IJ - 27 Course domain: Software Engineering Number of modules: 1 Duration of the course: 40 astr. hours / 54 study 1 hours Sofia, 2016 Copyright 2003-2016

More information

IA010: Principles of Programming Languages

IA010: Principles of Programming Languages IA010: Principles of Programming Languages Introduction and course organization Achim Blumensath blumens@fi.muni.cz Faculty of Informatics, Masaryk University, Brno Warm-up: A Quiz What does this program

More information

CSP IN JAVASCRIPT.

CSP IN JAVASCRIPT. CSP IN JAVASCRIPT Page 1 of 31 VINCENZO CHIANESE BUGS INTRODUCER AT APIARY https://github.com/xvincentx @D3DVincent https://vncz.js.org Page 2 of 31 COMMUNICATING SEQUENTIAL PROCESSES Page 3 of 31 THE

More information

RxJava. and WHY you should care. Jeroen Tietema

RxJava. and WHY you should care. Jeroen Tietema RxJava and WHY you should care Jeroen Tietema Overview intro of RxJava why? some tips What is RxJava? Java implementation of Reactive Extensions Reactive Extensions is.net implementation of Reactive Programming

More information

Swift 5, ABI Stability and

Swift 5, ABI Stability and Swift 5, ABI Stability and Concurrency @phillfarrugia Important Documents Concurrency Manifesto by Chris Lattner https: /gist.github.com/lattner/ 31ed37682ef1576b16bca1432ea9f782 Kicking off Concurrency

More information

Backend Development. SWE 432, Fall Web Application Development

Backend Development. SWE 432, Fall Web Application Development Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy

More information

Futures. Prof. Clarkson Fall Today s music: It's Gonna be Me by *NSYNC

Futures. Prof. Clarkson Fall Today s music: It's Gonna be Me by *NSYNC Futures Prof. Clarkson Fall 2017 Today s music: It's Gonna be Me by *NSYNC Review Previously in 3110: Functional programming Modular programming Interpreters Formal methods Final unit of course: Advanced

More information

Patterns of Resilience How to build robust, scalable & responsive systems

Patterns of Resilience How to build robust, scalable & responsive systems Patterns of Resilience How to build robust, scalable & responsive systems Uwe Friedrichsen (codecentric AG) GOTO Night Amsterdam 18. May 2015 @ufried Uwe Friedrichsen uwe.friedrichsen@codecentric.de http://slideshare.net/ufried

More information

Reactive Java: Promises and Streams with Reakt. Geoff Chandler and Rick Hightower

Reactive Java: Promises and Streams with Reakt. Geoff Chandler and Rick Hightower Reactive Java: Promises and Streams with Reakt Geoff Chandler and Rick Hightower What is Reakt in 30 seconds! Reakt General purpose library for callback coordination and streams Implements JavaScript

More information

VALLIAMMAI ENGINEERING COLLEGE

VALLIAMMAI ENGINEERING COLLEGE VALLIAMMAI ENGINEERING COLLEGE SRM Nagar, Kattankulathur 603 203 DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING QUESTION BANK B.E. - Electrical and Electronics Engineering IV SEMESTER CS6456 - OBJECT ORIENTED

More information

The Future of the Realtime Web BETTER APIS WITH GRAPHQL. Josh

The Future of the Realtime Web BETTER APIS WITH GRAPHQL. Josh The Future of the Realtime Web BETTER APIS WITH GRAPHQL Josh Price @joshprice STEPPING STONES TO FP Language (Elixir) Strongly-Typed APIs (GraphQL) GRAPHQL WAS HERE? http://whiteafrican.com/2008/05/12/crossing-the-mapping-chasm/

More information

Reactive Integrations - Caveats and bumps in the road explained

Reactive Integrations - Caveats and bumps in the road explained Reactive Integrations - Caveats and bumps in the road explained @myfear Why is everybody talking about cloud and microservices and what the **** is streaming? Biggest Problems in Software Development High

More information

MCSA Universal Windows Platform. A Success Guide to Prepare- Programming in C# edusum.com

MCSA Universal Windows Platform. A Success Guide to Prepare- Programming in C# edusum.com 70-483 MCSA Universal Windows Platform A Success Guide to Prepare- Programming in C# edusum.com Table of Contents Introduction to 70-483 Exam on Programming in C#... 2 Microsoft 70-483 Certification Details:...

More information

[module lab 1.3] CANCELLATION AND SHUTDOWN

[module lab 1.3] CANCELLATION AND SHUTDOWN v1.0 BETA Sistemi Concorrenti e di Rete LS II Facoltà di Ingegneria - Cesena a.a 2008/2009 [module lab 1.3] CANCELLATION AND SHUTDOWN 1 STOPPING THREADS AND TASKS An activity is cancellable if external

More information

CloudI Integration Framework. Chicago Erlang User Group May 27, 2015

CloudI Integration Framework. Chicago Erlang User Group May 27, 2015 CloudI Integration Framework Chicago Erlang User Group May 27, 2015 Speaker Bio Bruce Kissinger is an Architect with Impact Software LLC. Linkedin: https://www.linkedin.com/pub/bruce-kissinger/1/6b1/38

More information

Programmable Peer-to-Peer Systems

Programmable Peer-to-Peer Systems Programmable Peer-to-Peer Systems p. 1/18 Programmable Peer-to-Peer Systems Dimitris Vyzovitis vyzo@media.mit.edu Viral Communications MIT Media Laboratory Programmable Peer-to-Peer Systems p. 2/18 Overview

More information

LINQ, Take Two Realizing the LINQ to Everything Dream. Bart J.F. De Smet Software Development Engineer

LINQ, Take Two Realizing the LINQ to Everything Dream. Bart J.F. De Smet Software Development Engineer LINQ, Take Two Realizing the LINQ to Everything Dream Bart J.F. De Smet Software Development Engineer bartde@microsoft.com A Historical Perspective 5 years ago Little recent innovation Censored Where s

More information

Explicitly Comprehensible Functional Reactive Programming

Explicitly Comprehensible Functional Reactive Programming Steven Krouse steveykrouse@gmail.com ABSTRACT Functional Reactive programs written in The Elm Architecture are difficult to comprehend without reading every line of code. A more modular architecture would

More information

DHANALAKSHMI SRINIVASAN COLLEGE OF ENGINEERING AND TECHNOLOGY ACADEMIC YEAR (ODD SEM)

DHANALAKSHMI SRINIVASAN COLLEGE OF ENGINEERING AND TECHNOLOGY ACADEMIC YEAR (ODD SEM) DHANALAKSHMI SRINIVASAN COLLEGE OF ENGINEERING AND TECHNOLOGY ACADEMIC YEAR 2018-19 (ODD SEM) DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING SUB: OBJECT ORIENTED PROGRAMMING SEM/YEAR: III SEM/ II YEAR

More information

Angular 4 Syllabus. Module 1: Introduction. Module 2: AngularJS to Angular 4. Module 3: Introduction to Typescript

Angular 4 Syllabus. Module 1: Introduction. Module 2: AngularJS to Angular 4. Module 3: Introduction to Typescript Angular 4 Syllabus Module 1: Introduction Course Objectives Course Outline What is Angular Why use Angular Module 2: AngularJS to Angular 4 What s Changed Semantic Versioning Module 3: Introduction to

More information

Erik Meijer Wes Dyer Jeffrey van Gogh Bart de Smet Matthew Podwysocki

Erik Meijer Wes Dyer Jeffrey van Gogh Bart de Smet Matthew Podwysocki Volta Quo Vadis? Erik Meijer Wes Dyer Jeffrey van Gogh Bart de Smet Matthew Podwysocki What? Fundamentally change the way you think about coordinating and orchestrating asynchronous and event-based programming

More information

2. Department of Computer Science, Yale University

2. Department of Computer Science, Yale University Report on the Visit to Department of Computer Sciences, Yale University Wenbiao Wu ESD Lab, Department of Electronics Royal Institute of Technology Sweden 1. Introduction Department of Computer Science

More information

Seminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh.

Seminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh. Scientific Computing Aachen, 6 Feb 2014 navid.abbaszadeh@rwth-aachen.de Overview Trends Introduction Paradigms, Data Structures, Syntax Compilation & Execution Concurrency Model Reference Types Performance

More information

Elmulating JavaScript

Elmulating JavaScript Linköping University Department of Computer science Master thesis Computer science Spring term 2016-07-01 LIU-IDA/LITH-EX-A 16/042--SE Elmulating JavaScript Nils Eriksson & Christofer Ärleryd Tutor, Anders

More information

To appear in Proc. Workshop on Computation: Theory and Practice (WCTP 2016), Sep., 2016.

To appear in Proc. Workshop on Computation: Theory and Practice (WCTP 2016), Sep., 2016. To appear in Proc. Workshop on Computation: Theory and Practice (WCTP 2016), Sep., 2016. CFRP: A Functional Reactive Programming Language for Small-Scale Embedded Systems Kohei Suzuki Kanato Nagayama Kensuke

More information

Implementation of Programming Languages. Guido Salvaneschi Jurgen Van Ham

Implementation of Programming Languages. Guido Salvaneschi Jurgen Van Ham Implementation of Programming Languages Guido Salvaneschi Jurgen Van Ham Outline Administrivia Intro Schedule Topics GENERAL INFORMATION Administrivia Guido Salvaneschi, Jurgen van Ham Find us by email

More information

Lecture 7: February 10

Lecture 7: February 10 CMPSCI 677 Operating Systems Spring 2016 Lecture 7: February 10 Lecturer: Prashant Shenoy Scribe: Tao Sun 7.1 Server Design Issues 7.1.1 Server Design There are two types of server design choices: Iterative

More information

Reactive Programming with RxJS 5

Reactive Programming with RxJS 5 Extracted from: Reactive Programming with RxJS 5 Untangle Your Asynchronous JavaScript Code This PDF file contains pages extracted from Reactive Programming with RxJS 5, published by the Pragmatic Bookshelf.

More information

Going Reactive with Spring 5. JavaSkop 18

Going Reactive with Spring 5. JavaSkop 18 Going Reactive with Spring 5 JavaSkop 18 Who am I? Java Technical Lead at Seavus 17 years in the industry Spring Certified Professional You can find me at: drazen.nikolic@seavus.com @drazenis programminghints.com

More information

Concurrency Utilities: JSR-166

Concurrency Utilities: JSR-166 Concurrency Concurrency Utilities: JSR-166 Enables development of simple yet powerful multi-threaded applications > Like Collection provides rich data structure handling capability Beat C performance in

More information

Getting Started With Serverless: Key Use Cases & Design Patterns

Getting Started With Serverless: Key Use Cases & Design Patterns Hybrid clouds that just work Getting Started With Serverless: Key Use Cases & Design Patterns Jennifer Gill Peter Fray Vamsi Chemitiganti Sept 20, 2018 Platform9 Systems 1 Agenda About Us Introduction

More information

Alan Bateman Java Platform Group, Oracle November Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1

Alan Bateman Java Platform Group, Oracle November Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1 Alan Bateman Java Platform Group, Oracle November 2018 Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1 Project Loom Continuations Fibers Tail-calls Copyright 2018, Oracle and/or its

More information

Building Fault Tolerant Micro Services

Building Fault Tolerant Micro Services Building Fault Tolerant Micro Services Kristoffer Erlandsson kristoffer.erlandsson@avanza.se @kerlandsson Building Fault Tolerant Why? Micro Services Stability patterns Failure modes Monitoring guidelines

More information

Introduction to Coroutines. Roman Elizarov elizarov at JetBrains

Introduction to Coroutines. Roman Elizarov elizarov at JetBrains Introduction to Coroutines Roman Elizarov elizarov at JetBrains Asynchronous programming How do we write code that waits for something most of the time? A toy problem Kotlin 1 fun requesttoken(): Token

More information

Wallingford: Toward a Constraint Reactive Programming Language

Wallingford: Toward a Constraint Reactive Programming Language Wallingford: Toward a Constraint Reactive Programming Language Alan Borning VPRI Technical Report TR-2016-001 Viewpoints Research Institute, 1025 Westwood Blvd 2nd flr, Los Angeles, CA 90024 t: (310) 208-0524

More information

DATA SCIENCE USING SPARK: AN INTRODUCTION

DATA SCIENCE USING SPARK: AN INTRODUCTION DATA SCIENCE USING SPARK: AN INTRODUCTION TOPICS COVERED Introduction to Spark Getting Started with Spark Programming in Spark Data Science with Spark What next? 2 DATA SCIENCE PROCESS Exploratory Data

More information

Keep Learning with Oracle University

Keep Learning with Oracle University Keep Learning with Oracle University Classroom Training Learning Subscription Live Virtual Class Training On Demand Cloud Technology Applications Industries education.oracle.com 3 Session Surveys Help

More information

CMSC 433 Programming Language Technologies and Paradigms. Concurrency

CMSC 433 Programming Language Technologies and Paradigms. Concurrency CMSC 433 Programming Language Technologies and Paradigms Concurrency What is Concurrency? Simple definition Sequential programs have one thread of control Concurrent programs have many Concurrency vs.

More information

Reactive Programming with Vert.x

Reactive Programming with Vert.x Reactive Programming with Vert.x Embrace asynchronous to build responsive systems Clement Escoffier Principal Software Engineer, Red Hat Reactive The new gold rush? Reactive system, reactive manifesto,

More information

Reactive Extensions in JUCE. Martin Finke ADC 2017

Reactive Extensions in JUCE. Martin Finke ADC 2017 Reactive Extensions in JUCE Martin Finke ADC 2017 What is Rx? What is Rx? Programming Style for Bindings (think Value::Listener) Observable, Observer Language-independent (RxJava, RxJS, Rx.NET, ) RxCpp

More information

Parallel Programming Practice

Parallel Programming Practice Parallel Programming Practice Threads and Tasks Susanne Cech Previtali Thomas Gross Last update: 2009-10-29, 09:12 Thread objects java.lang.thread Each thread is associated with an instance of the class

More information

An Introduction to Developing for Cisco Kinetic

An Introduction to Developing for Cisco Kinetic An Introduction to Developing for Cisco Kinetic Krishna Chengavalli Technical Marketing Engineer IoT Software Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session

More information

Software Architecture

Software Architecture Software Architecture Lecture 5 Call-Return Systems Rob Pettit George Mason University last class data flow data flow styles batch sequential pipe & filter process control! process control! looping structure

More information

Fresh Async With Kotlin. Presented at QCon SF, 2017 /Roman JetBrains

Fresh Async With Kotlin. Presented at QCon SF, 2017 /Roman JetBrains Fresh Async With Kotlin Presented at QCon SF, 2017 /Roman Elizarov @ JetBrains Speaker: Roman Elizarov 16+ years experience Previously developed high-perf trading software @ Devexperts Teach concurrent

More information

MultiThreading 07/01/2013. Session objectives. Introduction. Introduction. Advanced Java Programming Course

MultiThreading 07/01/2013. Session objectives. Introduction. Introduction. Advanced Java Programming Course Advanced Java Programming Course MultiThreading By Võ Văn Hải Faculty of Information Technologies Industrial University of Ho Chi Minh City Session objectives Introduction Creating thread Thread class

More information

ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu

ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu GETTING STARTED WITH TYPESCRIPT Installing TypeScript Compiling the code Building a simple demo. UNDERSTANDING CLASSES Building a class Adding properties Demo of

More information

"Charting the Course... Comprehensive Angular. Course Summary

Charting the Course... Comprehensive Angular. Course Summary Description Course Summary Angular is a powerful client-side JavaScript framework from Google that supports simple, maintainable, responsive, and modular applications. It uses modern web platform capabilities

More information