SlideShare une entreprise Scribd logo
1  sur  57
Agenda
●

Perspective

●

Preliminaries

●

On complecting

●

Overview of Zeder

●

Out of the Tar Pit

●

A Little Further out of the tar pit

●

Demo

●

Future
Preliminaries
Lens
st

Fogus' 1 Law
In the same way that an apple tree
“apples” – so too should your
systems “tuple”
[Entity Attribute Value]
Decomplecting
Take transients...

...please
Transients
●

Limited mutability

●

Thread isolated change

●

Not persistent

●

Not references

●

Speed boosts
Transients
●

Limited mutability

●

Thread isolated change

●

Not persistent

●

Not references

●

Speed boosts

Change policy
Transients
●

Limited mutability

●

Thread isolated change

●

Not persistent

●

Not references

●

Speed boosts

Change policy
Sharing policy
Transients
●

Limited mutability

●

Thread isolated change

●

Not persistent

●

Not references

●

Speed boosts

Change policy
Sharing policy
Transients
●

Limited mutability

●

Thread isolated change

●

Not persistent

●

Not references

●

Speed boosts

Change policy
Sharing policy
Reference policy
Transients
●

Limited mutability

●

Thread isolated change

●

Not persistent

●

Not references

●

Speed boosts

Change policy
Sharing policy
Reference policy

This is what you
wanted.
RAWG!?
Pods decomplect
●

Reference policy

●

Change policy
Zeder pods decomplect
●

Reference policy

●

Change policy

●

Sharing policy (Zeder version anyway)
Zeder pods decomplect
●

Reference policy
–

●

There are themselves references

Change policy
–
–

●

Transients internally
Mutable objects

Sharing policy (Zeder version anyway)
–
–

Single-thread
Multiple threads
A pod++
transient-of

value

value-of

writer

shareable?
reader
th

Fogus' 10 Rule
Any sufficiently complicated Clojure
program contains an ad hoc,
informally-specified, bug-ridden,
slow implementation of half of
OPS5.
OPS5
●

Invented in the late 1970s

●

Charles Forgy

●

Rete algorithm

●

Incredibly efficient

●

Used to develop expert systems (XCON)
OPS5
OPS5
{:db/ident :user/username … }
{:db/ident :user/salt … }

(defn store-user-info [uname]
@(transact connection
[{:user/username uname
:user/salt (gen-salt)}]))

;; something triggers a call
;; to store-user-info
OPS5
(literalize user
username
salt
)

{:db/ident :user/username … }
{:db/ident :user/salt … }

(p new-user
(user ^username <name>
^salt nil))
-->
(modify 1 ^salt “Bad salt”)
)

(defn store-user-info [uname]
@(transact connection
[{:user/username uname
:user/salt (gen-salt)}]))

(make user ^username fogus

;; something triggers a call
OPS5
(literalize user
username
salt
)

{:db/ident :user/username … }
{:db/ident :user/salt … }

(p new-user
(user ^username <name>
^salt nil))
-->
(modify 1 ^salt “Bad salt”)
)

(defn store-user-info [uname]
@(transact connection
[{:user/username uname
:user/salt (gen-salt)}]))

(make user ^username fogus

;; something triggers a call
OPS5
(literalize user
username
salt
)

{:db/ident :user/username … }
{:db/ident :user/salt … }

(p new-user
(user ^username <name>
^salt nil))
-->
(modify 1 ^salt “Bad salt”)
)

(defn store-user-info [uname]
@(transact connection
[{:user/username uname
:user/salt (gen-salt)}]))

(make user ^username fogus

;; something triggers a call
OPS5
(literalize user
username
salt
)

{:db/ident :user/username … }
{:db/ident :user/salt … }

(p new-user
(user ^username <name>
^salt nil))
-->
(modify 1 ^salt “Bad salt”)
)

(defn store-user-info [uname]
@(transact connection
[{:user/username uname
:user/salt (gen-salt)}]))

(make user ^username fogus

??

;; something triggers a call
Out of the
Tarpit

2006 by Ben Moseley and Peter
Marks
Decomplecting
Re
Decomplecting
Data

Behavior

Function
Data

Behavior

tactical

strategic

Function
tactical
Driving principles
●

Get stuff done

●

Data rocks

●

Don't invent anything

●

Protocols (swappable engines)

●

Pattern matching

●

Immutability (or the appearance thereof)

●

Fast would be nice
Things not shown
●

Snapshots

●

Rete implementation details

●

Pod details

●

Engine swaps

●

RHS Actions

●

LHS (match) predicates

Contenu connexe

Similaire à Introduction to Zeder - a production rules toolkit for Clojure

Pse2010 rel storage
Pse2010 rel storagePse2010 rel storage
Pse2010 rel storage
Lars Noldan
 

Similaire à Introduction to Zeder - a production rules toolkit for Clojure (7)

Powering your website with realtime data
Powering your website with realtime dataPowering your website with realtime data
Powering your website with realtime data
 
Git: be social
Git: be socialGit: be social
Git: be social
 
Groovy Update, what's new in Groovy 1.8 and beyond - Guillaume Laforge - Spri...
Groovy Update, what's new in Groovy 1.8 and beyond - Guillaume Laforge - Spri...Groovy Update, what's new in Groovy 1.8 and beyond - Guillaume Laforge - Spri...
Groovy Update, what's new in Groovy 1.8 and beyond - Guillaume Laforge - Spri...
 
Pse2010 rel storage
Pse2010 rel storagePse2010 rel storage
Pse2010 rel storage
 
Groovy Update - Guillaume Laforge - Greach 2011
Groovy Update - Guillaume Laforge - Greach 2011Groovy Update - Guillaume Laforge - Greach 2011
Groovy Update - Guillaume Laforge - Greach 2011
 
How to monitor MongoDB
How to monitor MongoDBHow to monitor MongoDB
How to monitor MongoDB
 
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 DatabaseeProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Dernier (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Introduction to Zeder - a production rules toolkit for Clojure