Menu Sidebar

Avdi Grimm

Hacker; code documentarian.

The Soul of Software

The good folks at Tropical Ruby have released the video of my keynote, The Soul of Software. In this talk I start with the premise that the Ruby wave may have peaked. I took that observation as a jumping-off point to examine where we come from as a community—particularly from a philosophical point of view—and where we might go from here.

This talk is a little different from anything I’ve done before. It marks the first time I’ve allowed myself to “fire on all cylinders”, because it’s the first time I felt like my subject matter warranted it.

By the way, if you get a chance to go to Tropical Ruby next year, you should totally take it!

I am my code, redux

I’ve written before that I am my code. Today I felt the urge to reiterate this message on Twitter. I thought I’d collect the series here for posterity, in slightly modified order.

To reiterate what I said in that last tweet: I am not saying that we should never criticize. But I believe that the notion “you are not your code” is a moral dodge; a way to lump venting and verbal cruelties under the umbrella of “criticism of code”. The acknowledgment that I am my code is the acknowledgement that you are your code. Which gives me reason to think twice about how I address perceived shortcomings in your code.

UPDATE: Some notable responses:

From Martin Feckie: Am I my code? Martin has some great concrete advice here for giving feedback from a place of compassion.

So what’s the deal with Ruby refinements, anyway?

If you’ve been following Ruby developments for the past couple of years, chances are you’ve heard about refinements. You may have heard that they are controversial, confusing, or even “broken”.

It’s true that refinements had some growing pains in their early, experimental versions. But having spent some time exploring the feature as it now exists in Ruby 2.1 and onward, I think they’re a valuable addition to the language. In a language where any class can be re-opened at any time, refinements provide a nice mix of language malleability tempered by locality and visibility.

Back in October I released a video to my RubyTapas subscribers which set out to introduce and demystify this powerful new ability. Today I’m releasing it for free in hopes that it will help clear up some of the confusion around refinements.

Here’s the video:


By the way, if you want to see an example of a real-world use of refinements, check out the Sequel core_refinements library. Sequel has a set of core class extensions which are traditionally added globally. But with refinements, it’s possible to make use of these convenience extensions without either forcing or requiring them to be globally available. This is particularly handy within gems, where we might want the ease of use of the extension methods, but we don’t want to force global extensions on our library clients.

If you prefer reading over watching, the script is below. And remember, if you like this, please consider subscribing and supporting the creation of more videos like this!

Read More

Rust is a systems language. I’m not sure what that term means, but it seems to imply some combination of native code compilation, not being Fortran, and making no mention of category theory in the documentation.

via A Taste of Rust.

New RubyTapas Freebie: Immutable Iterators with Tom Stuart

Tom Stuart expands my mind every time I read or watch something he’s done, so I can’t tell you how excited I was to have him do guest episode on RubyTapas. Subscribers saw this episode back in December, but today I’m freeing it up so anyone can enjoy it.


Some of my other favorite things that Tom has done:

Like what you see? This is just a taste of RubyTapas! Sign up today to get two videos a week, along with full source code and transcripts. Or click here to learn more.
Older Posts

Virtuous Code

"The three virtues of a programmer: laziness, impatience, and hubris" — Larry Wall

Books and Screencasts

RubyTapas Screencasts

RubyTapas Screencasts

Small plates of gourmet Ruby code.

Confident Ruby

Confident Ruby cover

32 Patterns for joyful coding.

The Making of

Confident Ruby cover

Watch me build an app in Sinatra and Rails

Objects on Rails

Objects on Rails

A developer notebook on applying classic Object-Oriented principles to Ruby on Rails projects.

Exceptional Ruby

Exceptional Ruby

The definitive guide to exceptions and failure handling in Ruby.