Spotlight: Chris Pine (Author)

Hi @DevotionGeo,

obviously I’m not @chrispine :smiley:.
Anyway, the preface say so:

For the 3rd Edition of this book, I’ve updated all of the examples for Ruby 3, the latest version of the language.
— Cris Pine. Learn to Program. 3rd edition.


Thank you @s2k! :slight_smile:


No, not in those terms.

For me, it was more like, “The world needs a resource for getting into programming that does not assume any prior knowledge.” Around the time I started, there were a few other tutorials that others were working on, and they were getting lots of praise… from people who were obviously already Ruby programmers. And I would ask, have you shown this to a non-Rubyist, or even a non-programmer, to see if this is helpful? No one ever said yes.

So I thought, well, I’ll do it myself. :slight_smile: It meant a ton more work for me, but in the end we have a book so much better than I could even have written on my own. :slight_smile: Of course I’m thrilled that it’s made such a difference for so many.


Because the book is mostly targeting the basics of Ruby, I haven’t actually had to change that much. It’s kind of surprising how similar the current examples are to the ones I originally wrote for Ruby 1.4 or 1.6. Even so, I did run every single example in Ruby 3.0 (and some of the release candidates before that) to make sure everything was correct. Sadly, there was no good way to automate this in the latest iteration of the PragProg toolchain, so it was a ton of manual work. Y’all are worth it, though! (If I were starting from scratch, I would set things up differently to make it easier to automate.)

The biggest change to the examples in the 3rd edition are actually not because Ruby has changed, but because the style of Ruby has changed: in the olden days (lol, I don’t feel that old!), we tended to favor single-quotes over double-quotes for most strings, and we tended to favor “poetry mode” (not using parens for method calls). Now parens are the norm in most cases.

Finally, part of the PragProg book process is technical review, where I sent a draft to a handful of professional Ruby engineers to see if anything looks weird to them, just to make sure I’m not overlooking anything. (Which I was, so thank you, reviewers!)


Hi @chrispine ,

Nice to talk with you here. I read your first edition book when I started my programming journey on ruby!
I have taught programming to students for a few years, and I will review all the material every time before I start teaching new group of them.
Thus I am quite curious what motivate you to update your book?
Also, as a book with some history, how will you decide to add or remove the content of the book?


Good questions! The short answer: I released the 2nd Edition when Ruby 2.0 came out, and the 3rd Edition when Ruby 3.0 came out. (Though honestly, almost none of my examples needed to be changed because of changes to Ruby. It just seemed like a good time for it.)

So that’s the cadence. As far as what to change, I guess there are three categories:

  1. What have I gotten a lot of questions about (because those parts are confusing people, so I should change/remove them).
  2. Do the examples look dated? If so, update them. (For example, it used to be very unpopular to use parentheses when calling methods, but now that’s the norm.)
  3. Are there cool things I could add that used to be just a little too hard, but are now pretty easy? (This is why I added the chapter on APIs, which was really fun to write!)



Hello everyone!

I’m your friendly Devtalk bot :nerd_face:

Thank you to all of you who participated in our Spotlight AMA!

This is now closed and all of those who commented above have been entered into the draw - meaning we’re now ready to pick a winner!

The process will be initiated when somebody clicks the special link below:

:arrow_right: :arrow_right: :arrow_right: :arrow_left: :arrow_left: :arrow_left:

Don’t be shy, we need one of you to help make the magic happen! :sparkles:


Thank you for initiating the draw process…

Entering the following members into the draw…

:arrow_down: :arrow_down: :arrow_down: :arrow_down: :arrow_down: :arrow_down: :arrow_down: :arrow_down:


And the winner is…

Drum roll…


Congratulations @DevotionGeo you are the chosen one!! We’ll be in touch about your prize via PM soon :smiley:

Thank you everyone who entered, and of course @ for taking part in our Spotlight - thank you! :blue_heart:


OMG, I only just realized who you are!! (I missed the chrispi and the sten1ee the first time.) How the hell are you!! It’s been almost 10 years, hasn’t it?


I think we all want to know who @sten1ee is as well now Chris - dunno why but it sounds like there’s a story to share there :smiley:


I don’t want to doxx an old friend, but we used to work together at Opera Software back in the day. One of the kindest, smartest people I’ve had the pleasure of working with!


That’s awesome!! Opera was my favourite browser until they switched to chrome - kudos to you both! :sunglasses:


Ditto, Opera was awesome for how it was built, oandr firefox for the extendability, I used both routinely back in the day. ^.^


When you answered my question I though: Oh well … may be I just wait for the next edition of “Learn to Program” …

I think in October it will be 11 years since we last met.
Good ol’days in good old Oslo …

Thank you for introducing me in such a bright (and a tad overly optimistic) perspective. I wish I was half that kind (presuming we’re talking Maitrī here). But I am trying, I am working on it …

That was the first time I moved out of my home city and country (at ~30 y.o. which is darn late, if you ask me now) and despite Opera’s great care for its new recruits (really, the only thing missing was the actual red carpet upon your arrival) the first 3-4 (winter) months would have been unbearable without Chris’s kindest care (and also Ismail’s - my roomie in the “Opera apartment” we shared in the first 5 months of my arrival).

And this is only the start of a (medium length) list of ‘things’ I owe to my interaction with Chris. I’ll name a few more:

  • Getting acquainted with Ruby to which I failed to pay proper attention until 2018 (that much of a statically typed prog langs guy I was). But hey, check out my Exercism track now!
  • Evolving my English to a much more usable level. I can now just open my mouth and let it all pour out (sometimes to my own surprise and/or dismay …)
  • Introducing me to home brewing (man, was that awesome!?) Not that I am a beer connoisseur now, but now I surely prefer good beer to just beer

And I still remember (and retell) that gag from your “Why you should brew your own beer” presentation:
But what about if you’re already rich and you don’t wanna have fun? :rofl:


Sounds like you had some great times @sten1ee :sunglasses: - you’ll have to tell us what you’re up to now (I’m sure Chris won’t mind us using his thread!) are you still at Opera?

1 Like

you’ll have to tell us what you’re up to now

@AstonJ, I somehow missed the inference chain that leads to the above conclusion :slight_smile:
As a friend of mine used to say: You should be more concerned with What am I up to? as this is where most of your troubles come from anyway :rofl:

are you still at Opera?

No, I left Opera 10 years ago - I was ‘up to no good’ at that point in my life which led me to some erratic moves, this one including.


Well you see now I am even more curious :joy:

1 Like

(Sorry for the slow response; I was traveling all day yesterday.)

When you answered my question I though: Oh well … may be I just wait for the next edition of “Learn to Program” …

No, I just didn’t notice your account name, and I’ve been chrispi at a few different companies, so that part didn’t jog my memory. Looking back at the thread later and realizing it was you, I felt so stupid! :laughing:

But what about if you’re already rich and you don’t wanna have fun? :rofl:

I still think about that talk sometimes!! That was a really fun trip, good times!

Finally, let me just point out the irony of you writing incredibly kind things about me, while also saying you’re not very kind… :wink: