The Past 2 Weeks in the World of Ruby: 40 Links to Bring You Up to Speed (January 2012)
Ruby Weekly has just tipped over 10,000 subscribers but I know not everyone is into getting their news via e-mail, so here's the latest frequent roundup of the latest Ruby and Rails news for you, all on the Web :-)
Key News, Releases, and Headlines
Hungry Academy Application Process Closes This Weekend
LivingSocial's 'Hungry Academy' will provide a paid, on-site 5 month Ruby and Rails learning experience and mentorship program to a small group of lucky applicants. Interested? You've only got a few days left to apply.
DOS Attack Vulnerability Found in Ruby 1.8's Hash Algorithm
Ruby 1.8.7-p352 and earlier are affected by a wide reaching (as in Python and Java are also affected!) hash related vulnerability. Ruby 1.9 is entirely unaffected.
JRuby 126.96.36.199 Released: Fixes the Hashing Vulnerability
JRuby 188.8.131.52 is a minor patchlevel release of JRuby that's mostly interesting because of the potential hash-based DOS vulnerability it papers over. Plenty of info in this post.
KidsRuby 1.0 Released
KidsRuby is a kid-focused (but just as useful for adults!) Ruby editor aimed at being an environment for teaching the Ruby language. It includes tutorials and a Logo-esque turtle graphics system for more visual types of learning.
Rack 1.4.0 Released
Rack is the modular Ruby Web server interface that sits between servers like Apache and nginx and systems like Rails or Sinatra. Rack 1.4 drops support for Ruby 1.8.6 and includes a bevy of tweaks, bug fixes and minor new features (including support for the 'teapot' HTTP status code ;-)).
Articles and Tutorials
Never Create Ruby Strings Longer Than 23 Characters
A linkbaity title but an interesting article nonetheless by Pat Shaughnessy about a curiosity of how MRI Ruby 1.9 handles strings. Why are 24 byte strings far slower to process than 23 byte ones? Find out here.
Giving Rails 2 the Rails 3.1 Asset Pipeline
Not quite ready for Rails 3.1 yet but still want an asset pipeline on your Rails 2 app? Davis W Frank was in that situation and in this post explains how he sorted it out.
The & Operator in Ruby
Pan Thomakos looks at the uses for the & operator and its associated methods in Ruby, including bitwise ANDing, set intersection, and the unary &.
Ruby Gems API Console: Play with RubyGems.org's API on the Web
An interesting API console that's set up to play with the RubyGems.org JSON API. Click the drop down to the left to see all of the prebuilt requests.
MiniTest Quick Reference
MiniTest is the unit testing library that comes in the Ruby 1.9 standard library and which also acts as a compatibility layer for test/unit on 1.9. Matt Sears has put together a handy round up of the assertions and matchers offered by MiniTest::Unit and MiniTest::Spec.
Structural Design Patterns in Ruby
Gregory Brown looks at seven structural design patterns laid out by the Gang of Four, the Adapter, Bridge, Composite, Proxy, Decorator, Facade and Flyweight.
'bundle exec rails' Executes Bundler.setup 3 Times
Rails core team member Santiago Pastorino notes that running 'bundle exec rails' is an inefficient mistake and explains why. (TLDR: Just use 'rails', it'll work out the particulars.)
1 and 2 Letter Ruby Gems
Mike Gunderloy looks at Ruby gems that only have a single letter as their name. It's a mixture of junk and curiosities.
'Kestrels, Quirky Birds, and Hopeless Egocentricity' by Reg Braithwaite
Ruby's own 'Raganwald' has compiled his essays about combinatory logic, method combinators and Ruby meta-programming into a handy and inexpensive e-book. Cerebral stuff.
Libraries and code
Momentum: A Rack Handler for SPDY Clients
SPDY is a experimental networking protocol developed by Google (and already used in Chrome) for delivering Web content more quickly. Momentum is a Rack handler that can receive connections from SPDY clients and run Rack apps. Lots of info in the README.
Webmachine: Expose Your App's Resources Via HTTP Declaratively
webmachine-ruby is a port of Erlang's Webmachine. Both projects aim to expose parts of the HTTP protocol to your application in a declarative way, so you're less concerned with handling requests directly and more with describing the behavior of the resources in your app.
EmberJS-Rails: Ember.js for Rails 3.1 Developers
Celluloid 0.7: Actors for Concurrent Programming in Ruby
Celluloid provides a simple and natural way to build fault-tolerant concurrent programs in Ruby. With Celluloid, you can build systems out of concurrent objects just as easily as you build sequential programs out of regular objects. 0.7 has just been released.
Gitview: A JS Widget to List GitHub Repositories
Screencasts, Presentations, and Podcasts
Some Thoughts on Ruby Classes After 18 Months of Clojure
An enjoyable 25 minute romp through Brian Marick's thoughts on structuring objects in Ruby based on his experiences with the Clojure Lisp dialect.
Sending HTML Email (RailsCasts)
Ryan Bates is back for his weekly RailsCasts episode, this time looking at how to not only send HTML e-mail, but how to put it together (along with the obligatory inline CSS) too.
Debugging Scary Crashes of Rubinius
Dirkjan Bussink has been debugging memory corruption in Rubinius and has put together a 55 minute video explaining how he debugged it. Surely a must watch for any wannabe Rubinius hackers. A 453MB download though..
'Architecture the Lost Years' by Robert Martin at Ruby Midwest 2011
I really enjoyed this keynote by 'Uncle Bob' at the recent Ruby Midwest 2011 conference. He talks about application architecture and how the typical 'Rails way' of approaching it has key disadvantages compared to a decoupled approach.
ActiveRecord Anti-Patterns for Fun and Profit
At November's Ruby Midwest 2011, Ethan Gunderson gave a talk on common mistakes made when working with ActiveRecord and how to make everything all better.
Smalltalk On Rubinius (or How to Implement Your Own Programming Language)
At September's Golden Gate Ruby Conference, Konstantin Haase gave a talk about implementing a programming language using Ruby and the Rubinius compiler tool chain.
Getting Started with Rails: RailsCasts
Ryan Bates takes it back to basics this week with a quick 7 minute sweep through some of the sites, tools, and books you'll find useful when starting out with Rails as of late 2011.
Vim for Rails Developers Screencast
An inexpensive 34 minute screencast by Ben Orenstein that teaches you how to use the popular Vim text editor when working with Rails projects. Ben has a lot of experience in this area.
The Ruby Rogues on Benchmarking and Profiling
Aaron 'tenderlove' Patterson rejoins the Rogues for an hour long chat about benchmarking and profiling Ruby code. There's a lot of depth here and it makes for a typically good and roguish listen.
C/Unix Agent Engineer [Portland, Oregon]
New Relic, the Web app performance monitoring and management folks, are looking for someone who loves Ruby but is an experienced C or C++ developer who understands multithreading, database contention, and object-oriented design.