We love Rails, object-oriented programming, and refactoring. We use a process to develop applications to work faster, introduce fewer bugs, and enjoy what we’re doing. We blog, Tweet, and talk at conferences on these subjects.
After every post and discussion, there are topics left unexplored. There are too many related concepts to link to, and there’s too much code we can’t share. We want to share our process with as many Rails developers as we can, and we’ve finally decided to take the next step. We’re writing a new book, called Ruby Science, that describes this process in an easy-to-digest reference format.
But this is more than just a book. As with Backbone.js on Rails, in addition to the book (in HTML, PDF, EPUB, and Kindle formats), you also get a complete example application, and the ability to get your questions about Ruby on Rails answered by the thoughtbot team using GitHub issues and live chat.
The book is written using Markdown and pandoc and distributed via GitHub. When you purchase, we give you direct access to the repository, so you can use the GitHub comment and issue features to give us feedback about what we’ve written and what you’d like to see. Give us your toughest Ruby questions with GitHub issues, and we’ll answer. Last but not least, also included is a Ruby on Rails reference application. What the book describes and explains, the example app demonstrates with real, working code. Fully up to date for Rails 3.2.
The book is a work in progress, and we currently have almost 40 pages of content. You can get access now for an early purchase price of $39. This offer is only valid for a limited time, and will increase to $49 on January 31, 2013.
You can see our working table of contents, read a free sample, and purchase access on the Ruby Science web page.
On November 13th, we announced the contest – a client story submission adventure with a Pro ActiveRecord: Databases with Ruby and Rails book giveaway as the prize.
Thanks to Rick Olson for posting this on the rails blog and to Peter Cooper for posting on ruby inside (Hey look, he even started his own contest a few days ago!)- and thanks to everyone who sent in a ridiculous story, of course!
We received a decent number of entries, and – using a pretty advanced tallying mechanism which we implemented in C++ for speed – thoughtbot voted internally for the three best. Here they are…
I think we all enjoyed the contradictory goals in this winning entry – especially considering the client was the Italian government!…
Request ~ We have to expose these data by law, but we don’t want to do so (because they think that transparency may be “risky”). Please publish them in a non human-readable and non machine-readable format, but the solution must validate according to w3c specs and it must be AAA accessible”.
Result ~ “WTF?”?
Ah, the sales department. The bane of many a big-organization-developer’s existence…
Request ~ I once worked for a company where the salesperson sold to a very large retail client of ours that we had the ability to genderize Asian names that resided in Canada. To this day, I can remember when that came to light, my partner and I were reading the SOW separately and when I came across that gem, I had to read it 4 or 5 times in shock of such a concept. A few minutes later my partner came into my office with SOW in hand and said, “Craig there is something in this that I don’t think we can do”, “I’m betting it has something to do with Asia, Canada and genderization”. Several conversations with the salesperson led to other conversations because he swore that such technology already existed within our company which wasn’t locatable before our kick-off meeting. Needless to say, the salesperson didn’t want to lose face with this major client so I broke the news that such a function didn’t exist and that since a name from China could have a separate gender than a name from Japan, there was no way we could systematically do it with the data we had available.
Result ~ The senior lead from the Company had a big grin and said “Yea, I thought it was pretty incredible that you guys could do that, I was planning on finding out how you did it because I wasn’t sure it could be done” The rest of the project was completed with great success, the salesperson was never allowed to make another commitment to a client with a technical sign off again and I eventually left the company for greener pastures.
Clients and their proprietary algorithms are also quite the pasttime…
Request ~ In designing a doggy dating service, the client wanted to reproduce the eHarmony algorithm for use with dogs. She had developed this convoluted algorithm for determining the compatibility between dogs based on their breeds and their personalities.
Result ~ It took us quite some time to implement this and I’ll never forget this project.
Thanks again to everyone for your submissions. Winners will be kept anonymous to protect their clients – but will be contacted soon to confirm shipping details for the books.
So, we just got word that the last chapter for our book has made it through the copy editing stages and has been delivered to ‘production’. We’ve got the proof of the cover, and we’re on our way to release it in September.
You can preorder it now from Amazon.com
Also, we’re almost up and running with our new New York City office. Located at 407 Broome St., we’re sharing space with the great folks at thehappycorp
Finally, we’d like to welcome our newest member to the thoughtbot team, Dan Croak. We met Dan while working with (for) him on National Gazette and we’re very happy to have him join us.
We’re continuing to look for excellent programmers and web designers (or people who want to be) for both our Boston and NYC offices, for more information go here.
Well, it has started to show up on the Apress website, so I believe that means there is no use in hiding it any longer. Jon and I (along with our co-author, Kevin Marshall) are currently hard at work on book for Apress, entitled Pro ActiveRecord for Ruby: Databases with Ruby and Rails.
The book will focus solely on ActiveRecord, both inside and outside of Rails, and seeks to be a complete reference for ActiveRecord.
Well, with that out of the way, I’m currently working on the “Common Questions and Howtos” chapter, which is the chapter that contains all of the juicy tidbits and edge cases that don’t fit well into their own chapters, and if anyone out there has any ideas of things they’d like to see covered there, I’d be really interested to hear them. I’ve currently got some info on using multiple databases, how to handle localization, using composite primary keys, using GUID/UUID keys, and some other things along those lines – I’d love to hear if there is anything you think might be of value for both new users, experts and everyone in between.