I read an interesting article by Dave Fayram (kirindave) contrasting monkeypatching in Ruby with protocol extension in Clojure. The article compares two of my favorite languages, but I think it was unfortunate to present monkeypatching as the main way to “associate behavior and data in a flexible way.” In fact, Ruby has a number of […]
(Or, my impressions of JSConf US 2010) I wrote a very ambitious (and partially successful) post last year attempting to recap the first JSConf. I can’t even pretend to repeat that feat this year: track B was so good that I spent half my time in it, and I couldn’t get to everything I wanted […]
A few weeks ago I posted about my initial impressions of CommonJS’s approach to concurrency, in particular the use of promises. Today I add my look at promises and futures in Clojure. I’m aware that I’m kind of writing these blog posts backwards. I’m learning more as I go, which means before I’m done I […]
The haters are wrong, part one I just finished an excellent blog post by my friend Blake Patterson. It’s about the iPad. Blake realized in the wee hours of Sunday morning that the iPad was actually Alan Kay’s Dynabook, emerging after 40 years in Steve Jobs’ turtleneck-clad arms. Seriously, it’s a great post. Go read […]
It’s a concurrent world, and, increasingly, it’s an asynchronous world too. Many things are going on at the same time, and it’s impossible to determine exactly when each is starting or ending. In other words, everything is fast and out of control. As a software developer, both concurrency and asynchronicity are more important concepts than […]
I gave a talk on Ruby’s Enumerators at the DC Ruby Users Group in August. I’ve posted my slides from the presentation, if you’re interested. Basically, I discovered that enumerators make lazy evaluation easy to implement in Ruby, and applying lazy techniques with enumerators may yield more efficient and elegant code.
I count myself lucky that I can earn a living programming with Ruby and in particular with the Ruby on Rails framework. But every tool, even the best, has a few surprises up its sleeve. Sometimes you get hung up on something quirky, but more often you’re having a problem with a feature—something that’s there […]