The Mega April 2012 Ruby and Rails News Roundup

Welcome to April 2012’s bumper pick’n’mix of Ruby and Rails news and releases, fresh from the pages of Ruby Weekly.

Highlights include: Matz’s new Ruby implementation, MobiRuby (Ruby for iOS), Passenger 3.0.12, Ruby 1.9.3-p194, TorqueBox 2.0, Adhearsion 2.0, and Dr Nic’s App Scrolls.

Headlines

Ruby 1.9.3-p194 Released
A small version bump for Ruby 1.9.3 which includes a security fix for RubyGems (and therefore an updated version) along with oodles of minor tweaks and fixes.

MRuby: A Lightweight Ruby Implementation by Matz
It’s been in the making for a while (remember RiteVM?) but this week Matz’s new ‘lightweight’ Ruby implementation, mruby, spread around the Rubysphere like wildfire. The key goal is to produce an embeddable Ruby implementation that has a smaller footprint than MRI.

Announcing ‘MacRuby In Action’
MacRuby In Action is a new book hat teaches Ruby developers how to code OS X applications using MacRuby, an OS X-focused Ruby implementation. Jerry Cheung, a senior engineer at Intridea authored the book alongside Brendan Lim and Jeremy McAnally.

Phusion Passenger 3.0.12 Released
The popular Apache and Nginx module for deploying Rack-based Ruby webapps gets an update. It now supports Apache 2.4 and the event MPM.

GitHub Rolls Out An Easier Way to Create Repositories
It’s not Ruby specific, but GitHub’s prevalence in the Ruby world should make their latest tweaks to the repository creation process interesting to anyone familiar with the service.

The Future of MacRuby?
Matt Aimonetti of the MacRuby project notes that MacRuby’s de-facto project leader, Laurent Sansonetti, has been M.I.A. on the project since October and no longer works at Apple. But what does that mean for MacRuby? Matt makes some suggestions.

Adhearsion 2.0 Released: Ruby Telephony Continues to Evolve
Adhearsion is an open-source telephony development framework built in Ruby. The version 2 release brings an all new Web site, updated documentation, support for multiple telephony engines, ‘call controllers’ and more.

Next Generation MRI Ruby Packages for Ubuntu Available
The Brightbox brainboxes have been hard at work on new MRI Ruby packages (of 1.8.7 and 1.9.3) for Ubuntu. They’re ready for you to test right now – instructions inside.

TorqueBox 2.0 Released
TorqueBox is a Ruby application server built on JBoss AS7 and JRuby. In addition to being one of the fastest Ruby servers around, it supports Rack-based web frameworks, and provides simple Ruby interfaces to standard JavaEE services, including scheduled jobs, caching, messaging, and services.

Reading

Extending Ruby with Ruby
Some beautiful, code-driven slides by Michael Fairley that dig into adding new features to Ruby by using Ruby itself. To do this, he takes a feature from each of Haskell, Python, and Scala and adds it to Ruby. The slides are complete with speaker notes so it’s easy to follow along.

Read Ruby 1.9: The Online Ruby Book
Not new at all but the site recently went down and I lamented the loss of one of my favorite online Ruby references. Finally it’s back online, so it’s time to let people who haven’t seen it before enjoy its greatness 🙂

On mruby and MobiRuby
Matt Aimonetti, a key contributor to MacRuby, riffs on the possibilities opened up by mruby and MobiRuby (both above) while suggesting that it’ll take a lot for Ruby to be considered a logical choice for iOS development, even by existing Rubyists.

10 Things You Didn’t Know Rails Could Do
The slide deck from a RailsConf presentation given by Ruby demigod James Edward Gray II. In a mere 234 (!) slides, he digs into a lot of interesting Rails crevices. Lots of short examples to enjoy.

The Asset Pipeline for Dummies
Eric Berry explains the Rails asset pipeline from the absolute basics up.

Getting Started With mruby
Matt Aimonetti is a real fan of mruby and shows it off by explaining its purpose, comparing it to Lua, and then by building a barebones C app that calls mruby to run a single line of Ruby code.

Make the Web Fast(er): One Rails App at a Time
A great slide deck by Ilya Grigorik about the role that page loading speed has to play in Web applications. It’s not particularly Rails focused at all but it covers key things to be aware of.

MySQL Query Comments in Rails with Marginalia
Noah Lorang of 37signals talks about marginalia, a new gem that adds extra comments to Rails’ logs which can help in the debugging and performance monitoring process.

Building an iOS Photo-sharing and Geolocation Mobile Client and API
A fine tutorial in the Heroku Development Center about building a photo sharing service with a native iOS client and Rails backend. All deployed on Heroku, naturally 🙂

Rails Tutorial for Devise with CanCan and Twitter Bootstrap
Daniel Kehoe is known for his detailed Rails tutorials and this time he demonstrates how to create a Rails 3.2 application using Devise with CanCan and Twitter Bootstrap, from start to finish.

Introducing DCell: Actor-based Distributed Objects for Ruby
DCell by Tony Arcieri (of Celluloid fame) is an actor-based distributed object oriented programming framework for Ruby. It’s hard to explain the concepts involved in a short summary but this post does a great job (think an easier, better structured DRb).

A Sneak Preview of Phusion Passenger 3.2
Phusion has been hard at work on the popular Apache and Nginx module (already mentioned above) and explains the internal overhauls that have taken place in the forthcoming Passenger 3.2.

Lessons Learned Upgrading Harvest to Ruby 1.9.3 (from REE)
Harvest is a popular time tracking webapp that uses Ruby behind the scenes. They’ve just done a big REE to Ruby 1.9.3 upgrade and in this post T J Schuck shares some notes about the process and the 1.8 to 1.9 issues they encountered.

Some Topics From ‘The dRuby Book’ Explained
A month ago, I shared the news of the Pragmatic Programmers releasing ‘The dRuby Book’ by Masatoshi Seki. Here, its translator Makoto Inoue goes through some of the topics covered in the book and shows off some uses of DRb.

User Authentication with Rails and Backbone.js
Backbone.js is a handy JavaScript framework for developing webapps and Rails is similarly handy on the backend. James R Bracy of 42Floors shares how they use Rails and Backbone together and perform user authentication.

Testing Like The TSA
37signals’ David Heinemeier Hansson says we need to shake any bad habits of ‘over testing’ our code, not aim for 100% test coverage, and avoid the ‘TSA-style of testing.’

Gregory Brown Releases 15 Practicing Ruby Articles.. At Once!
Gregory Brown promised to keep releasing content from his Practicing Ruby journal and has now released 15 articles at once! Tricky to write this one up but Gregory’s work is always a pleasure to read and you are bound to find some useful Ruby reading in here.

On Railcar: An Isolated Rails Environment
After seeing Yehuda Katz’s Kickstarter for Rails.app (covered last week) Jeremy McAnally set to work on a similar project called Railcar. Here’s the what, why, and how.

Driving Google Chrome via WebSocket API
Ilya Grigorik demonstrates how to control a Google Chrome browser from Ruby using its remote debugging API.

Rails Internals: Mass Assignment Security
A look at Rails’ defences against mass assignment issues by Oscar Del Ben.

Matt Wynne On Using Cucumber
Cucumber is the popular framework for executing feature documentation written in plain text in your BDD process. Pat Shaughnessy sits down with Matt Wynne, co-author of The Cucumber Book, to talk about the ideas behind Cucumber and its design.

Watching and Listening

Matz Talks About mruby and Its Possibilities
Back in November 2011, Matz gave a short (9 minutes!) but sweet talk about mruby, what it’s about, and where it’s headed.

The Ruby5 RailsConf 2012 Podcast
The Ruby5 podcast dedicated an entire episode to RailsConf 2012, summarizing DHH’s keynote and talking about some of the other things going on, all in a mere 9 minutes.

RailsCasts on Queue Classic
The PostgreSQL database system can act as a worker queue for Rails apps replacing the need for a separate process to manage background jobs. Ryan Bates shows us how with the ‘queue_classic’ gem.

Rails Sustainable Productivity with Xavier Shay
At the LA Ruby Conference, Xavier Shay gave a talk about testing, data modelling, code organisation, build systems, and more, while suggesting many Rails Best Practices go against the building of solid and robust applications. 30 minutes long and well recorded/produced.

Migrating to PostgreSQL by RailsCasts
Ryan Bates continues his long line of awesome RailsCasts with a look at how to use the open source PostgreSQL database system with Rails and how to migrate an existing SQLite-backed Rails app to using it.

Designing Hypermedia APIs by Steve Klabnik
Steve Klabnik recently gave a talk on REST and Hypermedia APIs, the topic of his forthcoming book, Designing Hypermedia APIs. Audio isn’t great but it’s good to see Steve speak.

DSLs in Ruby
Kathy Van Stone delivers a talk about domain specific languages in Ruby, and shows a brief example. The talk is 40 minutes long and the audio quality somewhat better than Steve’s talk above.

Ruby Rogues Talk to Jeff Casimir about Ruby Training
The Ruby Rogues sit down with renowned Ruby and Rails trainer Jeff Casimir to discuss his role with the Hungry Academy training program and to talk about the ideas behind training students in the art of programming generally.

Crafting Rails Applications with Jose Valim
The Ruby Rogues sit down with Jose Valim to discuss not only his popular book ‘Crafting Rails Applications’ but the actual art of crafting Rails apps itself. At 1h20m long, it’s a deep dive, but perfect for the car!

Are Interpreters (Python/Ruby/PHP) Immoral?
A developer makes an impassioned plea for developers to learn compiled languages because ‘interpreters for non trivial computation’ are immoral and ‘indefensible’ due to their carbon footprint. Hmm.. yeah.. enjoy 😉

Libraries and Code

rails-api: Rails for API Applications
Several popular Rubyists have built rails-api, a plugin that can trim down usually unnecessary Rails features for API-only apps. They are particularly keen for people to try it out and send in their performance results so that it might be added directly to Rails core in future.

Authority: An ORM Agnostic Authorization System for Rails
Authority helps you authorize actions in your Rails app. It’s ORM-neutral and has little fancy syntax. Just group your models under one or more Authorizer classes and write plain Ruby methods on them.

Pry 0.9.9 Released
Pry is a popular (and significantly more powerful) alternative to irb, the interactive Ruby console. Version 0.9.9 of Pry brings line-based code highlighting, method finding, and a torrent of general improvements.

Her: An ORM for REST APIs
Her is an ORM that map REST resources to Ruby objects. It maps HTTP responses to Ruby objects (through JSON) and adds methods to Ruby objects to trigger HTTP requests.

cache_method: An Easy Way to Cache Method Results
cache_method caches the results of calling methods given their arguments. It’s like memoization, but the results are stored in Memcached, Redis, etc. so the cached results can be shared between processes and hosts.

redis_failover: A Ruby-based Solution for Redis Master/Slave Failover
Redis Failover is a ZooKeeper-based automatic master/slave failover solution for Ruby by Ryan LeCompte. (Apache ZooKeeper is a tool for centralized server configuration, coordination, and synchronization.)

App Scrolls: Rails App Generation Magic from Dr Nic
The App Scrolls is a magical tool to generate new Rails and modify existing Rails applications (coming) to include your favourite, powerful magic. Authentication, testing, persistence, javascript, css, deployment, and templating – there’s a magical scroll for you.

First NMatrix Alpha Released
Get your matrix math and linear algebra on with this prototype Ruby library.

rdoc-spellcheck: Check Your Documentation for Spelling Errors
A library by Eric Hodel that uses libaspell to spell check your RDoc documentation.

Jobs

Developer Advocate/Spokesperson/Evangelist at New Relic [San Francisco]
New Relic is the emerging standard for application performance management and wildly popular in the Ruby world. They’re looking for a unique individual who can nimbly walk the line between development and marketing while wearing an Evangelist hat. Sounds fun!

Senior Web Engineer for Rapidly-Growing Education Business (Steve and Kate’s Camp)
Steve and Kate’s Camp is seeking a senior web software engineer ready to get their hands dirty now and interested in growing and leading a technical team down the road. Experience with TDD/BDD, Ruby, Rails, and devops all useful. Based in Sausalito, CA.

Last but not least..

Instant: A Live, Immediate Ruby Editing and Visualization Tool
An interesting browser based editing environment where the Ruby code you type is processed on the fly. Inspired by an awesome talk by Bret Victor who did something similar with JavaScript.

Rails One Click: Another Simple Rails Installer for OS X
I’ve mentioned both Rails.app and Railcar in recent issues, but Rails One Click is another entry to the ‘Rails installer for OS X’ melee. It’s a complete installer with a nice design and well suited to beginners. It focuses on installing only the minimum required to get started building a Rails app.

JavaScript Weekly: Like Ruby Weekly But.. for JavaScript!
I’ve spoken to some readers recently who were surprised to learn I also run a JavaScript weekly newsletter, so I thought I’d give it another mention here. There’s lots of exciting stuff happening in the JS world lately so if you want to keep up.. I’ve got the newsletter for you 🙂

Online Ruby Programming Course from Pragmatic Studio

Online Ruby Programming Course from Pragmatic Studio

Self-assessment

Here’s what I’ve got.

2 chapters introducing jQuery and Jasmine via a walkthrough of a simple piece of JavaScript functionality.

1 need to convert all my text from its current proprietary format to something more Markdown based.

1 genuinely silly conceit tying together the application that gets built in the book. And I mean that in the best way. It should be silly, there’s no reason not to be bold. There is even a twist ending. I think.

1 slightly dusty self-publishing tool chain that converts a directory of markdown files into HTML, with syntax colored code. It’s possible that there’s a better library for some of the features these days.

1 chapter on converting that simple piece of jQuery into various patterns of JavaScript object. I quite like this one, actually.

1 website, which is currently hosted by WordPress – at one point, I had to abandon the railsrx.com site that actually sold stuff, and WordPress was easy. I think I’ll need to upgrade that a bit.

1 Intro chapter covering JavaScript basics and the Chrome developer tools. Not sure if this is at the right level for the audience I expect.

1 Prince XML license for converting said HTML files into PDF. No idea if that’s still the best tool for the job. Or even if my license is current.

1 chapter on building a marginally complex auto complete widget in jQuery and Jasmine. I like this example.

1 copy of most of the book’s JavaScript code in CoffeeScript. Not sure when I thought this was the right idea for the book, beyond an excuse to use CoffeeScript.

1 chapter on jQuery and Ajax.

0 toolchains for generating epub and mobi files. I know I can find this.

1 case of impostor’s syndrome, not helped by rereading the harsh review of Rails Test Prescriptions on Amazon. That was dumb, why would I do that?

1 chapter on using JSON. As far as I can remember, this chapter never went to edit.

3 people who mentioned on Twitter that they’d buy a self-published book. Don’t worry, I won’t hold you to it.

1 plan for writing 2 or three chapters on Backbone.js

5 people who reviewed the last version who I feel should get free copies when this comes out. It’s not their fault.

4 viewings of Ze Frank’s “Invocation for Beginnings”

So. Ready to go. Watch this space.

Filed under: JavaScript, Me, self promotion

#344 Queue Classic

PostgreSQL can act as a worker queue which can replace the need for a separate process to manage the background jobs. Here you will learn how to do this with the queue_classic gem.

Ruby in 2012

Matt Aimonetti

Ruby is more popular than ever, but it’s also not as trendy as it used to be. rubylearning.com students1 asked a few questions to about his vision of Ruby in 2012 and for the future.

is a well-known Rubyist, technical writer, speaker and active open-source contributor. He currently works as a software architect for LivingSocial. Prior to joining LivingSocial, Matt worked for Sony PlayStation.

How does Ruby fit in with the future, as you see it?

: This is a really hard question. If I could predict the future, I would probably already be rich. Ruby is a very powerful and flexible language.

Very much like Python, Ruby is a great glue language, a great language for the web and overall a language that allows you to get a lot done before you hit the language limitations.

The ecosystem also keeps growing and there seems to be more and more people focusing on performance and documentation which are two things Ruby could still improve a lot on.

I think it’s quite obvious that the pendulum is swinging back and server side code is going to be more and more API oriented with smart clients consuming these services. Ruby is great for that because services need to be easy to write, easily to maintain, well documented and flexible. I wrote a DSL to do just that using Ruby and it would have been harder in any other language.

So, to answer the question more directly, I think that Ruby will keep on playing a major role in web development but at the same time, developers will become more and more polyglot and might switch back and forth between languages.

I have talked to people that think that Ruby is falling by the wayside, even to the point where they say that Rails is killing Ruby. What do you think?

Matt Aimonetti: I wouldn’t say that Ruby is falling by the wayside, what’s going on is that Ruby outgrew the startup world where it became very popular a few years ago. However, you now find Ruby (and Rails to that matter) in a lot of more established places thanks to its efficiency of development, strong focus on testing, active community and great ecosystem.

When some people say that Rails is hurting Ruby, I think what they mean is that for them Ruby’s fate is directly related to Rails’. If Rails doesn’t manage to stay the web framework of reference, it might hurt the language. This is certainly not entirely wrong. Without Rails, Ruby wouldn’t have been as popular, but at the same time, there is much more to Ruby than Rails and I think that as a community we need to seriously start looking at all the great things we can do with Ruby outside Rails.

What is your opinion on Node.js? Is this the future? Do you think Node.js will beat Ruby in web application development?

: This is a question I often get. I personally like node.js, I think it’s fun, easy to get started and with CoffeeScript, writing JavaScript (JS) is almost fun. That said, Node is really young, not very well documented and relies extremely heavily on callbacks which can be quite confusing at times. My experience with Node is limited, but as my personal project started growing, I started struggling to keep my code simple and easy to maintain. Because I already know Ruby quite well and because equivalent tools exist in Ruby land, I don’t see a real need to use Node besides being the new cool framework.

But the project is fast growing, the cross-platform focus is welcomed and I think that for some developers, Node.js can be a great solution, especially when developing simple web APIs.

Will it “beat” Ruby? Well, a framework and a programming language are two different things. Will it beat Rails in popularity, that’s a possibility due to the fact that JavaScript is becoming very popular. However, some of the issues I mentioned earlier might prevent Node.js to become as popular as some people seem to believe. Finally, at the end of the day, if a JS framework becomes a better solution than anything else I use, I will certainly switch. But so far, I don’t see that happening.

Do you think Ruby is the best programming language to be introduced to newbies to get them started in programming?

Matt Aimonetti: I do believe Ruby is a great language to learn some of the basis of programming, especially Object Oriented Programming. It allows students to get easily started and to build things quickly. However, different people learn differently and are attracted to other things and parts of Ruby can be quite hairy. To properly learn a language, you also need to have a way to practice and quickly see the fruit of your labor. That’s why If you are a designer, I might suggest you start with JavaScript and then move on to a better designed, high level programming language like Ruby or Python. Finally, you need to look at your motivation being learning a new language.

If you want to learn programming because you want to work in this field, consider starting learning a language which will allow you to easily start working (hint: there are a lot of Rails positions out there waiting for you). But don’t stop there, keep learning new languages and way to solve problems using code.

How to become a better coder? I still feel it’s hard to get involved contributing to OSS, could you give us some advice?

Matt Aimonetti: I personally get better when I practice a lot and when overcoming problems I didn’t know how to solve before I started. Open Source contribution is a great way to get feedback and learn from others. I think that with tools such as Git and GitHub, OSS contribution has become much easier than ever. That said, a lot of developers think that their contributions have to be significant, and, that’s in my mind, a mistake. Start by contributing documentation, examples and helping others. File bug reports and try to reduce them to an easier to handle case. That might seem trivial to you, but it’s extremely useful, it will teach you a lot about the project you are involved with, its design, the pros/cons and how an OSS project is run. Doing that will help you debug and diagnose problems faster and when added to the design knowledge and communication skills you would have acquired, you have all the ingredients of a good developer. Another thing I like to do is to pick something that seems absolutely impossible for me to do. If you only know Ruby, memory management and writing code C might seem hard. Give yourself a reasonable time frame and a challenge such as 6 months to have a small C program that will do X, Y and Z. Keep it small and simple and don’t forget to have fun. At first it will be hard, but don’t give up, keep trying until you learned something you thought was impossible. When you will go back to writing Ruby or whatever language you write, you will look at things from a different angle.

Finally, the last thing I would suggest is to never feel too comfortable in your daily programming tasks. If you are to the point where you just execute and aren’t challenged, you might want to consider talking to your supervisor about giving you more challenging tasks.

Are you excited about MobiRuby? Do you think it will become a viable platform for iOS development?

Matt Aimonetti: MobiRuby is being developed on top of mruby, the new Ruby implementation written by Matz that’s targeting embedded device and offering an alternate for Lua and to some extent JavaScript. I’m quite excited about mruby and its potential and I wrote about both mruby and MobiRuby a couple days ago. Basically, from my view point MobiRuby is an interesting project but it will have to overcome some serious challenges described in details in my blog post. My hope is that thanks to the Ruby language, MobiRuby will be able to transcend Cocoa/Android API to offer an easier, simpler API making mobile development more fun and more easily accessible.

This is quite a big challenge, but I do believe this is something that can be done and that might change the way mobile development is done.

I hope you found this article useful. What are your thoughts? Feel free to ask questions and do give your opinion in the comments section of this post. Matt would only be too happy to reply. Thanks!

Technorati Tags: , ,

  1. Thanks to Michael Kohl, Samnang Chhun and Victor Goff.


(Powered by LaunchBit)

Ruby Programming 33rd Batch: Registrations now open

Registrations are now open for RubyLearning’s popular Ruby programming course. This is an intensive, online course for beginners that helps you get started with Ruby programming.

Here is what Sandra Randall (Butler), a participant who just graduated, has to say – “You kindly offered me the opportunity to join your Ruby course. I’m new to development and found the course, even though basic for programmers, a little tricky for me. I managed to complete all of the assessments and really learnt a lot. Thank you very much for the opportunity. It has really given me the push I needed to learn Ruby and I’m currently treading my way through both the pickaxe and Agile Development books and enjoying it. I’ve recently been offered a position as a Junior Systems Developer at a local Software house in South Africa – all thanks to the push you gave me which gave me the motivation and drive to get going.”

What’s Ruby?

Ruby

According to http://www.ruby-lang.org/en/ – “Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. Ruby’s elegant syntax is natural to read and easy to write.”

Yukihiro Matsumoto, the creator of Ruby, in an interview says –

I believe people want to express themselves when they program. They don’t want to fight with the language. Programming languages must feel natural to programmers. I tried to make people enjoy programming and concentrate on the fun and creative part of programming when they use Ruby.

What Will I Learn?

In the Ruby programming course, you will learn the essential features of Ruby that you will end up using every day. You will also be introduced to Git, GitHub, HTTP concepts, RubyGems, Rack and Heroku.

Depending on participation levels, we throw a Ruby coding challenge in the mix, appropriate for the level we are at. We have been known to give out a prize or two for the ‘best’ solution.

Who’s It For?

A beginner with some knowledge of programming..

You can read what past participants have to say about the course.

Mentors

Satish Talim, Michael Kohl, Satoshi Asakawa, Victor Goff III and others from the RubyLearning team.

Dates

The course starts on Saturday, 26th May 2012 and runs for seven weeks.

RubyLearning’s IRC Channel

Most of the mentors and students hang out at RubyLearning’s IRC (irc.freenode.net) channel (#rubylearning.org) for both technical and non-technical discussions. Everyone benefits with the active discussions on Ruby with the mentors.

How do I register and pay the course fees?

  • The course is based on the The Ultimate Guide to Ruby Programming eBook. This book is normally priced at US$ 19.95 and we are discounting it US$ 10.00 by combining it in the Course+eBook option below.
  • You can pay either by Paypal or send cash via Western Union Money Transfer or by bank transfer (if you are in India). The fees collected helps RubyLearning maintain the site, this Ruby course, the Ruby eBook, and provide quality content to you.
  • Once you pay the fees below, register on the RubyLearning.org site and send us your name and registered email id while creating an account at RubyLearning.org to satish [at] rubylearning [dot] com
  • We will enroll you into the course. If you have purchased the eBook at the time of registration, we will personally email you the eBook within 24 hours.

You can pay the Course Fees by selecting one of the three options from the drop-down menu below. Please select your option and then click on the “Add to Cart” button.

Register

At the end of this course you should have all the knowledge to explore the wonderful world of Ruby on your own.

Here are some details on how the course works:

Important:

Once the course starts, you can login and start with the lessons any day and time and post your queries in the forum under the relevant lessons. Someone shall always be there to answer them. Just to set the expectations correctly, there is no real-time ‘webcasting’.

Methodology:

  • The Mentors shall give you URL’s of pages and sometimes some extra notes; you need to read through. Read the pre-class reading material at a convenient time of your choice – the dates mentioned are just for your guideline. While reading, please make a note of all your doubts, queries, questions, clarifications, comments about the lesson and after you have completed all the pages, post these on the forum under the relevant lesson. There could be some questions that relate to something that has not been mentioned or discussed by the mentors thus far; you could post the same too. Please remember that with every post, do mention the operating system of your computer.
  • The mentor shall highlight the important points that you need to remember for that day’s session.
  • There could be exercises every day. Please do them.
  • Participate in the forum for asking and answering questions or starting discussions. Share knowledge, and exchange ideas among yourselves during the course period. Participants are strongly encouraged to post technical questions, interesting articles, tools, sample programs or anything that is relevant to the class / lesson. Please do not post a simple "Thank you" note or "Hello" message to the forum. Please be aware that these messages are considered noises by people subscribed to the forum.

Outline of Work Expectations:

  1. Most of the days, you will have exercises to solve. These are there to help you assimilate whatever you have learned till then.
  2. Some days may have some extra assignments / food for thought articles / programs
  3. Above all, do take part in the relevant forums. Past participants will confirm that they learned the best by active participation.

Some Commonly Asked Questions

  • Qs. Is there any specific time when I need to be online?
    Ans. No. You need not be online at a specific time of the day.
  • Qs. Is it important for me to take part in the course forums?
    Ans. YES. You must Participate in the forum(s) for asking and answering questions or starting discussions. Share knowledge, and exchange ideas among yourselves (participants) during the course period. Participants are strongly encouraged to post technical questions, interesting articles, tools, sample programs or anything that is relevant to the class / lesson. Past participants will confirm that they learned the best by active participation.
  • Qs. How much time do I need to spend online for a course, in a day?
    Ans. This will vary from person to person. All depends upon your comfort level and the amount of time you want to spend on a particular lesson or task.
  • Qs. Is there any specific set time for feedback (e.g., any mentor responds to me within 24 hours?)
    Ans. Normally somebody should answer your query / question within 24 hours.
  • Qs. What happens if nobody answers my questions / queries?
    Ans. Normally, that will not happen. In case you feel that your question / query is not answered, then please post the same in the thread – “Any UnAnswered Questions / Queries”.
  • Qs. What happens to the class (or forums) after a course is over? Can you keep it open for a few more days so that students can complete and discuss too?
    Ans. The course and its forum is open for a month after the last day of the course.

Remember, the idea is to have fun learning Ruby.

Technorati Tags: , , ,


(Powered by LaunchBit)

Phusion Passenger 3.2

Peter and Jason talk about Passenger 3.2, MacRuby books, Authority, Fake S3, and more.

A Brief Announcement About A Book

So… The JavaScript book that I had contracted to do with Pragmatic will no longer be published by them.

I need to be careful as I write about this. I don’t want to be defensive – I’m proud of the work I did, and I like the book I was working on. But I don’t want to be negative either. Everybody that I worked with at Pragmatic was generous with their time and sincere in their enthusiasm for the project. Sometimes it doesn’t work out, despite the best intentions.

I haven’t spoken about this project publicly in a while because it was so up in the air. And also because I’m not sure what to say about it without sounding whiny or mean. And also because I was afraid of jinxing things, which is obviously less of an issue now.

Since November, the book has been in review and I’ve gone through a few cycles with Pragmatic trying to get things just right. The issues had more to do with the structure and presentation of the material then of the content or writing itself. I’m not completely sure what happened, but I think it’s fair to say that the book I was writing did not match the book they wanted in some way or another.

Anyway, that’s all water under the bridge. I have full rights to the text I’ve already produced. Self-publishing is clearly an option, though the phrase “sunk costs” keeps echoing in my head. It’s hard to resist the irony of starting with a Pragmatic contract and moving to self-publishing after having done it the other way around with Rails Test Prescriptions. I’m hoping to blog more – in addition to being a time sink, not being able to write about this book was kind of getting in my head about any blogging.

Thanks for listening, and watch this space for further announcements. I was excited about this project, and while this is disappointing, I’ll be excited about it again in a few days. Thanks to the people I worked with at Pragmatic for the shot, and thanks to all the people who have been supportive of this project.

Filed under: JavaScript, Me, self promotion

Practical Vim: Edit Text at the Speed of Thought now in beta

Practical Vim: Edit Text at the Speed of Thought now in beta

The Heroku Changelog

The Heroku Changelog is a feed of all public-facing changes to the Heroku runtime platform. While we announce all major new features via the Heroku blog, we’re making small improvements all the time. When any of those improvements have any user-visible impact, you’ll find them in the changelog.

Some recent examples of posts to the changelog include new versions of the Heroku CLI, a new error code, and changes to logging.

To get the latest on changes like these, visit the Heroku Changelog, or subscribe via feed or Twitter.

#342 Migrating to PostgreSQL

PostgreSQL is a feature-packed relational database that every Rails developer should consider using. Here you will learn how to install it, add it to a new application, and transition from an existing SQLite app using the “taps” gem.

Hubble Bubble Toil and Trouble, Meet Heckerty!

Broomstick Productions is Archimedes Labs latest portfolio company to launch into the world. Jan Ziff and Allan Davidson have a very special person in their life – Jan’s Mom. Or, because – like myself – Jan is from Yorkshire in the North of England, I should say Jan’s Mum…..

 

Jan’s Mum had the very special privilege of telling stories to the children of Prince Charles, either the future King of England or at the very least the father of the future King of England.

During her stint at that very unusual job she developed the character of Heckerty(TM) the Witch and her trusted sidekick, Zanzibar(TM) the cat. These stories have never been published before, and certainly never been animated. As Jan herself says:

 

When Princess Diana wanted to send her sons, Princes William and Harry, to weekly musical storytelling sessions as part of their education (click the links to see rare photos of the young princes), she chose my mother, Ann Rachlin.So when my mom asked Allan and me whether we were interested in bringing one of her favorite story characters to mobile devices, we jumped at the chance!
Stacks Image 622
Bringing Heckerty’s gentle, zany adventures to life for kids around the world was just too good to pass up! I had grown up with Heckerty’s magic and we both loved my mother’s many CDs and books (iTunesAmazon).

Today, they are available on the iPad, iPhone and on the Kindle Fire.

Meet Heckerty is the first of many stories to come and we feel sure that, Hollywood will soon be knocking on the door of Broomstick Productions seeking to take these adorable characters and stories to the big screen

Passenger 3.0.12

In this episode, Peter and Jason talk bout the new release of Passenger, Ruby 1.8.7 and REE, Adhearsion 2.0, and more.

Tokaido: My Hopes and Dreams

A few weeks ago, I started a kickstarter project to fund work on a project to make a long-term, sustainable binary build of Ruby. The outpouring of support was great, and I have far exceeded my original funding goal. First, I’d like to thank everyone in the community who contributed large and small donations. This kickstarter couldn’t have been as successful as it has been without the hundreds (650 at latest count!) of individual donations by interested Rubyists.

In this post, I want to talk about what my goals are for this project, and why I think it will be a tool that everyone, myself included, will use.

What is Tokaido

The name “Tokaido” (東海道 in Japanese) comes from the Tōkaidō Shinkansen bullet train line in Japan.

Precompiled, Static Ruby

At its core, Tokaido is a binary distribution of Ruby without any external dependencies on your system. This means that Ruby itself, as well as all of the compiled elements of the standard library, will come in a self-contained directory with no additional requirements.

The binary will also have no hardcoded paths, so it will be possible to move the directory anywhere on the file system and have it continue to work as long as its bin directory is on the $PATH. This is an important goal, as Tokaido will ship as a downloadable .app which should work wherever it is dropped on the file system.

Precompiled Binary Gems

Tokaido will come with all of the necessary gems to use Rails and common Rails extensions. Because some of these gems have external dependencies (for example, nokogori depends on libxml2), Tokaido will come with precompiled versions of these gems built for OSX that do not depend on external libraries (they will be statically compiled, not dynamically linked).

As part of this project, I plan to work with people who ship common native extensions to help them build and ship binary versions of their gems for OSX without external dependencies. Luis Lavena has been doing amazing work with rake-compiler to make this process easy on gem developers, and Wayne E. Seguin and Michał Papis have been doing great work with sm, which makes it easy to precompile the needed dependencies for inclusion in the precompiled gems. These tools will be essential in the effort to make dependency-free precompiled gems a standard part of the OSX Ruby ecosystem.

I anticipate that gem authors will, in general, start distributing precompiled binary versions of their gems. If, by the time I ship the first version of Tokaido, some important gems do not yet ship as precompiled binaries, Tokaido will bootstrap the process by including the binaries.

Terminal-Based Workflow

Tokaido does not aim to replace the Terminal as the main way to work with a Rails app. It will ship an isolated environment with no external dependencies designed for use in the Terminal. The application UI will supplement, rather than replace, the normal application workflow. This is a crucial part of the overall goal to make Tokaido an excellent tool for both experienced Rails developers, intermediate Rails developers, and totally new Rails developers.

Because many gems come with executables, and Tokaido couldn’t abstract every possible executable even if it wanted to, it is essential that new developers get used to using the Terminal as early as possible in their Rails experience, but in a way that minimizes unnecessary errors.

Extras: Code and App Health

A number of really great tools exist to help Rails applications remain healthy:

  • bundle outdated lets you know when new versions of gems are available
  • rails_best_practices helps find common mistakes in Rails applications
  • reek, flog, flay, roodi and other metrics tools help identify Ruby smells and prioritizes areas where you can reduce your technical debt
  • simplecov does coverage analysis on your test suite to identify areas lacking good coverage
  • bullet identifies N+1 queries and unused eager loading
  • ActiveSupport::Notifications provides introspection information about Rails applications

The Tokaido UI will attempt to centralize this useful information into a health check, and help you drill in if you want to do more with the information. Because they are so useful, it will encourage you to use these tools in new application, and provide immediate rewards if you do.

Extras: yourapp.dev

The pow dev server and PassengerPane make it possible to avoid needing to manually load a Rails server and gives you a friendly alias for your application at yourapp.dev instead of having to type in a port on localhost.

Tokaido will come with integrated support for this, so every app you manage through Tokaido will have a aliased development server out of the box.

Extras: rails:// (or ruby://) Protocol Handler

Tokaido will come with a protocol handler that will allow .gem files hosted on rubygems.org or other locations to be added to an app managed by Tokaido. It may also allow web sites to host installation templates that could execute against a maintained application. This will require coordination with rubygems.org, and the specifics of it may change over time, but the basic idea is to enable communication between web sites and the Tokaido app.

This idea came from a number of community members, and the specifics (especially around security and the protocol specification) definitely need fleshing out, but it seems extremely promising.

Extras: Ruby Toolbox Integration?

Ruby Toolbox has emerged as an amazing directory of Ruby libraries, categorized by type. It also has up-to-date information on Github activity and other useful indicators when evaluating tools. Several people have asked for integration with Ruby Toolbox, and assuming the author is willing, Tokaido will make it easy to use the information in Ruby Toolbox to bootstrap an app and add new functionality as your app grows.

Finding the right gem for the job is easy if you know what you’re looking for, but even experienced developers find the Ruby Toolbox useful when researching tools in an unfamiliar area.

Goals of Tokaido

Eliminate Failure Scenarios

The primary goal of Tokaido is to build a distribution of Ruby that eliminates the main failure scenarios that people encounter when trying to install Ruby. In general, things fail because of conflicts with the existing system environment (or the user’s environment). These failures do not happen to everyone, but when they happen, they are extremely difficult to recover from. This has happened to me personally and to people I have tried to get started with Ruby.

This sort of thing does not necessarily happen on every installation, but once you start going down the rabbit hole, it can be very difficult to find your way out. The environment difficulties can be caused by anything from an old MacPorts installation to a mistaken attempt to install something to the system once upon a time to something failing during a previous step in the installation process.

It also may not be enough to install a precompiled Ruby into the system, because the system environment itself may be corrupted with things like erroneous executables on the $PATH or bad dynamic libraries that get linked during native compilation. Also, later installations may do damage to the system-installed Ruby. Tokaido is a standalone environment that is loaded on top of an existing session, and therefore minimizes the possible damage that load order or subsequent installs can do.

Precompile Everything

In order to eliminate a certain class of failure scenarios, Tokaido will ship with a precompiled Ruby, which will eliminate the possibility of compilation errors when installing Ruby. This precompiled Ruby will also come with all of the dependencies it needs, like zlib, yaml and others, instead of allowing the system to try to find them at runtime. This will eliminate the possibility that changes to the system environment will cause a normally working version of Ruby to fail in some scenarios.

As above, Tokaido will also use this technique for commonly used native gems. For example, Tokaido will ship with a precompiled version of Nokogiri that comes with libxml, instead of relying on the system’s copy of libxml (incidentally, the system’s libxml has occasionally been subtly broken, necessitating installation via homebrew). I expect that this will happen because gem authors will start shipping precompiled versions of their gems for OSX. If there are still a few common gems straggling by the time Tokaido ships, we’ll bootstrap the process by shipping with binary gems we compile ourselves.

Use Tokaido Myself

Since Tokaido does not fundamentally alter a developer’s relationship with Ruby, I expect to be able to start using it for day-to-day Rails development. Some of the additional extras, like app health and built-in server support, are things I already do manually and will enjoy having as part of a larger tool. I’m also extremely interested in ideas for other extras that can add value for experienced developers without altering how people work with Ruby today.

Integration Testing

One of the coolest, unheralded things about the Rails project is the integration suite for Rails put together by Sam Ruby. It essentially transcribes the Agile Web Development With Rails book into a series of very complete integration tests for Rails. When refactoring Rails for Rails 3, this suite was extremely useful, and helped keep the number of unintentional changes to Rails to a tiny number. It also kept us honest about intentional changes.

This suite is perfect for Tokaido, as it tests every aspect of Rails, which is itself touches a wide swath of Ruby itself. To start, Tokaido will use this suite for integration testing.

Collaboration

There are several other projects, notably rvm, trying to solve problems in a similar space. Especially when it comes to precompilation, there is no reason not to work together on the core infrastructure that powers these efforts. I have already started to work with Michał Papis, who also works on sm and rvm on shared work that can be useful for both projects. He has been teaching me all about the work that folks associated with rvm have done to simplify things like downloading and compiling libz.a, a prerequisite for precompiled Rubies.

I will also work with authors of native gems to start shipping precompiled binary gems for OSX. I have already started working with Aaron Patterson, who works on the sqlite and nokogiri gems, and have started reaching out to several others.

I am very interested in working together with anyone working on a similar area so that the tools we are all working on can be shared between projects. This is a core mission of the Tokaido project, and something that the extra funding I got will allow me to prioritize.

Migration to “System”

Also through Michał Papis, I learned about an awesome new (still experimental) feature in rvm called mount that will mount an external Ruby into the rvm system. I will make sure that the Tokaido ruby can be added to an rvm installation. This will mean that if someone wants to migrate from Tokaido to a more advanced rvm setup, they can take their Ruby environment with them with no trouble.

I would be open to other approaches to migrating a Tokaido environment to the system as well. The goal would be to seamlessly migrate an environment to the system without introducing opportunities for failure during that process.

Looking Forward

I’m really excited to the work I’ve been doing to prepare for this project, and looking forward to shipping a great environment for OSX Ruby users. I have also really enjoyed reaching out to others working in similar areas and the prospect of collaborating with so many smart people on a shared goal.

Thanks so much!

Tokaido: My Hopes and Dreams

A few weeks ago, I started a kickstarter project to fund work on a project to make a long-term, sustainable binary build of Ruby. The outpouring of support was great, and I have far exceeded my original funding goal. First, I’d like to thank everyone in the community who contributed large and small donations. This kickstarter couldn’t have been as successful as it has been without the hundreds (650 at latest count!) of individual donations by interested Rubyists.

In this post, I want to talk about what my goals are for this project, and why I think it will be a tool that everyone, myself included, will use.

What is Tokaido

Precompiled, Static Ruby

At its core, Tokaido is a binary distribution of Ruby without any external dependencies on your system. This means that Ruby itself, as well as all of the compiled elements of the standard library, will come in a self-contained directory with no additional requirements.

The binary will also have no hardcoded paths, so it will be possible to move the directory anywhere on the file system and have it continue to work as long as its bin directory is on the $PATH. This is an important goal, as Tokaido will ship as a downloadable .app which should work wherever it is dropped on the file system.

Precompiled Binary Gems

Tokaido will come with all of the necessary gems to use Rails and common Rails extensions. Because some of these gems have external dependencies (for example, nokogori depends on libxml2), Tokaido will come with precompiled versions of these gems built for OSX that do not depend on external libraries (they will be statically compiled, not dynamically linked).

As part of this project, I plan to work with people who ship common native extensions to help them build and ship binary versions of their gems for OSX without external dependencies. Luis Lavena has been doing amazing work with rake-compiler to make this process easy on gem developers, and Wayne Seguin and Michał Papis have been doing great work with sm, which makes it easy to precompile the needed dependencies for inclusion in the precompiled gems. These tools will be essential in the effort to make dependency-free precompiled gems a standard part of the OSX Ruby ecosystem.

I anticipate that gem authors will, in general, start distributing precompiled binary versions of their gems. If, by the time I ship the first version of Tokaido, some important gems do not yet ship as precompiled binaries, Tokaido will bootstrap the process by including the binaries.

Terminal-Based Workflow

Tokaido does not aim to replace the Terminal as the main way to work with a Rails app. It will ship an isolated environment with no external dependencies designed for use in the Terminal. The application UI will supplement, rather than replace, the normal application workflow. This is a crucial part of the overall goal to make Tokaido an excellent tool for both experienced Rails developers, intermediate Rails developers, and totally new Rails developers.

Because many gems come with executables, and Tokaido couldn’t abstract every possible executable even if it wanted to, it is essential that new developers get used to using the Terminal as early as possible in their Rails experience, but in a way that minimized unnecessary errors.

Extras: Code and App Health

A number of really great tools exist to help Rails applications remain healthy:

  • bundle outdated lets you know when new versions of gems are available
  • rails_best_practices helps find common mistakes in Rails applications
  • reek, flog, flay, roodi and other metrics tools help identify Ruby smells and prioritizes areas where you can reduce your technical debt
  • simplecov does coverage analysis on your test suite to identify areas lacking good coverage
  • bullet identifies N+1 queries and unused eager loading
  • ActiveSupport::Notifications provides introspection information about Rails applications

The Tokaido UI will attempt to centralize this useful information into a health check, and help you drill in if you want to do more with the information. Because they are so useful, it will encourage you to use these tools in new application, and provide immediate rewards if you do.

Extras: yourapp.dev

The pow dev server and PassengerPane make it possible to avoid needing to manually load a Rails server and gives you a friendly alias for your application at yourapp.dev instead of having to type in a port on localhost.

Tokaido will come with integrated support for this, so every app you manage through Tokaido will have a aliased development server out of the box.

Extras: rails:// (or ruby://) Protocol Handler

Tokaido will come with a protocol handler that will allow .gem files hosted on rubygems.org or other locations to be added to an app managed by Tokaido. It may also allow web sites to host installation templates that could execute against a maintained application. This will require coordination with rubygems.org, and the specifics of it may change over time, but the basic idea is to enable communication between web sites and the Tokaido app.

This idea came from a number of community members, and the specifics (especially around security and the protocol specification) definitely need fleshing out, but it seems extremely promising.

Extras: Ruby Toolbox Integration?

TODO

Goals of Tokaido

Eliminate Failure Scenarios

The primary goal of Tokaido is to build a distribution of Ruby that eliminates the main failure scenarios that people encounter when trying to install Ruby. In general, things fail because of conflicts with the existing system environment (or the user’s environment). These failures do not happen to everyone, but when they happen, they are extremely difficult to recover from. This has happened to me personally and to people I have tried to get started with Ruby.

This sort of thing does not necessarily happen on every installation, but once you start going down the rabbit hole, it can be very difficult to find your way out. The environment difficulties can be caused by anything from an old MacPorts installation to a mistaken attempt to install something to the system once upon a time to something failing during a previous step in the installation process.

It also may not be enough to install a precompiled Ruby into the system, because the system environment itself may be corrupted with things like erroneous executables on the $PATH or bad dynamic libraries that get linked during native compilation. Also, later installations may do damage to the system-installed Ruby. Tokaido is a standalone environment that is loaded on top of an existing session, and therefore minimizes the possible damage that load order or subsequent installs can do.

Precompile Everything

In order to eliminate a certain class of failure scenarios, Tokaido will ship with a precompiled Ruby, which will eliminate the possibility of compilation errors when installing Ruby. This precompiled Ruby will also come with all of the dependencies it needs, like zlib, yaml and others, instead of allowing the system to try to find them at runtime. This will eliminate the possibility that changes to the system environment will cause a normally working version of Ruby to fail in some scenarios.

As above, Tokaido will also use this technique for commonly used native gems. For example, Tokaido will ship with a precompiled version of Nokogiri that comes with libxml, instead of relying on the system’s copy of libxml (incidentally, the system’s libxml has occasionally been subtly broken, necessitating installation via homebrew). I expect that this will happen because

Use Tokaido Myself

Since Tokaido does not fundamentally alter a developer’s relationship with Ruby, I expect to be able to start using it for day-to-day Rails development. Some of the additional extras, like app health and built-in server support, are things I already do manually and will enjoy having as part of a larger tool. I’m also extremely interested in ideas for other extras that can add value for experienced developers without altering how people work with Ruby today.

Integration Testing

One of the coolest, unheralded things about the Rails project is the integration suite for Rails put together by Sam Ruby. It essentially transcribes the Agile Web Development With Rails book into a series of very complete integration tests for Rails. When refactoring Rails for Rails 3, this suite was extremely useful, and helped keep the number of unintentional changes to Rails to a tiny number. It also kept us honest about intentional changes.

This suite is perfect for Tokaido, as it tests every aspect of Rails, which is itself touches a wide swath of Ruby itself. To start, Tokaido will use this suite for integration testing.

Collaboration

There are several other projects, notably rvm, trying to solve problems in a similar space. Especially when it comes to precompilation, there is no reason not to work together on the core infrastructure that powers these efforts. I have already started to work with Michał Papis, who also works on sm and rvm on shared work that can be useful for both projects. He has been teaching me all about the work that folks associated with rvm have done to simplify things like downloading and compiling libz.a, a prerequisite for precompiled Rubies.

I will also work with authors of native gems to start shipping precompiled binary gems for OSX. I have already started working with Aaron Patterson, who works on the sqlite and nokogiri gems, and have started reaching out to several others.

I am very interested in working together with anyone working on a similar area so that the tools we are all working on can be shared between projects. This is a core mission of the Tokaido project, and something that the extra funding I got will allow me to prioritize.

Migration to “System”

Also through Michał Papis, I learned about an awesome new (still experimental) feature in rvm called mount that will mount an external Ruby into the rvm system. I will make sure that the Tokaido ruby can be added to an rvm installation. This will mean that if someone wants to migrate from Tokaido to a more advanced rvm setup, they can take their Ruby environment with them with no trouble.

I would be open to other approaches to migrating a Tokaido environment to the system as well. The goal would be to seamlessly migrate an environment to the system without introducing opportunities for failure during that process.

Looking Forward

I’m really excited to the work I’ve been doing to prepare for this project, and looking forward to shipping a great environment for OSX Ruby users. I have also really enjoyed reaching out to others working in similar areas and the prospect of collaborating with so many smart people on a shared goal.

Thanks so much!

Tokaido: My Hopes and Dreams

A few weeks ago, I started a kickstarter project to fund work on a project to make a long-term, sustainable binary build of Ruby. The outpouring of support was great, and I have far exceeded my original funding goal. First, I’d like to thank everyone in the community who contributed large and small donations. This kickstarter couldn’t have been as successful as it has been without the hundreds (650 at latest count!) of individual donations by interested Rubyists.

In this post, I want to talk about what my goals are for this project, and why I think it will be a tool that everyone, myself included, will use.

What is Tokaido

The name "Tokaido" (東海道 in Japanese) comes from the Tōkaidō Shinkansen bullet train line in Japan.

Precompiled, Static Ruby

At its core, Tokaido is a binary distribution of Ruby without any external dependencies on your system. This means that Continue reading “Tokaido: My Hopes and Dreams”

Tokaido: My Hopes and Dreams

A few weeks ago, I started a kickstarter project to fund work on a project to make a long-term, sustainable binary build of Ruby. The outpouring of support was great, and I have far exceeded my original funding goal. First, I’d like to thank everyone in the community who contributed large and small donations. This kickstarter couldn’t have been as successful as it has been without the hundreds (650 at latest count!) of individual donations by interested Rubyists.

In this post, I want to talk about what my goals are for this project, and why I think it will be a tool that everyone, myself included, will use.

What is Tokaido

The name “Tokaido” (東海道 in Japanese) comes from the Tōkaidō Shinkansen bullet train line in Japan.

Precompiled, Static Ruby

At its core, Tokaido is a binary distribution of Ruby without any external dependencies on your system. This means that Continue reading “Tokaido: My Hopes and Dreams”

The Mega March 2012 Ruby and Rails News and Release Roundup

And again, a mixture of travel, illness, and exhaustion have prevented me from my weekly updates on here (although Ruby Weekly is still going out on a weekly basis!) so here’s a bumper update for all of the top Ruby and Rails news from March 2012.

Highlights include: Matz wins a prize, Ruby is approved by the ISO, some awesome jobs, Bundler 1.1, Vagrant 1.0, Rails 3.2.3, Avdi Grimm’s Object on Rails book, the Pragmatic Programmers release some more awesome books and, of course, a lot more.

Headlines

Matz Wins FSF’s 2011 Award for the Advancement of Free Software
Free Software Foundation president Richard M. Stallman announced the winners of the FSF’s annual free software awards recently with Ruby’s own Yukihiro ‘Matz’ Matsumoto picking up the Award for the Advancement of Free Software. He joins a short list of open source heroes including Alan Cox, Larry Wall, and Guido van Rossum.

Released: ‘The Rails View’ by John Athayde and Bruce Williams
Working in Rails’ view layer can be tricky with brittle, complex views all too easy to rustle up. This book digs into strategies and approaches for upping your Rails view game and breaking free from tangles of logic and markup in your views. Two thumbs up.

Objects on Rails: How to Apply Classic OO Ideas to Rails Apps
For a while now, Avdi Grimm has been slaving over a delicious ‘developer’s notebook’ documenting guidelines, techniques, and ideas for applying classic object-oriented thought to Rails apps. He’s now released it free to read on the Web. I recommend reading this, it’s good.

Ruby Language Accepted As An International Standard by ISO
Dalla Rosa noticed a press release from Japan’s IT Promotion Agency which notes that the long awaited Ruby specification (not to be confused with RubySpec) has been approved by the International Standards Organization as the ISO/IEC 30170 standard.

Rails 3.2.3 Released
The usual laundry list of minor changes but the biggest deal here is the default value of ‘config.active_record.whitelist_attributes’ becomes ‘true’, inspired by the recent GitHub mass assignment issue. Note that the change only affects newly generated apps but you can learn more in this post.

Yehuda Katz Raises $40k for ‘rails.app’, an OS X Rails Environment Installer
Recently Yehuda Katz (well known as the lead architect behind Rails 3) launched a campaign to raise $25k to build a Ruby and Rails environment installer for OS X. It has now gone on to raise over $40k but left some in the community wondering quite what was really needed.

Vagrant 1.0: Virtualized Development for the Masses
Vagrant is a popular VirtualBox-driven Ruby tool for quickly building and deploying virtual machines for development and testing purposes. After years of development, it has reached the all important 1.0 release. Congrats!

Bundler 1.1 is Out!
No official blog post yet, but Bundler 1.1 is out and you can grab it with a gem install bundler. The big win on this release is significantly improved performance when fetching gemsets with complex dependencies.

GitHub Public Key Security Vulnerability and Mitigation
GitHub experienced a security issue involving mass assignments in Rails. They’ve fixed it up now but you might want to get up to speed with what happened.

The Ruby on Rails Tutorial, Now With Twitter’s Bootstrap
Michael Hartl has updated the new Rails 3.2 version of his popular ‘Rails Tutorial’ to use Twitter’s increasingly popular Bootstrap framework.

ActiveResource Removed From Edge Rails (and Rails 4.0)
Just as it says in the title, but take care to scroll down to see the full story, since the proposal was initially deferred but has now been implemented. Active Resouce is now available as a separate project.

The Prags Release ‘The dRuby Book’
Learn from legendary Japanese Ruby hacker Masatoshi Seki in this first English-language book on his own Distributed Ruby library (DRb). Pick up distributed programming ideas straight from the source here. Available in print and e-book formats.

Reading

Exploring Ruby’s Regular Expression Algorithm
Pat Shaughnessy, Ruby implementation spelunker extraordinaire, digs into Oniguruma, the regular expression engine used by MRI Ruby 1.9. What does it do and how does it process your regexes?

Why You Should Be Excited About Garbage Collection in Ruby 2.0
Could it be Pat Shaughnessy again? Yes, sirree. Here he digs into the ‘bitmap marking’ garbage collection algorithm that promises to reduce Ruby’s memory consumption in Ruby 2.0.

Using MiniTest::Spec With Rails
Ken Collins has been working on minitest-spec-rails, a gem that makes it reasonably trivial to use MiniTest::Spec (part of the Ruby 1.9 stdlib) with Rails. Learn how here. Ignore the date on this article, it was just updated!

Building Backbone.js Apps With Ruby, Sinatra, MongoDB and Haml
An extensive tutorial by Addy Osmani on building a Backbone.js at both the front and back ends. The server side part is powered by Ruby’s light but powerful webapp DSL Sinatra.

Zero to Jekyll in 20 Minutes
Jonathan Jackson explains how to use the popular Jekyll blog-focused static Web site generator from scratch.

What Would Happen If You Ran ‘bundle update’ Right Now?
Is there a bundle command to tell you what would be updated with bundle update, without actually making those updates? With Bundler 1.1.. yes there is!

GitHub’s Ruby Style Guide
The folks at GitHub have put together a document outlining the Ruby styles and conventions they use for their internal apps. Plenty of good practice in here, along with a little opinion.

Learning More About JRuby from Charles Nutter
Pat Shaughnessy has interviewed Charles Nutter of the JRuby core team and digs into the meaning behind JRuby, what JRuby is well suited for, how its internals work, and where JRuby is headed in the future.

A Use of Enumerable#chunk
Enumerable#chunk is a not particularly well known method in the Enumerable module (and therefore available to your arrays and hashes by default) and in this post, Eric Hodel shows off a use for it.

How to Use Bundler Instead of RVM Gemsets
Stephen Ball recently heard Bundler maintainer Andre Arko say that Bundler can obviate the need to use RVM gemsets. In this post, he investigates the idea.

Rails Is Just An API
Alex MacCaw says there’s nothing wrong with relegating Rails to the API layer.

Tailin’ Ruby: ‘Faking’ Tail Call Optimization
By default, Ruby doesn’t implement tail call optimization (although it can be enabled in various ways in 1.9) so Magnus Holm set out to try and ‘fake’ it. An interesting experiment.

How to Test External APIs
It’s common to integrate with an external API and in order to effectively test the integration, you might want to stub it out. Jared Carroll of Carbon Five shares a testing strategy using stubs for an external API.

Ruby 2.0’s Enumerable::Lazy
Innokenty Mihailov’s Enumerable::Lazy patch was accepted into Ruby trunk this week which gives us some ActiveRecord 3-style ‘lazy evaluation’ features on enumerations in Ruby. Worth checking out as a key new feature to come along in Ruby 2.0.

API Versions in Rails Routes: A Mind Blowing Answer?
Ryan Bigg promises to ‘blow your mind’ in his answer on Stack Overflow that shows some Rails 3 routing magic (in the context of versioning an API through the URL).

Sinatra + Heroku = Super Fast Deployment
Darren Jones demonstrates creating a very simple Sinatra app and deploying it on Heroku.

Getting the Most out of Bundler Groups
Bundler lets you create different ‘groups’ in your Gemfile so different environments can have different dependencies. Iain Hecker shows off some uses for this feature.

Yehuda Katz’s Proposal for Improving Mass Assignment (in Rails)
After the GitHub issue (above), Rails 3 guru Yehuda Katz came up with a proposal for improving how mass assignment works in Rails. I don’t agree with the approach but it sparked an interesting discussion.

The NOR Machine: Building a CPU With Only One Instruction
Have you ever developed in an assembly language? Have you developed an assembly language? Ever developed a CPU running your own assembly language? Alexander Demin shows you how in this fun Ruby-oriented walkthrough.

Flexible Searching with Solr and Sunspot
Mike Pack outlines how the Solr full text search server can benefit your project’s indexing capabilities and shows how Solr can be used within a Rails app using Sunspot.

A Common .ruby-version File For Ruby Projects
Got .rvmrc and .rbenv-version (and possibly more) floating around your projects? What if we had an ecosystem of fabulous Ruby managers that all understood the semantics of a generic dotfile like ‘.ruby-version’? Here’s a proposal to weigh in on.

Wizard-ify Your Rails Controllers with Wicked
Multi-page ‘wizards’ are popular in both desktop software and webapps and Wicked by Richard Schneeman brings a way to make them easier to produce in a Rails app.

Load Balancing and Reverse Proxying with Nginx (for Rails Apps)
Nginx is a modern, open-source, high-performance web server that’s well known in the Rails hosting world. In this post, Justin Kulesza demonstrates how to do a load balanced, reverse proxying setup with Nginx for a Rails app.

What is docrails?
docrails is a branch of Ruby on Rails with public write access where anyone can push documentation fixes. Xavier Noria explains how it works.

The Hardest, Most Rewarding Job I’ve Ever Had
Mitchell Hashimoto of the Vagrant project (which recently hit 1.0 – above) shares his take on the history of Vagrant and the experiences it brought him. Always nice to see a post like this.

Watching and Listening

RailsCasts on Copycopter
Copycopter provides an interface that clients can use to edit the text in a Rails application. Learn how to deploy a Copycopter server using Heroku and integrate it in a Rails application through I18n.

PeepCode Play by Play: Jim Weirich
PeepCode continues its Play by Play screencast series with Jim Weirich, the author of the ubiquitous Rake build tool for Ruby and chief scientist at EdgeCase. Want a view over an experienced Rubyist’s shoulder? This is a good place to go.

Don’t Fear The Threads: Simplify Your Life with JRuby
An epic 161 slide slide-deck by David Copeland, focused on threading and JRuby.

Inside Ruby: Concurrency and Garbage Collection Explained
Matt Aimonetti’s presentation from Ruby Argentina has finally been released. Skip a few minutes in unless you want to enjoy Matt’s Spanish skills.

14 Presentation Videos from ArrrrCamp 2011
Videos from last year’s ArrrrCamp have been released, including presentations by Corey Haines, Elise Huard, Jim Gay, Anthony Eden and John Long.

RubyConf Argentina 2011 – Day 1
It must be the week for releasing conference videos. RubyConf Argentina (back in November 2011) has released theirs too.

Refinery CMS Basics with RailsCasts
Ryan Bates shows off how to quickly build a Rails app with out of the box content management using the Rails-based CMS, Refinery CMS.

Love Your Lib Directory
Brian Cardarella shares some conventions over the use of the ‘lib’ directory within Ruby projects and libraries. A 20 minute talk given at Boston.rb.

Ruby Rogues on Bundler with Andre Arko
The lovable rogues are back for another hour long podcast, this time discussing the Bundler project with its maintainer Andre Arko.

Libraries and Code

Rubydeps: Create Dependency Graphs from Test Suites
Rubydeps is a tool to create class dependency graphs from test suites. It runs your suite, records the call graph between the classes, and uses this info to create a Graphviz dot graph.

Weary: Framework and DSL for Building RESTful Web Service Clients
Mark Wunsch’s Weary is a suite of tools built around the Rack ecosystem that makes it both easy to build elegant clients for (ideally RESTful) Web services.

store_configurable: A Hash for Config Options on ActiveRecord Objects
A zero-configuration recursive hash for storing a tree of options in a serialized ActiveRecord column.

S3itch: Amazon S3 WebDAV Proxy for Skitch
Popular OS X screenshot tool Skitch is dropping its native file sharing component so Mathias Meyer has built a Sinatra-based proxy that can accept files over WebDAV and then upload them to S3.

minitest-metadata: Metadata for your MiniTest Test Cases
minitest-metadata allows you to set metadata (key-value) for your test cases so that before and after hooks can use them.

RSpec is Not The Reason Your Rails Test Suite is Slow
In a simple gist, RSpec maintainer David Chelimsky dispels the myth that RSpec drags slowness around with it, wherever it goes.

Ry: The Simplest Ruby Version Manager
We have RVM, we have rbenv.. we now have ‘ry’ too! It bills itself as the ‘simplest Ruby virtual environment’ and its major design goal is to explicit, unobtrusive, and easy to query. It can also lean on ruby-build to install new versions.

Rake-Pipeline: Rake-Powered Asset Packaging
A system for packaging assets for deployment to the web built as an extension to Rake. Developed by the masterminds over at Living Social.

Capital: ‘Top Off’ Your ActiveRecord Columns
Capital extends what’s returned via your model’s columns, converting values to and from ‘rich objects.’ It’s inspired by MongoMapper’s serialization.

Ruby-Doc.com: Ruby and Rails API Docs Hosted on S3
Rob Cameron was getting tired of slow or inaccessible Ruby and Rails docs so has rendered and put up an entire set of Ruby and Rails API docs (various versions) on Amazon S3.

VCR 2.0.0 Released: Recording Your Tests’ HTTP Interactions
VCR is a library for recording a test suite’s HTTP interactions to replay during future runs. Version 2 is now out and brings a lot more flexibility, custom request matchers and serializers, request hooks, and more.

‘wow how come I commit in master? O_o’
The Rails commit that started the drama around the GitHub / Rails mass assignment issue. Linked for posterity but also because the comments turned into the typical meme-fest.

Zonebie: Timezone Randomization for Robust Time Tests
Zonebie helps you hunt down bugs in code that deals with timezones by randomly assigning a different timezone on each run.

Metriks: A Simple, Lightweight Ruby Metrics Experiment
An experiment in making a thread-safe, low impact library to measure performance metrics in your Ruby apps. One of the most interesting uses is to have it update your process’s title so the metrics info appears live in ps or top!

md2man: Markdown to Man Page
A Ruby library and command-line program that converts Markdown documents into UNIX manual pages.

Rocket Pants: Tools for Building Well Designed Web APIs
A humorously named and highly opinionated toolkit for building well-designed Web APIs, with a focus on Rails.

MethodProfiler: Get Performance Info about Methods on Your Objects
MethodProfiler collects performance information about the methods in your objects and creates reports to help you identify slow methods. The collected data can be sorted in various ways, converted into an array, or pretty printed as a table.

Jobs

Rails Developer at On The Beach [Manchester, UK]
One of the better designed and more creative job ad pages I’ve seen!

Ruby and Web Developer at Hubbub [Highbury, London, UK]
Pass a simple API challenge to apply..

Last but not least..

‘Working With Unix Processes’ by Jesse Storimer
Jesse Storimer doesn’t think you should need to learn C to pick up some intricacies of Unix and Unix-style systems. In this (pay for) e-book he takes a Ruby based approach at explaining file descriptors, processes and forking, signals, and more.

Cloudinary: Image Manipulation in the Cloud
A lot of webapp developers seem sick of installing things like ImageMagic to do image cropping and scaling. Cloudinary adds another solution. It’s a commercial service but makes it easy to do image manipulations via URLs.

Heroku Add-ons Catalog
There are lots of add-ons for the Heroku cloud hosting service nowadays but Ivan Schneider thought they were hard to scan through, merely being in an alphabetical list, so he built a different way to browse them.