Lessons Learnt fromWorking With Rails       Martin Sadler    workingwithrails.com
HAZ HACKF                     EST                           This Talk    I CANOverview                    The Scene       ...
But First
In The Beginning
In The Beginning    (Autumn 2006)
Current Release    1.1.5
O’Reilly - State of the book market
The ratings are based on the number of skilled engineers world-wide, courses and third party vendors.    TIOBE Programming...
Rails Resources                          ROR Forums / Newsgroup      Blogs                   Official ROR wikiPlugin direct...
Frustrated?
Ouch!
Ouch!
Ouch!
Ouch!
http://flickr.com/photos/zachklein/54389823/
http://flickr.com/photos/zachklein/54389823/
Ouch!http://flickr.com/photos/zachklein/54389823/
Ouch!http://flickr.com/photos/zachklein/54389823/
Issues
Issues• Limitations of wiki page length
Issues• Limitations of wiki page length• Spam
Issues• Limitations of wiki page length• Spam• No ability to cross reference data
Issues• Limitations of wiki page length• Spam• No ability to cross reference data• Tricky to navigate
Issues• Limitations of wiki page length• Spam• No ability to cross reference data• Tricky to navigate• No one had ownership
Issues• Limitations of wiki page length• Spam• No ability to cross reference data• Tricky to navigate• No one had ownershi...
Solution? Strategy?
Putting it together                      http://flickr.com/photos/laffy4k/166300185/
Putting it togetherSources                          http://flickr.com/photos/laffy4k/166300185/
Putting it together Sources  WikiNewsgroup                           http://flickr.com/photos/laffy4k/166300185/
Putting it together            Extract Sources  WikiNewsgroup                           http://flickr.com/photos/laffy4k/16...
Putting it together            Extract                        Map Sources                and                      Combine ...
Putting it together                       Rails                      Models            Extract                        Map ...
Putting it together                       Rails    New Interface                      Models            Extract           ...
Principles  create a web application to...• Improve the usability and accessibility of the  content.• Increase reliability...
Early Concept              Text Early proof of concept wireframe design
BonusDatabase would already be populated with          everyones records!
BonusDatabase would already be populated with          everyones records!              Good Idea?
Hey, I didn’t give you permission to                                                       copy my data!http://flickr.com/p...
But...• No need for people to enter their details  again. (DRY)• Great kick start - site looks active before  any users ha...
Add Value• Additional profile information e.g. • How long have you been using Rails? • How long have you been using Ruby? •...
ManagementGive as much freedom as a Wiki using a structured database.      Give control and ownership to the individuals  ...
Reporting• Needed side effect• Self policing                       http://flickr.com/photos/chrisjohnbeckett/442682895/
Detour     Extracting from       the source
Profile Attributes• First name    • Email• Last name     • Job title• Country• Location• Company• Company url
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
Using HPricot with XPathLooking for patterns   .. and finding edge cases
An operation in data     cleansing
ResultAbout 90% Success rate in porting the data   Edge cases proved to be challenging    Spam was a continued annoyance
Detour end?         Almost
In Sync?WWR - Keeping records in sync with the Rails Wiki
In Sync?                                            CrAZY!WWR - Keeping records in sync with the Rails Wiki
Back to the plan....
1st Iteration• Set (limited) scope of project• Knocked together a basic proof of concept.• Scraping and validity, versioni...
The Launch
“So this is basically a                            facebook for hiring?                            Looks cool.” - DHHFlick...
Release Strategy• Ask DHH• Notify Ruby Inside• Send mail out to initial beta testers• Post Announce on Rails newsgroup
Release Strategy     Continued...• Released on a Thursday • End of week - People are more open to    trying things out. • ...
Ruby InsideNov 17th 2006                  http://www.rubyinside.com/worlds-largest-index-of-rails-developers-workingwithra...
Ruby on Rails Weblog                                 Text  http://weblog.rubyonrails.org/2006/12/3/working-with-rails-tell...
Keeping Track                                http://flickr.com/photos/andropolis/• Direct emails                           ...
Authority   VSPopularity
Authority vs Popularity Provide by the   By other users      user
Where are they used?
Where are they used?
Where are they used?   Data Streams & Filters
Where are they used?   Data Streams & Filters
Where are they used?   Data Streams & Filters
Useful for?Reputation               Marketing                  CV       Kudos                 Endorsements
When will I be famous?
When will I be famous?
I Can Haz Internetz
I Can Haz Internetz
Authority, Popularity, and Experience are    metrics by which to compare Rails                developers.It’s up to the vi...
Contests(aka Hackfests)
January 2007 Rails Coding FTW• First ever global Rails Hackfest• 20 tickets to RailsConf inc hotel• 24 days• 263 participa...
Rails Coding FTWKick-off • Jeremy Kemper (Core Team) • Derek Sivers (CD Baby) • Coded over a weekend • Lots of emails ..ti...
Rails Coding FTWIn practice• Queried a custom Trac activity report (RSS)• Generated ‘votes’ per contributor• Re-factored p...
Prize Stats                               Oakleys32+ Rails Conf tickets                                         $$$       ...
Under the hood
Chart Infrastructure             Chart   RankSet           VoteSet   Ranks             Votes
Generation• Chart Scheduler (background daemon)• Uses OpenWFEru scheduler gem• Generates a RankSet and ranks for a given  ...
Generation• Chart Scheduler (background daemon)• Uses OpenWFEru scheduler gem• Generates a RankSet and ranks for a given  ...
Has Many Charts?    Overall Popularity | Blog Popularity | CodePopularity | Training Popularity | Speaking Popularity    |...
How many records?  *this figure is actually now much higher so these figures will be even higher!
How many records?• 12 Charts         *this figure is actually now much higher so these figures will be even higher!
How many records?• 12 Charts• 10,000 users*         *this figure is actually now much higher so these figures will be even h...
How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day          *this figure is actually now much h...
How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day• 12 * 10, 000 = 120000 ranks a day         ...
How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day• 12 * 10, 000 = 120000 ranks a day• 240,000...
How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day• 12 * 10, 000 = 120000 ranks a day• 240,000...
How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day• 12 * 10, 000 = 120000 ranks a day• 240,000...
Lots of records  what to watch out for?
Lots of records     what to watch out for?• (Careful) Indexing
Lots of records     what to watch out for?• (Careful) Indexing• Archiving
Lots of records     what to watch out for?• (Careful) Indexing• Archiving• Joins
Benefits• Versatile - can rank pretty much anything• Ability to scale• Keeps vote and rank history
Feature after Feature• Busy few months• Groups, Sites, Gems, Plugins... Hackfests, lots  of updates
Development Strategy• Short iterations of developments• Mainly FDD• Try out features in branches• Used Edge Rails to stay ...
Enter the BlogsphereThe WWR Feed Aggregatorhttp://www.slideshare.net/martinbtt/getting-distributed-with-ruby-on-rails/
Enter the BlogsphereThe WWR Feed Aggregatorhttp://www.slideshare.net/martinbtt/getting-distributed-with-ruby-on-rails/ In ...
Enter the BlogsphereThe WWR Feed Aggregatorhttp://www.slideshare.net/martinbtt/getting-distributed-with-ruby-on-rails/ In ...
Behind the scenes• STI for many of the resources• Global filters for all• Custom filters available for specific  resources
Performance
Performance• Typically 8 db queries per page• fragment caching for long running tasks• extensive use of db query cache• op...
Ranksfor the hackfests)(before being re-factored  Use of MYSQL variables for ranks
Back to the stats    Where next?
Adoption of Rails                      amongst users                                                   1.0               0...
Adoption of Rails                       amongst users                                                   1.0               ...
Adoption of Rails       amongst users                       1.00.5                    Text          Trend shows steady gro...
What about Ruby?WWR users Ruby experience
Rails Experience   1.00.5      Ruby Experience
Rails Experience   1.00.5      Ruby Experience
Rails Experience         1.00.5 ROR web site, Log, Wiki         Launched    Ruby Experience
Rails Experience         1.00.5 ROR web site, Log, Wiki         Launched    Ruby Experience
Rails Experience         1.00.5 ROR web site, Log, Wiki         Launched    Ruby Experience
Where next?      (For Rails)
Where next?                        (For Rails)• Corporate experimentation with Rails. These  have largely started to pay o...
Where next?                                         (For Rails)• Corporate experimentation with Rails. These  have largely...
http://radar.oreilly.com/archives/2008/03/state-of-the-computer-book-mar-22.html
http://radar.oreilly.com/archives/2008/03/state-of-the-computer-book-mar-22.html
See Also: http://blogs.zdnet.com/enterprisealley/?p=122
And WWR?
The sites usage is continuing to grow - the number ofvisitors is now roughly double what it was 6 months ago.   O’Reilly w...
With Thanks to       & YOU!
beyondthetype.comtwitter.com/martinbtt
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Lessons Learnt From Working With Rails
Upcoming SlideShare
Loading in …5
×

Lessons Learnt From Working With Rails

3,345 views
3,259 views

Published on

As given at Scotland On Rails 2008.

(note: the highlighting and layering hasn't come through so well in Slideshares conversion process. I'll probably put a version to download from my site to solve this)

Published in: Technology, Education
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,345
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Lessons Learnt From Working With Rails

  1. 1. Lessons Learnt fromWorking With Rails Martin Sadler workingwithrails.com
  2. 2. HAZ HACKF EST This Talk I CANOverview The Scene Strategy Popularity RUBY1Contests vs Launch AuthorityFeatures Performance Stats http://flickr.com/photos/intangiblyawesome/12593056/
  3. 3. But First
  4. 4. In The Beginning
  5. 5. In The Beginning (Autumn 2006)
  6. 6. Current Release 1.1.5
  7. 7. O’Reilly - State of the book market
  8. 8. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. TIOBE Programming language popularity
  9. 9. Rails Resources ROR Forums / Newsgroup Blogs Official ROR wikiPlugin directory More blogs Rubyforge
  10. 10. Frustrated?
  11. 11. Ouch!
  12. 12. Ouch!
  13. 13. Ouch!
  14. 14. Ouch!
  15. 15. http://flickr.com/photos/zachklein/54389823/
  16. 16. http://flickr.com/photos/zachklein/54389823/
  17. 17. Ouch!http://flickr.com/photos/zachklein/54389823/
  18. 18. Ouch!http://flickr.com/photos/zachklein/54389823/
  19. 19. Issues
  20. 20. Issues• Limitations of wiki page length
  21. 21. Issues• Limitations of wiki page length• Spam
  22. 22. Issues• Limitations of wiki page length• Spam• No ability to cross reference data
  23. 23. Issues• Limitations of wiki page length• Spam• No ability to cross reference data• Tricky to navigate
  24. 24. Issues• Limitations of wiki page length• Spam• No ability to cross reference data• Tricky to navigate• No one had ownership
  25. 25. Issues• Limitations of wiki page length• Spam• No ability to cross reference data• Tricky to navigate• No one had ownership• More Spam!
  26. 26. Solution? Strategy?
  27. 27. Putting it together http://flickr.com/photos/laffy4k/166300185/
  28. 28. Putting it togetherSources http://flickr.com/photos/laffy4k/166300185/
  29. 29. Putting it together Sources WikiNewsgroup http://flickr.com/photos/laffy4k/166300185/
  30. 30. Putting it together Extract Sources WikiNewsgroup http://flickr.com/photos/laffy4k/166300185/
  31. 31. Putting it together Extract Map Sources and Combine WikiNewsgroup http://flickr.com/photos/laffy4k/166300185/
  32. 32. Putting it together Rails Models Extract Map Sources and Combine WikiNewsgroup http://flickr.com/photos/laffy4k/166300185/
  33. 33. Putting it together Rails New Interface Models Extract Map Display Sources and Filter Combine Manage WikiNewsgroup http://flickr.com/photos/laffy4k/166300185/
  34. 34. Principles create a web application to...• Improve the usability and accessibility of the content.• Increase reliability - give back control and ownership to the individuals whose information is being displayed• Add value
  35. 35. Early Concept Text Early proof of concept wireframe design
  36. 36. BonusDatabase would already be populated with everyones records!
  37. 37. BonusDatabase would already be populated with everyones records! Good Idea?
  38. 38. Hey, I didn’t give you permission to copy my data!http://flickr.com/photos/dvusd/2213212393/
  39. 39. But...• No need for people to enter their details again. (DRY)• Great kick start - site looks active before any users had really started using it• Users got a chance to see how it worked straight away• Data already in public domainCover the bases : Have an opt-out for users
  40. 40. Add Value• Additional profile information e.g. • How long have you been using Rails? • How long have you been using Ruby? • Rails Core contributor Added extra attributes to profiles that created new data streams e.g. rank by authority
  41. 41. ManagementGive as much freedom as a Wiki using a structured database. Give control and ownership to the individuals whose information is being displayed How?
  42. 42. Reporting• Needed side effect• Self policing http://flickr.com/photos/chrisjohnbeckett/442682895/
  43. 43. Detour Extracting from the source
  44. 44. Profile Attributes• First name • Email• Last name • Job title• Country• Location• Company• Company url
  45. 45. Using HPricot with XPathLooking for patterns .. and finding edge cases
  46. 46. Using HPricot with XPathLooking for patterns .. and finding edge cases
  47. 47. Using HPricot with XPathLooking for patterns .. and finding edge cases
  48. 48. Using HPricot with XPathLooking for patterns .. and finding edge cases
  49. 49. Using HPricot with XPathLooking for patterns .. and finding edge cases
  50. 50. Using HPricot with XPathLooking for patterns .. and finding edge cases
  51. 51. Using HPricot with XPathLooking for patterns .. and finding edge cases
  52. 52. Using HPricot with XPathLooking for patterns .. and finding edge cases
  53. 53. Using HPricot with XPathLooking for patterns .. and finding edge cases
  54. 54. Using HPricot with XPathLooking for patterns .. and finding edge cases
  55. 55. Using HPricot with XPathLooking for patterns .. and finding edge cases
  56. 56. An operation in data cleansing
  57. 57. ResultAbout 90% Success rate in porting the data Edge cases proved to be challenging Spam was a continued annoyance
  58. 58. Detour end? Almost
  59. 59. In Sync?WWR - Keeping records in sync with the Rails Wiki
  60. 60. In Sync? CrAZY!WWR - Keeping records in sync with the Rails Wiki
  61. 61. Back to the plan....
  62. 62. 1st Iteration• Set (limited) scope of project• Knocked together a basic proof of concept.• Scraping and validity, versioning of the data extracted.• Dev work in 2 - 3 Days• Put out a version to get feedback from the community.
  63. 63. The Launch
  64. 64. “So this is basically a facebook for hiring? Looks cool.” - DHHFlickr Credit: http://www.flickr.com/photos/rooreynolds/243058018/
  65. 65. Release Strategy• Ask DHH• Notify Ruby Inside• Send mail out to initial beta testers• Post Announce on Rails newsgroup
  66. 66. Release Strategy Continued...• Released on a Thursday • End of week - People are more open to trying things out. • Released in the AM (before America went online) • Any issues could be ironed out before the larger rush of folks
  67. 67. Ruby InsideNov 17th 2006 http://www.rubyinside.com/worlds-largest-index-of-rails-developers-workingwithrails-launches-303.html
  68. 68. Ruby on Rails Weblog Text http://weblog.rubyonrails.org/2006/12/3/working-with-rails-tell-the-world
  69. 69. Keeping Track http://flickr.com/photos/andropolis/• Direct emails 1121113459/• Technorati• Google Stats (referrers)• Google & Google Blog Search
  70. 70. Authority VSPopularity
  71. 71. Authority vs Popularity Provide by the By other users user
  72. 72. Where are they used?
  73. 73. Where are they used?
  74. 74. Where are they used? Data Streams & Filters
  75. 75. Where are they used? Data Streams & Filters
  76. 76. Where are they used? Data Streams & Filters
  77. 77. Useful for?Reputation Marketing CV Kudos Endorsements
  78. 78. When will I be famous?
  79. 79. When will I be famous?
  80. 80. I Can Haz Internetz
  81. 81. I Can Haz Internetz
  82. 82. Authority, Popularity, and Experience are metrics by which to compare Rails developers.It’s up to the visitor to decide what weighting they give to them.
  83. 83. Contests(aka Hackfests)
  84. 84. January 2007 Rails Coding FTW• First ever global Rails Hackfest• 20 tickets to RailsConf inc hotel• 24 days• 263 participants
  85. 85. Rails Coding FTWKick-off • Jeremy Kemper (Core Team) • Derek Sivers (CD Baby) • Coded over a weekend • Lots of emails ..time diff!
  86. 86. Rails Coding FTWIn practice• Queried a custom Trac activity report (RSS)• Generated ‘votes’ per contributor• Re-factored popularity chart ranking code
  87. 87. Prize Stats Oakleys32+ Rails Conf tickets $$$ 50 USB Hubs • Lots of them PlanHQHosting 40 Make Magazines
  88. 88. Under the hood
  89. 89. Chart Infrastructure Chart RankSet VoteSet Ranks Votes
  90. 90. Generation• Chart Scheduler (background daemon)• Uses OpenWFEru scheduler gem• Generates a RankSet and ranks for a given set of votes Summary Votes fetched at Midnight Ranks generated once a day at 8am http://openwferu.rubyforge.org/scheduler.html
  91. 91. Generation• Chart Scheduler (background daemon)• Uses OpenWFEru scheduler gem• Generates a RankSet and ranks for a given set of votes Summary Votes fetched at Midnight Ranks generated once a day at 8am http://openwferu.rubyforge.org/scheduler.html
  92. 92. Has Many Charts? Overall Popularity | Blog Popularity | CodePopularity | Training Popularity | Speaking Popularity | Publications Popularity | Overall Activity |Hackfest 2007 | Rails Activity Weekly | Rails ActivityMonthly | Rails Activity Yearly | Monthly: June 2007 | Monthly: July 2007 | Monthly: August 2007 | Monthly: September 2007 Uses STI: Chart::Contribution, Chart::Base
  93. 93. How many records? *this figure is actually now much higher so these figures will be even higher!
  94. 94. How many records?• 12 Charts *this figure is actually now much higher so these figures will be even higher!
  95. 95. How many records?• 12 Charts• 10,000 users* *this figure is actually now much higher so these figures will be even higher!
  96. 96. How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day *this figure is actually now much higher so these figures will be even higher!
  97. 97. How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day• 12 * 10, 000 = 120000 ranks a day *this figure is actually now much higher so these figures will be even higher!
  98. 98. How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day• 12 * 10, 000 = 120000 ranks a day• 240,000 records generated a day *this figure is actually now much higher so these figures will be even higher!
  99. 99. How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day• 12 * 10, 000 = 120000 ranks a day• 240,000 records generated a day• 1,680,000 a week *this figure is actually now much higher so these figures will be even higher!
  100. 100. How many records?• 12 Charts• 10,000 users*• 12 * 10, 000 = 120000 votes a day• 12 * 10, 000 = 120000 ranks a day• 240,000 records generated a day• 1,680,000 a week• 50,400,000 a month *this figure is actually now much higher so these figures will be even higher!
  101. 101. Lots of records what to watch out for?
  102. 102. Lots of records what to watch out for?• (Careful) Indexing
  103. 103. Lots of records what to watch out for?• (Careful) Indexing• Archiving
  104. 104. Lots of records what to watch out for?• (Careful) Indexing• Archiving• Joins
  105. 105. Benefits• Versatile - can rank pretty much anything• Ability to scale• Keeps vote and rank history
  106. 106. Feature after Feature• Busy few months• Groups, Sites, Gems, Plugins... Hackfests, lots of updates
  107. 107. Development Strategy• Short iterations of developments• Mainly FDD• Try out features in branches• Used Edge Rails to stay ahead of the game• SVK is your friend* * the cooler kids now use git
  108. 108. Enter the BlogsphereThe WWR Feed Aggregatorhttp://www.slideshare.net/martinbtt/getting-distributed-with-ruby-on-rails/
  109. 109. Enter the BlogsphereThe WWR Feed Aggregatorhttp://www.slideshare.net/martinbtt/getting-distributed-with-ruby-on-rails/ In Summary
  110. 110. Enter the BlogsphereThe WWR Feed Aggregatorhttp://www.slideshare.net/martinbtt/getting-distributed-with-ruby-on-rails/ In Summary Uses AP4R gem async messagingDistributed fetching and processing of feeds
  111. 111. Behind the scenes• STI for many of the resources• Global filters for all• Custom filters available for specific resources
  112. 112. Performance
  113. 113. Performance• Typically 8 db queries per page• fragment caching for long running tasks• extensive use of db query cache• optimised queries - indexes etc• lots of ram• avoid db joins where possible
  114. 114. Ranksfor the hackfests)(before being re-factored Use of MYSQL variables for ranks
  115. 115. Back to the stats Where next?
  116. 116. Adoption of Rails amongst users 1.0 0.5This chart was created by tallying up the number of people using Rails based on when they said they started using Rails on WWR Rails 0.5 and 1.0 release dates are also shown for reference
  117. 117. Adoption of Rails amongst users 1.0 0.5 Old skool After Fan Boys?! Rubists partyThis chart was created by tallying up the number of people using Rails based on when they said they started using Rails on WWR Rails 0.5 and 1.0 release dates are also shown for reference
  118. 118. Adoption of Rails amongst users 1.00.5 Text Trend shows steady growth
  119. 119. What about Ruby?WWR users Ruby experience
  120. 120. Rails Experience 1.00.5 Ruby Experience
  121. 121. Rails Experience 1.00.5 Ruby Experience
  122. 122. Rails Experience 1.00.5 ROR web site, Log, Wiki Launched Ruby Experience
  123. 123. Rails Experience 1.00.5 ROR web site, Log, Wiki Launched Ruby Experience
  124. 124. Rails Experience 1.00.5 ROR web site, Log, Wiki Launched Ruby Experience
  125. 125. Where next? (For Rails)
  126. 126. Where next? (For Rails)• Corporate experimentation with Rails. These have largely started to pay off and large scale developments are starting to happen.• A heap of books for new developers to pick up and learn.• Rails matures
  127. 127. Where next? (For Rails)• Corporate experimentation with Rails. These have largely started to pay off and large scale developments are starting to happen.• A heap of books for new developers to pick up and learn.• Rails matures Big name companies using Rails http://blog.obiefernandez.com/content/2008/03/big-name-compan.html
  128. 128. http://radar.oreilly.com/archives/2008/03/state-of-the-computer-book-mar-22.html
  129. 129. http://radar.oreilly.com/archives/2008/03/state-of-the-computer-book-mar-22.html
  130. 130. See Also: http://blogs.zdnet.com/enterprisealley/?p=122
  131. 131. And WWR?
  132. 132. The sites usage is continuing to grow - the number ofvisitors is now roughly double what it was 6 months ago. O’Reilly will be continuing it’s support through the rest of 2008 New features coming soon...
  133. 133. With Thanks to & YOU!
  134. 134. beyondthetype.comtwitter.com/martinbtt

×