Rails 2.0, claims it has nothing earth shattering, just a lot of things better, default scaffold includes Restful xml interface, easily get any format, xml, html, csv, txt, actvieResource, easily give an API to scaffold, loggr in IRB?, add logic to single controller and you get it for all formats, ActiveWebService is gone, instead use ActiveResource, Other allies of rails, maybe Atom, maybe OpenID, 9 more favorite 2.0 features, Breakpoints, put word debugger in the code and when it hits it you jump to irb in the console!, automatically bundle your js and css in gzip, big improvement in user response time but you keep well factored scripts, browswers only open 2 concurrent sessions to the same domain, but theres something to set up spoofing of subdomains to get more concurrent downloads of your "assets" (images, etc), query cache, "select" results are cached until any insert/update/delete happens, presumably this is only for the lifetime of a single request? unclear, use erb and/or builder for rss/atom, configuration is simplified, principle: you should only have to deal with the configuration of things that you care about, sexy migrations, example Create table t ... t.string Col1Name, Col2Name, http authentication, MIT license assumption
good community support for newbies, rubyorails-talk google group, irc channel
he prefers RSpec to TestUnit
"Open Close" principle: open for extensibility, closed for modifcations
some IDE's have autotest: constantly running tests as you type and tell you as soon as something is broken
approximate quote: "if you're worried about the function of your code alone, you shouldn't be in the software business"
productivity on a project decreases with time, the implication is this is in part because of all the bad code that builds up
Bad code is the hardest thing to change, you can change bad social dynamics, you can change bad schedules, you can change bad requirements
Be a professional, Test First, Clean often, The Only way to go fast is to go well
My open questions:, How do you backup a db to S3?
Common workflow:, Load to s3, enque items, worker leases an item from que, worker puts result in s3, worker tells que it's finished
RightScale has a little framework which provides an easy place to provide your particular code that does, prework, your code, post work
RightScale archetucture, mysql master and slave, backup to s3 every 10 minutes, daemons (all ruby), 3 processes query ec2 nonstop, 2 processes querying SQS nonstop, code deployed with capistrano, can be served from s3
xen based virtualization
dynamic dns, roundrobin dns
weakpoints, DNS, vertical scaling of db server, partitioning of db is very important
"today we stand on each othere's feet" Richard Hamming
usually takes 5x more effort to read code than to write it: improve yourself so it's not quite such a bad ratio
"Protect yourself from yourself 5 days ago"
Topic: How to Read Code
Good code to read, xmlrpc4r, Beast Josh Goebel Rick Olson, authenticate_system.rb, someone wrote it and it ends up in lots of plugins, RAKE, overloads the language, lots of blocks, basic DSL behavior, not really metaprogramming, acts_as_versioned, class eval and instance eval, http://whytheluckystiff.net/, pickaxe book, RJS, new ajax way in rails, err the blog and the rails way, activesupoort, marcel molina s3 library, capistrano, something ??tech?? code by Donald Knuth, "Code Reading" book has mixed reviews, he hasn't read all of it yet to comment
Spelunking metaphor, keep focused on the task at hand, don't get lost in side channels
Tips, 1. Look at url, look at routes.rb, 2. Check out controller or skip to view, 3. Grok controller filters, Before, after, 4. Grok controller action, 5. Grok any method the action calls, 6. Check the template and any helpers it might use, 7. filters in app controller and app (something?), 8. observers validation, callback in models, 9. know whats in lib and plugins folder, 10. method_missing and iterator-defined methods
Topic: joining a project that doesn't have testing, how do you begin?
Write tests for bugs that you find, write tests for anything you refactor, and you're good
RCOV, code coverage
fixtures are painful, some other possibilities include, mocks, activerecord fixtures, zentest
HECKLE, what a crazy idea: it mutates your code on the fly, manipulating the parse tree, if it mutates your code and your tests still pass, then your tests weren't complete!, ruby2ruby seattle.rb