SlideShare a Scribd company logo
1 of 22
Download to read offline
Living with spec
@sbelak
simon@goopti.com
Parsing with Derivatives
A Functional Pearl
Matthew Might David Darais
University of Utah
might@cs.utah.edu, david.darais@gmail.com
Daniel Spiewak
University of Wisconsin, Milwaukee
dspiewak@uwm.edu
Abstract
We present a functional approach to parsing unrestricted context-
free grammars based on Brzozowski’s derivative of regular expres-
sions. If we consider context-free grammars as recursive regular ex-
pressions, Brzozowski’s equational theory extends without modifi-
cation to context-free grammars (and it generalizes to parser combi-
nators). The supporting actors in this story are three concepts famil-
iar to functional programmers—laziness, memoization and fixed
points; these allow Brzozowski’s original equations to be translit-
erated into purely functional code in about 30 lines spread over
three functions.
Yet, this almost impossibly brief implementation has a draw-
back: its performance is sour—in both theory and practice. The
culprit? Each derivative can double the size of a grammar, and with
it, the cost of the next derivative.
Fortunately, much of the new structure inflicted by the derivative
is either dead on arrival, or it dies after the very next derivative.
To eliminate it, we once again exploit laziness and memoization
The derivative of regular expressions [1], if gently tempered
with laziness, memoization and fixed points, acts immediately
as a pure, functional technique for generating parse forests from
arbitrary context-free grammars. Despite—even because of—its
simplicity, the derivative transparently handles ambiguity, left-
recursion, right-recursion, ill-founded recursion or any combina-
tion thereof.
1.1 Outline
• After a review of formal languages, we introduce Brzozowski’s
derivative for regular languages. A brief implementation high-
lights its rugged elegance.
• As our implementation of the derivative engages context-free
languages, non-termination emerges as a problem.
• Three small, surgical modifications to the implementation (but
not the theory)—laziness, memoization and fixed points—
guarantee termination. Termination means the derivative can
blog.klipse.tech/clojure/2016/10/02/parsing-with-derivatives-regular.html
Writing a spec should enable automatic:
• Validation
• Error reporting
• Destructuring
• Instrumentation
• Test-data generation
• Generative test generation
*http://clojure.org/about/spec
“Composition is about
decomposing.”
— E. Normand
The code base
• ~15k loc
• ETL
• Risk-hedging
• Demand-responsive pricing
• Packing & routing
• Internal BI tools
• …
Validation
• API boundaries
• Structured errors
• Fail fast = more context
• nil punning
• Multiple airities
Friendlier error messages
• Pluggable explanations via s/*explain-out*
• Capture common mistakes
• Provide hints
• Limitations
• One explainer function for all
• Don’t know which spec (only what went wrong)
Destructuring
• Pull apart and name
• Patterns
• case (dispatch on tag)
• core.match
• Separate data description and transformation
Data macros
• Recursive transformations into canonical form
• s/conformer
• Do more without code macros
* juxt.pro/blog/posts/data-macros.html
Generative testing
• Limitations
• sequences with internal structure (time series
etc.)
• generic higher-order functions (e.g. map)
• Uncovers numerical instabilities
• s/exercise for mocking
Queryable data descriptions:
• s/registry, s/form
• Build a graph
• No inline docs :(
Interact with your type system!
Case study: autogenerating materialised views
Kafka
Materialised
views
Events
External data
Automatic view generation
• Event & attribute ontology
• Manual (via spec)
• Inferred
• Statistical analysis (seasonality
detection, outlier removal, …)
Onyx Onyx
Onyx
Simple first,
then Easy
Going forward
My favourites
• Data macros
• Destructuring
• Queryable data descriptions
• Structured errors
Questions
@sbelak
simon@goopti.com
clojure.org/about/spec
matt.might.net/papers/might2011derivatives.pdf
infoq.com/presentations/Mixin-based-Inheritance
realworldclojure.com/the-system-paradigm
juxt.pro/blog/posts/data-macros.html
blog.klipse.tech/clojure/2016/10/02/parsing-with-derivatives-regular.html
indiegogo.com/projects/typed-clojure-clojure-spec-auto-annotations#/
github.com/arohner/spectrum

More Related Content

What's hot

Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - TalkMatthias Noback
 
Service abstractions - Part 1: Queries
Service abstractions - Part 1: QueriesService abstractions - Part 1: Queries
Service abstractions - Part 1: QueriesMatthias Noback
 
Advanced web application architecture Way2Web
Advanced web application architecture Way2WebAdvanced web application architecture Way2Web
Advanced web application architecture Way2WebMatthias Noback
 
Layers, ports and adapters
Layers, ports and adaptersLayers, ports and adapters
Layers, ports and adaptersMatthias Noback
 
A testing strategy for hexagonal applications
A testing strategy for hexagonal applicationsA testing strategy for hexagonal applications
A testing strategy for hexagonal applicationsMatthias Noback
 
Dynamic C# and a New World of Possibilities
Dynamic C# and a New World of PossibilitiesDynamic C# and a New World of Possibilities
Dynamic C# and a New World of PossibilitiesChicago ALT.NET
 
Introduction to Functional Programming and Clojure
Introduction to Functional Programming and ClojureIntroduction to Functional Programming and Clojure
Introduction to Functional Programming and ClojureSoumendra Daas
 
A Novel Visualization of Biblical Texts Aligned at the Word-Level
A Novel Visualization of Biblical Texts Aligned at the Word-LevelA Novel Visualization of Biblical Texts Aligned at the Word-Level
A Novel Visualization of Biblical Texts Aligned at the Word-LevelAndrewZulker
 
ANTLR4 and its testing
ANTLR4 and its testingANTLR4 and its testing
ANTLR4 and its testingKnoldus Inc.
 
Natural Language to Visualization by Neural Machine Translation
Natural Language to Visualization by Neural Machine TranslationNatural Language to Visualization by Neural Machine Translation
Natural Language to Visualization by Neural Machine Translationivaderivader
 
Some Cool Design Patterns, Practices, and Principles
Some Cool Design Patterns, Practices, and PrinciplesSome Cool Design Patterns, Practices, and Principles
Some Cool Design Patterns, Practices, and Principlesitsarsalan
 
Building Your Own DSL with Xtext
Building Your Own DSL with XtextBuilding Your Own DSL with Xtext
Building Your Own DSL with XtextGlobalLogic Ukraine
 

What's hot (15)

Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
 
Service abstractions - Part 1: Queries
Service abstractions - Part 1: QueriesService abstractions - Part 1: Queries
Service abstractions - Part 1: Queries
 
Advanced web application architecture Way2Web
Advanced web application architecture Way2WebAdvanced web application architecture Way2Web
Advanced web application architecture Way2Web
 
Layers, ports and adapters
Layers, ports and adaptersLayers, ports and adapters
Layers, ports and adapters
 
A testing strategy for hexagonal applications
A testing strategy for hexagonal applicationsA testing strategy for hexagonal applications
A testing strategy for hexagonal applications
 
Dynamic C# and a New World of Possibilities
Dynamic C# and a New World of PossibilitiesDynamic C# and a New World of Possibilities
Dynamic C# and a New World of Possibilities
 
ANTLR4 in depth
ANTLR4 in depthANTLR4 in depth
ANTLR4 in depth
 
Introduction to Functional Programming and Clojure
Introduction to Functional Programming and ClojureIntroduction to Functional Programming and Clojure
Introduction to Functional Programming and Clojure
 
A Novel Visualization of Biblical Texts Aligned at the Word-Level
A Novel Visualization of Biblical Texts Aligned at the Word-LevelA Novel Visualization of Biblical Texts Aligned at the Word-Level
A Novel Visualization of Biblical Texts Aligned at the Word-Level
 
Eurosport's Kodakademi #2
Eurosport's Kodakademi #2Eurosport's Kodakademi #2
Eurosport's Kodakademi #2
 
Introdução à Elixir
Introdução à ElixirIntrodução à Elixir
Introdução à Elixir
 
ANTLR4 and its testing
ANTLR4 and its testingANTLR4 and its testing
ANTLR4 and its testing
 
Natural Language to Visualization by Neural Machine Translation
Natural Language to Visualization by Neural Machine TranslationNatural Language to Visualization by Neural Machine Translation
Natural Language to Visualization by Neural Machine Translation
 
Some Cool Design Patterns, Practices, and Principles
Some Cool Design Patterns, Practices, and PrinciplesSome Cool Design Patterns, Practices, and Principles
Some Cool Design Patterns, Practices, and Principles
 
Building Your Own DSL with Xtext
Building Your Own DSL with XtextBuilding Your Own DSL with Xtext
Building Your Own DSL with Xtext
 

Viewers also liked

O Filozofih In Programih
O Filozofih In ProgramihO Filozofih In Programih
O Filozofih In ProgramihSimon Belak
 
Living with-spec
Living with-specLiving with-spec
Living with-specSimon Belak
 
Turn to datadriven: the first 6 months
Turn to datadriven: the first 6 monthsTurn to datadriven: the first 6 months
Turn to datadriven: the first 6 monthsSimon Belak
 
Odkrivanje segmentov iz podatkov
Odkrivanje segmentov iz podatkovOdkrivanje segmentov iz podatkov
Odkrivanje segmentov iz podatkovSimon Belak
 
The time is out of joint: O cursed spite, / That ever I was born to set it ri...
The time is out of joint: O cursed spite, / That ever I was born to set it ri...The time is out of joint: O cursed spite, / That ever I was born to set it ri...
The time is out of joint: O cursed spite, / That ever I was born to set it ri...Simon Belak
 
Doing data science with Clojure
Doing data science with ClojureDoing data science with Clojure
Doing data science with ClojureSimon Belak
 
Predicting the future with goopti
Predicting the future with gooptiPredicting the future with goopti
Predicting the future with gooptiSimon Belak
 
Napadi na algoritme za strojno učenje
Napadi na algoritme za strojno učenjeNapadi na algoritme za strojno učenje
Napadi na algoritme za strojno učenjeSimon Belak
 
Turn to data-driven: the first 6 months, Simon Belak
Turn to data-driven: the first 6 months, Simon BelakTurn to data-driven: the first 6 months, Simon Belak
Turn to data-driven: the first 6 months, Simon BelakRed Orbit digital marketing
 
ZARA-Fashion and Accesories
ZARA-Fashion and AccesoriesZARA-Fashion and Accesories
ZARA-Fashion and AccesoriesVandan Kothari
 
Ignorance and Stupidity
Ignorance and StupidityIgnorance and Stupidity
Ignorance and Stupidityintheory
 
Stupidity spawns creativity
Stupidity spawns creativityStupidity spawns creativity
Stupidity spawns creativityAli Anani, PhD
 
Challenging the Status Quo
Challenging the Status QuoChallenging the Status Quo
Challenging the Status QuoPaul Saunders
 
NSA: Edward Snowden Case Study
NSA: Edward Snowden Case StudyNSA: Edward Snowden Case Study
NSA: Edward Snowden Case StudyMichael Nickle
 
Optical illusion compilation
Optical illusion compilationOptical illusion compilation
Optical illusion compilationtiben26
 
Snowden slides
Snowden slidesSnowden slides
Snowden slidesDavid West
 

Viewers also liked (20)

O Filozofih In Programih
O Filozofih In ProgramihO Filozofih In Programih
O Filozofih In Programih
 
Living with-spec
Living with-specLiving with-spec
Living with-spec
 
Turn to datadriven: the first 6 months
Turn to datadriven: the first 6 monthsTurn to datadriven: the first 6 months
Turn to datadriven: the first 6 months
 
Odkrivanje segmentov iz podatkov
Odkrivanje segmentov iz podatkovOdkrivanje segmentov iz podatkov
Odkrivanje segmentov iz podatkov
 
inOrbit 2015: odkrivanje segmentov iz podatkov
inOrbit 2015: odkrivanje segmentov iz podatkovinOrbit 2015: odkrivanje segmentov iz podatkov
inOrbit 2015: odkrivanje segmentov iz podatkov
 
The time is out of joint: O cursed spite, / That ever I was born to set it ri...
The time is out of joint: O cursed spite, / That ever I was born to set it ri...The time is out of joint: O cursed spite, / That ever I was born to set it ri...
The time is out of joint: O cursed spite, / That ever I was born to set it ri...
 
Dao of lisp
Dao of lispDao of lisp
Dao of lisp
 
Doing data science with Clojure
Doing data science with ClojureDoing data science with Clojure
Doing data science with Clojure
 
Predicting the future with goopti
Predicting the future with gooptiPredicting the future with goopti
Predicting the future with goopti
 
Napadi na algoritme za strojno učenje
Napadi na algoritme za strojno učenjeNapadi na algoritme za strojno učenje
Napadi na algoritme za strojno učenje
 
Spec + onyx
Spec + onyxSpec + onyx
Spec + onyx
 
Turn to data-driven: the first 6 months, Simon Belak
Turn to data-driven: the first 6 months, Simon BelakTurn to data-driven: the first 6 months, Simon Belak
Turn to data-driven: the first 6 months, Simon Belak
 
ZARA-Fashion and Accesories
ZARA-Fashion and AccesoriesZARA-Fashion and Accesories
ZARA-Fashion and Accesories
 
Ignorance and Stupidity
Ignorance and StupidityIgnorance and Stupidity
Ignorance and Stupidity
 
Edward Snowden Data-Breach
Edward Snowden Data-BreachEdward Snowden Data-Breach
Edward Snowden Data-Breach
 
Stupidity spawns creativity
Stupidity spawns creativityStupidity spawns creativity
Stupidity spawns creativity
 
Challenging the Status Quo
Challenging the Status QuoChallenging the Status Quo
Challenging the Status Quo
 
NSA: Edward Snowden Case Study
NSA: Edward Snowden Case StudyNSA: Edward Snowden Case Study
NSA: Edward Snowden Case Study
 
Optical illusion compilation
Optical illusion compilationOptical illusion compilation
Optical illusion compilation
 
Snowden slides
Snowden slidesSnowden slides
Snowden slides
 

Similar to Living with-spec

Spec: a lisp-flavoured type system
Spec: a lisp-flavoured type systemSpec: a lisp-flavoured type system
Spec: a lisp-flavoured type systemSimon Belak
 
OSCon - Performance vs Scalability
OSCon - Performance vs ScalabilityOSCon - Performance vs Scalability
OSCon - Performance vs ScalabilityGleicon Moraes
 
Wcre2009 bettenburg
Wcre2009 bettenburgWcre2009 bettenburg
Wcre2009 bettenburgSAIL_QU
 
Introduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaIntroduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaopenseesdays
 
GPT-2: Language Models are Unsupervised Multitask Learners
GPT-2: Language Models are Unsupervised Multitask LearnersGPT-2: Language Models are Unsupervised Multitask Learners
GPT-2: Language Models are Unsupervised Multitask LearnersYoung Seok Kim
 
Put Your Hands in the Mud: What Technique, Why, and How
Put Your Hands in the Mud: What Technique, Why, and HowPut Your Hands in the Mud: What Technique, Why, and How
Put Your Hands in the Mud: What Technique, Why, and HowMassimiliano Di Penta
 
Software_engineering.pptx
Software_engineering.pptxSoftware_engineering.pptx
Software_engineering.pptxjohn6938
 
Compiler Design.pptx
Compiler Design.pptxCompiler Design.pptx
Compiler Design.pptxSouvikRoy149
 
Xcore meets IncQuery: How the New Generation of DSLs are Made
Xcore meets IncQuery: How the New Generation of DSLs are MadeXcore meets IncQuery: How the New Generation of DSLs are Made
Xcore meets IncQuery: How the New Generation of DSLs are MadeIstvan Rath
 
‘CodeAliker’ - Plagiarism Detection on the Cloud
‘CodeAliker’ - Plagiarism Detection on the Cloud ‘CodeAliker’ - Plagiarism Detection on the Cloud
‘CodeAliker’ - Plagiarism Detection on the Cloud acijjournal
 
A Case Study Of A Reusable Component Collection
A Case Study Of A Reusable Component CollectionA Case Study Of A Reusable Component Collection
A Case Study Of A Reusable Component CollectionJennifer Strong
 
A Novel Analysis Space For Pointer Analysis And Its Application For Bug Finding
A Novel Analysis Space For Pointer Analysis And Its Application For Bug FindingA Novel Analysis Space For Pointer Analysis And Its Application For Bug Finding
A Novel Analysis Space For Pointer Analysis And Its Application For Bug FindingScott Donald
 
What To Leave Implicit
What To Leave ImplicitWhat To Leave Implicit
What To Leave ImplicitMartin Odersky
 
STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages ijseajournal
 
Doppl Development Introduction
Doppl Development IntroductionDoppl Development Introduction
Doppl Development IntroductionDiego Perini
 
Introduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallIntroduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallJohn Mulhall
 
What To Leave Implicit
What To Leave ImplicitWhat To Leave Implicit
What To Leave ImplicitMartin Odersky
 
Dependency Bugs The Dark Side Of Variability, Reuse, and Modularity
Dependency Bugs The Dark Side Of Variability, Reuse, and ModularityDependency Bugs The Dark Side Of Variability, Reuse, and Modularity
Dependency Bugs The Dark Side Of Variability, Reuse, and ModularityAndrzej Wasowski
 

Similar to Living with-spec (20)

Spec: a lisp-flavoured type system
Spec: a lisp-flavoured type systemSpec: a lisp-flavoured type system
Spec: a lisp-flavoured type system
 
OSCon - Performance vs Scalability
OSCon - Performance vs ScalabilityOSCon - Performance vs Scalability
OSCon - Performance vs Scalability
 
Wcre2009 bettenburg
Wcre2009 bettenburgWcre2009 bettenburg
Wcre2009 bettenburg
 
Introduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaIntroduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKenna
 
Symbolic Execution And KLEE
Symbolic Execution And KLEESymbolic Execution And KLEE
Symbolic Execution And KLEE
 
GPT-2: Language Models are Unsupervised Multitask Learners
GPT-2: Language Models are Unsupervised Multitask LearnersGPT-2: Language Models are Unsupervised Multitask Learners
GPT-2: Language Models are Unsupervised Multitask Learners
 
Put Your Hands in the Mud: What Technique, Why, and How
Put Your Hands in the Mud: What Technique, Why, and HowPut Your Hands in the Mud: What Technique, Why, and How
Put Your Hands in the Mud: What Technique, Why, and How
 
Software_engineering.pptx
Software_engineering.pptxSoftware_engineering.pptx
Software_engineering.pptx
 
Compiler Design.pptx
Compiler Design.pptxCompiler Design.pptx
Compiler Design.pptx
 
Xcore meets IncQuery: How the New Generation of DSLs are Made
Xcore meets IncQuery: How the New Generation of DSLs are MadeXcore meets IncQuery: How the New Generation of DSLs are Made
Xcore meets IncQuery: How the New Generation of DSLs are Made
 
‘CodeAliker’ - Plagiarism Detection on the Cloud
‘CodeAliker’ - Plagiarism Detection on the Cloud ‘CodeAliker’ - Plagiarism Detection on the Cloud
‘CodeAliker’ - Plagiarism Detection on the Cloud
 
A Case Study Of A Reusable Component Collection
A Case Study Of A Reusable Component CollectionA Case Study Of A Reusable Component Collection
A Case Study Of A Reusable Component Collection
 
A Novel Analysis Space For Pointer Analysis And Its Application For Bug Finding
A Novel Analysis Space For Pointer Analysis And Its Application For Bug FindingA Novel Analysis Space For Pointer Analysis And Its Application For Bug Finding
A Novel Analysis Space For Pointer Analysis And Its Application For Bug Finding
 
Six of the Best
Six of the BestSix of the Best
Six of the Best
 
What To Leave Implicit
What To Leave ImplicitWhat To Leave Implicit
What To Leave Implicit
 
STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages
 
Doppl Development Introduction
Doppl Development IntroductionDoppl Development Introduction
Doppl Development Introduction
 
Introduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallIntroduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John Mulhall
 
What To Leave Implicit
What To Leave ImplicitWhat To Leave Implicit
What To Leave Implicit
 
Dependency Bugs The Dark Side Of Variability, Reuse, and Modularity
Dependency Bugs The Dark Side Of Variability, Reuse, and ModularityDependency Bugs The Dark Side Of Variability, Reuse, and Modularity
Dependency Bugs The Dark Side Of Variability, Reuse, and Modularity
 

More from Simon Belak

Tools for building the future
Tools for building the futureTools for building the future
Tools for building the futureSimon Belak
 
Doing data science with clojure
Doing data science with clojureDoing data science with clojure
Doing data science with clojureSimon Belak
 
Exploratory analysis
Exploratory analysisExploratory analysis
Exploratory analysisSimon Belak
 
Levelling up your data infrastructure
Levelling up your data infrastructureLevelling up your data infrastructure
Levelling up your data infrastructureSimon Belak
 
The subtle art of recommendation
The subtle art of recommendationThe subtle art of recommendation
The subtle art of recommendationSimon Belak
 
Metabase Ljubljana Meetup #2
Metabase Ljubljana Meetup #2Metabase Ljubljana Meetup #2
Metabase Ljubljana Meetup #2Simon Belak
 
Metabase lj meetup
Metabase lj meetupMetabase lj meetup
Metabase lj meetupSimon Belak
 
Sketch algorithms
Sketch algorithmsSketch algorithms
Sketch algorithmsSimon Belak
 
Transducing for fun and profit
Transducing for fun and profitTransducing for fun and profit
Transducing for fun and profitSimon Belak
 
Your metrics are wrong
Your metrics are wrongYour metrics are wrong
Your metrics are wrongSimon Belak
 
Writing smart contracts the sane way
Writing smart contracts the sane wayWriting smart contracts the sane way
Writing smart contracts the sane waySimon Belak
 
Online statistical analysis using transducers and sketch algorithms
Online statistical analysis using transducers and sketch algorithmsOnline statistical analysis using transducers and sketch algorithms
Online statistical analysis using transducers and sketch algorithmsSimon Belak
 
Save the princess
Save the princessSave the princess
Save the princessSimon Belak
 
Data driven going to market strategy
Data driven going to market strategyData driven going to market strategy
Data driven going to market strategySimon Belak
 
A data layer in clojure
A data layer in clojureA data layer in clojure
A data layer in clojureSimon Belak
 
Using Onyx in anger
Using Onyx in angerUsing Onyx in anger
Using Onyx in angerSimon Belak
 
Statisics for hackers
Statisics for hackersStatisics for hackers
Statisics for hackersSimon Belak
 
The data driven startup
The data driven startupThe data driven startup
The data driven startupSimon Belak
 

More from Simon Belak (20)

Tools for building the future
Tools for building the futureTools for building the future
Tools for building the future
 
Doing data science with clojure
Doing data science with clojureDoing data science with clojure
Doing data science with clojure
 
Exploratory analysis
Exploratory analysisExploratory analysis
Exploratory analysis
 
Levelling up your data infrastructure
Levelling up your data infrastructureLevelling up your data infrastructure
Levelling up your data infrastructure
 
The subtle art of recommendation
The subtle art of recommendationThe subtle art of recommendation
The subtle art of recommendation
 
Metabase Ljubljana Meetup #2
Metabase Ljubljana Meetup #2Metabase Ljubljana Meetup #2
Metabase Ljubljana Meetup #2
 
Metabase lj meetup
Metabase lj meetupMetabase lj meetup
Metabase lj meetup
 
Sketch algorithms
Sketch algorithmsSketch algorithms
Sketch algorithms
 
Transducing for fun and profit
Transducing for fun and profitTransducing for fun and profit
Transducing for fun and profit
 
Your metrics are wrong
Your metrics are wrongYour metrics are wrong
Your metrics are wrong
 
Writing smart contracts the sane way
Writing smart contracts the sane wayWriting smart contracts the sane way
Writing smart contracts the sane way
 
Online statistical analysis using transducers and sketch algorithms
Online statistical analysis using transducers and sketch algorithmsOnline statistical analysis using transducers and sketch algorithms
Online statistical analysis using transducers and sketch algorithms
 
Save the princess
Save the princessSave the princess
Save the princess
 
Data driven going to market strategy
Data driven going to market strategyData driven going to market strategy
Data driven going to market strategy
 
A data layer in clojure
A data layer in clojureA data layer in clojure
A data layer in clojure
 
Using Onyx in anger
Using Onyx in angerUsing Onyx in anger
Using Onyx in anger
 
The log
The logThe log
The log
 
Statisics for hackers
Statisics for hackersStatisics for hackers
Statisics for hackers
 
The data driven startup
The data driven startupThe data driven startup
The data driven startup
 
Investor story
Investor storyInvestor story
Investor story
 

Recently uploaded

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Recently uploaded (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

Living with-spec