Robb broome rubyconf x presentation for publication

Post on 15-May-2015

742 views 3 download

Tags:

description

Rubyconf overview

Transcript of Robb broome rubyconf x presentation for publication

Rubyconf X

Thursday, November 18, 2010

Thursday, November 18, 2010

Chelimsky::Dry

Thursday, November 18, 2010

Chelimsky::Dry

• every time you reduce duplication you increase coupling by introducing new dependencies

Thursday, November 18, 2010

Chelimsky::Dry

• every time you reduce duplication you increase coupling by introducing new dependencies

• metaprogram only when you really do not know the conditions

Thursday, November 18, 2010

Chelimsky::Dry

• every time you reduce duplication you increase coupling by introducing new dependencies

• metaprogram only when you really do not know the conditions

• DRY. What does it mean?

Thursday, November 18, 2010

Chelimsky::Dry

Thursday, November 18, 2010

• Does not mean: “don’t type anything twice”

Chelimsky::Dry

Thursday, November 18, 2010

Chelimsky::Dry

Thursday, November 18, 2010

Chelimsky::Dry

• Every piece of knowledge

Thursday, November 18, 2010

Chelimsky::Dry

• Every piece of knowledge

• must have a

Thursday, November 18, 2010

Chelimsky::Dry

• Every piece of knowledge

• must have a

• single,

Thursday, November 18, 2010

Chelimsky::Dry

• Every piece of knowledge

• must have a

• single,

• unambiguous,

Thursday, November 18, 2010

Chelimsky::Dry

• Every piece of knowledge

• must have a

• single,

• unambiguous,

• authoritative representation

Thursday, November 18, 2010

Chelimsky::Dry

• Every piece of knowledge

• must have a

• single,

• unambiguous,

• authoritative representation

• within a system

Thursday, November 18, 2010

Chelimsky::Dry

Thursday, November 18, 2010

Chelimsky::Dry

• before filters for orthogonal stuff:

Thursday, November 18, 2010

Chelimsky::Dry

• before filters for orthogonal stuff:

• authentication

Thursday, November 18, 2010

Chelimsky::Dry

• before filters for orthogonal stuff:

• authentication

• logging

Thursday, November 18, 2010

Chelimsky::Dry

• before filters for orthogonal stuff:

• authentication

• logging

• not for finding records

Thursday, November 18, 2010

Katz

• rails3

• short branches (2days)

• change code or tests, not both

• or, refactor up a level

• deprecation isolation (compat module)

• check out tests on the depot app

Thursday, November 18, 2010

Matz

Thursday, November 18, 2010

Matz

• ruby 2.0

Thursday, November 18, 2010

Matz

• ruby 2.0

• by christmas

Thursday, November 18, 2010

Matz

• ruby 2.0

• by christmas

• whatever year

Thursday, November 18, 2010

Matz

• ruby 2.0

• by christmas

• whatever year

• embedded ruby

Thursday, November 18, 2010

opengovcodeforamerica

sunlight fdn• making gov data openly and freely available

• building apis with mongo db - eric mill, sunlight foundation / labs

• -> json view chrome extension

• sections argument , range arguments in url determine what’s returned

• different calls each map to dup'd data in the mongo db

• each call maps to a whole data structure in mongo

• crowdsourcing (guardian example). Needs a framework

Thursday, November 18, 2010

aaron patterson@tenderlove

Thursday, November 18, 2010

aaron patterson@tenderlove

• zomg

Thursday, November 18, 2010

aaron patterson@tenderlove

• zomg

• rewrote arel

Thursday, November 18, 2010

aaron patterson@tenderlove

• zomg

• rewrote arel

• superficial vs deep refactoring

Thursday, November 18, 2010

aaron patterson@tenderlove

• zomg

• rewrote arel

• superficial vs deep refactoring

• 6 weeks

Thursday, November 18, 2010

aaron patterson@tenderlove

• zomg

• rewrote arel

• superficial vs deep refactoring

• 6 weeks

• working on integ with mongo

Thursday, November 18, 2010

aaron patterson@tenderlove

does ruby scale?

Thursday, November 18, 2010

aaron patterson@tenderlove

• benchmark over time

Thursday, November 18, 2010

aaron patterson@tenderlove

Thursday, November 18, 2010

aaron patterson@tenderlove

• inject is way slower than hash & a map

• Hash.[@list.map{|val| ... }]

Thursday, November 18, 2010

aaron patterson@tenderlove

• inject is way slower than hash & a map

• Hash.[@list.map{|val| ... }]

• class_eval is way faster than define_method because dm uses a proc activation

Thursday, November 18, 2010

aaron patterson@tenderlove

• inject is way slower than hash & a map

• Hash.[@list.map{|val| ... }]

• class_eval is way faster than define_method because dm uses a proc activation

• attr_reader way faster than a method

Thursday, November 18, 2010

jake scruggs

• Metric_fu

• The great thing about standards is that there are so many to choose from

• when to fix, when to refactor (flog>60)

• high churn objects desire better test cov

Thursday, November 18, 2010

polite programmer’s guide

• testing private methods?

• monkey-patch. evil or not?

• fail if instance_methods.map.... include?(:mymethod)

• new method v existing

• delegate vertically if you own, horizontally if not

Thursday, November 18, 2010

Scott Chacongithub

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

$ git describe HEAD@{1.month.ago}

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

$ git describe HEAD@{1.month.ago}v0.2.4-6-gf51a8ba

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

$ git describe HEAD@{1.month.ago}v0.2.4-6-gf51a8ba

git log --oneline --decorate --graph

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

$ git describe HEAD@{1.month.ago}v0.2.4-6-gf51a8ba

git log --oneline --decorate --graph

git bundle create repo.bundle master

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

$ git describe HEAD@{1.month.ago}v0.2.4-6-gf51a8ba

git log --oneline --decorate --graph

git bundle create repo.bundle master

git clone repo.bundle -b master repo

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

$ git describe HEAD@{1.month.ago}v0.2.4-6-gf51a8ba

git log --oneline --decorate --graph

git bundle create repo.bundle master

git clone repo.bundle -b master repo

git branch --merged

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

$ git describe HEAD@{1.month.ago}v0.2.4-6-gf51a8ba

git log --oneline --decorate --graph

git bundle create repo.bundle master

git clone repo.bundle -b master repo

git branch --merged

git branch --no-merged

Thursday, November 18, 2010

Scott Chacongithub$ git describe HEAD

v0.2.4-25-g8a3f93b

$ git describe HEAD@{1.month.ago}v0.2.4-6-gf51a8ba

git log --oneline --decorate --graph

git bundle create repo.bundle master

git clone repo.bundle -b master repo

git branch --merged

git branch --no-merged

git rerere (Reuse Recorded Resolution)

Thursday, November 18, 2010

DHH

Thursday, November 18, 2010

DHH

Thursday, November 18, 2010

DHH

Thursday, November 18, 2010

DHH

Thursday, November 18, 2010

DHH

monkey-patching

Thursday, November 18, 2010

DHH

monkey-patching

freedom-patching

Thursday, November 18, 2010

DHH

monkey-patching

freedom-patching

Thursday, November 18, 2010

DHH

Thursday, November 18, 2010

DHH

ruby is your friend, not your parents

Thursday, November 18, 2010

DHH

ruby is your friend, not your parents

ruby - guidance

Thursday, November 18, 2010

DHH

ruby is your friend, not your parents

ruby - guidance

java - enforcement

Thursday, November 18, 2010

DHH

ruby is for consenting adults

Thursday, November 18, 2010

Thursday, November 18, 2010

DHH

Thursday, November 18, 2010

DHHBFF

Thursday, November 18, 2010

DHH

Thursday, November 18, 2010

DHH

Thursday, November 18, 2010