SlideShare a Scribd company logo
1 of 119
Download to read offline
LET’S TALK ABOUT

    ruby
Ian Bishop
@ianbishop
Ruby is
Ruby is
simple in appearance,
Ruby is
simple in appearance,
but is very complex inside,
Ruby is
simple in appearance,
but is very complex inside,
just like our human body
Ruby is
simple in appearance,
but is very complex inside,
just like our human body
            - Yukihiro “matz” Matsumoto
philosophy
principle of
least surprise
principle of least surprise
array.length
string.length()
collection.size()
principle of least surprise
array.length
string.length()
collection.size()

array.length
string.length
collection.length
features
everything is an object
5.times do
    print “Everyone loves ruby!”
end
everything is an object
5.times
everything is a message
/abc/ === “abc”   “abc” === /abc/
=> true           => false
everything is a message
/abc/ === “abc”
=> true
everything is a message
/abc/



/abc/
everything is a message
/abc/



/abc/.send
everything is a message
/abc/ ===



/abc/.send(:===
everything is a message
/abc/ === “abc”



/abc/.send(:===, “abc”)
everything is a message
/abc/ === “abc”
=> true


/abc/.send(:===, “abc”)
=> true
everything is a message
/abc/ === “abc”   “abc” === /abc/
=> true           => false
everything is a message
case “HELLO”
when /^[a-z]*$/
     “lowercase”
when /^[A-Z]*$/
     “uppercase”
end

=> “uppercase”
everything is a message
case “HELLO”
when “hello”
     “lowercase”
when “HELLO”
     “uppercase”
end

=> “uppercase”
everything is a message
/abc/ === “abc”   “abc” === /abc/
=> true           => false
dynamic runtime
a = [1,2,3]
a.first
=> 1
a.second

NoMethodError: Undefined method
‘second’ for [1, 2, 3]:Array
dynamic runtime
class Array
     def second
          if self.length > 1
               return self[1]
          end
          nil
     end
end
dynamic runtime
a = [1,2,3]
a.first
=> 1
a.second
dynamic runtime
a = [1,2,3]
a.first
=> 1
a.second
=> 2
DEALING WITH

  data
using collections
a = [1,2,3]
using collections
a = [1,2,3,“meow”]
using collections
a.each do |x|
     puts x
end

1
2
3
meow
using collections
a.each
using collections
a.each do |x|

end
using collections
a.each do |x|
     puts x
end
using collections
a.each do |x|
     puts x
end

1
2
3
meow
.each
Iterate over elements in a collection
.map
Iterate over elements in a collection,
returning a new collection of
elements of the same size
using map
a = [1,2,3]
using map
a = [1,2,3]

a.map
using map
a = [1,2,3]

a.map do |x|

end
using map
a = [1,2,3]

a.map do |x|
     2 * x
end
using map
a = [1,2,3]

a.map do |x|
     return 2 * x
end
using map
a = [1,2,3]

a.map do |x|
     2 * x
end
using map
a = [1,2,3]

a.map do |x|
     2 * x
end

=> [2,4,6]
.map
Iterate over elements in a collection,
returning a new collection of
elements of the same size
.select
Iterate over elements in a collection,
returning elements which match a
specified criteria
using select
a = [1,2,3]
using select
a = [1,2,3]

a.select
using select
a = [1,2,3]

a.select do |x|

end
using select
a = [1,2,3]

a.select do |x|
     x.odd?
end
using select
a = [1,2,3]

a.select do |x|
     x.odd?
end

=> [1,3]
.select
Iterate over elements in a collection,
returning elements which match a
specified criteria
.reduce
Combines all elements in a collection
using a binary operation, returning
an accumulator value.
using reduce
a = [1,2,3]
using reduce
a = (1..100)
using reduce
a = (1..100)

a.reduce
using reduce
a = (1..100)

a.reduce do |sum, x|

end
using reduce
a = (1..100)

a.reduce do |sum, x|
     sum + x
end
using reduce
a = (1..100)

a.reduce do |sum, x|
     sum + x
end

=> 5050
.reduce
Combines all elements in a collection
using a binary operation, returning
an accumulator value.
.reduce
Combines all elements in a collection
using a binary operation, returning
an accumulator value.
using reduce (again)
a = (1..100)

a.reduce
using reduce (again)
a = (1..100)

a.reduce(:*)
using reduce (again)
a = (1..100)

a.reduce(:*)

=>9332621544394415268169923885626670049
071596826438162146859296389521759999322
991560894146397615651828625369792082722
37582511852109168640000000000000…
SOLVING
 HARDER
PROBLEMS
generating poker hands
building a deck of cards
suits = %w(S C H D)
building a deck of cards
suits = %w(S C H D)
=> [“S”, “C”, “H”, “D”]
building a deck of cards
suits = %w(S C H D)
=> [“S”, “C”, “H”, “D”]

“S C H D”.split /s+/
=> [“S”, “C”, “H”, “D”]
building a deck of cards
suits = %w(S C H D)
faces =
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
[1, 2, 3]

[“a”, “b”, “c”]
[1, 2, 3]
       x
[“a”, “b”, “c”]
cross product
[1, “a”], [1, “b”], [1, “c”],
[2, “a”], [2, “b”], [2, “c”],
[3, “a”], [3, “b”], [3, “c”]
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces)
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces)
=> [[“S”, 2], [“S”, 3], …, [“S”, “A”],
[“C”, 1], …, [“C”, “A”], …]
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces)
=> [“S2”, “S3”, …, “SA”, “C1”, …, “C2”,
…]
join(sep=$,) -> str
Returns a string created by converting each element
of the array to a string, seperated by sep.

 [ “a”, “b”, “c”].join
 => “abc”

 [ “a”, “b”, “c”].join(“-”)
 => “a-b-c”
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces)

deck = deck.map do |pair|
          pair.join
       end
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces)

deck.map! do |pair|
     pair.join
end
building a deck of cards


    .map!
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces)

deck.map! do |pair|
     pair.join
end
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces)

deck.map! { |pair| pair.join }
building a deck of cards
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces).map(&:join)
generating poker hands
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces).map(&:join)
sample(n) -> new_ary
Choose n random elements from the array.

The elements are chosen by using random
and unique indices in order to ensure that an
element doesn’t repeat itself unless the array
already contained duplicate elements.
generating poker hands
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces).map(&:join)

deck.sample(5)
generating poker hands
suits = %w(S C H D)
faces = (2..10).to_a + %w(J Q K A)
deck = suits.product(faces).map(&:join)

deck.sample(5)
=> [“C2”, “D5”, “S7”, “D8”, “C8”]
LET’S TALK ABOUT
   MAP REDUCE
LET’S TALK ABOUT
              ©
   MAP REDUCE
Count of URL Access Frequency
The map function processes logs of web page
requests and outputs <URL, 1>. The reduce
function adds together all values for the same
URL and emits a <URL, total count> pair.
            from Introduction to Parallel Programming and MapReduce (Google)
counting url access frequency
log
counting url access frequency
log
=> [“example.com”, “google.com”,
    “userevents.com”, “unb.ca”,
    “frederictonug.net”, ..]
Count of URL Access Frequency
The map function processes logs of web page
requests and outputs <URL, 1>. The reduce
function adds together all values for the same
URL and emits a <URL, total count> pair.
            from Introduction to Parallel Programming and MapReduce (Google)
generate count pairs
count_pairs = log.map do |url|
     [url, 1]
end
Count of URL Access Frequency
The map function processes logs of web page
requests and outputs <URL, 1>. The reduce
function adds together all values for the same URL
and emits a <URL, total count> pair.
            from Introduction to Parallel Programming and MapReduce (Google)
BUT FIRST
Collection of key-value
pairs.

Similar to an array, except
indexing is done via unique
keys.
brief introduction to hashes
my_hash = { :abc => 5, “def” => 9 }
brief introduction to hashes
my_hash = { :abc => 5, “def” => 9 }

my_hash[:abc]
brief introduction to hashes
my_hash = { :abc => 5, “def” => 9 }

my_hash[:abc]
=> 5
brief introduction to hashes
my_hash = { :abc => 5, “def” => 9 }

my_hash[:abc]
=> 5

my_hash[“def”] = 14
brief introduction to hashes
my_hash = { :abc => 5, “def” => 9 }

my_hash[:abc]
=> 5

my_hash[“def”] = 14
=> { :abc => 5, “def” => 14 }
Count of URL Access Frequency
The map function processes logs of web page
requests and outputs <URL, 1>. The reduce
function adds together all values for the same URL
and emits a <URL, total count> pair.
            from Introduction to Parallel Programming and MapReduce (Google)
combining count pairs
count_pairs.reduce
combining count pairs
count_pairs.reduce({})
combining count pairs
count_pairs.reduce({}) do |hash, pair|




end
combining count pairs
count_pairs.reduce({}) do |hash, pair|
     url, count = pair




end
combining count pairs
count_pairs.reduce({}) do |hash, pair|
     url, count = pair
     if hash.has_key? url
          hash[url] += count




end
combining count pairs
count_pairs.reduce({}) do |hash, pair|
     url, count = pair
     if hash.has_key? url
          hash[url] += count
     else
          hash[url] = count
     end

end
combining count pairs
count_pairs.reduce({}) do |hash, pair|
     url, count = pair
     if hash.has_key? url
          hash[url] += count
     else
          hash[url] = count
     end
     hash
end
counting url access frequency
log = [“example.com”, “google.com”,
“example.com”, “unb.ca”]
counting url access frequency
log = [“example.com”, “google.com”,
“example.com”, “unb.ca”]

=> { “example.com” => 2,
     “google.com” => 1,
     “unb.ca” => 1 }

More Related Content

What's hot

{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析Takashi Kitano
 
Advanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part IIAdvanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part IIDr. Volkan OBAN
 
Python for Data Science and Scientific Computing
Python for Data Science and Scientific ComputingPython for Data Science and Scientific Computing
Python for Data Science and Scientific ComputingAbhijit Kar Gupta
 
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜Takashi Kitano
 
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of WranglingPLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of WranglingPlotly
 
{shiny}と{leaflet}による地図アプリ開発Tips
{shiny}と{leaflet}による地図アプリ開発Tips{shiny}と{leaflet}による地図アプリ開発Tips
{shiny}と{leaflet}による地図アプリ開発TipsTakashi Kitano
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cythonAnderson Dantas
 
Palestra sobre Collections com Python
Palestra sobre Collections com PythonPalestra sobre Collections com Python
Palestra sobre Collections com Pythonpugpe
 
The Ring programming language version 1.9 book - Part 29 of 210
The Ring programming language version 1.9 book - Part 29 of 210The Ring programming language version 1.9 book - Part 29 of 210
The Ring programming language version 1.9 book - Part 29 of 210Mahmoud Samir Fayed
 
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver){tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)Takashi Kitano
 
令和から本気出す
令和から本気出す令和から本気出す
令和から本気出すTakashi Kitano
 
The Ring programming language version 1.8 book - Part 27 of 202
The Ring programming language version 1.8 book - Part 27 of 202The Ring programming language version 1.8 book - Part 27 of 202
The Ring programming language version 1.8 book - Part 27 of 202Mahmoud Samir Fayed
 
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...Dr. Volkan OBAN
 
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingGareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingYury Chemerkin
 

What's hot (20)

{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析
 
Advanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part IIAdvanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part II
 
Python for Data Science and Scientific Computing
Python for Data Science and Scientific ComputingPython for Data Science and Scientific Computing
Python for Data Science and Scientific Computing
 
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
好みの日本酒を呑みたい! 〜さけのわデータで探す自分好みの酒〜
 
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of WranglingPLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
PLOTCON NYC: Behind Every Great Plot There's a Great Deal of Wrangling
 
{shiny}と{leaflet}による地図アプリ開発Tips
{shiny}と{leaflet}による地図アプリ開発Tips{shiny}と{leaflet}による地図アプリ開発Tips
{shiny}と{leaflet}による地図アプリ開発Tips
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
ScalaBlitz
ScalaBlitzScalaBlitz
ScalaBlitz
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cython
 
Palestra sobre Collections com Python
Palestra sobre Collections com PythonPalestra sobre Collections com Python
Palestra sobre Collections com Python
 
The Ring programming language version 1.9 book - Part 29 of 210
The Ring programming language version 1.9 book - Part 29 of 210The Ring programming language version 1.9 book - Part 29 of 210
The Ring programming language version 1.9 book - Part 29 of 210
 
Digital Electronics
Digital ElectronicsDigital Electronics
Digital Electronics
 
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver){tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
 
令和から本気出す
令和から本気出す令和から本気出す
令和から本気出す
 
Numpy python cheat_sheet
Numpy python cheat_sheetNumpy python cheat_sheet
Numpy python cheat_sheet
 
ScalaMeter 2014
ScalaMeter 2014ScalaMeter 2014
ScalaMeter 2014
 
The Ring programming language version 1.8 book - Part 27 of 202
The Ring programming language version 1.8 book - Part 27 of 202The Ring programming language version 1.8 book - Part 27 of 202
The Ring programming language version 1.8 book - Part 27 of 202
 
Scala Parallel Collections
Scala Parallel CollectionsScala Parallel Collections
Scala Parallel Collections
 
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
Optimization and Mathematical Programming in R and ROI - R Optimization Infra...
 
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingGareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
 

Similar to Let’s Talk About Ruby

Useful javascript
Useful javascriptUseful javascript
Useful javascriptLei Kang
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with GroovyArturo Herrero
 
7 Habits For a More Functional Swift
7 Habits For a More Functional Swift7 Habits For a More Functional Swift
7 Habits For a More Functional SwiftJason Larsen
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with ClojureDmitry Buzdin
 
A quick introduction to R
A quick introduction to RA quick introduction to R
A quick introduction to RAngshuman Saha
 
Basic R Data Manipulation
Basic R Data ManipulationBasic R Data Manipulation
Basic R Data ManipulationChu An
 
Ruby Language - A quick tour
Ruby Language - A quick tourRuby Language - A quick tour
Ruby Language - A quick touraztack
 
Functional programming in ruby
Functional programming in rubyFunctional programming in ruby
Functional programming in rubyKoen Handekyn
 
A limited guide to intermediate and advanced Ruby
A limited guide to intermediate and advanced RubyA limited guide to intermediate and advanced Ruby
A limited guide to intermediate and advanced RubyVysakh Sreenivasan
 
NumPy_Broadcasting Data Science - Python.pptx
NumPy_Broadcasting Data Science - Python.pptxNumPy_Broadcasting Data Science - Python.pptx
NumPy_Broadcasting Data Science - Python.pptxJohnWilliam111370
 
Monadologie
MonadologieMonadologie
Monadologieleague
 
Will it Blend? - ScalaSyd February 2015
Will it Blend? - ScalaSyd February 2015Will it Blend? - ScalaSyd February 2015
Will it Blend? - ScalaSyd February 2015Filippo Vitale
 
18. Java associative arrays
18. Java associative arrays18. Java associative arrays
18. Java associative arraysIntro C# Book
 
An overview of Python 2.7
An overview of Python 2.7An overview of Python 2.7
An overview of Python 2.7decoupled
 
Beginning Haskell, Dive In, Its Not That Scary!
Beginning Haskell, Dive In, Its Not That Scary!Beginning Haskell, Dive In, Its Not That Scary!
Beginning Haskell, Dive In, Its Not That Scary!priort
 
[1062BPY12001] Data analysis with R / week 2
[1062BPY12001] Data analysis with R / week 2[1062BPY12001] Data analysis with R / week 2
[1062BPY12001] Data analysis with R / week 2Kevin Chun-Hsien Hsu
 

Similar to Let’s Talk About Ruby (20)

Useful javascript
Useful javascriptUseful javascript
Useful javascript
 
Functional Programming with Groovy
Functional Programming with GroovyFunctional Programming with Groovy
Functional Programming with Groovy
 
7 Habits For a More Functional Swift
7 Habits For a More Functional Swift7 Habits For a More Functional Swift
7 Habits For a More Functional Swift
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with Clojure
 
A quick introduction to R
A quick introduction to RA quick introduction to R
A quick introduction to R
 
Basic R Data Manipulation
Basic R Data ManipulationBasic R Data Manipulation
Basic R Data Manipulation
 
Ruby Language - A quick tour
Ruby Language - A quick tourRuby Language - A quick tour
Ruby Language - A quick tour
 
Scala by Luc Duponcheel
Scala by Luc DuponcheelScala by Luc Duponcheel
Scala by Luc Duponcheel
 
Functional programming in ruby
Functional programming in rubyFunctional programming in ruby
Functional programming in ruby
 
A limited guide to intermediate and advanced Ruby
A limited guide to intermediate and advanced RubyA limited guide to intermediate and advanced Ruby
A limited guide to intermediate and advanced Ruby
 
NumPy_Broadcasting Data Science - Python.pptx
NumPy_Broadcasting Data Science - Python.pptxNumPy_Broadcasting Data Science - Python.pptx
NumPy_Broadcasting Data Science - Python.pptx
 
Monadologie
MonadologieMonadologie
Monadologie
 
Will it Blend? - ScalaSyd February 2015
Will it Blend? - ScalaSyd February 2015Will it Blend? - ScalaSyd February 2015
Will it Blend? - ScalaSyd February 2015
 
18. Java associative arrays
18. Java associative arrays18. Java associative arrays
18. Java associative arrays
 
An overview of Python 2.7
An overview of Python 2.7An overview of Python 2.7
An overview of Python 2.7
 
Beginning Haskell, Dive In, Its Not That Scary!
Beginning Haskell, Dive In, Its Not That Scary!Beginning Haskell, Dive In, Its Not That Scary!
Beginning Haskell, Dive In, Its Not That Scary!
 
R code for data manipulation
R code for data manipulationR code for data manipulation
R code for data manipulation
 
R code for data manipulation
R code for data manipulationR code for data manipulation
R code for data manipulation
 
[1062BPY12001] Data analysis with R / week 2
[1062BPY12001] Data analysis with R / week 2[1062BPY12001] Data analysis with R / week 2
[1062BPY12001] Data analysis with R / week 2
 
Map, Reduce and Filter in Swift
Map, Reduce and Filter in SwiftMap, Reduce and Filter in Swift
Map, Reduce and Filter in Swift
 

Recently uploaded

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
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...Drew Madelung
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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 DevelopmentsTrustArc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Recently uploaded (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Let’s Talk About Ruby