This document discusses functional reactive programming and RxJava. It begins with an overview of functional reactive programming principles like being responsive, resilient, elastic and message-driven. It then covers architectural styles like hexagonal architecture and onion architecture. The rest of the document dives deeper into RxJava concepts like Observables, Observers, Operators, and Schedulers. It provides code examples to demonstrate merging, filtering and transforming streams of data asynchronously using RxJava.
Building Cloud-Native App Series - Part 1 of 11
Microservices Architecture Series
Design Thinking, Lean Startup, Agile (Kanban, Scrum),
User Stories, Domain-Driven Design
Building Cloud-Native App Series - Part 1 of 11
Microservices Architecture Series
Design Thinking, Lean Startup, Agile (Kanban, Scrum),
User Stories, Domain-Driven Design
Building Cloud-Native App Series - Part 2 of 11
Microservices Architecture Series
Event Sourcing & CQRS,
Kafka, Rabbit MQ
Case Studies (E-Commerce App, Movie Streaming, Ticket Booking, Restaurant, Hospital Management)
Building Cloud-Native App Series - Part 3 of 11
Microservices Architecture Series
AWS Kinesis Data Streams
AWS Kinesis Firehose
AWS Kinesis Data Analytics
Apache Flink - Analytics
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Guido Schmutz
Independent of the source of data, the integration and analysis of event streams gets more important in the world of sensors, social media streams and Internet of Things. Events have to be accepted quickly and reliably, they have to be distributed and analyzed, often with many consumers or systems interested in all or part of the events. In this session we compare two popular Streaming Analytics solutions: Spark Streaming and Kafka Streams.
Spark is fast and general engine for large-scale data processing and has been designed to provide a more efficient alternative to Hadoop MapReduce. Spark Streaming brings Spark's language-integrated API to stream processing, letting you write streaming applications the same way you write batch jobs. It supports both Java and Scala.
Kafka Streams is the stream processing solution which is part of Kafka. It is provided as a Java library and by that can be easily integrated with any Java application.
Redis and Kafka - Advanced Microservices Design Patterns SimplifiedAllen Terleto
The adoption and popularity of the microservices architecture continues to grow across a spectrum of enterprises in every industry. Although a consensus on an implementation standard has yet to be reached, advanced design patterns and lessons learned about the complexities and pitfalls of deploying microservices at scale have been established by thought leaders and the development community. With Redis and Kafka becoming de facto standards across most microservices architectures, we will discuss how their combination can be used to simplify the implementation of event-driven design patterns that will provide real-time performance, scalability, resiliency, traceability to ensure compliance, observability, reduced technology sprawl, and scale to thousands of services. In this discussion, we will decompose a real-time event-driven payment-processing microservices workflow to explore capturing telemetry data, event sourcing, CQRS, orchestrated SAGA workflows, inter-service communication, state machines, and more.
Building Streaming Data Applications Using Apache KafkaSlim Baltagi
Apache Kafka evolved from an enterprise messaging system to a fully distributed streaming data platform for building real-time streaming data pipelines and streaming data applications without the need for other tools/clusters for data ingestion, storage and stream processing.
In this talk you will learn more about:
1. A quick introduction to Kafka Core, Kafka Connect and Kafka Streams: What is and why?
2. Code and step-by-step instructions to build an end-to-end streaming data application using Apache Kafka
Building Cloud-Native App Series - Part 11 of 11
Microservices Architecture Series
Service Mesh - Observability
- Zipkin
- Prometheus
- Grafana
- Kiali
Scaling a backend for a big data and blockchain environment by Rafael Ríos at...Big Data Spain
2gether is a financial platform based on Blockchain, Big Data and Artificial Intelligence that allows interaction between users and third-party services in a single interface.
https://www.bigdataspain.org/2017/talk/scaling-a-backend-for-a-big-data-and-blockchain-environment
Big Data Spain 2017
November 16th - 17th Kinépolis Madrid
Building Cloud-Native App Series - Part 4 of 11
Microservices Architecture Series
NoSQL vs SQL
Redis, MongoDB, AWS DynamoDB
Big Data Design Patterns
Sharding, Partitions
Machine Learning At Speed: Operationalizing ML For Real-Time Data StreamsLightbend
Audience: Architects, Data Scientists, Developers
Technical level: Introductory
From home intrusion detection, to self-driving cars, to keeping data center operations healthy, Machine Learning (ML) has become one of the hottest topics in software engineering today. While much of the focus has been on the actual creation of the algorithms used in ML, the less talked-about challenge is how to serve these models in production, often utilizing real-time streaming data.
The traditional approach to model serving is to treat the model as code, which means that ML implementation has to be continually adapted for model serving. As the amount of machine learning tools and techniques grows, the efficiency of such an approach is becoming more questionable. Additionally, machine learning and model serving are driven by very different quality of service requirements; while machine learning is typically batch, dealing with scalability and processing power, model serving is mostly concerned with performance and stability.
In this webinar with O’Reilly author and Lightbend Principal Architect, Boris Lublinsky, we will define an alternative approach to model serving, based on treating the model itself as data. Using popular frameworks like Akka Streams and Apache Flink, Boris will review how to implement this approach, explaining how it can help you:
* Achieve complete decoupling between the model implementation for machine learning and model serving, enforcing better standardization of your model serving implementation.
* Enable dynamic updates of the served model without having to restart the system.
* Utilize Tensorflow and PMML as model representation and their usage for building “real time updatable” model serving architecture.
Designing For Multicloud, CF Summit Frankfurt 2016Mark D'Cunha
Your carefully planned cloud strategy and technology architecture is useless, because multicloud changes everything. In this session, we will explore what multicloud means and why your business will force it upon you.
We provide examples of customers successfully using multicloud models, identify early patterns of usage and how to leverage them. You’ll learn about how Cloud Foundry provides unique capabilities to simplify and implement multicloud deployments. We’ll cover how you can use features like service brokers, service plans, asynchronous provisioning and arbitrary parameters to deploy muilticloud, while still maintaining a consistent experience for your application developers and IT operations staff.
"Angular 2: core concepts" by Fabio Biondi, Matteo Ronchi.
Angular 2 risolve problematiche e lacune della precedente versione, prestando particolare attenzione alle performance, al supporto mobile e alla qualità e leggibilità del codice prodotto. In questo talk verranno illustrate le funzionalità più significative tra cui: - nuova architettura totalmente orientata ai componenti - rimozione di $scope e del dirty checking ($digest) - adozione di un flow unidirezionale - utilizzo di Typescript, ES6 o ES5 - completa rivisitazione del motore di Dependency Injection - nuove procedure per il bootstrap dell’applicazione.
Building Cloud-Native App Series - Part 2 of 11
Microservices Architecture Series
Event Sourcing & CQRS,
Kafka, Rabbit MQ
Case Studies (E-Commerce App, Movie Streaming, Ticket Booking, Restaurant, Hospital Management)
Building Cloud-Native App Series - Part 3 of 11
Microservices Architecture Series
AWS Kinesis Data Streams
AWS Kinesis Firehose
AWS Kinesis Data Analytics
Apache Flink - Analytics
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Guido Schmutz
Independent of the source of data, the integration and analysis of event streams gets more important in the world of sensors, social media streams and Internet of Things. Events have to be accepted quickly and reliably, they have to be distributed and analyzed, often with many consumers or systems interested in all or part of the events. In this session we compare two popular Streaming Analytics solutions: Spark Streaming and Kafka Streams.
Spark is fast and general engine for large-scale data processing and has been designed to provide a more efficient alternative to Hadoop MapReduce. Spark Streaming brings Spark's language-integrated API to stream processing, letting you write streaming applications the same way you write batch jobs. It supports both Java and Scala.
Kafka Streams is the stream processing solution which is part of Kafka. It is provided as a Java library and by that can be easily integrated with any Java application.
Redis and Kafka - Advanced Microservices Design Patterns SimplifiedAllen Terleto
The adoption and popularity of the microservices architecture continues to grow across a spectrum of enterprises in every industry. Although a consensus on an implementation standard has yet to be reached, advanced design patterns and lessons learned about the complexities and pitfalls of deploying microservices at scale have been established by thought leaders and the development community. With Redis and Kafka becoming de facto standards across most microservices architectures, we will discuss how their combination can be used to simplify the implementation of event-driven design patterns that will provide real-time performance, scalability, resiliency, traceability to ensure compliance, observability, reduced technology sprawl, and scale to thousands of services. In this discussion, we will decompose a real-time event-driven payment-processing microservices workflow to explore capturing telemetry data, event sourcing, CQRS, orchestrated SAGA workflows, inter-service communication, state machines, and more.
Building Streaming Data Applications Using Apache KafkaSlim Baltagi
Apache Kafka evolved from an enterprise messaging system to a fully distributed streaming data platform for building real-time streaming data pipelines and streaming data applications without the need for other tools/clusters for data ingestion, storage and stream processing.
In this talk you will learn more about:
1. A quick introduction to Kafka Core, Kafka Connect and Kafka Streams: What is and why?
2. Code and step-by-step instructions to build an end-to-end streaming data application using Apache Kafka
Building Cloud-Native App Series - Part 11 of 11
Microservices Architecture Series
Service Mesh - Observability
- Zipkin
- Prometheus
- Grafana
- Kiali
Scaling a backend for a big data and blockchain environment by Rafael Ríos at...Big Data Spain
2gether is a financial platform based on Blockchain, Big Data and Artificial Intelligence that allows interaction between users and third-party services in a single interface.
https://www.bigdataspain.org/2017/talk/scaling-a-backend-for-a-big-data-and-blockchain-environment
Big Data Spain 2017
November 16th - 17th Kinépolis Madrid
Building Cloud-Native App Series - Part 4 of 11
Microservices Architecture Series
NoSQL vs SQL
Redis, MongoDB, AWS DynamoDB
Big Data Design Patterns
Sharding, Partitions
Machine Learning At Speed: Operationalizing ML For Real-Time Data StreamsLightbend
Audience: Architects, Data Scientists, Developers
Technical level: Introductory
From home intrusion detection, to self-driving cars, to keeping data center operations healthy, Machine Learning (ML) has become one of the hottest topics in software engineering today. While much of the focus has been on the actual creation of the algorithms used in ML, the less talked-about challenge is how to serve these models in production, often utilizing real-time streaming data.
The traditional approach to model serving is to treat the model as code, which means that ML implementation has to be continually adapted for model serving. As the amount of machine learning tools and techniques grows, the efficiency of such an approach is becoming more questionable. Additionally, machine learning and model serving are driven by very different quality of service requirements; while machine learning is typically batch, dealing with scalability and processing power, model serving is mostly concerned with performance and stability.
In this webinar with O’Reilly author and Lightbend Principal Architect, Boris Lublinsky, we will define an alternative approach to model serving, based on treating the model itself as data. Using popular frameworks like Akka Streams and Apache Flink, Boris will review how to implement this approach, explaining how it can help you:
* Achieve complete decoupling between the model implementation for machine learning and model serving, enforcing better standardization of your model serving implementation.
* Enable dynamic updates of the served model without having to restart the system.
* Utilize Tensorflow and PMML as model representation and their usage for building “real time updatable” model serving architecture.
Designing For Multicloud, CF Summit Frankfurt 2016Mark D'Cunha
Your carefully planned cloud strategy and technology architecture is useless, because multicloud changes everything. In this session, we will explore what multicloud means and why your business will force it upon you.
We provide examples of customers successfully using multicloud models, identify early patterns of usage and how to leverage them. You’ll learn about how Cloud Foundry provides unique capabilities to simplify and implement multicloud deployments. We’ll cover how you can use features like service brokers, service plans, asynchronous provisioning and arbitrary parameters to deploy muilticloud, while still maintaining a consistent experience for your application developers and IT operations staff.
"Angular 2: core concepts" by Fabio Biondi, Matteo Ronchi.
Angular 2 risolve problematiche e lacune della precedente versione, prestando particolare attenzione alle performance, al supporto mobile e alla qualità e leggibilità del codice prodotto. In questo talk verranno illustrate le funzionalità più significative tra cui: - nuova architettura totalmente orientata ai componenti - rimozione di $scope e del dirty checking ($digest) - adozione di un flow unidirezionale - utilizzo di Typescript, ES6 o ES5 - completa rivisitazione del motore di Dependency Injection - nuove procedure per il bootstrap dell’applicazione.
What's Method Acting?
Method acting is a phrase that loosely refers to a family of techniques used by actors to create in themselves the thoughts and emotions of their characters, so as to develop lifelike performances.
YouTube URL: http://youtu.be/YeOGSQ8rx1c
This documentary show cases the concepts of Method Acting with examples from South Indian Movie star Mammootty, 3 time National Award Winner along with Amitabh Bachchan and Kamal Hassan.
There are 6 sections for this documentary.
Section 1 - Focuses on Vocal variations and body language
Section 2 - Ease at which Mammootty oscillates between Arts and Commercial Cinema
Section 3 - Handling a tragic scene in different ways for different characters (A Writer, A Fisherman, A Schizophrenic and a Village man).
Section 4 - 1980s - The Beginning...
Section 5 - Movies from other Languages (Tamil, Telugu, Kannada, Hindi)
Section 6 - National Award Winning performances..
Java 8 Stream API and RxJava ComparisonJosé Paumard
The slides of my JavaOne talk: Java 8 Stream API and RxJava Comparison: Patterns and Performances.
The spliterators patterns can be found here: https://github.com/JosePaumard/jdk8-spliterators.
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Lightbend
Is the Actor Model just a new "shiny object" for developers to chase after, a fad soon to be abandoned? In fact, the Actor Model was first designed in 1973–over 20 years before brands like Yahoo! and Hotmail first arrived at the burgeoning internet. Created to address the long-term direction of computing and software development, it is almost as old as the formal definition of object-oriented programming.
Fast forward to 2017, where we are faced with an online and mobile world that continues to grow exponentially, and a third wave of IoT aims to add hundreds of billions of connected devices to our lives.
To manage today’s demanding needs and to prepare for the coming wave, enterprises like Intel, Samsung, Walmart, PayPal, Hootsuite, and Norwegian Cruise Lines are embracing distributed, Reactive systems deployed on hybrid cloud infrastructures. Central to these systems and applications is the Actor Model, which is seeing “renewed interest as cloud concurrency challenges grow,” according to Forrester Research.
In this webinar, special guest Vaughn Vernon explains why actors are so vital to the future of software development. You will learn:
- Why actors are so exceptionally well-suited for use with Domain-Driven Design, speaking the Ubiquitous Language of your core business domain.
- How actors are designed to gracefully handle failure, maintaining system resilience and responsiveness to users no matter what’s happening.
- How actors help you reactively scale your systems meet concurrency demands, elastically growing up and out to handle peak load, and shrinking when not minimizing your infrastructure and hardware footprint.
(Video of these slides here http://fsharpforfunandprofit.com/rop)
(My response to "this is just Either" here: http://fsharpforfunandprofit.com/rop/#monads)
Many examples in functional programming assume that you are always on the "happy path". But to create a robust real world application you must deal with validation, logging, network and service errors, and other annoyances.
So, how do you handle all this in a clean functional way? This talk will provide a brief introduction to this topic, using a fun and easy-to-understand railway analogy.
Functional Programming Patterns (NDC London 2014)Scott Wlaschin
(video of these slides available here http://fsharpforfunandprofit.com/fppatterns/)
In object-oriented development, we are all familiar with design patterns such as the Strategy pattern and Decorator pattern, and design principles such as SOLID.
The functional programming community has design patterns and principles as well.
This talk will provide an overview of some of these, and present some demonstrations of FP design in practice.
Reactive programming is quite a popular topic these days. For a long time, reactive programming was constrained to interactive user interface designs. With the advancement of hardware (multi-core CPU’s) and the internet, the scale, complexity, and responsiveness of software began to rise which led to reactive programming being regarded as a major programming paradigm.
Read more from here: https://blog.lftechnology.com/introduction-to-reactive-programming-part-1-5b7c63685586
By: Subash Poudel (Software Engineer @ Leapfrog Technology, Inc.)
Microservices with Spring 5 Webflux - jProfessionalsTrayan Iliev
Spring 5 introduces new functional and reactive programming model for building web applications and (micro-)services.
The session @jProfessionals dev conference demonstrates how to build REST microservices using Spring WebFlux and Spring Boot using code examples on GitHub. It includes:
- Introduction to reactive programming, Reactive Streams specification, and project Reactor (as WebFlux infrastructure);
- Comparison between annotation-based and functional reactive ;programming approaches for building REST services with WebFlux;
- Router, handler and filter functions;
- Using reactive repositories and reactive database access with Spring Data;
- Building end-to-end non-blocking reactive web services using Netty-based web runtime;
- Reactive WebClients and integration testing;
- Realtime event streaming to WebClients using JSON Streams, and to JS client using SSE.
Spring 5 Webflux - Advances in Java 2018Trayan Iliev
Brief introduction to distributed stream processing, reactive programming, and novelties in Spring 5, Spring Boot 2, and reactive Spring Data + programming examples in GitHub. More information will be provided during upcoming Spring 5 course: http://iproduct.org/en/courses/spring-mvc-rest/
Introduction to Apache Apex and writing a big data streaming application Apache Apex
Introduction to Apache Apex - The next generation native Hadoop platform, and writing a native Hadoop big data Apache Apex streaming application.
This talk will cover details about how Apex can be used as a powerful and versatile platform for big data. Apache apex is being used in production by customers for both streaming and batch use cases. Common usage of Apache Apex includes big data ingestion, streaming analytics, ETL, fast batch. alerts, real-time actions, threat detection, etc.
Presenter : <b>Pramod Immaneni</b> Apache Apex PPMC member and senior architect at DataTorrent Inc, where he works on Apex and specializes in big data applications. Prior to DataTorrent he was a co-founder and CTO of Leaf Networks LLC, eventually acquired by Netgear Inc, where he built products in core networking space and was granted patents in peer-to-peer VPNs. Before that he was a technical co-founder of a mobile startup where he was an architect of a dynamic content rendering engine for mobile devices.
This is a video of the webcast of an Apache Apex meetup event organized by Guru Virtues at 267 Boston Rd no. 9, North Billerica, MA, on <b>May 7th 2016</b> and broadcasted from San Jose, CA. If you are interested in helping organize i.e., hosting, presenting, community leadership Apache Apex community, please email apex-meetup@datatorrent.com
Reactive Programming on Android - RxAndroid - RxJavaAli Muzaffar
Introduction to RxJava for reactive programming and how to use RxAndroid to do reactive programming on Android.
There is a sample android app to go with the slides that has all the source shown in the project.
Get ready to experience fast and scalable performance in your web applications as we dive into the world of Reactive Programming. Our guide using WebFlux is perfect for both beginners and experts a like.
Reactors.io fuses the best parts of functional reactive programming and the Actor Model. Reactors are the basic units of concurrent execution which can perform computations as well. They allow you to create concurrent and distributed applications more easily, by providing correct, robust and composable programming abstractions.
Sensor data is streamed in realtime from Arduino + accelerometeres, gyroscopes & compass 3D, ultrasound distance sensor, etc. using UDP protocol. The data processing is done with reactive Java alterantive implementations: callbacks, CompletableFutures and using Spring 5 Reactor library. The web 3D visualization with Three.js is streamed using Server Sent Events (SSE).
A video for the IoT demo is available @YouTube: https://www.youtube.com/watch?v=AB3AWAfcy9U
All source code of the demo is freely available @GitHub: https://github.com/iproduct/reactive-demos-iot
There are more reactive Java demos in the same repository - callbacks, CompletableFuture, realtime event streaming. Soon I'll add a description how to build the device and upload Arduino sketch, as well as describe CompletableFuture and Reactor demos and 3D web visualization part with Three.js. Please stay tuned :)
Proactive ops for container orchestration environmentsDocker, Inc.
Break -> inspect -> fix is the Ops workflow for infrastructure stacks of the past. Distributed infrastructure and applications claim to be the new generation, but why is it so much more painful to maintain and troubleshoot them? Much of the pain comes from outdated operational models relying on reactive or, worse yet, manual monitoring and Ops.
This talk lays out a proactive Ops model for container infrastructure. By focusing on event monitoring, infrastructure state monitoring, trend analysis, and distributed log collection, a proactive Ops model delivers observability for distributed apps that was not possible before. Using real-world examples from Swarm and Kubernetes, we'll demonstrate the tools used and how we relieve Ops pain in container orchestration.
Building Cloud-Native App Series - Part 7 of 11
Microservices Architecture Series
Containers Docker Kind Kubernetes Istio
- Pods
- ReplicaSet
- Deployment (Canary, Blue-Green)
- Ingress
- Service
Building Cloud-Native App Series - Part 5 of 11
Microservices Architecture Series
Microservices Architecture,
Monolith Migration Patterns
- Strangler Fig
- Change Data Capture
- Split Table
Infrastructure Design Patterns
- API Gateway
- Service Discovery
- Load Balancer
Docker Kubernetes Istio
Understanding Docker and creating containers.
Container Orchestration based on Kubernetes
Blue Green Deployment, AB Testing, Canary Deployment, Traffic Rules based on Istio
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
1. Functional Reactive
Programming
“It is NOT the strongest of the species that
survives, nor the most intelligent that survives. It
is the one that is the most adaptable to change.”
- Charles Darwin
Araf Karsh Hamid
3. Services
for UI
Hexagonal Architecture
Ports & Adapters
13 November 2016
3
Ports
File
system Database
Product
JPARepository
Implementation
Adapters
OrderProcessing
Domain Service
(Business Rules)
Implementation
Domain
Models
Domain Layer
Source : https://skillsmatter.com/skillscasts/5744-decoupling-from-asp-net-hexagonal-architectures-in-net
Ports and Adapters architecture style (Hexagonal
Architecture) is a variation of layered architecture style
which makes clear the separation between the Domain
Model which contains the rules of theApplication and
the adapters, which abstract the inputs to the system
and our outputs.
The advantage is the Application is decoupled from
the nature of input / output device and any
framework used to implement them.
For Eg.,When a client makes a RESTAPI request the
Adapter receives the HTTP Request and transforms
that into a call into the Domain Layer and marshals the
response back out to the client over HTTP. Similarly if
the app needs to retrieve persisted Entity to initialize
the domain it calls out to an Adapter that wraps the
access to the DB.
Order Data
Validation
OrderService
REST Service
Implementation
OrderProcessing
Interface
p
The layer between the Adapter and the Domain is identified as the Ports layer.
The Domain is inside the port, adapters for external entities are on the outside of
the port.
The notion of a “port” invokes the OS idea that any device that adheres to a known
protocol can be plugged into a port. Similarly many adapters may use the Ports.
Product,
ProductRepository
Interface
p
A
A
External
Apps
A
A A
Others
A
AOrderService
Interface
p
Web
Services
Data
Store
Use Case
Boundary
A
4. Traditional Architecture Vs. Onion Architecture + DDD
13 November 2016
4
Presentation
Business Logic (BLL)
Data Access (DAL)
Infrastructure
Others
File
system
User Interface
G
Application Services
M
Domain Services
Domain
Model
Services
Database
Order
ViewController
Product
JPARepository
Implementation
Product,
ProductRepository
Interface
OrderProcessing
DomainService
Interface
OrderProcessing
DomainService
Implementation
Source: Onion Architecture
By Jeffrey Palermo, Ex Microsoft
• Interface Driven
• Dependency Injection
• Auto wiring
• Adaptable to future
changes / enhancements
UserName
Available
Order Data
Validation
Order
Discount
Validation
6. Functional Reactive Programming
13 November 2016
6
ResilientElastic
Message – Driven
1. A responsive, maintainable &
Extensible application is the
goal.
2. A responsive application is both
scalable (Elastic) and resilient.
3. Responsiveness is impossible to
achieve without both scalability
and resilience.
4. A Message-Driven architecture
is the foundation of scalable,
resilient, and ultimately
responsive systems.
Value
Means
Form
Principles What it means?
Responsive thus React to users demand
Resilient thus React to errors and failures
Elastic thus React to load
Message-Driven thus React to events and messages
Source: http://reactivex.io/
Responsive Maintainable Extensible
8. 13 November 2016
8
Functional Reactive Programming : Design Patterns
Single
Component Pattern
A Component shall do ONLY one thing,
But do it in FULL.
Single Responsibility Principle By DeMarco : Structured
Analysis & System Specification (Yourdon, New York, 1979)
Let-It-Crash
Pattern
Prefer a FULL component restart to
complex internal failure handling.
Candea & Fox: Crash-Only Software (USENIX HotOS IX, 2003)
Popularized by Netflix Chaos Monkey. Erlang Philosophy
Saga
Pattern
Divide long-lived distributed
transactions into quick local ones with
compensating actions for recovery.
Pet Helland: Life Beyond Distributed Transactions CIDR 2007
9. 4 Building Blocks of RxJava
13 November 2016
9
Observer Listens for emitted values [ Receiver ]
Observable Source of Data Stream [ Sender ]
Client Server
Request
Response
Traditional Synchronous Pull
Communications
1. The Observer subscribes (listens) to the Observable
2. Observer react to what ever item or sequence of items the Observable emits.
3. Many Observers can subscribe to the same Observable
Observer Observableon Next
on Completed
on Error
Time
Subscribes
Non Blocking
Time
1
2
Source: http://reactivex.io/
10. 4 Building Blocks of RxJava
13 November 2016
10
Schedulers
Operators
Content Filtering
Time Filtering
Transformation
Schedulers are used to manage and control
concurrency.
1. observeOn: Thread Observable is executed
2. subscribeOn: Thread subscribe is executed
Operators that let you
Transform, Combine,
Manipulate, and work
with the sequence of
items emitted by
Observables
3
4
Source: http://reactivex.io/
11. Observable Design Pattern (Marble Diagram)
13 November 2016
11
• An Observer subscribes to an Observable.
• Then that observer reacts to whatever item or sequence of items the
Observable emits.
1
Building
Block
Source: http://reactivex.io/RxJava/javadoc/index.html?rx/Observable.html | http://rxmarbles.com
12. Observable / Observer Design Pattern
13 November 2016
12
• Allows for Concurrent Operations: the
observer does not need to block while
waiting for the observable to emit values
• Observer waits to receive values when
the observable is ready to emit them
• Based on push rather than pull
1 & 2
Building
Block
Source: http://reactivex.io/RxJava/javadoc/index.html?rx/Observable.html
13. What’s missing from GOF Observer Pattern
13 November 2016
13
1
Building
Block
Source:http://reactivex.io/intro.html
1.The ability for the producer to signal to the consumer that there
is no more data available (a foreach loop on an Iterable
completes and returns normally in such a case; an Observable
calls its observer’s onCompleted method)
2.The ability for the producer to signal to the consumer that an
error has occurred (an Iterable throws an exception if an error
takes place during iteration; an Observable calls its
observer’s onError method)
3.Multiple Thread Implementations and hiding those details.
4.Dozens of Operators to handle data.
14. Compare Iterable Vs. Observable
13 November 2016
14
Observable is the asynchronous / push
dual to the synchronous pull Iterable
• Composable: Easily chained together or
combined
• Flexible: Can be used to emit:
• A scalar value (network result)
• Sequence (items in a list)
• Infinite streams (weather sensor)
• Free from callback hell: Easy to transform
one asynchronous stream into another
Observables are:
Event
Iterable
(Pull)
Observable
(Push)
Retrieve Data T next() onNext(T)
Discover Error
throws
Exception
onError
(Exception)
Complete !hasNext() onComplete()
1
Building
Block
Source: http://reactivex.io/RxJava/javadoc/index.html?rx/Observable.html
15. Comparison : Iterable / Streams / Observable
13 November 2016
15
1
Building
Block
First Class Visitor (Consumer)
Serial Operations
Parallel Streams (10x Speed)
Still On Next, On Complete and
On Error are Serial Operations
Completely Asynchronous
Operations
Java 8 – Blocking CallJava 6 – Blocking Call Rx Java - Freedom
16. Observer<T> Contract
13 November 2016
16
Methods:
• onNext(T)
• onError(Throwable T)
• onCompleted()
onError / onCompleted called exactly
once
2
Building
Block
Source: http://reactivex.io/RxJava/javadoc/index.html?rx/Observable.html
X
|
Time Line
17. RxJava Scheduler Details
13 November 2016
17
Source: http://reactivex.io/documentation/scheduler.html
• If you want to introduce multithreading into your cascade of
Observable operators, you can do so by instructing those operators
(or particular Observables) to operate on particular Schedulers.
• By default, an Observable and the chain of operators that you apply
to it will do its work, and will notify its observers, on the same thread
on which its Subscribe method is called.
• The SubscribeOn operator changes this behavior by specifying a
different Scheduler on which the Observable should operate.
TheObserveOn operator specifies a different Scheduler that the
Observable will use to send notifications to its observers.
3
Building
Block
18. RxJava Scheduler Threading Details
13 November 2016
18
Source: http://reactivex.io/documentation/scheduler.html
Scheduler Purpose
1 Schedulers.computation ( ) Meant for computational work such as event-loops and callback
processing; do not use this scheduler for I/O.
(useSchedulers.io( ) instead)
The number of threads, by default, is equal to the number of processors
2 Schedulers.from(executor) Uses the specified Executor as a Scheduler
3 Schedulers.immediate ( ) Schedules work to begin immediately in the current thread
4 Schedulers.io ( ) Meant for I/O-bound work such as asynchronous performance of
blocking I/O, this scheduler is backed by a thread-pool that will grow as
needed; for ordinary computational work, switch to
Schedulers.computation( );
Schedulers.io( ) by default is a CachedThreadScheduler, which is
something like a new thread scheduler with thread caching
5 Schedulers.newThread ( ) Creates a new thread for each unit of work
6 Schedulers.trampoline ( ) Queues work to begin on the current thread after any already-queued
work
3Building
Block
20. The Problem? How Rx Helps!
13November2016
20
2
Building
Block
Apple Basket
Fruit Processor
Scenario
1. A Basket Full of Apples
2. Fruit Processor capacity (limit) is 3 Apples at a time.
The Problem
1. I don’t have time to wait till the Fruit Processor finishes it’s job.
2. I don’t mind having multiple Fruit Processors too. But that still
doesn’t solve the problem
What I need
1. I want to start the Process and leave.
2. Once the processing is done, then the system should inform me.
3. If something goes wrong, then the system should inform me.
Me = the calling program
21. RxJava : Examples – Handling Fruit Processor
13 November 2016
21
1
Building
Block
Completely Asynchronous
Operations
Rx Java - Freedom
1. Abstract Fruit
2. Fruit (Interface)
3. Apple
4. Orange
5. Grapes
6. Mixed Fruit
(Aggregate Root)
Entities
1. Fruit Processor (Domain
Service) - Observer
2. Fruit Basket Repository
3. Fruit Basket Observable
Factory
Business Layer
Next Section focuses more on Operators and how to handle
business logic in Asynchronous world!
1. Rx Java Example : Observable / Observer / Scheduler
Implementation
2. Rx Java Example 2 : Merge / Filters (on Weight) / Sort (on Price)
Source Code GIT: https://meta-magic.github.io/rxjava/
22. RxJava : Entities & Repositories
13 November 2016
22
1
Building
Block
Source Code GIT: https://meta-magic.github.io/rxjava/
Fruit Interface Abstract Fruit Fruit Repository
23. RxJava : Entities
13 November 2016
23
1
Building
Block
Source Code GIT: https://meta-magic.github.io/rxjava/
Apple Orange Grapes
24. RxJava : Apple Fruit Basket : Observable
13 November 2016
24
1
Building
Block
Source Code GIT: https://meta-magic.github.io/rxjava/
1. This function calls the Apple Basket Repository
function to load the data.
2. Observable is created using the collection from
the data returned by the Repository
3. Call method checks if the Observer is
subscribed
4. If Yes for Each Apple it calls the Observer to do
the action = observer.onNext (fruit)
5. Once the process is completed
6. Observable will call the on Completed method
in Observer.
7. If an error occurs then Observable will call the
on Error method in Observer
Fruit Basket Observable
25. RxJava : Fruit Processor : Observer
13 November 2016
25
1
Building
Block
Source Code GIT: https://meta-magic.github.io/rxjava/
1. Fruit Processor implements Subscriber
(Observer) interface
2. On Next Method Implementation. Main
Business logic is done over here. Observable
will call on Next and pass the Fruit Object for
processing.
3. On Complete Method. Observable will call this
method once the processing is done.
4. If Any error occurred then Observable will call
on Error method and pass on the Exception.
5. call() implements the Func1 for filtering. Weight
is passed as a parameter in Fruit Processor
Constructor.
FruitProcessorObserver
Fruit Processor Handles the Business Logic
26. 26
Bringing all the
pieces together
Apple Basket
Fruit ProcessorObservable / Observer / Schedulers / Operators
Source Code GIT: https://meta-magic.github.io/rxjava/
27. RxJava Operator : Merge 3 Streams
13November2016
27
4Building
Block
Objective:
Merge Three Data Streams (Apple Fruit Basket, Orange Fruit Basket & Grapes Fruit Basket) into a Single Stream and
do the Processing on that new Stream Asynchronously
A1 is the Apple Series, O1 is the Orange Series & G1 is the Grapes Series
Rx Example 2
Source Code GIT: https://meta-magic.github.io/rxjava/
28. RxJava Operator : Merge / Filter Streams
13November2016
28
4Building
Block
Objective:
From the previous three Merged streams Filter Fruits which weighs more than 50 grams.
Rx Example 2
29. RxJava Operator : Merge / Filter / Sort
13November2016
29
4Building
Block
Objective:
From the previous three Merged streams Filter Fruits which weighs more than 50 grams and sort on Price (Asc).
Rx Example 2
Don’t Use
toBlocking()
in Production
Code
30. RxJava Operator : Filter / Sort / FlatMap
13November2016
30
4Building
Block
Objective:
toSortedList() returns an Observable with a single List containing Fruits.
Using FlatMap to Transform Observable <List> to Observable <Fruit>
Rx Example 2
31. The Problem? How Rx Helps!
13November2016
31
2
Building
Block
Scenario – Three Different Data streams
1. Movie database, Movie Reviews, Movie Trivia
2. Based on the Recommendation Engine combine all the three above and
send the final result to end-user / customer.
The Problem / Rule
1. No Synchronous Calls allowed
What I need
1. Movie Suggestion based on recommendation Engine
2. Filter the suggested movies based on the User filter (Movie Ratings)
3. Once the movies are identified, combine all the other related info and
Zip (Movies, Reviews & Trivia) it into a Single Entity (Movie Titles) and
send the collection back to the caller.
32. Movie Example
RxJava Operator : Filter / Sort / FlatMap
13November2016
32
4Building
Block
Objective:
toSortedList() returns an Observable with a single List containing Movies. Using
FlatMap to Transform Observable <List> to Observable <MovieTitle>
33. RxJava Operator Details
13 November 2016
33
4Building
Block
Source: http://reactivex.io/
Creating Observables
Operators that originate new Observables.
• Create — create an Observable from scratch by calling observer methods programmatically
• Defer — do not create the Observable until the observer subscribes, and create a fresh
Observable for each observer
• Empty/Never/Throw — create Observables that have very precise and limited behavior
• From — convert some other object or data structure into an Observable
• Interval — create an Observable that emits a sequence of integers spaced by a particular
time interval
• Just — convert an object or a set of objects into an Observable that emits that or those
objects
• Range — create an Observable that emits a range of sequential integers
• Repeat — create an Observable that emits a particular item or sequence of items repeatedly
• Start — create an Observable that emits the return value of a function
• Timer — create an Observable that emits a single item after a given delay
34. RxJava Operator Details
13 November 2016
34
4Building
Block
Source: http://reactivex.io/
Transforming Observables
Operators that transform items that are emitted by an Observable.
• Buffer — periodically gather items from an Observable into bundles and emit these
bundles rather than emitting the items one at a time
• FlatMap — transform the items emitted by an Observable into Observables, then flatten
the emissions from those into a single Observable
• GroupBy — divide an Observable into a set of Observables that each emit a different group
of items from the original Observable, organized by key
• Map — transform the items emitted by an Observable by applying a function to each item
• Scan — apply a function to each item emitted by an Observable, sequentially, and emit
each successive value
• Window — periodically subdivide items from an Observable into Observable windows and
emit these windows rather than emitting the items one at a time
35. RxJava Operator Details
13 November 2016
35
4Building
Block
Source: http://reactivex.io/
Filtering Observables
Operators that selectively emit items from a source Observable.
• Debounce — only emit an item from an Observable if a particular timespan has passed without it
emitting another item
• Distinct — suppress duplicate items emitted by an Observable
• ElementAt — emit only item n emitted by an Observable
• Filter — emit only those items from an Observable that pass a predicate test
• First — emit only the first item, or the first item that meets a condition, from an Observable
• IgnoreElements — do not emit any items from an Observable but mirror its termination notification
• Last — emit only the last item emitted by an Observable
• Sample — emit the most recent item emitted by an Observable within periodic time intervals
• Skip — suppress the first n items emitted by an Observable
• SkipLast — suppress the last n items emitted by an Observable
• Take — emit only the first n items emitted by an Observable
• TakeLast — emit only the last n items emitted by an Observable
36. RxJava Operator Details
13 November 2016
36
4Building
Block
Source: http://reactivex.io/
Combining Observables
Operators that work with multiple source Observables to create a single Observable
• And/Then/When — combine sets of items emitted by two or more Observables by means of Pattern
and Plan intermediaries
• CombineLatest — when an item is emitted by either of two Observables, combine the latest item
emitted by each Observable via a specified function and emit items based on the results of this
function
• Join — combine items emitted by two Observables whenever an item from one Observable is
emitted during a time window defined according to an item emitted by the other Observable
• Merge — combine multiple Observables into one by merging their emissions
• StartWith — emit a specified sequence of items before beginning to emit the items from the source
Observable
• Switch — convert an Observable that emits Observables into a single Observable that emits the
items emitted by the most-recently-emitted of those Observables
• Zip — combine the emissions of multiple Observables together via a specified function and emit
single items for each combination based on the results of this function
37. RxJava Operator Details
13 November 2016
37
4Building
Block
Source: http://reactivex.io/
Observable Utility Operators
A toolbox of useful Operators for working with Observables
• Delay — shift the emissions from an Observable forward in time by a particular amount
• Do — register an action to take upon a variety of Observable lifecycle events
• Materialize/Dematerialize — represent both the items emitted and the notifications sent as
emitted items, or reverse this process
• ObserveOn — specify the scheduler on which an observer will observe this Observable
• Serialize — force an Observable to make serialized calls and to be well-behaved
• Subscribe — operate upon the emissions and notifications from an Observable
• SubscribeOn — specify the scheduler an Observable should use when it is subscribed to
• TimeInterval — convert an Observable that emits items into one that emits indications of the
amount of time elapsed between those emissions
• Timeout — mirror the source Observable, but issue an error notification if a particular period of
time elapses without any emitted items
• Timestamp — attach a timestamp to each item emitted by an Observable
• Using — create a disposable resource that has the same lifespan as the Observable
38. RxJava Operator Details
13 November 2016
38
4Building
Block
Source: http://reactivex.io/
Conditional and Boolean Operators
Operators that evaluate one or more Observables or items emitted by Observables
• All — determine whether all items emitted by an Observable meet some criteria
• Amb — given two or more source Observables, emit all of the items from only the first of these
Observables to emit an item
• Contains — determine whether an Observable emits a particular item or not
• DefaultIfEmpty — emit items from the source Observable, or a default item if the source
Observable emits nothing
• SequenceEqual — determine whether two Observables emit the same sequence of items
• SkipUntil — discard items emitted by an Observable until a second Observable emits an item
• SkipWhile — discard items emitted by an Observable until a specified condition becomes false
• TakeUntil — discard items emitted by an Observable after a second Observable emits an item or
terminates
• TakeWhile — discard items emitted by an Observable after a specified condition becomes false
39. RxJava Operator Details
13 November 2016
39
4Building
Block
Source: http://reactivex.io/
Mathematical and Aggregate Operators
Operators that operate on the entire sequence of items emitted by an Observable
• Average — calculates the average of numbers emitted by an Observable and emits this average
• Concat — emit the emissions from two or more Observables without interleaving them
• Count — count the number of items emitted by the source Observable and emit only this value
• Max — determine, and emit, the maximum-valued item emitted by an Observable
• Min — determine, and emit, the minimum-valued item emitted by an Observable
• Reduce — apply a function to each item emitted by an Observable, sequentially, and emit the
final value
• Sum — calculate the sum of numbers emitted by an Observable and emit this sum
Backpressure Operators
• backpressure operators — strategies for coping with Observables that produce items more
rapidly than their observers consume them
40. RxJava Operator Details
13 November 2016
40
4Building
Block
Source: http://reactivex.io/
Connectable Observable Operators
Specialty Observables that have more precisely-controlled subscription dynamics
• Connect — instruct a connectable Observable to begin emitting items to its subscribers
• Publish — convert an ordinary Observable into a connectable Observable
• RefCount — make a Connectable Observable behave like an ordinary Observable
• Replay — ensure that all observers see the same sequence of emitted items, even if they subscribe after the
Observable has begun emitting items
Operators to Convert Observables
• To — convert an Observable into another object or data structure
Error Handling Operators
Operators that help to recover from error notifications from an Observable
• Catch — recover from an onError notification by continuing the sequence without error
• Retry — if a source Observable sends an onError notification, re-subscribe to it in the hopes that it will
complete without error
41. 13 November 2016
41
Thank You
Araf Karsh Hamid
email : araf.karsh@ozazo.com | araf.karsh@metamagic.in
Social : arafkarsh | Skype, Facebook, LinkedIn, Twitter, G+
Phone : +91.999.545.8627 | http://www.metamagic.in/
http://reactivex.io/
http://techblog.netflix.com/2013/01/reactive-programming-at-netflix.html
http://reactivex.io/learnrx/
Download the API:
https://github.com/ReactiveX/RxJava
http://mvnrepository.com/artifact/io.reactivex/rxjava/1.1.0
http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/
https://realm.io/
http://blog.reactiveprogramming.org/
What is Reactive Programming?
https://medium.com/reactive-programming/what-is-reactive-programming-bc9fa7f4a7fc#.57mt1ieow
What is Functional Reactive Programming?
https://www.bignerdranch.com/blog/what-is-functional-reactive-programming/
Reactive Programming Patterns with Java 8 Features
https://www.youtube.com/watch?v=tiJEL3oiHIY
Going Reactive with Java 8
https://www.youtube.com/watch?v=y-8sHHbMks4
Reactive Programming for Java Developers
https://www.youtube.com/watch?v=fz31sbwOYq8
http://www.slideshare.net/rickbwarren/building-scalable-stateless-applications-with-rx-java?related=1
Stanford Unv: Rx
https://www.youtube.com/watch?v=y9xudo3C1Cw
https://dzone.com/articles/using-rx-java-observable
https://github.com/Betterment/DaggerStarter
http://www.grahamlea.com/2014/07/rxjava-threading-examples/
RxJava in Different Flavours
http://instil.co/2014/08/05/rxjava-in-different-flavours-of-java/
https://github.com/Netflix/RxJava
https://github.com/Netflix/RxJava/wiki
http://www.infoq.com/author/Erik-Meijer
React conference http://www.youtube.com/playlist?list=PLSD48HvrE7-Z1stQ1vIIBumB0wK0s8llY
Cat picture taken from http://www.teckler.com/en/Rapunzel