Showing posts with label Rails. Show all posts
Showing posts with label Rails. Show all posts

Sunday, August 08, 2010

new blog built on Rails

My thoughts on web application development, especially in the realm of Ruby on Rails, Heroku, the cloud, Ruby, Rails, Memcache, PostgreSQL, No-SQL, iPhone, and other topics are being shared now on http://MarkHolton.com

Wednesday, February 18, 2009

internationalization


...since I'm going to have to speak Spanish in Alhambra, CA during the AT&T work stoppage... I might as well incorporate that into my web applications and "make lemonade" as the saying goes.

That's just a positive spin on having to go there. We coincidentally have homework due next week related to internationalization.

Been writing the Depot app via the PragProg book in Rails, but am doing so via Test Driven Development (slightly different from the book, per the awesome teaching of @tenderlove in the UWRails class -- this is the 2nd time I've taken this 3 month Rails class, and learning a ton more about Rails 2.2 and especially TDD)... am getting to the part where I'm incorporating internationalization.

I like this i18n features built into Rails, so I figured I'd blog about it, in case anyone else was interested: so certain items have translations. E.g. headers, titles, shopping carts, buttons, links -- not the data in the database, but all the labels and text that would help a user navigate through the application.

The translations are handled in a YAML file, which lets you call out the translation that matches it's hierarchy -- as shown below (Spanish, "es" shown here, there is an accompanying translation file for English, or "en"... could continue on as many languages as you wanted):


http://gist.github.com/66782

So the user sets their language preference via the dropdown (English is default, but they can choose whatever they want), then voila all labels that have a translation appear in that language selected! How does that work? Inside the code for all the pages, it just effectively says "give me whatever language is selected for layout.side.home, etc., and looks it up in the YAML file for that language above, grabs the matching value in that hierarchy, and out pops the word or phrase. For example, the markup for the sidebar links for "store", "questions", "news", "contact" look like this:

http://gist.github.com/66788

This is a common example, and almost identical to the example in the PragProg Agile Rails version 3 book -- maybe armed with this knowledge, I'll internationalize EyeOnMajors and Golfap as soon as it is riding on the Rails... :)

Giddyup.
Holts

Wednesday, January 28, 2009

Recommended Ruby, Rails, REST books!

I have read the following books (some more closely than others). I'd recommend each of them for various reasons. All have been helpful in understanding many of the pragmatic concepts baked into Rails, understanding the Ruby programming language, and web development in general. I hope you have a chance to check them out on your own path of learning!
:Mark

RESTful Web Services

The Ruby Way, Second Edition: Solutions and Techniques in Ruby Programming (2nd Edition) (Addison-Wesley Professional Ruby Series)

The Rails Way (Addison-Wesley Professional Ruby Series)

Design Patterns in Ruby (Addison-Wesley Professional Ruby Series)

Ruby for Rails: Ruby Techniques for Rails Developers

Prototype and Scriptaculous in Action [Ajax]

Advanced Rails Recipes

Developing Facebook Platform Applications with Rails (Pragmatic Programmers)

Agile Web Development with Rails, 2nd Edition

Friday, January 16, 2009

'carl_spackler' about to get ORM-ified

...yup, it's time... no more mysql gem... Should have done this earlier, but no better time than the present to implement...

...this weekend...going to convert any [current 'carl_spackler'] database queries that are mysql-specific, into ActiveRecord calls. This way, someone is just one adapter change away from using their database, any db they want that ActiveRecord supports, with Spackler. ...but really, it will make things easy for me to write to my db using the ActiveRecord syntactical sugar. Laziness... a virtue!

ActiveRecord::Base.establish_connection({
:adapter => "sqlite",
:dbfile => "db/mygolfdb.sqlite"
})

Friday, January 02, 2009

vote for GitHub

Vote for GitHub as best bootstrapped startup in 2008. It takes 2 seconds and they are truly deserving:
http://crunchies2008.techcrunch.com/votes/?nominee_id=8&category_id=2

Tuesday, December 23, 2008

Merb and Rails unite in Rails3!

I see this as great news for the Ruby and Rails and Merb communities... what are your thoughts?

Yehuda Katz post is a great rundown:

http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3/comments/24239#comment-24239

http://yehudakatz.com/2008/12/23/rails-and-merb-merge/

http://rubyonrails.org/merb

Friday, November 21, 2008

carl_spackler : Ruby to collect golf scores from web

Creating a new open source library hosted on Github, named 'carl_spackler'... it collects data on golf scores throughout the web, and produce a normalized form for each collection. Likely the output will be an array of Ostructs for starters.

Similar principle to OGWR, only for weekly tournament scores, not weekly golf rankings. This way anyone can collect both sets of data and use it as they so choose.

So lets say you want to grab all European Tour scores for the week, just dial up carl_spackler, and let it do your wet work for you.

Lots more to come on 'carl_spackler', 'OGWR', and others.


Carl Spackler, Greenskeeper, Bushwood CC

Tuesday, November 04, 2008

software mission statement

Was reading Signal vs Noise today, per the usual routine at lunch. ...they requested that folks describe them, to the layperson:
http://www.37signals.com/svn/posts/1371-describe-37signals-in-20-seconds-or-less

Here was my suggestion:
“We build sensible and usable customized web applications for humans… while contributing to open source software that helps people build, deploy and maintain web applications for themselves or their own business. In summary, we are entrepreneurial software humanitarians!”

That's my own philosophy on software, and the fellas at 37Signals seem to be of that mindset, after experiencing their products, reading their posts and book (GettingReal), listening to DHH, et al speak, etc.. Got me thinking that's a nice mission statement for individuals as well. So there it is.

It's nice to have the folks at 37Signals out there as an inspiration.

Sunday, November 02, 2008

collect Golf's World Rankings on your own with new Ruby module!

...Official Golf World Ranking, OGWR...
wrote some Ruby code in a Module that grabs the official golf world rankings...
use the data as you wish in your own application...
released as open source...
enables anyone to take the active OGWR data and do with it what you wish
(E.g. store to a database each week, hold in your database to related to players on your website, etc).

...it's decent for a start, planning on continuing to make it more versatile and useful...
You can find the code on GitHub at the links above.

Friday, October 17, 2008

update Rails and gems on Joyent Accelerator

Was back on my Joyent Accelerator (been too long), and hadn't done an update in awhile. Needed to update Rails, among many other gems and was coming across this error whenever I tried updating any gems:

ERROR: While executing gem ... (Gem::GemNotFoundException)
could not find capistrano locally or in a repository

Realized I needed to install rubygems-update-1.2.0 from source:

$ sudo curl -O http://rubyforge.rubyuser.de/rubygems/rubygems-update-1.1.1.gem
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 418k 100 418k 0 0 146k 0 0:00:02 0:00:02 --:--:-- 165k

$ sudo curl -O http://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-update-1.2.0.gem
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 246k 100 246k 0 0 147k 0 0:00:01 0:00:01 --:--:-- 183k

$ sudo gem install rubygems-update-1.1.1.gem
Successfully installed rubygems-update-1.1.1
1 gem installed
[admin@golfapp /home]$ sudo gem install rubygems-update-1.2.0.gem
Successfully installed rubygems-update-1.2.0
1 gem installed

$ sudo update_rubygems

$ sudo gem update rails
Updating installed gems
Updating rails
Successfully installed activesupport-2.1.1
Successfully installed activerecord-2.1.1
Successfully installed actionpack-2.1.1
Successfully installed actionmailer-2.1.1
Successfully installed activeresource-2.1.1
Successfully installed rails-2.1.1
Gems updated: activesupport, activerecord, actionpack, actionmailer, activeresource, rails

Rubygems 1.3.0 was out about 20 days ago (it's been awhile since I updated this Accelerator)...
http://blog.segment7.net/articles/2008/09/26/rubygems-1-3-0

$ sudo curl -O http://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-update-1.3.0.gem
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 257k 100 257k 0 0 151k 0 0:00:01 0:00:01 --:--:-- 188k
[admin@golfapp /home]$ sudo gem install rubygems-update-1.3.0.gem
Successfully installed rubygems-update-1.3.0
1 gem installed
[admin@golfapp /home]$ sudo update_rubygems
Installing RubyGems 1.3.0...

After reading Eric's blog post, I should have just done a:
$ sudo gem update --system
$ sudo gem update

Live and learn. But RubyGems is updated now, and so are all my installed gems. Yayy. Need to deploy my app to this by Dec 1 hopefully.

Wednesday, July 30, 2008

DHH at "Startup School"

<div><a href="http://www.omnisio.com">Share and annotate your videos</a> with Omnisio!</div>

Thursday, July 24, 2008

Metaclasses and Ruby Inheritance Chain

This is a very large and involved topic. (great topic! it is part of what makes Ruby so powerful)
You can add new methods to a Class on the fly at anytime. Can also overwrite methods at any time. And, in Ruby, this truly means virtually any Class. Including classes like Array, String, etc.

Let's say we have

> class Course
> attr_accessor :id, :name
> def initialize( id, name)
> @id, @name= id, name

> end
> end

> c = Course.new( 1, "Augusta National" )
=> #<
Course:0x81cfb94 @id=1, @name="Augusta National"...

> c.class
=> Course

> c.id
=> 1
> c.name
=> "Augusta National"


So in this case, a Course object, once initialized, will have a
@id and a @course variable. It can hold
any other variables at any time too...

> c.instance_variable_set( "@par", 72 )
=> 72
> c.par
=> MoMethodError: undefined method 'par' for #<Course..

It's holding that variable for par, but now we cannot get at it without a read method. So let's say you
wanted to only have the reader/writer methods for par on that instance,
not on the class
(just an example).


Classes hold methods, objects do not. Except in the case of metaclasses:
> class << c
> attr_accessor :par
> def pretty_par
> puts "par: #{@par}"
> end
> end

Now you can do
> c.par
=> 72
Also when you do:
> c.methods
=> ["par", "id", "name", "pretty_par", ...] #=> these are referred to as the
#=> object's "Singleton methods"

but when you show the methods for the Course class:
> Course.methods
=> ["id", "name", ...] # i.e. no par, or pretty_par, because there is no method
# for these in the Course class, only the c metaclass
likewise:

> c2 = Course.new(2, "Shinnecock Hills")
=>
#<Course:0x91cfb94 @id=2, @name="Shinnecock Hills"

but it won't have access to any of the Singleton methods in c (i.e. neither "c2.par", nor "c2.pretty_par" method
calls will work. They only work in the c metaclass).


You see, because when Ruby looks for a method, it first looks at the metaclass.
i.e. the metaclass intercepts the request, and checks for methods there first.

Then it goes to the object's class, then the SuperClass of that object, then any super's of that object and so on
...all the way back to the Object base class.


You can insert methods into the class, or into an object's metaclass at any level in the inheritance chain.
Very powerful.



One more beauty... if you attach a:
...
def method_missing
puts "there was no method that matched that"
end
...
you can intercept the call to a missing method (anywhere in the inheritance chain, the class, the metaclass, etc)
and do things like creating methods on the fly, programmatically.

It's called "monkey patching" (some people call it "Duck punching", and there are other names).
Ruby is a great language to metaprogram with. Rails uses method_missing often (along with const_missing) --
for instance, ActiveRecord uses method_missing to dynamically support the find_ methods.

That's a whole other interesting topic in itself to explore!

Friday, June 27, 2008

Powerset : Ruby Front End

Great insights on Ruby's front end from Kevin Clark's blog:

http://glu.ttono.us/articles/2007/06/21/powerset-to-launch-front-end-on-ruby

"The simple fact is that Ruby wasn’t the source of Twitter’s woes. As it often happens with rapidly growing sites, they ran into architectural problems. Some design decisions don’t hurt until they reach a massive scale and at that point you have to rethink your approach. In an email he writes:

For us, it’s really about scaling horizontally - to that end, Rails and Ruby haven’t been stumbling blocks, compared to any other language or framework. The performance boosts associated with a “faster” language would give us a 10-20% improvement, but thanks to architectural changes that Ruby and Rails happily accommodated, Twitter is 10000% faster than it was in January

This is great news for Twitter, but even better for us because we don’t have the bottle necks that they’ve struggled with – databases, instant messaging servers, and regularly recycling cache systems – which makes scaling horizontally much much smoother. At that point, our scaling issue doesn’t concern Ruby. For a search engine, the front-end is largely just a templating system and the real work happens in the back when we process your query."

Thursday, June 26, 2008

Microsoft buying Powerset?

...Rumor has it, that Powerset is being bought by MSFT... that can only mean they are trying to go semantic in their search quest... hopefully the great technical and semantic momentum with Powerset will carry on.

...Powerset is written in all OpenSource -- Ruby, Merb, Rails, god, Mongrel, Mootools, Memcache, Erlang, Fuzed*, YAWS, Hadoop... one of their developers is Kevin Clark, active Ruby/Rails developer: http://glu.ttono.us/articles/2008/05/12/holy-god-powerset-launches

More on Powerset:
http://searchengineland.com/080512-000100.php

had written about Powerset and Kevin Clark 9 days ago...
http://holtsblog.blogspot.com/2008/06/businessweek-article-on-search.html

Interesting to see how this plays out.

Tuesday, June 17, 2008

Rspec 1.1.4 gem and plugin with Autotest

I love Rspec and Rspec-rails. Trying to get much better at it. Also love Autotest. Ryan Zenspider Davis is a prolific genius.

Had issues today with a new project running 1.1.4 with autotest. It was easily fixable though.

Here was the error:

############################################################################
Your RSpec on Rails plugin is incompatible with your installed RSpec.

RSpec : 20080615141040
RSpec on Rails : 20080526202855

Make sure your RSpec on Rails plugin is compatible with your RSpec gem.
See http://rspec.rubyforge.org/documentation/rails/install.html for details.
############################################################################
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
from /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
from /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
from /Users/holtonma/git/golfap/vendor/plugins/rspec-rails/lib/spec/rails.rb:15
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
... 10 levels...
from /opt/local/lib/ruby/gems/1.8/gems/rspec-1.1.4/lib/spec/runner/example_group_runner.rb:13:in `load_files'
from /opt/local/lib/ruby/gems/1.8/gems/rspec-1.1.4/lib/spec/runner/options.rb:98:in `run_examples'
from /opt/local/lib/ruby/gems/1.8/gems/rspec-1.1.4/lib/spec/runner/command_line.rb:19:in `run'
from script/spec:5
/opt/local/bin/ruby -S script/spec -O spec/spec.opts spec/models/player_spec.rb
Here was the fix:

"go into rspec-rails/lib/spec/rails/version.rb and comment the code that's complaining about the version mismatch. The risk is fairly low at this point that you're going to have any trouble."
http://www.ruby-forum.com/topic/156080

To get it working with Aututest, had to slightly modify script/spec to require 'rubygems':
require 'rubygems'

http://railized.com/2008/4/20/running-autotest-with-rspec-gem

If you encounter that issue, hope this helps you fix it!

BusinessWeek article on Search

Interesting points about the gap between what we have now, and where much of the potential in Search remains, especially when it comes to the Semantic web:

http://www.businessweek.com/technology/content/jun2008/tc20080616_034849.htm

...Powerset is written in all OpenSource -- Ruby, Merb, Rails, god, Mongrel, Mootools, Memcache, Erlang, Fuzed*, YAWS, Hadoop... one of their developers is Kevin Clark, active Ruby/Rails developer: http://glu.ttono.us/articles/2008/05/12/holy-god-powerset-launches

More on Powerset:
http://searchengineland.com/080512-000100.php

Great stuff. Thanks to Kevin for sharing that info on his blog -- inspiring work.

Saturday, May 31, 2008

DHH Keynote: the Surplus, 'Go Dubai', and balance

...my notes from the RailsConf keynote for anyone interested... a lot of non-software wisdom by DHH... i thought it was an impressive talk. Not a lot of ego in this (i.e. not interested in taking over the world, etc... more interested in pragmatic fundamentals). Very refreshing and inspiring. ...hopefully they recorded it and posted it on ConFreaks in the coming weeks... it was entertaining and engaging. Sorry if notes were brief or in some cases inaccurate, tried to capture the ideas as I heard them and understood them
cheers,
:Mark


Friday: 7:30 pm

the Surplus

What kind of surplus?

Productivity surplus.. but even with a great productivity surplus, it's a relatively small community

There have been surpluses in productivity in software throughout history... Smalltalk... Lisp...

So what can you do with this surplus?
Sell it! Cash it in! Hookers, fur coats, gold rings! ... (laughs, cheers)

Rails is a bluechip in this space... even though it's a small space... this productivity gain space... it's a blue chip, but this space is still just a tiny slice of the overall picture.

So how did Rails become a blue chip in this space?

1. we confessed commonality -- building a web app... companies are alike when it comes to building a web app...
2. ceded flexibility -- one way is convention over configuration.. why are we deciding file structure, etc all the time.. make the choice ONE time and move on for crying out loud!
3. TECH matters -- is that really your goal "not to fail". That's really a pathetic goal. Isn't there more to your life than that
4. utlimately... all of this meant, we cared about US! the developers

...there is some bad news to this... in general... in history surpluses won't last forever

3 ways DHH sees this could happen:
1. mainstream copies rails (although he doesn't see a high liklihood of this happening... remember when a couple years ago Java created their version of scaffolding? "claim victory! we have the crown jewel!"). so this could very well happen... but could also be that so many people have their head down in the "110%" productivity work society that they fail to pick their heads up and see some of this
2. a dramatic alternative arrives. ...now this has to be a massive improvement. Not 5% or 10%... has to be huge. Like 50%, 100%, 5x, 10x... like Rails was
3. third way... if Rails becomes mainstream. He has thought to himself... is that cool? would that really be cool, or not? If everyone did it. Not sure. For one, we'd lose our surplus productivity... some ways it's not a bad thing to have ideas out there like 'rails doesn't scale', we want our competitors to use crappy tools! ...retain the surplus. ..also there's this idea that with everyone doing it, the surplus goes into the bottom line

We could be like Private Hudson... "game over, man!", and just blow the surplus! blow it on hookers, fur coats, gold rings! (cheers)... but that would be..... BUSINESS AS USUAL for the mainstream ;)

With no surplus, there is this mentality that it's "another day another fire".... you get "lost in the mechanics" when you are working at 110%... become fatigued, disinterested, passionless.

We need to have resolve. The most depressing thing I can hear is... "it's just a job". How depressing is that??? You spend 8, 10, 12 hours per day there... and it's "just a job"

so rather than blowing the surplus... we need to have resolve... no hookers, fur coats, gold rings... instead... what about... GOING DUBAI!... turn the surplus into someting durable, long lasting.

So how can we do that? Invest in YOU!. Investing in YOU, makes this last. No matter what happens, if you develop the skills, you develop the techniques and we grow, it makes it last beyond this framework and the next 10 frameworks.

Not going to do any studies talking about Rails being 10x faster...lot of subjectivity there. Well, some programmers themselves are 10x faster, this is well known. This is valuable. There's this notion of a 'rock star' programmer.. that's bullshit. You get out of it what you PUT INTO IT. Just like anything. Nobody's born a rock star, you LEARN this stuff. You sharpen your skills.

So what are the TECHNIQUES for doing this:
- recharge tangentially -- DO SOMETHING ELSE. Unplug. Get away from your screen, get out of your editor
- SLEEP MORE. We have this superman mentality, and glamorize no sleep. That's ridiculous, and just not true. How many projects benefit from 1 day of extra productivity and many hours of non-peak performance after taht. Would rather have peak performance for 4 hours per day, than one day of peak, and then you fucking up the code the next 2 days! Drop the cape crap, it wouldn't look good on you anyway!
- cut down on your RSS feeds. How much of that is durable? Much of it is fad. Most doesn't matter. Read books to last... design patterns.. .fundamental... implementation patterns... Kent Beck... innovator's dillemma
- Go Renaissance! Go Da Vinci!!!
- programmers are affected by business... so read about business... read about design... that's another one! Tufte, Envisioning information... another discipline where u will be better in your own work, and communicating with designers
- Programming less crystallizes value
- Bettering yourself... that's what XP is about...
- start from scratch sometimes... I learn the most when I start a new project... HighRise an example..
- SHARE! learn by sharing!! writing blogposts, talking at conferences, publish a gem or plugin. YOU get more out of it, than what you give. Companies have a hard time recognizing this. They get so much out of it, but they foolishly want to retain it all. Spread the message
- Why betterment?? Cockburn quote: "[the point of trying to improve in this game] is to get the best position in the next game"
- there's a lot of slack available for extraction in your daily lives ... think about this time you waste and apply fundamental principles during that time
- at 37Signals... we work 4 day weeks. People cry "how can you do that? how can u be productive???" How in the hell can that matter, 20% less time when my ass is in that chair. Broaden yourself, it will make you MORE efficient in what you do. Programming is not like swinging an axe back in the day... the time your ass is in the chair does not correlate to productivity

Sunday, May 18, 2008

Awesome news!

Congrats to the Rubinius team! This is awesome news!

http://blog.fallingsnow.net/2008/05/17/rails-on-rubinius/

http://www.infoq.com/news/2008/05/rubinius-runs-rails

Saturday, April 05, 2008

schedule at RailsConf 2008

Today I am going through the program and session information at RailsConf and figuring out what I'll be attending Thurs, Fri, Sat, Sun, May 29 thru June 1st.

Thurs:
7:30 a.m : Continental Breakfast - Exhibit Hall E
8:30am-12:00pm - Design for Developers - A Hands-On Workshop
1:30-5:00pm - Powering AIR Applications with Rails
7:30pm - ? - Birds of a feather sessions

Fri:
8:00 a.m.: Continental Breakfast - Exhibit Hall E
9:00 -10:15am - Plenary TBC
10:45-11:35am (BR: 251) - Entrepreneurs On Rails (Dan Benjamin, Rails Machine)
alternate: (BR: 252) IronRuby on Rails (John Lam)

11:45-12:35pm (BR: 255) - Hosting and the Woes (Ezra Zygmuntowicz, et al)
alt: (BR: 256) - Faster, Better, ORM with DataMapper (Yehuda Katz)

1:50-2:40pm (BR:255) - Facebook Development and Performance with Rails (Mike Mangino)
alt: (BR:252) - CRUD doesn't have an 'S' in it: Managing complex searching in Rails

2:50-3:40pm (BR:255) - The Profitable Programmer: Creating Successful Side Projects (Geoff Grosenbach of the Seattle.rb!, et al)
alt: (BR:252) - Design Patterns in Ruby (Neal Ford)

4:25-5:15 (BR:255) - Custom Nginx Modules: Accelerate Rails, HTTP Tricks
alt: (BR: 256) - UI Design on Rails (Ryan Singer)

SATURDAY

8:00 a.m.: Continental Breakfast - Exhibit Hall E
9:00 -10:15am - Keynote

10:45-11:35am (BR:252) - Using Git to Manage and Deploy Rails Apps (Scott Chacon)
atl: (BR:251) - Optimizing Rails (Koziarski)

11:45-12:35pm (BR: 252) - Advanced RESTful Rails (Ben Scofield)
alt: (BR:251) - Scaling Rails

1:50-2:40pm (BR:252) - Fast, Sexy, and Svelte: Our Kind of Rails Testing (Thoughtworks)
alt: (BR:251) - Build Your Own Distributed, Self-Configuring Rails Cluster

2:50-3:40pm (BR:251) - Flexible Scaling: How to Handle 1 Billion PageViews (Murphy)
alt: (BR:252) - Integration Testing with RSpec's Stor Runner (Chelimsky)

4:25-5:15pm (BR:252) - The Great Test Framework Dance-Off (Susser)
alt: (BR: ) - Metaprogramming and Ruby Internals for Rails Programmers (Farley)

7:30pm - ? - Birds of a feather sessions

SUNDAY

8:00 a.m.: Continental Breakfast - Exhibit Hall E
9:00 -10:15am - Keynote

10:45-11:35am (BR: 252) - Scaling Ruby from the Inside Out (Zygmuntowicz)
alt: (BR: 256) - Advanced Mongrel: Handlers and Plugins (Lindenbaum)

11:45-12:35pm (BR: 251) - Everyday DTrace on OSX: A Guide to Using DTRace for your full Application Stack (Barron, Humphrise)
alt: (BR:252) - Genomes on Rails (Wood)

1:50-2:40pm (BR:252 ) - Advanced Active Record Techniques: Best Practice Refactoring (Chad Pytel)
alt: (BR: 256) - ActiveRecord Associations and the Proxy Pattern