Birthday Sale!

It’s my birthday, and as is my custom I’m throwing a sale to celebrate!

EDIT: The deals below are now over. But you can still watch the video!

First off, today you can get the first 3 months of a new RubyTapas subscription for the price of one. Follow this link to redeem the deal!

Why should you sign up for RubyTapas? Here’s a brand new freebie episode to whet your apetite:

Still not sure? Check out all the other free episodes. Convinced? Here’s that sale link again.

confident-ruby-cover-smallAlso, today you can get Confident Ruby, any edition, at half price! Just go to the Confident Ruby site and use coupon code HAPPY0X23.

Fun fact about Confident Ruby that I haven’t gotten around to mentioning on the book’s homepage: it has a foreword by Sandi Metz, author of Practical Object Oriented Design in Ruby! How cool is that?!

Actually, I lied. The code is not just for Confident Ruby. You can get anything in my store for 50% off using code HAPPY0X23.

Happy hacking!

3 comments

  1. Hey Avdi,

    belated congratulations!
    I’ve been subscribed to your Ruby Tapas for over a year now, and I’m very happy with your little screencasts about Ruby. So thank you very much for producing them!

    I just watched this episode again and noticed something that I suppose is a tiny bug in that one-liner you present at the end: The line is scanned for tabs or spaces until it hits a non-whitespace character and then the minimum count of matches across all lines is removed. However, tabs have a different size than simple spaces so when some lines are indented via tab and others via spaces, the result will not be properly unindented.
    I guess this is just another example of why one shouldn’t mix tabs and spaces, it makes live so much easier to stick with just one. 🙂

    Best regards,
    Kai

  2. pg 54สล็อตออนไลน์ แจกโปรฯดี เล่นเกมพร้อมเครดิตฟรี ได้กำไรไม่ยั้งแบบจัดเต็ม เล่นเกมสล็อตออนไลน์ แบบคุ้มๆได้เงินจนถึงมั่งมีได้ เกม PG ออนไลน์ที่ให้ได้มากกว่าที่อื่นๆ

Leave a Reply

Your email address will not be published. Required fields are marked *