The Pickaxe is out and I am happy
I am extremely excited to say that Programming Ruby 3.3, also known as The Pickaxe Book, is now done done, finished, completely available as an ebook, and winding its way to distributors to ship to people as a genuine physical book.
The PDF and ePub versions of the book are available at Pragmatic’s website. The print book should be available wherever you get print books, including Amazon and Bookshop.
I’ve talked in the past about what’s in the book, what’s new, and whether you should buy it. (There’s lots in the book, most of it is new, and you should buy it). Most of that hasn’t changed much, and I don’t feel like I need to rehash it. (Which would have been good to know before I wrote 1000 words rehashing it, only to decide that those words were boring.)
Instead, I want to talk about why this book made me so happy.
This book was immensely fun and satisfying to work on, even more so than I expected it to be. I'm incredibly grateful for the opportunity to be a part of it, it was just a thrill from start to finish.
I want to discuss some small things in the book that make me particularly happy -- things that maybe most readers won’t notice. Maybe that will help explain why I enjoyed this book so much. I'm excited to have it out in the world, and honestly a little sad to be done with it.
One
The book has a custom build platform -- most of the Ruby code that produces output is executed when the book text is generated. The code that runs this process is Ruby, probably written in the early 2000s by Dave Thomas. One of the first things that I had to do when I took over the book was take control of this legacy code, written by one of the best Ruby programmers ever, and tweak it to make it work in a new environment. That... that was cool. Well, it was cool after the panic over not being able to get it to work. But the first time I ran the book and ruby --version
said 3.1.2
and not 2.0.0
-- that was fun.
Now, of course, it says Ruby 3.3, because it took almost two years to write...
Two
Appendix 2 of the book is called “I can’t look it up” and it’s a table of all of Ruby’s non-word symbols, what they do, and what Ruby developers call them (like “spaceship operator”, or “stabby lambda”) so that you can look it up. I don’t know if anybody will use this -- I hope people do -- but I thought the idea was exciting, and it was fun to put together.
(It is sort of on-brand that I finally put images in one of these emails and all the images are of text...)
Three
I like writing asides, and generally have to restrain myself from going off topic down rabbit holes, but I did put one in about the prevalence of programmer tools that start with YA.
Four
I was able, as I have in almost every book I’ve published, to use the name “Ron Lithgow” in an example, a homage to Paul Chadwick’s Concrete, one of my favorite comics. Somehow I seem to have forgotten to use the name “Zach Paleozogt”, a homage to my other favorite 80s indie comic, Scott McCloud’s Zot!.
Five
I bought an entire (cheap) Windows laptop to be able to verify the Windows installation instructions. I had the idea that I’d use it as a games machine, but it’s kind of underpowered and I don’t play that many games. Still, there are a couple of things on my Steam wishlist that are Windows-only, and I bet Hades 2 won’t come out for Mac for a long time...
Six
I had a lot of fun managing Ruby style in the book. I was glad to use Standard to format nearly all the code samples in the book, and bring them to 2024 consensus styling. Being able to write down my sense of Ruby style was fun. It’s something I think about a lot and never really got a chance to write in depth.
There’s an interesting point here about my “Pragmatic” writing voice versus my “blog” writing voice. I talked about this in a RubyConf session, but I don’t think it came out quite the way I meant it. Basically, I do write a little bit differently on the blog versus in a Pragmatic books. Some of that is the voice -- I’m a little looser here, and a bit more likely to go down rabbit holes. (Part of the difference is that I have editors there...). The bigger difference is that when I write here it’s pretty clear that the opinions are just my solo opinions, but if I have a book stamped with the Pragmatic logo, and I’m writing about something like Ruby style, I feel like the contents should reflect community standards and not just something I think. You’ll notice the Ruby style chapter hews pretty close to the consensus styling enforced by Standard. (And if you didn’t notice, I mention in the book). You do get some of my opinions here, especially as to which parts are more important.
There’s one place in the book (not in the style chapter), where I originally decided that I was going to override the community consensus and claim my own preference as preferred style. (It’s the use of private def foo
on a single line -- I think it’s better than having private
on its own line). Multiple reviewers of the first 50% flagged this, and I softened the recommendation in later betas. Though now I wonder if I should have kept it...
Seven
I built a gem for this book to show both how to structure Ruby programs and how gems work. It’s based on a pre-existing code sample in the book that lists anagrams for words by sorting the letters in each word. So naturally, I named the gem aaagmnr, which is “anagram” with the letters sorted. I smiled every time I typed “aaagmnr”, which was fun to type over and over again. I thought it was genuinely funny when, in the very last galley review, I almost randomly caught a place where I had typed “aagmnr” without the third “a” -- almost hard to believe that the copy-editor missed that one.
That’s seven of the many things in the book that made me happy. The whole process of structuring the book, adding in the new Ruby bits, re-arranging things where it seemed appropriate, was all immensely satisfying, and I hope you all enjoy reading and using it as much as I enjoyed writing it.
One more time
You can buy the book in the following places:
Ebook: https://pragprog.com/titles/ruby5 Amazon: https://amzn.to/495DSvh Bookshop: https://bookshop.org/p/books/programming-ruby-3-2-the-pragmatic-programmers-guide-dave-thomas/19924522?ean=9781680509823
In response to a question I got on Mastodon, if you buy it, it doesn’t make a difference to me which way you buy it, I’m just happy to have you as a reader. If you like the book and want to help make sure the book finds its audience, the best way is by rating and reviewing it on Amazon or wherever you purchased it.
Thanks!
Also, with the book done (and some medical stuff out of the way), there will be more newsletter content, I have several half-done posts, and we'll be back on a week-to-ten-days schedule from here on out.
Dynamic Ruby is brought to you by Noel Rappin.
Comments and archive at noelrappin.com, or contact me at noelrap@ruby.social on Mastodon or @noelrappin.com on Bluesky.
To support this newsletter, subscribe by following one of these two links: