Menu Sidebar

Avdi Grimm

Hacker; code documentarian.


Matching hostnames with pcase in Elisp

I am not what you might call a “competent” Emacs Lisp programmer. More of a cargo-culter, really. But I’m trying to get better. I create RubyTapas episodes across two different machines: “hazel”, my main development box, and “caroline”, my Windows video editing box. I needed to be able to recognize my synchronized episode directory on […]

Some Pharo 4 Getting-Started Tips

Pharo 4 is a fast-developing¬†project, and like any project that moves fast and has a small community, the development sometimes outstrips the documentation. Since I’ve started to play with Pharo I’ve seen some other newbies pipe up with the same questions that first tripped me up, so I thought I’d jot down a few tips.

Playing with JSON in Postgres

I can fetch a JSON list of subscribers like this:

Then there’s jq, which is basically AWK for JSON. The following invocation simply breaks a top-level JSON array into an object per line.

And then there’s Postgres, which has a COPY command that will (by default) accept a row per line, with columns […]

Older Posts

Virtuous Code

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


News, notes, and commentary from Avdi, weekly-ish.

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.