SlideShare a Scribd company logo
Write your
- by
Bhavin Javia
@bhavinjavia
in
Style
www.mavenhive.in
Who this talk is
NOT for ?
I am the only one !
Who this talk
IS for ?
Dad ! Who’s ‘Ruby’ ?
Teams
Open Source
Contributors
Style Matters
Why bother ?
Story
Rubo
• Fascinated by computers
• Learnt programming in school/college
• Knew a few languages - C, C++, Java
• Loved Ruby
• Joined a Startup as an Intern
• Full of Ruby veterans
• Felt right at home
Story of Rubo
Ruby Rocks !
But,
As soon as he
committed some
code ...
WTF ?
OMG !
#$%@ Caveman !
Oh, Where did I
go wrong ?!
What was wrong ?
He lacked Style
Masters of Ruby
Style
http://www.flickr.com/photos/jakescruggs/4687409786/
http://vimeo.com/steveklabnik
https://si0.twimg.com/profile_images/2931712744/95043c0f42f0700bdbd713635e942ac0.jpeg
http://peepcode.com/blog/2011/my-avatar/circle1.jpg
• Java - Code Conventions for Java (by Oracle)
• Python - Style Guide for Python Code (PEP 8)
• PHP - Basic Coding Standard (PSR-1)
Many languages have
Coding Standards
http://www.oracle.com/technetwork/java/codeconv-138413.html
http://www.python.org/dev/peps/pep-0008/
http://www.php-fig.org/psr/1/
Why Ruby doesn’t ?
Many ways
to do things ...
And all of them work !
Ruby Sucks !
We need a Style Guide
What is a Style Guide ?
What’s a Style Guide ?
• Better way to write code
• Better way to lay-out code
• Right idioms to use and when
• Simplicity and Elegance
Helps you decide ...
http://flic.kr/p/5n8Rrd
what your code should look like ?
this ...
http://flic.kr/p/voGgz
or this ?
I’ve got my own Style
Why Style Guide ?
Why Style Guide ?
• Functional correctness not enough
• Visual consistency matters
• Reduce cognitive friction
• Avoid religious wars
• Increase team productivity
• Long term maintainability
Let the team own it
When
no one
owns the code,
everyone
owns the code !
http://flic.kr/p/6mHZfT
code which lasts 1000s of years
Examples
Code Layout
“ Nearly everybody is convinced that every style but their
own is ugly and unreadable. Leave out the "but their
own" and they're probably right...
- Jerry Coffin (on indentation)
# encoding: utf-8
https://help.github.com/articles/dealing-with-line-endings
$ git config --global core.autocrlf input # Mac/Linux
$ git config --global core.autocrlf true # Windows
Use UTF-8 as the source file encoding
Use Unix-style line endings
# bad - four spaces
def some_method
do_something
end
# good
def some_method
do_something
end
* No tabs please
Two spaces per indent
# bad
def too_much; something; something_else; end
# okish
def no_braces_method; body; end
# okish
def some_method() body end
# good
def some_method
body
end
* Not applicable to empty methods e.g.
# good
def no_op; end
Avoid single-line methods
# around operators, after commas, colons and semicolons,
around `{` and before `}`
sum = 1 + 2
a, b = 1, 2
1 > 2 ? true : false; puts 'Hi'
[1, 2, 3].each { |e| puts e }
* Not with exponent operator
# bad
e = M * c ** 2
# good
e = M * c**2
Use spaces
Indent when as deep as case
case
when song.name == 'Misty'
puts 'Not again!'
when song.duration > 120
puts 'Too long!'
when Time.now.hour > 21
puts "It's too late"
else
song.play
end
kind = case year
when 1850..1889 then 'Blues'
when 1890..1909 then 'Ragtime'
when 1910..1929 then 'New Orleans Jazz'
when 1930..1939 then 'Swing'
when 1940..1950 then 'Bebop'
else 'Jazz'
end
Avoid line continuation
# bad
result = 1 - 
2
# bad
result = 1 
- 2
# bad
one.two.three.
four
# good
one.two.three
.four
Chain methods with .
Align multi-line params
# starting point (line is too long)
def send_mail(source)
Mailer.deliver(to: 'bob@example.com', from:
'us@example.com', subject:
'Important message', body: source.
text)
end
# bad (normal indent)
def send_mail(source)
Mailer.deliver(
to: 'bob@example.com',
from: 'us@example.com',
subject: 'Important message',
body: source.text)
end
Align multi-line params
# bad (double indent)
def send_mail(source)
Mailer.deliver(
to: 'bob@example.com',
from: 'us@example.com',
subject: 'Important message',
body: source.text)
end
# good
def send_mail(source)
Mailer.deliver(to: 'bob@example.com',
from: 'us@example.com',
subject: 'Important message',
body: source.text)
end
num = 1000000
num = 1_000_000
Which one is correct ?
num = 1000000
num = 1_000_000
Both !
Which one is better ?
Add underscores to large
numeric literals
# bad - how many 0s are there?
num = 1000000
# good - much easier to parse
num = 1_000_000
class Array
# Calls <tt>to_param</tt> on all its elements and joins the result with
# slashes. This is used by <tt>url_for</tt> in Action Pack.
def to_param
collect { |e| e.to_param }.join '/'
end
end
Use RDoc and its conventions
for API docs
Syntax
Use Iterators
arr = [1, 2, 3]
# bad
for elem in arr do
puts elem
end
# good
arr.each { |elem| puts elem }
# bad
result = if some_condition then something else something_else end
# good
result = some_condition ? something : something_else
* for one line constructs
Favor the ternary operator (?:)
over if/then/else/end
# bad
some_condition ? (nested_condition ? nested_something :
nested_something_else) : something_else
# good
if some_condition
nested_condition ? nested_something : nested_something_else
else
something_else
end
Use one expression per branch
in a ternary operator
# bad
if
some_condition
do_something
do_something_else
end
# good
if some_condition
do_something
do_something_else
end
Always put the condition on
the same line
Favor unless over if for
negative conditions
# bad
do_something if !some_condition
# bad
do_something if not some_condition
# good
do_something unless some_condition
# another good option
some_condition || do_something
class Person
attr_reader :name, :age
# omitted
end
temperance = Person.new('Temperance', 30)
temperance.name
puts temperance.age
x = Math.sin(y)
array.delete(e)
bowling.score.should == 0
Omit parentheses around parameters
for methods that are part of internal
DSL, keyword status, accessors
names = ['Bozhidar', 'Steve', 'Sarah']
# bad
names.each do |name|
puts name
end
# good
names.each { |name| puts name }
* Avoid using {...} for multi-line blocks
Prefer {...} over do...end for
single-line blocks
# bad
def some_method(some_arr)
return some_arr.size
end
# good
def some_method(some_arr)
some_arr.size
end
Avoid return where not
required for flow of control
# bad
def ready?
if self.last_reviewed_at > self.last_updated_at
self.worker.update(self.content, self.options)
self.status = :in_progress
end
self.status == :verified
end
# good
def ready?
if last_reviewed_at > last_updated_at
worker.update(content, options)
self.status = :in_progress
end
status == :verified
end
* only required when calling a self write accessor
Avoid self where not required
Naming
“The only real difficulties in programming are cache
invalidation and naming things.
- Phil Karlton
Name identifiers in English
# bad - variable name written in Bulgarian with
latin characters
zaplata = 1_000
# good
salary = 1_000
Use CamelCase for
classes and modules
# bad
class Someclass
...
end
class Some_Class
...
end
class SomeXml
...
end
# good
class SomeClass
...
end
class SomeXML
...
end
* Keep acronyms like
HTTP, RFC, XML
uppercase
Use snake_case for symbols,
methods and variables
# bad
:'some symbol'
:SomeSymbol
:someSymbol
someVar = 5
def someMethod
...
end
def SomeMethod
...
end
# good
:some_symbol
some_var = 5
def some_method
...
end
Use SCREAMING_SNAKE_CASE
for other constants.
# bad
SomeConst = 5
# good
SOME_CONST = 5
Predicate methods shouldshould
end in a question mark ‘?’
# bad
def available
appointments.empty?
end
# good
def available?
appointments.empty?
end
* e.g. Array#empty?
Comments
“ Good code is its own best documentation ...
- Steve McConnell
“ Good code is like a good joke - it needs no explanation.
- Russ Olsen
Avoid superfluous comments
# bad
counter += 1 # increments counter by one
Avoid writing
comments to explain
bad code
An outdated comment
is worse than
no comment at all !
DON’T do it !
Use Comment
Annotations
• Use TODO to note missing features
• Use FIXME to note broken code
• Use HACK to note code smells
• Use OPTIMIZE to note inefficient code
One you’ve added
annotations
DO do the TODO !
Classes & Modules
Use a consistent structure in
your class definitions
class Person
# extend and include
extend SomeModule
include AnotherModule
# constants
SOME_CONSTANT = 20
# attribute macros
attr_reader :name
# other macros (if any)
validates :name
# public class methods are next in line
def self.some_method
end
# followed by public instance methods
def some_method
end
# protected/private methods
end
Implement to_s on
domain classes
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def to_s
"#{@first_name} #{@last_name}"
end
end
Use the attr family of functions
to define trivial accessors
# bad
class Person
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def first_name
@first_name
end
def last_name
@last_name
end
end
# good
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
end
What if I don’t like these
‘rules’ ?
Rules are meant
to be broken !
http://flic.kr/p/dKyXLP
http://flic.kr/p/7MdXLX
These are just
guidelines
Follow Style Guide
consistently
But,
“ A Foolish Consistency is the Hobgoblin of Little Minds
- Essays: First Series by RalphWaldo Emerson
Consistency at what level ?
• consistency with style guide - important
• consistency with project - more important
• consistency with module - most important
• readability matters
https://twitter.com/AgileBorat/status/307791971991289856
When to break the rule ?
• Applying the rule makes it less readable
• To be consistent with surrounding code
• Opportunity to clean up the mess
How to enforce
these rules ?
• Make it a standard team practice
• Select/Draft a style guide for project
• Make it a must read for everyone
• Use IDE support e.g. RubyMine inspections
How to enforce these rules ?
• Use Style Checker tools
• Integrate with CI
• Use a live style guide - fork it, send PRs
• Commit your IDE settings
• Point out violations in context
• Use Github inline commit notes
How to enforce these rules ?
https://github.com/blog/622-inline-commit-notes
Tools
Rubocop
https://github.com/bbatsov/rubocop
Demo
Like a Boss !
References
• https://github.com/bbatsov/ruby-style-guide
• https://github.com/styleguide/ruby
• https://github.com/bbatsov/rails-style-guide
Style Guides
References
• https://github.com/bbatsov/rubocop
• https://github.com/martinjandrews/roodi
• https://github.com/troessner/reek
Tools
Give it a shot
YMMV
Contribute your Style
to the community
ThankYou
Questions ?
@bhavinjavia
bhavin@mavenhive.in
www.mavenhive.in
@mavenhive

More Related Content

What's hot

Part 2 in depth guide on word-press coding standards for css &amp; js big
Part 2  in depth guide on word-press coding standards for css &amp; js bigPart 2  in depth guide on word-press coding standards for css &amp; js big
Part 2 in depth guide on word-press coding standards for css &amp; js big
eSparkBiz
 
Documenting with xcode
Documenting with xcodeDocumenting with xcode
Documenting with xcode
Goran Blazic
 
STC 2016 Programming Language Storytime
STC 2016 Programming Language StorytimeSTC 2016 Programming Language Storytime
STC 2016 Programming Language Storytime
Sarah Kiniry
 
P H P Part I, By Kian
P H P  Part  I,  By  KianP H P  Part  I,  By  Kian
P H P Part I, By Kian
phelios
 
Red Flags in Programming
Red Flags in ProgrammingRed Flags in Programming
Red Flags in Programming
xSawyer
 
The Perl API for the Mortally Terrified (beta)
The Perl API for the Mortally Terrified (beta)The Perl API for the Mortally Terrified (beta)
The Perl API for the Mortally Terrified (beta)
Mike Friedman
 

What's hot (6)

Part 2 in depth guide on word-press coding standards for css &amp; js big
Part 2  in depth guide on word-press coding standards for css &amp; js bigPart 2  in depth guide on word-press coding standards for css &amp; js big
Part 2 in depth guide on word-press coding standards for css &amp; js big
 
Documenting with xcode
Documenting with xcodeDocumenting with xcode
Documenting with xcode
 
STC 2016 Programming Language Storytime
STC 2016 Programming Language StorytimeSTC 2016 Programming Language Storytime
STC 2016 Programming Language Storytime
 
P H P Part I, By Kian
P H P  Part  I,  By  KianP H P  Part  I,  By  Kian
P H P Part I, By Kian
 
Red Flags in Programming
Red Flags in ProgrammingRed Flags in Programming
Red Flags in Programming
 
The Perl API for the Mortally Terrified (beta)
The Perl API for the Mortally Terrified (beta)The Perl API for the Mortally Terrified (beta)
The Perl API for the Mortally Terrified (beta)
 

Viewers also liked

Síndrome de down
Síndrome de downSíndrome de down
Síndrome de down
32dan
 
Центр поддержки семьи по бул. Хмельницкого, 24а
Центр поддержки семьи по бул. Хмельницкого, 24аЦентр поддержки семьи по бул. Хмельницкого, 24а
Центр поддержки семьи по бул. Хмельницкого, 24а
Антон Янченко
 
Catalunya al rànquing THE
Catalunya al rànquing THECatalunya al rànquing THE
Catalunya al rànquing THE
Coneixement. Generalitat de Catalunya.
 
Rimborsi: nel PD molti dicono "Leggittimo, ma io non lo farei"
Rimborsi: nel PD molti dicono "Leggittimo, ma io non lo farei"Rimborsi: nel PD molti dicono "Leggittimo, ma io non lo farei"
Rimborsi: nel PD molti dicono "Leggittimo, ma io non lo farei"Francesco Errani
 
Certificación de Tegnología
Certificación de TegnologíaCertificación de Tegnología
Certificación de Tegnología
rizvanjamal
 
Current State of Cloud Computing (Jan 2016)
Current State of Cloud Computing (Jan 2016)Current State of Cloud Computing (Jan 2016)
Current State of Cloud Computing (Jan 2016)
Joe Kinsella
 
Ceibal y más allá de la formación
Ceibal y más allá de la formaciónCeibal y más allá de la formación
Ceibal y más allá de la formación
Jorge Donato
 
Get on "The Cloud" with AWS
Get on "The Cloud" with AWSGet on "The Cloud" with AWS
Get on "The Cloud" with AWS
Bhavin Javia
 
Презентация Центра социально-психологической поддержки
Презентация Центра социально-психологической поддержкиПрезентация Центра социально-психологической поддержки
Презентация Центра социально-психологической поддержки
Антон Янченко
 
Laporan hasil observasi
Laporan hasil observasiLaporan hasil observasi
Laporan hasil observasi
Ardella Aswieri
 
Contexto de la Gestión del Conocimiento
Contexto de la Gestión del Conocimiento Contexto de la Gestión del Conocimiento
Contexto de la Gestión del Conocimiento
Germania Rodriguez
 
Los valores humanos
Los valores humanosLos valores humanos
Los valores humanos
tomasmni
 
Google Cloud Platform and Kubernetes
Google Cloud Platform and KubernetesGoogle Cloud Platform and Kubernetes
Google Cloud Platform and Kubernetes
Kasper Nissen
 
2016 1018 CIWEM SW seminar
2016 1018 CIWEM SW seminar2016 1018 CIWEM SW seminar
2016 1018 CIWEM SW seminar
Albert Chen
 
Infografia para docentes
Infografia para docentesInfografia para docentes
Infografia para docentes
Ignasi Alcalde
 

Viewers also liked (16)

Síndrome de down
Síndrome de downSíndrome de down
Síndrome de down
 
Центр поддержки семьи по бул. Хмельницкого, 24а
Центр поддержки семьи по бул. Хмельницкого, 24аЦентр поддержки семьи по бул. Хмельницкого, 24а
Центр поддержки семьи по бул. Хмельницкого, 24а
 
Part1.PDF
Part1.PDFPart1.PDF
Part1.PDF
 
Catalunya al rànquing THE
Catalunya al rànquing THECatalunya al rànquing THE
Catalunya al rànquing THE
 
Rimborsi: nel PD molti dicono "Leggittimo, ma io non lo farei"
Rimborsi: nel PD molti dicono "Leggittimo, ma io non lo farei"Rimborsi: nel PD molti dicono "Leggittimo, ma io non lo farei"
Rimborsi: nel PD molti dicono "Leggittimo, ma io non lo farei"
 
Certificación de Tegnología
Certificación de TegnologíaCertificación de Tegnología
Certificación de Tegnología
 
Current State of Cloud Computing (Jan 2016)
Current State of Cloud Computing (Jan 2016)Current State of Cloud Computing (Jan 2016)
Current State of Cloud Computing (Jan 2016)
 
Ceibal y más allá de la formación
Ceibal y más allá de la formaciónCeibal y más allá de la formación
Ceibal y más allá de la formación
 
Get on "The Cloud" with AWS
Get on "The Cloud" with AWSGet on "The Cloud" with AWS
Get on "The Cloud" with AWS
 
Презентация Центра социально-психологической поддержки
Презентация Центра социально-психологической поддержкиПрезентация Центра социально-психологической поддержки
Презентация Центра социально-психологической поддержки
 
Laporan hasil observasi
Laporan hasil observasiLaporan hasil observasi
Laporan hasil observasi
 
Contexto de la Gestión del Conocimiento
Contexto de la Gestión del Conocimiento Contexto de la Gestión del Conocimiento
Contexto de la Gestión del Conocimiento
 
Los valores humanos
Los valores humanosLos valores humanos
Los valores humanos
 
Google Cloud Platform and Kubernetes
Google Cloud Platform and KubernetesGoogle Cloud Platform and Kubernetes
Google Cloud Platform and Kubernetes
 
2016 1018 CIWEM SW seminar
2016 1018 CIWEM SW seminar2016 1018 CIWEM SW seminar
2016 1018 CIWEM SW seminar
 
Infografia para docentes
Infografia para docentesInfografia para docentes
Infografia para docentes
 

Similar to Write your Ruby in Style

Refactoring Workshop (Rails Pacific 2014)
Refactoring Workshop (Rails Pacific 2014)Refactoring Workshop (Rails Pacific 2014)
Refactoring Workshop (Rails Pacific 2014)
Bruce Li
 
Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Code
eddiehaber
 
Ruby for C# Developers
Ruby for C# DevelopersRuby for C# Developers
Ruby for C# Developers
Cory Foy
 
Language supports it
Language supports itLanguage supports it
Language supports it
Niranjan Paranjape
 
Clean code
Clean codeClean code
Clean code
Nascenia IT
 
Ruby for .NET developers
Ruby for .NET developersRuby for .NET developers
Ruby for .NET developers
Max Titov
 
Intro to Ruby - Twin Cities Code Camp 7
Intro to Ruby - Twin Cities Code Camp 7Intro to Ruby - Twin Cities Code Camp 7
Intro to Ruby - Twin Cities Code Camp 7
Brian Hogan
 
Designing Ruby APIs
Designing Ruby APIsDesigning Ruby APIs
Designing Ruby APIs
Wen-Tien Chang
 
Ruby Hell Yeah
Ruby Hell YeahRuby Hell Yeah
Ruby Hell Yeah
Anupom Syam
 
ppt7
ppt7ppt7
ppt7
callroom
 
ppt2
ppt2ppt2
ppt2
callroom
 
name name2 n
name name2 nname name2 n
name name2 n
callroom
 
ppt9
ppt9ppt9
ppt9
callroom
 
Ruby for Perl Programmers
Ruby for Perl ProgrammersRuby for Perl Programmers
Ruby for Perl Programmers
amiable_indian
 
ppt18
ppt18ppt18
ppt18
callroom
 
name name2 n2
name name2 n2name name2 n2
name name2 n2
callroom
 
test ppt
test ppttest ppt
test ppt
callroom
 
name name2 n
name name2 nname name2 n
name name2 n
callroom
 
ppt21
ppt21ppt21
ppt21
callroom
 
name name2 n
name name2 nname name2 n
name name2 n
callroom
 

Similar to Write your Ruby in Style (20)

Refactoring Workshop (Rails Pacific 2014)
Refactoring Workshop (Rails Pacific 2014)Refactoring Workshop (Rails Pacific 2014)
Refactoring Workshop (Rails Pacific 2014)
 
Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Code
 
Ruby for C# Developers
Ruby for C# DevelopersRuby for C# Developers
Ruby for C# Developers
 
Language supports it
Language supports itLanguage supports it
Language supports it
 
Clean code
Clean codeClean code
Clean code
 
Ruby for .NET developers
Ruby for .NET developersRuby for .NET developers
Ruby for .NET developers
 
Intro to Ruby - Twin Cities Code Camp 7
Intro to Ruby - Twin Cities Code Camp 7Intro to Ruby - Twin Cities Code Camp 7
Intro to Ruby - Twin Cities Code Camp 7
 
Designing Ruby APIs
Designing Ruby APIsDesigning Ruby APIs
Designing Ruby APIs
 
Ruby Hell Yeah
Ruby Hell YeahRuby Hell Yeah
Ruby Hell Yeah
 
ppt7
ppt7ppt7
ppt7
 
ppt2
ppt2ppt2
ppt2
 
name name2 n
name name2 nname name2 n
name name2 n
 
ppt9
ppt9ppt9
ppt9
 
Ruby for Perl Programmers
Ruby for Perl ProgrammersRuby for Perl Programmers
Ruby for Perl Programmers
 
ppt18
ppt18ppt18
ppt18
 
name name2 n2
name name2 n2name name2 n2
name name2 n2
 
test ppt
test ppttest ppt
test ppt
 
name name2 n
name name2 nname name2 n
name name2 n
 
ppt21
ppt21ppt21
ppt21
 
name name2 n
name name2 nname name2 n
name name2 n
 

More from Bhavin Javia

Make ruby talk to your users - literally
Make ruby talk to your users - literallyMake ruby talk to your users - literally
Make ruby talk to your users - literally
Bhavin Javia
 
12 Steps to DevOps Nirvana
12 Steps to DevOps Nirvana12 Steps to DevOps Nirvana
12 Steps to DevOps Nirvana
Bhavin Javia
 
Agile for Startups
Agile for StartupsAgile for Startups
Agile for Startups
Bhavin Javia
 
Software Quality and Test Strategies for Ruby and Rails Applications
Software Quality and Test Strategies for Ruby and Rails ApplicationsSoftware Quality and Test Strategies for Ruby and Rails Applications
Software Quality and Test Strategies for Ruby and Rails Applications
Bhavin Javia
 
Agile Team Dynamics
Agile Team DynamicsAgile Team Dynamics
Agile Team Dynamics
Bhavin Javia
 
Continuous Integration and Builds
Continuous Integration and BuildsContinuous Integration and Builds
Continuous Integration and Builds
Bhavin Javia
 
Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...
Bhavin Javia
 

More from Bhavin Javia (7)

Make ruby talk to your users - literally
Make ruby talk to your users - literallyMake ruby talk to your users - literally
Make ruby talk to your users - literally
 
12 Steps to DevOps Nirvana
12 Steps to DevOps Nirvana12 Steps to DevOps Nirvana
12 Steps to DevOps Nirvana
 
Agile for Startups
Agile for StartupsAgile for Startups
Agile for Startups
 
Software Quality and Test Strategies for Ruby and Rails Applications
Software Quality and Test Strategies for Ruby and Rails ApplicationsSoftware Quality and Test Strategies for Ruby and Rails Applications
Software Quality and Test Strategies for Ruby and Rails Applications
 
Agile Team Dynamics
Agile Team DynamicsAgile Team Dynamics
Agile Team Dynamics
 
Continuous Integration and Builds
Continuous Integration and BuildsContinuous Integration and Builds
Continuous Integration and Builds
 
Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...
 

Recently uploaded

Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 

Recently uploaded (20)

Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 

Write your Ruby in Style