Slides from Michael Sannella, architect for TIBCO Enterprise Runtime for R (TERR), on the the Compatibility Challenge: Examining R and Developing TERR. Presented at useR 2014
Erlang on Xen (LING) is a new Erlang platform that runs without an operating system for improved performance. The LINCX project ported the LINC-Switch to LING, demonstrating high compatibility. LINCX runs 100x faster than the original code by optimizing the fast processing path. LING can achieve throughput of up to 0.5 million packets per second and was used to build a high-performance network switch called LINCX.
LINCX is an OpenFlow switch written in Erlang and running on LING (Erlang on Xen). It shows some remarkable performance. The presentation discusses various speed-related optimizations.
Supporting the "Rapi" C-laguage API in an R-compatible engineadamwelc
TERR aims to support R packages that use the R C API (Rapi) to access the R engine from C code. Currently TERR uses handles to treat SEXP values as offsets, but is reworking its object layout to be more compatible with R. Several challenges remain around packages that directly access object internals or rely on specific engine behaviors like garbage collection. TERR's goal is to support loading binary packages unmodified while addressing compatibility issues.
This document discusses Java 8 streams and how they are implemented under the hood. Streams use a pipeline concept where the output of one unit becomes the input of the next. Streams are built on functional interfaces and lambdas introduced in Java 8. Spliterators play an important role in enabling parallel processing of streams by splitting data sources into multiple chunks that can be processed independently in parallel. The reference pipeline implementation uses a linked list of processing stages to represent the stream operations and evaluates whether operations can be parallelized to take advantage of multiple threads or cores.
A humble introduction to ROP chaining basics. The ppt deals with what is ROP. It builds the basics by introducing basics of buffer overflow and then talks about ROPs and why they are needed. It also has animated videos to help understand the layout of the stack clearly.
SignalFx: Making Cassandra Perform as a Time Series DatabaseDataStax Academy
SignalFx ingests, processes runs analytics against, (and ultimately stores) massive numbers of time series streaming in parallel into our service which provides an analytics-based monitoring platform for modern applications.
We've chose to build our time series database (TSDB) on Cassandra for it's read and write performance at high load. This presentation will go over our evolution of optimizations to squeeze the most performance out of the TSDB to date and some steps we'll be taking in the future.
Functional programming uses pure functions that have no side effects to make code more predictable, stable, and easier to test and maintain. It favors immutability over mutable state to avoid side effects. Complex programs are built by composing simple functions together rather than using complex objects. Higher order functions like map, filter, and reduce help avoid loops. Currying allows functions to take parameters one at a time for simpler composition.
In this session we will go over the fundamentals of functional programming and see how functional programming can help make our code more reusable, stable, scalable and fun.
Erlang on Xen (LING) is a new Erlang platform that runs without an operating system for improved performance. The LINCX project ported the LINC-Switch to LING, demonstrating high compatibility. LINCX runs 100x faster than the original code by optimizing the fast processing path. LING can achieve throughput of up to 0.5 million packets per second and was used to build a high-performance network switch called LINCX.
LINCX is an OpenFlow switch written in Erlang and running on LING (Erlang on Xen). It shows some remarkable performance. The presentation discusses various speed-related optimizations.
Supporting the "Rapi" C-laguage API in an R-compatible engineadamwelc
TERR aims to support R packages that use the R C API (Rapi) to access the R engine from C code. Currently TERR uses handles to treat SEXP values as offsets, but is reworking its object layout to be more compatible with R. Several challenges remain around packages that directly access object internals or rely on specific engine behaviors like garbage collection. TERR's goal is to support loading binary packages unmodified while addressing compatibility issues.
This document discusses Java 8 streams and how they are implemented under the hood. Streams use a pipeline concept where the output of one unit becomes the input of the next. Streams are built on functional interfaces and lambdas introduced in Java 8. Spliterators play an important role in enabling parallel processing of streams by splitting data sources into multiple chunks that can be processed independently in parallel. The reference pipeline implementation uses a linked list of processing stages to represent the stream operations and evaluates whether operations can be parallelized to take advantage of multiple threads or cores.
A humble introduction to ROP chaining basics. The ppt deals with what is ROP. It builds the basics by introducing basics of buffer overflow and then talks about ROPs and why they are needed. It also has animated videos to help understand the layout of the stack clearly.
SignalFx: Making Cassandra Perform as a Time Series DatabaseDataStax Academy
SignalFx ingests, processes runs analytics against, (and ultimately stores) massive numbers of time series streaming in parallel into our service which provides an analytics-based monitoring platform for modern applications.
We've chose to build our time series database (TSDB) on Cassandra for it's read and write performance at high load. This presentation will go over our evolution of optimizations to squeeze the most performance out of the TSDB to date and some steps we'll be taking in the future.
Functional programming uses pure functions that have no side effects to make code more predictable, stable, and easier to test and maintain. It favors immutability over mutable state to avoid side effects. Complex programs are built by composing simple functions together rather than using complex objects. Higher order functions like map, filter, and reduce help avoid loops. Currying allows functions to take parameters one at a time for simpler composition.
In this session we will go over the fundamentals of functional programming and see how functional programming can help make our code more reusable, stable, scalable and fun.
LINCX is an OpenFlow switch written in Erlang and running on LING (Erlang on Xen). It shows some remarkable performance. The presentation discusses various speed-related optimizations.
The document discusses functional programming concepts like single-assignment, recursion, and immutable data structures. It provides examples of recursion in functions like factorial and selection sort. It compares iterative and recursive looping approaches and discusses advantages of functional programming like avoiding side effects and simplifying debugging.
Instrumenting Go (Gopherconindia Lightning talk by Bhasker Kode)Bhasker Kode
Lightning Talk by Bhasker Kode from Helpshift on instrumenting your golang code to a statsite compatible server. with examples, screenshots, and getting started.
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_S18.shtml
This document discusses logical time and the happen-before relation in distributed systems. It presents the following key points:
- Logical time models the ordering of events in a distributed system based on causality, rather than physical time. It was discovered by Leslie Lamport.
- For asynchronous systems with universal reliable FIFO channels, any reordering of events that preserves the happen-before relation results in a valid execution trace.
- Assigning logical timestamps to events allows reordering events while maintaining each process's local order. This corresponds to different valid executions of the original system.
- An example shows how assigning different logical times to the same execution trace results in different, but valid, reorderings of events
The document summarizes the evolution of the Scala programming language from its origins to its present state and future directions. It discusses Scala's combination of object-oriented and functional programming, its type system, tooling improvements, and the emergent ecosystem around Scala. It also outlines plans to develop a Scala-specific platform called TASTY and explore new language concepts like effect systems to model side effects through capabilities.
This document compares new features in Java 8 like lambda expressions and streams to LINQ in C#. It outlines 19 operations supported by both like filtering, mapping, ordering, grouping, and combining data. While Java 8 streams provide many similar capabilities to LINQ, some LINQ operations like skipping items based on a predicate are not directly supported in Java streams. The document provides code examples and discusses how to configure IntelliJ IDEA to support Java 8 features.
This presentation explains how to use the Spark framework together with the Kotlin programming language and the JVM to build robust APIs. The presentation begins with some basics about the Kotlin language from JetBrains. It then gives a brief introduction to Spark, a Sinatra-inspired framework for setting up Web routes. It concludes with some references to three blog posts with more explanation and a GitHub repository where the sample code can be found.
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_F19.shtml
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_F19.shtml
Migrating Apache Spark ML Jobs to Spark + Tensorflow on KubeflowDatabricks
This document summarizes Holden Karau's presentation on augmenting Spark ML pipelines with Kubeflow and TensorFlow. The presentation explored splitting a Spark ML pipeline into feature preparation in Spark and model training in TensorFlow, saving the Spark output in a TF-compatible format, and executing the components as part of a Kubeflow pipeline that uses the Spark operator. It noted challenges with Kubeflow's current stability but provided options for integrating Spark jobs using the operator or notebooks. The presentation concluded by discussing alternatives to this approach and some ending notes of caution.
The document discusses a real-world project called LINCX that was implemented using Erlang on Xen to achieve high performance packet processing. Some key points:
1) LINCX is a software switch implemented in Erlang that was ported to run on Erlang on Xen (LING) and achieved 100x faster performance than the original code.
2) Speed tests using IXIA traffic generators confirmed LINCX on LING could achieve peak throughput of 0.5 million packets per second.
3) The document provides several notes on optimizing Erlang code for speed when running on LING/Xen, such as avoiding excessive garbage collection, using raw processes over gen_servers
The slides of my university talk, Devoxx Belgium 2016.
The goal of this talk is to compare the two most popular implementations of List: LinkedList and ArrayList, and provide hints on which one to use in what case.
Introduction to return oriented programming. Explanation of how to use instruction sequences already existing in an executable's memory space to manipulate control flow without injecting external payload.
This session talks about how unit testing of Spark applications is done, as well as tells the best way to do it. This includes writing unit tests with and without Spark Testing Base package, which is a spark package containing base classes to use when writing tests with Spark.
What is functional programming? This talk sets out to demystify the functional programming paradigm, debunk common myths, and reveal examples of why FP is advantageous compared to imperative programming.
A college lecture at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_S17.shtml
CNIT 127: Ch 4: Introduction to format string bugsSam Bowne
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_F19.shtml
This document provides an overview of functional programming concepts in Scala. It discusses the history and advantages of functional programming. It then covers the basics of Scala including its support for object oriented and functional programming. Key functional programming aspects of Scala like immutable data, higher order functions, and implicit parameters are explained with examples.
The document discusses implementation diagrams in UML, specifically component diagrams and deployment diagrams. It provides details on what each diagram type models (components/relationships for component diagrams and nodes/relationships for deployment diagrams). It also provides examples of a component diagram modeling source code files and dependencies, and a deployment diagram modeling a client-server architecture. Guidelines are given for effectively using these diagram types.
This document provides an introduction to R programming. It discusses that R is an open source programming language for statistical analysis and graphics. It is used widely in data science due to being free, having a strong user community, and having the ability to implement advanced statistical methods. The document then covers downloading and installing R, the basic R environment including the command window and scripts, basic programming objects like vectors and data frames, and how to import and work with datasets in R. It emphasizes that R has powerful but can be difficult to learn due to being command-driven without commercial support.
R is an open source statistical programming language and software environment used widely for statistical analysis and graphics. This document provided an introduction to using R, including downloading and installing R, the basic R environment and interface, help resources, loading and using packages, reading data into R from files, and performing common descriptive statistics and linear regression modeling. Examples were provided using built-in and example datasets to demonstrate summarizing data, exploring variables, and fitting simple statistical models in R.
LINCX is an OpenFlow switch written in Erlang and running on LING (Erlang on Xen). It shows some remarkable performance. The presentation discusses various speed-related optimizations.
The document discusses functional programming concepts like single-assignment, recursion, and immutable data structures. It provides examples of recursion in functions like factorial and selection sort. It compares iterative and recursive looping approaches and discusses advantages of functional programming like avoiding side effects and simplifying debugging.
Instrumenting Go (Gopherconindia Lightning talk by Bhasker Kode)Bhasker Kode
Lightning Talk by Bhasker Kode from Helpshift on instrumenting your golang code to a statsite compatible server. with examples, screenshots, and getting started.
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_S18.shtml
This document discusses logical time and the happen-before relation in distributed systems. It presents the following key points:
- Logical time models the ordering of events in a distributed system based on causality, rather than physical time. It was discovered by Leslie Lamport.
- For asynchronous systems with universal reliable FIFO channels, any reordering of events that preserves the happen-before relation results in a valid execution trace.
- Assigning logical timestamps to events allows reordering events while maintaining each process's local order. This corresponds to different valid executions of the original system.
- An example shows how assigning different logical times to the same execution trace results in different, but valid, reorderings of events
The document summarizes the evolution of the Scala programming language from its origins to its present state and future directions. It discusses Scala's combination of object-oriented and functional programming, its type system, tooling improvements, and the emergent ecosystem around Scala. It also outlines plans to develop a Scala-specific platform called TASTY and explore new language concepts like effect systems to model side effects through capabilities.
This document compares new features in Java 8 like lambda expressions and streams to LINQ in C#. It outlines 19 operations supported by both like filtering, mapping, ordering, grouping, and combining data. While Java 8 streams provide many similar capabilities to LINQ, some LINQ operations like skipping items based on a predicate are not directly supported in Java streams. The document provides code examples and discusses how to configure IntelliJ IDEA to support Java 8 features.
This presentation explains how to use the Spark framework together with the Kotlin programming language and the JVM to build robust APIs. The presentation begins with some basics about the Kotlin language from JetBrains. It then gives a brief introduction to Spark, a Sinatra-inspired framework for setting up Web routes. It concludes with some references to three blog posts with more explanation and a GitHub repository where the sample code can be found.
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_F19.shtml
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_F19.shtml
Migrating Apache Spark ML Jobs to Spark + Tensorflow on KubeflowDatabricks
This document summarizes Holden Karau's presentation on augmenting Spark ML pipelines with Kubeflow and TensorFlow. The presentation explored splitting a Spark ML pipeline into feature preparation in Spark and model training in TensorFlow, saving the Spark output in a TF-compatible format, and executing the components as part of a Kubeflow pipeline that uses the Spark operator. It noted challenges with Kubeflow's current stability but provided options for integrating Spark jobs using the operator or notebooks. The presentation concluded by discussing alternatives to this approach and some ending notes of caution.
The document discusses a real-world project called LINCX that was implemented using Erlang on Xen to achieve high performance packet processing. Some key points:
1) LINCX is a software switch implemented in Erlang that was ported to run on Erlang on Xen (LING) and achieved 100x faster performance than the original code.
2) Speed tests using IXIA traffic generators confirmed LINCX on LING could achieve peak throughput of 0.5 million packets per second.
3) The document provides several notes on optimizing Erlang code for speed when running on LING/Xen, such as avoiding excessive garbage collection, using raw processes over gen_servers
The slides of my university talk, Devoxx Belgium 2016.
The goal of this talk is to compare the two most popular implementations of List: LinkedList and ArrayList, and provide hints on which one to use in what case.
Introduction to return oriented programming. Explanation of how to use instruction sequences already existing in an executable's memory space to manipulate control flow without injecting external payload.
This session talks about how unit testing of Spark applications is done, as well as tells the best way to do it. This includes writing unit tests with and without Spark Testing Base package, which is a spark package containing base classes to use when writing tests with Spark.
What is functional programming? This talk sets out to demystify the functional programming paradigm, debunk common myths, and reveal examples of why FP is advantageous compared to imperative programming.
A college lecture at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_S17.shtml
CNIT 127: Ch 4: Introduction to format string bugsSam Bowne
Slides for a college course at City College San Francisco. Based on "The Shellcoder's Handbook: Discovering and Exploiting Security Holes ", by Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte; ASIN: B004P5O38Q.
Instructor: Sam Bowne
Class website: https://samsclass.info/127/127_F19.shtml
This document provides an overview of functional programming concepts in Scala. It discusses the history and advantages of functional programming. It then covers the basics of Scala including its support for object oriented and functional programming. Key functional programming aspects of Scala like immutable data, higher order functions, and implicit parameters are explained with examples.
The document discusses implementation diagrams in UML, specifically component diagrams and deployment diagrams. It provides details on what each diagram type models (components/relationships for component diagrams and nodes/relationships for deployment diagrams). It also provides examples of a component diagram modeling source code files and dependencies, and a deployment diagram modeling a client-server architecture. Guidelines are given for effectively using these diagram types.
This document provides an introduction to R programming. It discusses that R is an open source programming language for statistical analysis and graphics. It is used widely in data science due to being free, having a strong user community, and having the ability to implement advanced statistical methods. The document then covers downloading and installing R, the basic R environment including the command window and scripts, basic programming objects like vectors and data frames, and how to import and work with datasets in R. It emphasizes that R has powerful but can be difficult to learn due to being command-driven without commercial support.
R is an open source statistical programming language and software environment used widely for statistical analysis and graphics. This document provided an introduction to using R, including downloading and installing R, the basic R environment and interface, help resources, loading and using packages, reading data into R from files, and performing common descriptive statistics and linear regression modeling. Examples were provided using built-in and example datasets to demonstrate summarizing data, exploring variables, and fitting simple statistical models in R.
Key lecture for the EURO-BASIN Training Workshop on Introduction to Statistical Modelling for Habitat Model Development, 26-28 Oct, AZTI-Tecnalia, Pasaia, Spain (www.euro-basin.eu)
Standardizing on a single N-dimensional array API for PythonRalf Gommers
MXNet workshop Dec 2020 presentation on the array API standardization effort ongoing in the Consortium for Python Data API Standards - see data-apis.org
This document discusses ways to make R code more reproducible through cleaner coding practices, functional programming, and collaboration tools. It recommends:
1. Writing cleaner code through descriptive names, spacing, and documentation.
2. Functionalizing code by defining reusable functions to avoid repetition and improve flexibility.
3. Using pipes to chain together functions and solve complex problems through simple pieces.
4. Outsourcing functions to external files and version controlling code with Git and GitHub to enable collaboration.
Introduction to R for Learning Analytics ResearchersVitomir Kovanovic
The slides from my 2hr tutorial organised at 2018 Learning Analytics Summer Institute (LASI) at Teachers College, Columbia University on June 11, 2018.
The presentation is a brief case study of R Programming Language. In this, we discussed the scope of R, Uses of R, Advantages and Disadvantages of the R programming Language.
This document provides an introduction and overview of the R programming language. It discusses installing R, using the R console and script editor, finding documentation, and some basic features. The key points covered are what R is, how to install packages, using the console as a calculator, assigning objects and calling functions, commenting code in scripts, and where to find documentation on functions.
This document provides an introduction to R, including what R is, how to install and use it, common mistakes, and data structures. It discusses that R was created by Ross Ihaka and Robert Gentleman and contains over 10,000 user-developed packages on topics like statistics, graphics, and data analysis. It also provides instructions on installing R from its homepage or a Italian download site, using the R console and R Studio interfaces, the workspace environment, and saving workspaces to preserve data between sessions.
Sannella use r2013-terr-memory-managementLou Bajuk
This document discusses memory management in TIBCO's Enterprise Runtime for R (TERR). It summarizes key differences between TERR and R in how they represent data objects, handle reference counting, and perform garbage collection. TERR uses abstract C++ classes to represent data with multiple possible representations. It also implements more precise 16-bit reference counting and leverages reference counts to immediately reclaim temporary objects, reducing the need for garbage collection compared to R.
R is an open-source statistical programming language that can be used for data analysis and visualization. The document provided an introduction to R including how to install R, create variables, import and assemble data, perform basic statistical analyses like t-tests and linear regression, and create plots and graphs. Key functions and concepts introduced included using c() to combine values into vectors, reading in data from CSV files, using lm() for linear regression, and the basic plot() function.
R is a programming language and free software used for statistical analysis and graphics. It allows users to analyze data, build statistical models and visualize results. Key features of R include its extensive library of statistical and graphical methods, machine learning algorithms, and ability to handle large and complex data. R is widely used in academia and industry for data science tasks like data analysis, modeling, and communicating results.
R is a programming language and free software used for statistical analysis and graphics. It allows users to analyze data, build statistical models and visualize results. Key features of R include its extensive library of statistical and graphical methods, machine learning algorithms, and ability to handle large and complex data. R is widely used in academia and industry for data science tasks like data analysis, modeling, and communicating results.
R is a programming language and free software used for statistical analysis and graphics. It allows users to analyze data, create visualizations and build predictive models. Key features of R include its extensive library of statistical and machine learning methods, ability to handle large datasets, and functionality for data wrangling, modeling, visualization and communication of results. The document provides instructions on downloading and installing R and RStudio, loading and installing packages, and introduces basic R programming concepts like vectors, matrices, data frames and factors.
This document provides an overview of topics to be covered in R Programming including variables, data types, data import/export, logical statements, loops, functions, data plotting and visualization, and basic statistical functions and packages. It then goes on to introduce R, explaining that it is a programming language for statistical analysis and graphical display. It discusses why R is useful for data analysis and exploration due to its large collection of tools, ability to handle big data, and open source community support. The document also covers installing R and RStudio, defining variables, common data types like vectors, matrices, arrays, lists and data frames, and basic operations and control structures like if/else statements and loops.
R is a programming language and free software environment for statistical analysis and graphics. It is widely used among statisticians and data scientists for developing statistical software and data analysis. Some key facts about R:
- It was created in the 1990s by Ross Ihaka and Robert Gentleman at the University of Auckland.
- R can be used for statistical computing, machine learning, graphical display, and other tasks related to data analysis.
- It runs on Windows, Linux, and MacOS operating systems. Code written in R is cross-platform.
- R has a large collection of statistical and graphical techniques built-in, and users can extend its capabilities by downloading additional packages.
- Major
R can be used on the cloud to perform data analysis and modeling. There are several instance types available on Amazon EC2 optimized for R usage with varying memory sizes. Data transfer between EC2 and S3 is free within regions. Security and access is managed using key pairs. R scripts can be run on EC2 instances and results persisted to S3. Parallel and distributed processing can be achieved using packages like Rmpi and Revolution R. Hadoop streaming can also be used to parallelize R algorithms on big data in Hadoop.
R is an open source programming language used for data analysis and visualization. It allows users to process raw data into meaningful assets through packages that provide functions for tasks like data cleaning, modeling, and graphic creation. The document provides an introduction to R for beginners, including how to install R, basic commands and their uses, how to work with common data structures in R like vectors, matrices, data frames and lists, how to create user-defined functions, and how to import data into R.
The document discusses creating an optimized algorithm in R. It covers writing functions and algorithms in R, creating R packages, and optimizing code performance using parallel computing and high performance computing. Key steps include reviewing existing algorithms, identifying gaps, testing and iterating a new algorithm, publishing the work, and making the algorithm available to others through an R package.
Similar to The Compatibility Challenge:Examining R and Developing TERR (20)
R Consortium update for EARL Boston Oct 2017Lou Bajuk
The document provides an overview of the R Consortium, a non-profit organization that supports the R community. It discusses the goals of promoting R's development, funding projects, and fostering collaboration between companies. It outlines the consortium's governance structure and membership levels. Recent projects funded include improving package building, localization, code coverage tools, and database interfaces. TIBCO's participation is driven by contributing to R's success and the compatibility of its products that integrate R.
Reusing and Managing R models in an EnterpriseLou Bajuk
1) The document discusses deploying, managing, and reusing R models in an enterprise environment to make data science more accessible.
2) It describes how TIBCO products like Spotfire, Statistica, and Streambase can be used to deploy R models, embed them in applications and visualizations, and score models in real-time.
3) The goal is to allow both data scientists and general users to leverage R models through these tools to drive insights, automate processes, and take real-time actions.
R consortium update EARL London Sept 2017Lou Bajuk
The document provides an overview of the R Consortium, a non-profit organization that supports the R community. It discusses the goals of promoting R's growth, funding projects, and fostering collaboration between companies. It outlines the consortium's structure, membership options, recently funded projects including improving package building and localization, and encourages involvement through advocacy, proposals, or volunteering.
Making Data Science accessible to a wider audienceLou Bajuk
TIBCO's Lou Bajuk talks about the challenges to making Data Science accessible to a wider audience, and how the TIBCO Analytics platform helps our customers tackle those challenges.
The document discusses the R Consortium, a non-profit organization that supports the R community. It was founded in 2015 to promote R's growth as a leading data science platform. The R Consortium funds projects and working groups through an Infrastructure Steering Committee to support R and foster collaboration. It is housed at the Linux Foundation to ensure its long-term support of the R community. Membership provides opportunities to influence projects and have a voice in the R community.
Tibco streaming analytics overview and roadmapLou Bajuk
This document discusses TIBCO's streaming analytics products and services. It provides an overview of TIBCO Streaming Analytics, BusinessEvents, and StreamBase, highlighting their developer and business user features. It also discusses TIBCO Live Datamart and various accelerators and integrations with predictive analytics and other TIBCO products. The document is confidential and its contents are subject to change.
Embracing data science for smarter analytics appsLou Bajuk
This document discusses TIBCO's plans to embrace data science and make advanced analytics more accessible. It highlights TIBCO Enterprise Runtime for R (TERR), which allows embedding predictive analytics and the R programming language into TIBCO products like Spotfire for easier use by analysts, engineers and business users. TIBCO aims to help more users leverage data science through guided applications, visual tools, and integration of TERR and other analytics tools into a unified ecosystem.
The R Consortium is a non-profit organization that supports the R community. Its goals are to create infrastructure and standards to benefit all R users, promote best practices, and support growth and adoption of R. The board of directors and infrastructure steering committee work on collaborative projects. Current projects include improving package development, database interfaces, localization, teaching, and geospatial analysis. Working groups explore new technologies to benefit the R ecosystem.
R in BI and Streaming Applications for useR 2016Lou Bajuk
This document discusses the challenges of applying R in streaming and business intelligence applications and introduces TIBCO's Enterprise Runtime for R (TERR) as a solution. TERR is an enterprise-grade R engine that allows users to develop code in open source R and deploy it on a commercially supported platform without rewriting code. This enables easy integration of R into applications for real-time analytics on streaming data and embedding R functionality in tools like Spotfire for business intelligence. Examples are provided of using TERR for predictive maintenance of oil and gas equipment and transportation logistics optimization.
Applying R in BI and Real Time applications EARL London 2015Lou Bajuk
Overview of the challenges of applying R in enterprise analytic applications, and TIBCO's approach to these challenges with Spotfire, TERR and Streambase.
Extending the R language to BI and Real-time Applications JSM 2015Lou Bajuk
TERR is TIBCO's enterprise-grade R engine that allows companies to leverage R's powerful analytics while overcoming limitations of the open source R engine. TERR enables embedding R functionality tightly within enterprise applications like Spotfire for enhanced analytics. It also allows deploying R models and code in production environments like streaming applications. TERR extends the reach of R across organizations in both interactive and automated analytics.
Using the R Language in BI and Real Time Applications (useR 2015)Lou Bajuk
R provides tremendous value to statisticians and data scientists, however they are often challenged to integrate their work and extend that value to the rest of their organization. This presentation will demonstrate how the R language can be used in Business Intelligence applications (such as Financial Planning and Budgeting, Marketing Analysis, and Sales Forecasting) to put advanced analytics into the hands of a wider pool of decisions makers. We will also show how R can be used in streaming applications (such as TIBCO Streambase) to rapidly build, deploy and iterate predictive models for real-time decisions. TIBCO's enterprise platform for the R language, TIBCO Enterprise Runtime for R (TERR) will be discussed, and examples will include fraud detection, marketing upsell and predictive maintenance.
Real time applications using the R LanguageLou Bajuk
TIBCO Enterprise Runtime for R (TERR) allows for real-time analytics using the R language within TIBCO's Complex Event Processing platforms. TERR provides a faster R engine that can be embedded in TIBCO products like Spotfire and CEP workflows. This enables rapid prototyping and deployment of predictive models to monitor real-time data streams and trigger automated actions. Example use cases discussed include predictive maintenance, customer loyalty analytics, and severe weather alert tracking.
Slides from my 12/10/14 Webinar with the Bloor Group on the importance of an Analytics Platform for delivering value across your organization, and how TIBCO Spotfire meets that need.
Presentation given at the Joint Statistical Meetings in Boston in Aug. 2014, on applications of the R language using TERR, in Business Intelligence and Real Time applications
As the number of packages available for R continues to grow, maintaining and testing these packages becomes more difficult. This difficulty is compounded as independent implementations of the R language, such as TIBCO Enterprise Runtime for R (TERR), are developed. To address this, we have created a test automation framework for testing packages with both TERR and R. We will describe how the framework automatically creates tests from a package's source files. Issues with testing on multiple platforms will be discussed. Suggestions for improving packages with tests will also be presented.
Deploying R in BI and Real time ApplicationsLou Bajuk
Overview of how Spotfire and TERR enables the deployment of R language analytics into Business Intelligence and Real time applications, including several examples. Presented at useR 2014 at UCLA on 7/2/14
Extending the Reach of R to the Enterprise with TERR and SpotfireLou Bajuk
An overview of how TIBCO integrates dynamic, interactive visual applications in Spotfire with predictive and advanced analytics in the R language, using TIBCO Enterprise Runtime for R--our R-compatible, enterprise-grade platform for the R language.
A Free eBook ~ Valuable LIFE Lessons to Learn ( 5 Sets of Presentations)...OH TEIK BIN
A free eBook comprising 5 sets of PowerPoint presentations of meaningful stories /Inspirational pieces that teach important Dhamma/Life lessons. For reflection and practice to develop the mind to grow in love, compassion and wisdom. The texts are in English and Chinese.
My other free eBooks can be obtained from the following Links:
https://www.slideshare.net/ohteikbin/presentations
https://www.slideshare.net/ohteikbin/documents
Why is this So? ~ Do Seek to KNOW (English & Chinese).pptxOH TEIK BIN
A PowerPoint Presentation based on the Dhamma teaching of Kamma-Vipaka (Intentional Actions-Ripening Effects).
A Presentation for developing morality, concentration and wisdom and to spur us to practice the Dhamma diligently.
The texts are in English and Chinese.
The Hope of Salvation - Jude 1:24-25 - MessageCole Hartman
Jude gives us hope at the end of a dark letter. In a dark world like today, we need the light of Christ to shine brighter and brighter. Jude shows us where to fix our focus so we can be filled with God's goodness and glory. Join us to explore this incredible passage.
The Enchantment and Shadows_ Unveiling the Mysteries of Magic and Black Magic...Phoenix O
This manual will guide you through basic skills and tasks to help you get started with various aspects of Magic. Each section is designed to be easy to follow, with step-by-step instructions.
A375 Example Taste the taste of the Lord, the taste of the Lord The taste of...franktsao4
It seems that current missionary work requires spending a lot of money, preparing a lot of materials, and traveling to far away places, so that it feels like missionary work. But what was the result they brought back? It's just a lot of photos of activities, fun eating, drinking and some playing games. And then we have to do the same thing next year, never ending. The church once mentioned that a certain missionary would go to the field where she used to work before the end of his life. It seemed that if she had not gone, no one would be willing to go. The reason why these missionary work is so difficult is that no one obeys God’s words, and the Bible is not the main content during missionary work, because in the eyes of those who do not obey God’s words, the Bible is just words and cannot be connected with life, so Reading out God's words is boring because it doesn't have any life experience, so it cannot be connected with human life. I will give a few examples in the hope that this situation can be changed. A375
The forces involved in this witchcraft spell will re-establish the loving bond between you and help to build a strong, loving relationship from which to start anew. Despite any previous hardships or problems, the spell work will re-establish the strong bonds of friendship and love upon which the marriage and relationship originated. Have faith, these stop divorce and stop separation spells are extremely powerful and will reconnect you and your partner in a strong and harmonious relationship.
My ritual will not only stop separation and divorce, but rebuild a strong bond between you and your partner that is based on truth, honesty, and unconditional love. For an even stronger effect, you may want to consider using the Eternal Love Bond spell to ensure your relationship and love will last through all tests of time. If you have not yet determined if your partner is considering separation or divorce, but are aware of rifts in the relationship, try the Love Spells to remove problems in a relationship or marriage. Keep in mind that all my love spells are 100% customized and that you'll only need 1 spell to address all problems/wishes.
Save your marriage from divorce & make your relationship stronger using anti divorce spells to make him or her fall back in love with you. End your marriage if you are no longer in love with your husband or wife. Permanently end your marriage using divorce spells that work fast. Protect your marriage from divorce using love spells to boost commitment, love & bind your hearts together for a stronger marriage that will last. Get your ex lover who has remarried using divorce spells to break up a couple & make your ex lost lover come back to you permanently.
Visit https://www.profbalaj.com/love-spells-loves-spells-that-work/
Call/WhatsApp +27836633417 for more info.
How to Stop a Divorce and Save Your Marriage: Divorce Spells That Really Work...
The Compatibility Challenge:Examining R and Developing TERR
1. The Compatibility Challenge:
Examining R and Developing TERR
Michael Sannella (msannell@tibco.com)
TIBCO Spotfire
http://spotfire.tibco.com
These slides contain all the content from the
useR!2014 poster with the same name
2. What is TERR?
• TERR: TIBCO® Enterprise Runtime for R
• A commercial R-compatible statistics engine.
• The latest in a family of scripting engines.
• S, S-PLUS®, R, TERR
• Embedded in Spotfire®
• Provides R scripting, powers analytic tools.
• Free Developer's Edition available.
• Commercially available for custom integration.
2
3. Why R Compatibility?
• We developed TERR as a completely independent
engine, without looking at R sources or
documentation.
• However, we want TERR to be able to load and run
R packages from CRAN and other repositories, so
TERR must be compatible with R.
• Many CRAN packages work with TERR without change.
• Some CRAN packages can be made to work with TERR if
we rebuild them, without changing any of their code.
• Some (hopefully few) CRAN packages require code
changes to make them work under TERR.
3
4. How to Achieve R Compatibility?
• Our approach: Examine R’s behavior, write unit
tests, and make TERR pass these tests.
• R compatibility is a moving target: As R and the
CRAN packages change over time, we must update
TERR to follow.
• R Wrinkles: While tracking down TERR
incompatibility issues, we uncovered some
interesting R behavior.
• In some cases, we decided not to make TERR
completely compatible with R.
4
5. Developing Compatibility Using
Key Packages
• For some elements of R, a good way to develop
compatibility was to focus on a key package or
application that exercises certain functionality.
• Key package: The CRAN Matrix package
• Matrix fully exercised the S4 object system.
• Getting the Matrix tests working gave us confidence that we
had a compatible implementation of S4.
• Key application: The RStudio GUI
• RStudio exercised the R engine entries used to embed R
within an application.
• RStudio exercised source-code access via the “srcref”
attribute on parsed expressions and functions.
• RStudio exercised the trace, browser functions used for
breakpoints and single-stepping.
5
6. R Wrinkles: Character Encoding
• TERR/R Incompatibility: R uses the "unknown"
character encoding for most strings, whereas TERR
uses the UTF-8 encoding by default.
• R inconsistency: Character encoding of string
constants.
R-3.0.1/Linux
> Encoding(c('abcxC4xyz', 'abcu00C4xyz'))
[1] "unknown" "UTF-8"
R-3.0.1/Windows (and TERR 2.6)
> Encoding(c('abcxC4xyz', 'abcu00C4xyz'))
[1] "latin1" "UTF-8"
6
7. R Wrinkles: Character Encoding (2)
• R inconsistency: The R/Windows parser doesn't
accept many UTF-8 chars in names.
R 3.1.0 Linux (and TERR 2.6):
> typeof(parse(text="au30A4")[[1]])
[1] "symbol"
R 3.1.0 Windows:
> typeof(parse(text="au30A4")[[1]])
Error in parse(text = "a<U+30A4>") :
<text>:1:7: unexpected symbol
1: a<U+30A4
^
7
8. R Wrinkles: Non-Local Returns
• Initially, we had problems using TERR in RStudio,
which executes functions with the following form:
function() {
tryCatch(return(someCalc()),
error=function(e) return("err"))}
• The first argument to tryCatch is evaluated in a
promise, but it can include a “non-local” return that
unwinds the stack to the function where “return”
appears.
8
9. R Wrinkles: Non-Local Returns (2)
• Consider the following code:
yy <- function(expr, n) {
cat("yy: n=", n, "n")
if (n>1) {
yy(expr, n-1)
} else {
expr
}
"yyret"
}
zz <- function(n) {
yy(return(n), n)
"zzret"
}
• When the expression expr is finally
evaluated in yy, it unwinds multiple
calls to yy, and returns from the
outer function zz:
> zz(3)
yy: n= 3
yy: n= 2
yy: n= 1
[1] 3
>
9
10. Compatibility Challenge: R’s C API
• Many CRAN packages contain C code calling into the R
engine via C entries (the “Rapi” API).
• We implement Rapi entries in TERR as we find CRAN
packages that need them.
• Problem: the USE_RINTERNALS macro
• If USE_RINTERNALS is defined, some R macros directly access
R object structures, instead of calling Rapi entries.
• This may improve performance for some code
(but this is not a panacea).
• This won't work with TERR, unless we make the TERR object
structure identical to the R object structure.
• Solution: Can gain compatibility for some packages by
rebuilding the package without USE_RINTERNALS
defined.
10
11. Compatibility Challenge: Packages
Including Base R Code
• Symptom: Trying to run Matrix code, we saw an
unexpected call to .Internal, though it didn’t appear in
the Matrix sources:
> checkMatrix(A)
Error in .Internal:
unimplemented .Internal function: drop
• Reason: S4 setGeneric can incorporate base function
definitions into a generic default method.
• Matrix defines methods for drop, which creates a generic
with base::drop as the default
• Solution: When TERR loads a package with an S4
default method from a system library (base, stats,
graphics, utils), it substitutes the TERR function from
that library.
11
12. Compatibility Challenge: The
smoothEnds Problem
• Symptom: In the IRanges package, the R system function
stats::smoothEnds works with an IRanges Rle object:
> x <- Rle((-4:4)^2)
> options(dropRle = TRUE)
> stats::smoothEnds(x)
numeric-Rle of length 9 with 9 runs
Lengths: 1 1 1 1 1 1 1 1 1
Values : 16 9 4 1 0 1 4 9 16
• However, this doesn't work in TERR:
> x <- Rle((-4:4)^2)
> options(dropRle = TRUE)
> stats::smoothEnds(x)
Error: 'y' must be numeric
12
13. Compatibility Challenge: The
smoothEnds Problem (2)
• Reason:
• TERR implements stats::smoothEnds in native C code.
• Most likely, R implements it as R-language code, calling
other arithmetic operators with methods defined for Rle
objects.
• Solution:
• Rewrite TERR’s version of stats::smoothEnds as R-
language code.
• Deeper issue:
• A TERR algorithm has to call the same methods as R, if
they can be redefined for particular object classes.
13
14. For More Information
• Drop by the TIBCO booth.
• Attend our talks:
• Louis Bajuk-Yorgan: “Deploying R into Business Intelligence and
Real-time Applications”
• (Business track, Session 5, Wednesday 16:00)
• Stephen Kaluzny: “Software Testing and the R Language”
• (Business track, Session 6, Thursday 10:00)
• Spotfire and TERR:
• http://spotfire.tibco.com/terr
• TERR Developer’s Edition:
• http://www.tibcommunity.com/community/products/analytics/terr
• http://tap.tibco.com/
• https://docs.tibco.com/products/tibco-enterprise-runtime-for-r
14