SlideShare a Scribd company logo
1 of 50
Download to read offline
=== BLACK MAGIC
@KEYSTONELEMUR
WHO AM I?
@keystonelemur
WHO AM I?
My name is Brandon Weaver
I work at Square
I love Ruby, Javascript, and Lemurs
@keystonelemur
HOW ===
WORKS
@keystonelemur
HOW === WORKS
===
@keystonelemur
HOW === WORKS
/^f/ === 'foo'
@keystonelemur
HOW === WORKS
def ===(v)
@keystonelemur
HOW === WORKS
/^f/.===('foo')
@keystonelemur
HOW === WORKS
class Integer
def ===(v)
self == v
end
end
@keystonelemur
HOW === WORKS
class Regexp
def ===(v)
match? v
end
end
@keystonelemur
HOW === WORKS
Regexp = match?
Range = include?
Class = is_a?
Proc = call
@keystonelemur
HOW === WORKS
/^f/ === 'foo'
(1..10) === 1
String === 's'
-> a {a+1} === 2
@keystonelemur
WHERE’S ===
HIDING?
@keystonelemur
WHERE’S === HIDING?
case value
when String
'string'
when Integer
0
end
@keystonelemur
WHERE’S === HIDING?
[1, 2, 3.0].grep(Integer)
# => [1, 2]
@keystonelemur
WHERE’S === HIDING?
[1, 2, 3.0].all?(Integer)
# => false
@keystonelemur
WHAT’S A
CLOSURE?
@keystonelemur
WHAT’S A CLOSURE?
adder = proc { |a|
proc { |b| a + b }
}
add3 = adder.call(3)
[1,2,3].map(&add3)
# => [4,5,6]
@keystonelemur
WHAT’S A CLOSURE?
adder = proc { |a|
proc { |b| a + b }
}
add3 = adder.call(3)
[1,2,3].map(&add3)
# => [4,5,6]
@keystonelemur
WHAT’S A CLOSURE?
adder = proc { |a|
proc { |b| a + b }
}
add3 = adder.call(3)
[1,2,3].map(&add3)
# => [4,5,6]
@keystonelemur
WHAT’S A CLOSURE?
adder = proc { |a|
proc { |b| a + b }
}
add3 = adder.call(3)
[1,2,3].map(&add3)
# => [4,5,6]
@keystonelemur
WHAT’S A CLOSURE?
adder = proc { |a|
proc { |b| a + b }
}
[1,2,3].map(&adder.call(3))
# => [4,5,6]
@keystonelemur
EMULATING
PATTERN MATCHING
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |*matchers|
proc { |target|
matchers.all? { |m| m === target }
}
}
[1,1.0,'s'].select(&query.call(
Integer, 1..10, :odd?.to_proc
))
# => [1]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |*matchers|
proc { |target|
matchers.all? { |m| m === target }
}
}
[1,1.0,'s'].select(&query.call(
Integer, 1..10, :odd?.to_proc
))
# => [1]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |*matchers|
proc { |target|
matchers.all? { |m| m === target }
}
}
[1,1.0,'s'].select(&query.call(
Integer, 1..10, :odd?.to_proc
))
# => [1]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |*matchers|
proc { |target|
matchers.all? { |m| m === target }
}
}
[1,1.0,'s'].select(&query.call(
Integer, 1..10, :odd?.to_proc
))
# => [1]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |*matchers|
proc { |target|
matchers.all? { |m| m === target }
}
}
[1,1.0,'s'].select(&query.call(
Integer, 1..10, :odd?.to_proc
))
# => [1]
@keystonelemur
EMULATING PATTERN MATCHING
people = [
{name: 'Foo', age: 42},
{name: 'Bar', age: 20},
{name: 'Baz', age: 30},
{name: 'Boo', age: 10},
]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |**matchers|
proc { |target|
matchers.all? { |k,m|
m === target[k]
}
}
}
people.select(&query.call(
name: /^Foo/, age: 40..50
))
# => [{name: 'Foo', age: 42}]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |**matchers|
proc { |target|
matchers.all? { |k,m|
m === target[k]
}
}
}
people.select(&query.call(
name: /^Foo/, age: 40..50
))
# => [{name: 'Foo', age: 42}]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |**matchers|
proc { |target|
matchers.all? { |k,m|
m === target[k]
}
}
}
people.select(&query.call(
name: /^Foo/, age: 40..50
))
# => [{name: 'Foo', age: 42}]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |**matchers|
proc { |target|
matchers.all? { |k,m|
m === target[k]
}
}
}
people.select(&query.call(
name: /^Foo/, age: 40..50
))
# => [{name: 'Foo', age: 42}]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |**matchers|
proc { |target|
matchers.all? { |k,m|
m === target[k]
}
}
}
people.select(&query.call(
name: /^Foo/, age: 40..50
))
# => [{name: 'Foo', age: 42}]
@keystonelemur
EMULATING PATTERN MATCHING
people_objects = people.map { |v|
OpenStruct.new(v)
}
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |**matchers|
proc { |target|
matchers.all? { |k,m|
m === target.public_send(k)
}
}
}
people_objects.select(&query.call(
name: /^Foo/, age: 40..50
))
# => [OS(name: 'Foo', age: 42)]
@keystonelemur
EMULATING PATTERN MATCHING
query = proc { |**matchers|
proc { |target|
matchers.all? { |k,m|
m === target.public_send(k)
}
}
}
people_objects.select(&query.call(
name: /^Foo/, age: 40..50
))
# => [OS(name: 'Foo', age: 42)]
@keystonelemur
CLASS
WRAPPERS
@keystonelemur
CLASS WRAPPERS
class Query
def initialize(*ms) @ms = ms end
def to_proc
proc { |v| self.call(v) }
end
def call(v)
@ms.all? { |m| m === v }
end
alias_method :===, :call
end
@keystonelemur
CLASS WRAPPERS
class Query
def initialize(*ms) @ms = ms end
def to_proc
proc { |v| self.call(v) }
end
def call(v)
@ms.all? { |m| m === v }
end
alias_method :===, :call
end
@keystonelemur
CLASS WRAPPERS
class Query
def initialize(*ms) @ms = ms end
def to_proc
proc { |v| self.call(v) }
end
def call(v)
@ms.all? { |m| m === v }
end
alias_method :===, :call
end
@keystonelemur
CLASS WRAPPERS
class Query
def initialize(*ms) @ms = ms end
def to_proc
proc { |v| self.call(v) }
end
def call(v)
@ms.all? { |m| m === v }
end
alias_method :===, :call
end
@keystonelemur
CLASS WRAPPERS
[1,1.0,’s’].select(&Query.new(
Integer, 1..10, :odd.to_proc
))
@keystonelemur
CLASS WRAPPERS
case 1
when Query.new(Integer, 1..10)
# …
else
end
@keystonelemur
IN THE WILD
@keystonelemur
IN THE WILD - QO (PATTERN MATCHING)
people.map(&Qo.match { |m|
m.when(age: 13..19) { |person|
"#{person.name} is a teen"
}
m.else { |person|
"#{person.name} is #{person.age} years old"
}
})
people.select(&Qo.and(age: 10..19, name: /^F/))
@keystonelemur
IN THE WILD - QO (PATTERN MATCHING)
people.map(&Qo.match { |m|
m.when(age: 13..19) { |person|
"#{person.name} is a teen"
}
m.else { |person|
"#{person.name} is #{person.age} years old”
}
})
people.select(&Qo.and(age: 10..19, name: /^F/))
@keystonelemur
IN THE WILD - SF (BLACK MAGIC)
(1..100).map(&Qo.match { |m|
m.when(Sf % 15 == 0) { 'FizzBuzz' }
m.when(Sf % 5 == 0) { 'Fizz' }
m.when(Sf % 3 == 0) { 'Buzz' }
m.else { |n| n }
})
@keystonelemur
WRAPPING UP
@keystonelemur
@keystonelemur

More Related Content

What's hot

Farhana shaikh webinar_dictionaries
Farhana shaikh webinar_dictionariesFarhana shaikh webinar_dictionaries
Farhana shaikh webinar_dictionariesFarhana Shaikh
 
SQL || overview and detailed information about Sql
SQL || overview and detailed information about SqlSQL || overview and detailed information about Sql
SQL || overview and detailed information about Sqlgourav kottawar
 
Favouring Composition - The Groovy Way
Favouring Composition - The Groovy WayFavouring Composition - The Groovy Way
Favouring Composition - The Groovy WayNaresha K
 
Elixir pattern matching and recursion
Elixir pattern matching and recursionElixir pattern matching and recursion
Elixir pattern matching and recursionBob Firestone
 
SQL querys in detail || Sql query slides
SQL querys in detail || Sql query slidesSQL querys in detail || Sql query slides
SQL querys in detail || Sql query slidesgourav kottawar
 
sql statement
sql statementsql statement
sql statementzx25 zx25
 
PyCon Siberia 2016. Не доверяйте тестам!
PyCon Siberia 2016. Не доверяйте тестам!PyCon Siberia 2016. Не доверяйте тестам!
PyCon Siberia 2016. Не доверяйте тестам!Ivan Tsyganov
 
pycon jp 2016 ---- CguTranslate
pycon jp 2016 ---- CguTranslatepycon jp 2016 ---- CguTranslate
pycon jp 2016 ---- CguTranslateRenyuan Lyu
 
Php in the graph (Gremlin 3)
Php in the graph (Gremlin 3)Php in the graph (Gremlin 3)
Php in the graph (Gremlin 3)Damien Seguy
 
Print input-presentation
Print input-presentationPrint input-presentation
Print input-presentationMartin McBride
 
Integers slidecast
Integers slidecastIntegers slidecast
Integers slidecastmillergjtime
 
Fichas de trabalho 3º ano
Fichas de trabalho   3º anoFichas de trabalho   3º ano
Fichas de trabalho 3º anoclaudiaalves71
 
LINQ Internals - STLDODN
LINQ Internals - STLDODNLINQ Internals - STLDODN
LINQ Internals - STLDODNKeith Dahlby
 
جلسه سوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه سوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲جلسه سوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه سوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲Mohammad Reza Kamalifard
 
Python PCEP Operations On Lists
Python PCEP Operations On ListsPython PCEP Operations On Lists
Python PCEP Operations On ListsIHTMINSTITUTE
 

What's hot (20)

Farhana shaikh webinar_dictionaries
Farhana shaikh webinar_dictionariesFarhana shaikh webinar_dictionaries
Farhana shaikh webinar_dictionaries
 
SQL || overview and detailed information about Sql
SQL || overview and detailed information about SqlSQL || overview and detailed information about Sql
SQL || overview and detailed information about Sql
 
Favouring Composition - The Groovy Way
Favouring Composition - The Groovy WayFavouring Composition - The Groovy Way
Favouring Composition - The Groovy Way
 
Elixir pattern matching and recursion
Elixir pattern matching and recursionElixir pattern matching and recursion
Elixir pattern matching and recursion
 
SQL querys in detail || Sql query slides
SQL querys in detail || Sql query slidesSQL querys in detail || Sql query slides
SQL querys in detail || Sql query slides
 
R programming
R programmingR programming
R programming
 
sql statement
sql statementsql statement
sql statement
 
Comparisons
ComparisonsComparisons
Comparisons
 
PyCon Siberia 2016. Не доверяйте тестам!
PyCon Siberia 2016. Не доверяйте тестам!PyCon Siberia 2016. Не доверяйте тестам!
PyCon Siberia 2016. Не доверяйте тестам!
 
pycon jp 2016 ---- CguTranslate
pycon jp 2016 ---- CguTranslatepycon jp 2016 ---- CguTranslate
pycon jp 2016 ---- CguTranslate
 
Php in the graph (Gremlin 3)
Php in the graph (Gremlin 3)Php in the graph (Gremlin 3)
Php in the graph (Gremlin 3)
 
Print input-presentation
Print input-presentationPrint input-presentation
Print input-presentation
 
Integers slidecast
Integers slidecastIntegers slidecast
Integers slidecast
 
Fichas de trabalho 3º ano
Fichas de trabalho   3º anoFichas de trabalho   3º ano
Fichas de trabalho 3º ano
 
LINQ Internals - STLDODN
LINQ Internals - STLDODNLINQ Internals - STLDODN
LINQ Internals - STLDODN
 
جلسه سوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه سوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲جلسه سوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه سوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
 
Python PCEP Operations On Lists
Python PCEP Operations On ListsPython PCEP Operations On Lists
Python PCEP Operations On Lists
 
Python programming : List and tuples
Python programming : List and tuplesPython programming : List and tuples
Python programming : List and tuples
 
R Language
R LanguageR Language
R Language
 
Sql
SqlSql
Sql
 

Similar to Fog City Ruby - Triple Equals Black Magic

Pre-Bootcamp introduction to Elixir
Pre-Bootcamp introduction to ElixirPre-Bootcamp introduction to Elixir
Pre-Bootcamp introduction to ElixirPaweł Dawczak
 
Fog City Ruby - Triple Equals Black Magic with speaker notes
Fog City Ruby - Triple Equals Black Magic with speaker notesFog City Ruby - Triple Equals Black Magic with speaker notes
Fog City Ruby - Triple Equals Black Magic with speaker notesBrandon Weaver
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with GroovyArturo Herrero
 
CoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairCoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairMark
 
WTF Oriented Programming, com Fabio Akita
WTF Oriented Programming, com Fabio AkitaWTF Oriented Programming, com Fabio Akita
WTF Oriented Programming, com Fabio AkitaiMasters
 
Metaprogramming 101
Metaprogramming 101Metaprogramming 101
Metaprogramming 101Nando Vieira
 
Refactor like a boss
Refactor like a bossRefactor like a boss
Refactor like a bossgsterndale
 
Creating a compiler in Perl 6
Creating a compiler in Perl 6Creating a compiler in Perl 6
Creating a compiler in Perl 6Andrew Shitov
 
Very basic functional design patterns
Very basic functional design patternsVery basic functional design patterns
Very basic functional design patternsTomasz Kowal
 
Ruby Language - A quick tour
Ruby Language - A quick tourRuby Language - A quick tour
Ruby Language - A quick touraztack
 
Unit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBeneluxUnit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBeneluxMichelangelo van Dam
 
Desarrollando aplicaciones web en minutos
Desarrollando aplicaciones web en minutosDesarrollando aplicaciones web en minutos
Desarrollando aplicaciones web en minutosEdgar Suarez
 
Unit testing with zend framework tek11
Unit testing with zend framework tek11Unit testing with zend framework tek11
Unit testing with zend framework tek11Michelangelo van Dam
 

Similar to Fog City Ruby - Triple Equals Black Magic (20)

Pre-Bootcamp introduction to Elixir
Pre-Bootcamp introduction to ElixirPre-Bootcamp introduction to Elixir
Pre-Bootcamp introduction to Elixir
 
Fog City Ruby - Triple Equals Black Magic with speaker notes
Fog City Ruby - Triple Equals Black Magic with speaker notesFog City Ruby - Triple Equals Black Magic with speaker notes
Fog City Ruby - Triple Equals Black Magic with speaker notes
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
Values
ValuesValues
Values
 
CoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love AffairCoffeeScript - A Rubyist's Love Affair
CoffeeScript - A Rubyist's Love Affair
 
WTF Oriented Programming, com Fabio Akita
WTF Oriented Programming, com Fabio AkitaWTF Oriented Programming, com Fabio Akita
WTF Oriented Programming, com Fabio Akita
 
Metaprogramming 101
Metaprogramming 101Metaprogramming 101
Metaprogramming 101
 
java script
java scriptjava script
java script
 
Refactor like a boss
Refactor like a bossRefactor like a boss
Refactor like a boss
 
Next Level Testing
Next Level TestingNext Level Testing
Next Level Testing
 
Intro to ruby
Intro to rubyIntro to ruby
Intro to ruby
 
An introduction to Ruby
An introduction to RubyAn introduction to Ruby
An introduction to Ruby
 
Steady with ruby
Steady with rubySteady with ruby
Steady with ruby
 
Introduction to Groovy
Introduction to GroovyIntroduction to Groovy
Introduction to Groovy
 
Creating a compiler in Perl 6
Creating a compiler in Perl 6Creating a compiler in Perl 6
Creating a compiler in Perl 6
 
Very basic functional design patterns
Very basic functional design patternsVery basic functional design patterns
Very basic functional design patterns
 
Ruby Language - A quick tour
Ruby Language - A quick tourRuby Language - A quick tour
Ruby Language - A quick tour
 
Unit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBeneluxUnit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBenelux
 
Desarrollando aplicaciones web en minutos
Desarrollando aplicaciones web en minutosDesarrollando aplicaciones web en minutos
Desarrollando aplicaciones web en minutos
 
Unit testing with zend framework tek11
Unit testing with zend framework tek11Unit testing with zend framework tek11
Unit testing with zend framework tek11
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
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 TerraformAndrey Devyatkin
 
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 WorkerThousandEyes
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 

Recently uploaded (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
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
 
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
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

Fog City Ruby - Triple Equals Black Magic