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

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

Let’s Talk About Ruby