robb broome rubyconf x presentation for publication
DESCRIPTION
Rubyconf overviewTRANSCRIPT
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
Resources
• Video: http://confreaks.net/events/rubyconf2010
• Matz Keynote: http://www.slideshare.net/yukihiro_matz/rubyconf-2010-keynote-by-matz
• Overall: http://zero2railshero.tumblr.com/post/1592771138/rubyconf-new-orleans-awesome-twosome
Thursday, November 18, 2010
Resources
• Chelimsky: http://blog.davidchelimsky.net/wp-content/uploads/2010/11/duplication.pdf
• online sessions: http://rubyconfirmate.heroku.com/conference_sessions
• opengov: http://sunlightlabs.com/
Thursday, November 18, 2010
• git-tips.heroku.com
• Scott Chacon: bit.ly/classygit must-see introduction
• Speaker’s Videos: http://confreaks.net/events/rubyconf2010 up in a week or so
• dave thomas: @pragdave keynote: http://www.slideshare.net/prqgdave/rubyconfx-keynote
• james edward gray II @jeg2: http://www.slideshare.net/JamesEdwardGrayII/unblocked
• poisioning rubinius: @brixen http://slidesha.re/cLdpsc
Thursday, November 18, 2010