Bubbles – Virtual Data Objects

Stefan Urbanek
Stefan Urbaneksoftware engineer at Facebook
Bubbles
Virtual Data Objects
June 2013Stefan Urbanek
data brewery
Contents
■ Data Objects
■ Operations
■ Context
■ Stores
■ Pipeline
Brewery 1 Issues
■ based on streaming data by records
buffering in python lists as python objects
■ stream networks were using threads
hard to debug, performance penalty (GIL)
■ no use of native data operations
■ difficult to extend
About
Python framework for data
processing and quality probing
v3.3
Objective
focus on the process,
not data technology
Data
■ keep data in their original form
■ use native operations if possible
■ performance provided by technology
■ have other options
for categorical data
* you can do numerical too, but there are
plenty of other, better tools for that
*
Data Objects
data object represents structured data
Data do not have to be in its final form,
neither they have to exist. Promise of
providing data in the future is just fine.
Data are virtual.
virtual data object
fields
virtual data
SQL statement
iterator
id
product
category
amount
unit price
representations
Data Object
■ is defined by fields
■ has one or more representations
■ might be consumable
one-time use objects such as streamed data
SQL statement
iterator
Fields
■ define structure of data object
■ storage metadata
generalized storage type, concrete storage type
■ usage metadata
purpose – analytical point of view, missing values, ...
100
Atari 1040ST
computer
10
400.0
1985
no
integer
string
string
integer
float
integer
string
typeless
nominal
nominal
discrete
measure
ordinal
flag
id
product
category
amount
unit price
year
shipped
Field List
storage type
name
analytical type
(purpose)
sample metadata
SQL statement
iterator
SELECT *
FROM products
WHERE price < 100
engine.execute(statement)
Representations
SQL statement that can
be composed
actual rows fetched
from database
Representations
■ represent actual data in some way
SQL statement, CSV file, API query, iterator, ...
■ decided on runtime
list might be dynamic, based on metadata, availability, …
■ used for data object operations
filtering, composition, transformation, …
Representations
SQL statement
iterator
natural, most efficient
for operations
default, all-purpose,
might be very expensive
Representations
>>> object.representations()
[“sql_table”, “postgres+sql”, “sql”, “rows”]
data might have been
cached in a table
we might use PostgreSQL
dialect specific features...
… or fall back to
generic SQL
for all other
operations
Data Object Role
■ source: provides data
various source representations such as rows()
■ target: consumes data
append(row), append_from(object), ...
target.append_from(source)
for row in source.rows():
print(row)
implementation might
depend on source
Append From ...
Iterator SQL
target.append_from(source)
for row in source.rows():
INSERT INTO target (...)
SQLSQL
INSERT INTO target
SELECT … FROM source
same engine
Operations
Operation
✽… ? ...
… ? ...… ? ...
… ? ...
does something useful with data object and
produces another data object
or something else, also useful
Signature
@operation(“sql”)
def sample(context, object, limit):
...
signature
accepted representation
SQL
✽ … ? ...
iterator
SQL
@operation
@operation(“sql”)
def sample(context, object, limit):
...
@operation(“sql”, “sql”)
def new_rows(context, target, source):
...
@operation(“sql”, “rows”, name=“new_rows”)
def new_rows_iter(context, target, source):
...
unary
binary
binary with same name but different signature:
List of Objects
@operation(“sql[]”)
def append(context, objects):
...
@operation(“rows[]”)
def append(context, objects):
...
matches one of common representations
of all objects in the list
Any / Default
@operation(“*”)
def do_something(context, object):
...
default operation – if no signature matches
Context
Context
SQL iterator
iterator
SQL iterator
✽
✂
⧗
✽
⧗
Mongo
✽
collection of operations
Operation Call
context = Context()
context.operation(“sample”)(source, 10)
sample sample
iterator ⇢SQL ⇢
iterator
SQL
callable reference
runtime dispatch
sample
SQL ⇢
Simplified Call
context.operation(“sample”)(source, 10)
context.o.sample(source, 10)
Dispatch
SQL
✽iterator
SQL
iterator
✽iterator
MongoDB
operation is chosen based on signature
Example: we do not have this kind of operation
for MongoDB, so we use default iterator instead
Dispatch
dynamic dispatch of operations based on
representations of argument objects
Priority
SQL
✽iterator
SQL
iterator
✽SQL
iterator
order of representations matters
might be decided during runtime
same representations,
different order
Incapable?

SQL
SQL
join details
A
A

SQL
SQL
join details
A
B
SQL
join details
SQL

same connection different connection
use
this fails
Retry!

SQL
SQL
A
B
iterator
iteratorSQL
join details join details

SQL

retry another
signature
raise RetryOperation(“rows”, “rows”)
if objects are not compose-able as
expected, operation might gently fail and
request a retry with another signature:
Retry when...
■ not able to compose objects
because of different connections or other reasons
■ not able to use representation
as expected
■ any other reason
Modules
*just an example
collection of operations
SQL Iterator MongoDB
SQL iterator
iterator
SQL iterator
✽
✂
⧗
✽
⧗
Mongo
✽
Extend Context
context.add_operations_from(obj)
any object that has operations as
attributes, such as module
Stores
Object Store
■ contains objects
tables, files, collections, ...
■ objects are named
get_object(name)
■ might create objects
create(name, replace, ...)
Object Store
store = open_store(“sql”, “postgres://localhost/data”)
store factory
Factories: sql, csv (directory), memory, ...
Stores and Objects
source = open_store(“sql”, “postgres://localhost/data”)
target = open_store(“csv”, “./data/”)
source_obj = source.get_object(“products”)
target_obj = target.create(“products”,
fields=source_obj.fields)
for row in source_obj.rows():
target_obj.append(row)
target_obj.flush()
copy data from SQL table to CSV
Pipeline
Pipeline
SQLSQL SQL SQL
Iterator
sequence of operations on “trunk”
Pipeline Operations
stores = {
“source”: open_store(“sql”, “postgres://localhost/data”)
”target” = open_store(“csv”, “./data/”)
}
p = Pipeline(stores=stores)
p.source(“source”, “products”)
p.distinct(“color”)
p.create(“target”, “product_colors”)
operations – first argument is
result from previous step
extract product colors to CSV
Pipeline
p.source(store, object_name, ...)
store.get_object(...)
p.create(store, object_name, ...)
store.create(...)
store.append_from(...)
Operation Library
Filtering
■ row filters
filter_by_value, filter_by_set, filter_by_range
■ field_filter(ctx, obj, keep=[], drop=[], rename={})
keep, drop, rename fields
■ sample(ctx, obj, value, mode)
first N, every Nth, random, …
Uniqueness
■ distinct(ctx, obj, key)
distinct values for key
■ distinct_rows(ctx, obj, key)
distinct whole rows (first occurence of a row) for key
■ count_duplicates(ctx, obj, key)
count number of duplicates for key
Master-detail
■ join_detail(ctx, master, detail, master_key, detail_key)
Joins detail table, such as a dimension, on a specified key. Detail key
field will be dropped from the result.
Note: other join-based operations will be implemented
later, as they need some usability decisions to be made
Dimension Loading
■ added_keys(ctx, dim, source, dim_key, source_key)
which keys in the source are new?
■ added_rows(ctx, dim, source, dim_key, source_key)
which rows in the source are new?
■ changed_rows(ctx, target, source, dim_key, source_key,
fields, version_field)
which rows in the source have changed?
more to come…
Conclusion
To Do
■ consolidate representations API
■ define basic set of operations
■ temporaries and garbage collection
■ sequence objects for surrogate keys
Version 0.2
■ processing graph
connected nodes, like in Brewery
■ more basic backends
at least Mongo
■ bubbles command line tool
already in progress
Future
■ separate operation dispatcher
will allow custom dispatch policies
Contact:
@Stiivi
stefan.urbanek@gmail.com
databrewery.org
1 of 57

Recommended

Data council sf amundsen presentation by
Data council sf    amundsen presentationData council sf    amundsen presentation
Data council sf amundsen presentationTao Feng
2.8K views68 slides
Apache Storm Tutorial by
Apache Storm TutorialApache Storm Tutorial
Apache Storm TutorialDavide Mazza
2.2K views40 slides
Introduction to RDF & SPARQL by
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQLOpen Data Support
12.2K views43 slides
RDF data model by
RDF data modelRDF data model
RDF data modelJose Emilio Labra Gayo
3.3K views12 slides
Introduction to design patterns by
Introduction to design patternsIntroduction to design patterns
Introduction to design patternsAmit Kabra
1.7K views44 slides
Thinking BIG by
Thinking BIGThinking BIG
Thinking BIGLilia Sfaxi
4.3K views29 slides

More Related Content

What's hot

Design patterns by
Design patternsDesign patterns
Design patternsabhisheksagi
14.9K views28 slides
Apache phoenix by
Apache phoenixApache phoenix
Apache phoenixOsama Hussein
162 views44 slides
Construisez votre première application MongoDB by
Construisez votre première application MongoDBConstruisez votre première application MongoDB
Construisez votre première application MongoDBMongoDB
357 views37 slides
Slide 2 data models by
Slide 2 data modelsSlide 2 data models
Slide 2 data modelsVisakh V
2.4K views23 slides
Threads in Java by
Threads in JavaThreads in Java
Threads in JavaGaurav Aggarwal
2.4K views64 slides
Design pattern and their application by
Design pattern and their applicationDesign pattern and their application
Design pattern and their applicationHiệp Tiến
892 views31 slides

What's hot(20)

Design patterns by abhisheksagi
Design patternsDesign patterns
Design patterns
abhisheksagi14.9K views
Construisez votre première application MongoDB by MongoDB
Construisez votre première application MongoDBConstruisez votre première application MongoDB
Construisez votre première application MongoDB
MongoDB357 views
Slide 2 data models by Visakh V
Slide 2 data modelsSlide 2 data models
Slide 2 data models
Visakh V2.4K views
Design pattern and their application by Hiệp Tiến
Design pattern and their applicationDesign pattern and their application
Design pattern and their application
Hiệp Tiến892 views
Intro to Neo4j and Graph Databases by Neo4j
Intro to Neo4j and Graph DatabasesIntro to Neo4j and Graph Databases
Intro to Neo4j and Graph Databases
Neo4j10.9K views
Linked Data and Libraries: What? Why? How? by Emily Nimsakont
Linked Data and Libraries: What? Why? How?Linked Data and Libraries: What? Why? How?
Linked Data and Libraries: What? Why? How?
Emily Nimsakont758 views
Hadoop MapReduce Framework by Edureka!
Hadoop MapReduce FrameworkHadoop MapReduce Framework
Hadoop MapReduce Framework
Edureka!4.1K views
Intro to Graphs and Neo4j by Neo4j
Intro to Graphs and Neo4jIntro to Graphs and Neo4j
Intro to Graphs and Neo4j
Neo4j11.7K views
Jena by yuhana
JenaJena
Jena
yuhana2.6K views
Lecture1 introduction to big data by hktripathy
Lecture1 introduction to big dataLecture1 introduction to big data
Lecture1 introduction to big data
hktripathy5K views
Object Oriented Analysis Design using UML by Ajit Nayak
Object Oriented Analysis Design using UMLObject Oriented Analysis Design using UML
Object Oriented Analysis Design using UML
Ajit Nayak7.5K views
NOSQL- Presentation on NoSQL by Ramakant Soni
NOSQL- Presentation on NoSQLNOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQL
Ramakant Soni28.3K views
Lecture#02, building blocks of uml ASE by babak danyal
Lecture#02, building blocks of uml ASELecture#02, building blocks of uml ASE
Lecture#02, building blocks of uml ASE
babak danyal4.8K views
Kicking ass with redis by Dvir Volk
Kicking ass with redisKicking ass with redis
Kicking ass with redis
Dvir Volk39.1K views
Top 10 Best Practices for Apache Cassandra and DataStax Enterprise by DataStax
Top 10 Best Practices for Apache Cassandra and DataStax EnterpriseTop 10 Best Practices for Apache Cassandra and DataStax Enterprise
Top 10 Best Practices for Apache Cassandra and DataStax Enterprise
DataStax4.2K views

Similar to Bubbles – Virtual Data Objects

Google cloud Dataflow & Apache Flink by
Google cloud Dataflow & Apache FlinkGoogle cloud Dataflow & Apache Flink
Google cloud Dataflow & Apache FlinkIván Fernández Perea
3.8K views41 slides
Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structure... by
Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structure...Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structure...
Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structure...Databricks
13.7K views33 slides
Introduction to SQLite in Adobe AIR by
Introduction to SQLite in Adobe AIRIntroduction to SQLite in Adobe AIR
Introduction to SQLite in Adobe AIRPeter Elst
8.1K views34 slides
Do something useful in Apps Script 5. Get your analytics pageviews to a sprea... by
Do something useful in Apps Script 5. Get your analytics pageviews to a sprea...Do something useful in Apps Script 5. Get your analytics pageviews to a sprea...
Do something useful in Apps Script 5. Get your analytics pageviews to a sprea...Bruce McPherson
5.1K views16 slides
Cubes – pluggable model explained by
Cubes – pluggable model explainedCubes – pluggable model explained
Cubes – pluggable model explainedStefan Urbanek
17.1K views35 slides
Elasticsearch an overview by
Elasticsearch   an overviewElasticsearch   an overview
Elasticsearch an overviewAmit Juneja
90 views42 slides

Similar to Bubbles – Virtual Data Objects(20)

Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structure... by Databricks
Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structure...Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structure...
Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structure...
Databricks13.7K views
Introduction to SQLite in Adobe AIR by Peter Elst
Introduction to SQLite in Adobe AIRIntroduction to SQLite in Adobe AIR
Introduction to SQLite in Adobe AIR
Peter Elst8.1K views
Do something useful in Apps Script 5. Get your analytics pageviews to a sprea... by Bruce McPherson
Do something useful in Apps Script 5. Get your analytics pageviews to a sprea...Do something useful in Apps Script 5. Get your analytics pageviews to a sprea...
Do something useful in Apps Script 5. Get your analytics pageviews to a sprea...
Bruce McPherson5.1K views
Cubes – pluggable model explained by Stefan Urbanek
Cubes – pluggable model explainedCubes – pluggable model explained
Cubes – pluggable model explained
Stefan Urbanek17.1K views
Elasticsearch an overview by Amit Juneja
Elasticsearch   an overviewElasticsearch   an overview
Elasticsearch an overview
Amit Juneja90 views
Local data storage for mobile apps by Ivano Malavolta
Local data storage for mobile appsLocal data storage for mobile apps
Local data storage for mobile apps
Ivano Malavolta3.1K views
Micro-ORM Introduction - Don't overcomplicate by Kiev ALT.NET
Micro-ORM Introduction - Don't overcomplicateMicro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicate
Kiev ALT.NET4.5K views
.NET Database Toolkit by wlscaudill
.NET Database Toolkit.NET Database Toolkit
.NET Database Toolkit
wlscaudill889 views
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635) by Michael Rys
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
Michael Rys2.5K views
QTP Automation Testing Tutorial 7 by Akash Tyagi
QTP Automation Testing Tutorial 7QTP Automation Testing Tutorial 7
QTP Automation Testing Tutorial 7
Akash Tyagi353 views
Django tech-talk by dtdannen
Django tech-talkDjango tech-talk
Django tech-talk
dtdannen560 views
Spline 0.3 and Plans for 0.4 by Vaclav Kosar
Spline 0.3 and Plans for 0.4 Spline 0.3 and Plans for 0.4
Spline 0.3 and Plans for 0.4
Vaclav Kosar91 views
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas by MapR Technologies
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael HausenblasBerlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas
MapR Technologies14.3K views
Data Source API in Spark by Databricks
Data Source API in SparkData Source API in Spark
Data Source API in Spark
Databricks18.9K views
09.Local Database Files and Storage on WP by Nguyen Tuan
09.Local Database Files and Storage on WP09.Local Database Files and Storage on WP
09.Local Database Files and Storage on WP
Nguyen Tuan4.2K views
DataFinder concepts and example: General (20100503) by Data Finder
DataFinder concepts and example: General (20100503)DataFinder concepts and example: General (20100503)
DataFinder concepts and example: General (20100503)
Data Finder564 views
Understanding backbonejs by Nick Lee
Understanding backbonejsUnderstanding backbonejs
Understanding backbonejs
Nick Lee2.6K views

More from Stefan Urbanek

StepTalk Introduction by
StepTalk IntroductionStepTalk Introduction
StepTalk IntroductionStefan Urbanek
433 views16 slides
Forces and Threats in a Data Warehouse (and why metadata and architecture is ... by
Forces and Threats in a Data Warehouse (and why metadata and architecture is ...Forces and Threats in a Data Warehouse (and why metadata and architecture is ...
Forces and Threats in a Data Warehouse (and why metadata and architecture is ...Stefan Urbanek
780 views40 slides
Sepro - introduction by
Sepro - introductionSepro - introduction
Sepro - introductionStefan Urbanek
2.1K views41 slides
New york data brewery meetup #1 – introduction by
New york data brewery meetup #1 – introductionNew york data brewery meetup #1 – introduction
New york data brewery meetup #1 – introductionStefan Urbanek
2.5K views42 slides
Cubes – ways of deployment by
Cubes – ways of deploymentCubes – ways of deployment
Cubes – ways of deploymentStefan Urbanek
3.2K views9 slides
Knowledge Management Lecture 4: Models by
Knowledge Management Lecture 4: ModelsKnowledge Management Lecture 4: Models
Knowledge Management Lecture 4: ModelsStefan Urbanek
36.6K views22 slides

More from Stefan Urbanek(18)

Forces and Threats in a Data Warehouse (and why metadata and architecture is ... by Stefan Urbanek
Forces and Threats in a Data Warehouse (and why metadata and architecture is ...Forces and Threats in a Data Warehouse (and why metadata and architecture is ...
Forces and Threats in a Data Warehouse (and why metadata and architecture is ...
Stefan Urbanek780 views
New york data brewery meetup #1 – introduction by Stefan Urbanek
New york data brewery meetup #1 – introductionNew york data brewery meetup #1 – introduction
New york data brewery meetup #1 – introduction
Stefan Urbanek2.5K views
Cubes – ways of deployment by Stefan Urbanek
Cubes – ways of deploymentCubes – ways of deployment
Cubes – ways of deployment
Stefan Urbanek3.2K views
Knowledge Management Lecture 4: Models by Stefan Urbanek
Knowledge Management Lecture 4: ModelsKnowledge Management Lecture 4: Models
Knowledge Management Lecture 4: Models
Stefan Urbanek36.6K views
Dallas Data Brewery Meetup #2: Data Quality Perception by Stefan Urbanek
Dallas Data Brewery Meetup #2: Data Quality PerceptionDallas Data Brewery Meetup #2: Data Quality Perception
Dallas Data Brewery Meetup #2: Data Quality Perception
Stefan Urbanek1.1K views
Dallas Data Brewery - introduction by Stefan Urbanek
Dallas Data Brewery - introductionDallas Data Brewery - introduction
Dallas Data Brewery - introduction
Stefan Urbanek953 views
Python business intelligence (PyData 2012 talk) by Stefan Urbanek
Python business intelligence (PyData 2012 talk)Python business intelligence (PyData 2012 talk)
Python business intelligence (PyData 2012 talk)
Stefan Urbanek22.4K views
Cubes - Lightweight Python OLAP (EuroPython 2012 talk) by Stefan Urbanek
Cubes - Lightweight Python OLAP (EuroPython 2012 talk)Cubes - Lightweight Python OLAP (EuroPython 2012 talk)
Cubes - Lightweight Python OLAP (EuroPython 2012 talk)
Stefan Urbanek12.9K views
Knowledge Management Lecture 3: Cycle by Stefan Urbanek
Knowledge Management Lecture 3: CycleKnowledge Management Lecture 3: Cycle
Knowledge Management Lecture 3: Cycle
Stefan Urbanek33.9K views
Knowledge Management Lecture 2: Individuals, communities and organizations by Stefan Urbanek
Knowledge Management Lecture 2: Individuals, communities and organizationsKnowledge Management Lecture 2: Individuals, communities and organizations
Knowledge Management Lecture 2: Individuals, communities and organizations
Stefan Urbanek5.2K views
Knowledge Management Lecture 1: definition, history and presence by Stefan Urbanek
Knowledge Management Lecture 1: definition, history and presenceKnowledge Management Lecture 1: definition, history and presence
Knowledge Management Lecture 1: definition, history and presence
Stefan Urbanek25.4K views
Cubes - Lightweight OLAP Framework by Stefan Urbanek
Cubes - Lightweight OLAP FrameworkCubes - Lightweight OLAP Framework
Cubes - Lightweight OLAP Framework
Stefan Urbanek5.8K views
Data Cleansing introduction (for BigClean Prague 2011) by Stefan Urbanek
Data Cleansing introduction (for BigClean Prague 2011)Data Cleansing introduction (for BigClean Prague 2011)
Data Cleansing introduction (for BigClean Prague 2011)
Stefan Urbanek4.9K views
Knowledge Management Introduction by Stefan Urbanek
Knowledge Management IntroductionKnowledge Management Introduction
Knowledge Management Introduction
Stefan Urbanek1.9K views

Recently uploaded

Case Study Copenhagen Energy and Business Central.pdf by
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdfAitana
17 views3 slides
Business Analyst Series 2023 - Week 3 Session 5 by
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5DianaGray10
345 views20 slides
Zero to Automated in Under a Year by
Zero to Automated in Under a YearZero to Automated in Under a Year
Zero to Automated in Under a YearNetwork Automation Forum
22 views23 slides
Data Integrity for Banking and Financial Services by
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial ServicesPrecisely
29 views26 slides
MVP and prioritization.pdf by
MVP and prioritization.pdfMVP and prioritization.pdf
MVP and prioritization.pdfrahuldharwal141
37 views8 slides
SUPPLIER SOURCING.pptx by
SUPPLIER SOURCING.pptxSUPPLIER SOURCING.pptx
SUPPLIER SOURCING.pptxangelicacueva6
20 views1 slide

Recently uploaded(20)

Case Study Copenhagen Energy and Business Central.pdf by Aitana
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdf
Aitana17 views
Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10345 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely29 views
SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson126 views
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty22 views
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays24 views
The Forbidden VPN Secrets.pdf by Mariam Shaba
The Forbidden VPN Secrets.pdfThe Forbidden VPN Secrets.pdf
The Forbidden VPN Secrets.pdf
Mariam Shaba20 views
Special_edition_innovator_2023.pdf by WillDavies22
Special_edition_innovator_2023.pdfSpecial_edition_innovator_2023.pdf
Special_edition_innovator_2023.pdf
WillDavies2218 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker48 views

Bubbles – Virtual Data Objects