Ruby Book Club Podcast: Recent Episodes

Nadia Odunayo & Saron Yitbarek

Where we discuss an hour of a Ruby book each week

View Details

In which Nadia and Saron wrap up the Ruby Book Club podcast! Hear why the show has come to an end, what Nadia and Saron have learnt over the last 2 years, and what they're planning to read next.

View Details

Nadia and Saron finish Chapter 8. They discuss the proc object, changing local variables after lambda has already been called, and calling lambda more than once in the same scope.

View Details

Nadia and Saron continue with Chapter 8. They look at lambdas and procs, including treating functions as first-class citizens, stack vs. heap memory, and how Ruby saves a string value.

View Details

Nadia and Saron start Chapter 8. They discuss blocks! We learn about closures and which is faster: a 'while' loop or passing a block to 'each'.

View Details

Nadia and Saron finish Chapter 7! They discuss how Ruby implements hash functions and hash optimisation in Ruby 2.0.

View Details

Nadia and Saron start Chapter 7. They talk about hash tables, including how we save and retrieve values from them, hash collisions, and rehashing.

View Details

Nadia and Saron discuss constant lookup and finish off Chapter 6.

View Details

Nadia and Saron discuss Module#prepend and dive deeper into how modules and submodules behave.

View Details

Nadia and Saron discuss the global and inline method caches, including modules into classes and one another.

View Details

Nadia and Saron start Chapter 6! They discuss how Ruby implements modules and the method lookup algorithm.

View Details

Nadia and Saron continue Chapter 5. They look at the RClass structure some more and look at where Ruby saves class methods. Then they review key takeaways from Chapter 5.

View Details

Nadia and Saron continue Chapter 5. They look at the RClass structure, including inheritance, class instance variables vs. class variables, getting and setting class variables, and constants.

View Details

Nadia and Saron finish continue Chapter 5, where they delve a bit deeper into the internal structure of a Ruby class, discuss generic objects, look at objects that are so simple that they don’t need a structure, the mystery of instance variables on generic objects, and more.

View Details

Nadia and Saron finish off Chapter 4 and start Chapter 5. They look at how Ruby implements keyword arguments and start to look at the inside of a Ruby object, focusing on 'klass' and 'ivptr'.

View Details

Nadia and Saron continue with Chapter 4, looking at how Ruby implements for loops internally, the send instruction, calling normal Ruby methods, and calling built-in Ruby methods.

View Details

Nadia and Saron get stuck into Chapter 4. They look at how Ruby executes if statements, how Ruby jumps from one scope to another, and catch tables.

View Details

Nadia and Saron pick up where they left off in Chapter 3 and dive deeper into special variables, summarize what they've learnt in chapter 3, and look ahead to Chapter 4.

View Details

Nadia and Saron take a break from the book to look at some helpful notes that Pat Shaughnessy put together for them based on questions they had in Episodes 7 and 8.

View Details

Nadia and Saron look at local and dynamic access of variables in chapter 3 of Ruby Under A Microscope.

View Details

Nadia and Saron look at executing a call to a block, paying particular attention to control frame structures, how YARV instructions are constructed, and benchmarking Ruby 2.0 and 1.9 against Ruby 1.8.

View Details

Nadia and Saron start chapter 3, which explores the step after compilation: code execution.

View Details

Nadia and Saron finish off Chapter 2 of 'Ruby Under A Microscope', looking at the Local Table.

View Details

Nadia and Saron interview Pat Shaughnessy, author of Ruby Under A Microscope, about writing the book, what got him interested in Ruby internals, and why Ruby is still one of his favorite languages.

View Details

Nadia and Saron continue on with Chapter 2. They look at how Ruby compiles a simple script and compiling a call to a block.

View Details

Nadia and Saron continue with Chapter 1 and dig into parsing. They also take a look ahead at Chapter 2, which covers compilation.

View Details

Nadia and Saron continue with Chapter 1 of "Ruby Under A Microscope". They explore parsing in more detail, looking at the LALR algorithm and Ruby's grammar rules.

View Details

Nadia and Saron start a brand new book, "Ruby Under A Microscope" by Pat Shaughnessy. They review the Foreword, Introduction, and start Chapter 1 which is about tokenization and parsing.

View Details

Nadia and Saron finish Chapter 6 of Refactoring Ruby. They discuss Isolate Dynamic Receptor and Move Eval from Runtime to Parse Time.

View Details

In this rebroadcast, Nadia and Saron interview Sandi Metz and Katrina Owen on their book, 99 Bottles of OOP.

View Details

Nadia and Saron continue with Chapter 6 discussing Dynamic Method Definition and Replace Dynamic Receptor with Dynamic Method Definition.

View Details

Nadia and Saron continue discussing Chapter 6, covering the methods Introduce Named Parameter, Remove Named Parameter, and Remove Unused Default Parameter.

View Details

Nadia and Saron discuss three more refactoring methods in Chapter 6: Replace Loop with Collection Closure Method, Extract Surrounding Method, and Introduce Class Annotation.

View Details

Nadia and Saron look at Remove Assignments to Parameters, Replace Method with Method Object, and Substitute Algorithm.

View Details

Nadia and Saron continue Chapter 6 of Refactoring: Ruby, "Composing Methods." They discuss the Replace Temp with Query, Replace Temp with Chain, Introduce Explaining Variable, and Split Temporary Variable.

View Details

Nadia and Saron jump to Chapter 6 of Refactoring: Ruby, "Composing Methods." They discuss the Extract Method, the Inline Method, and Inline Temp.

View Details

Nadia and Saron finish off Chapter 2 of Refactoring: Ruby. They discuss problems with refactoring, when you shouldn't refactor, and how refactoring ties into design.

View Details

Nadia and Saron continue reading Chapter 2, Principles of Refactoring. They discuss the origin of refactoring, why and when you should refactor, why refactoring works, and how to broach the subject in the workplace.

View Details

Nadia and Saron finish off the refactoring example in Chapter 1.

View Details

Nadia and Saron begin refactoring the movie rental example in Chapter 1.

View Details

Nadia and Saron start a new book — Refactoring: Ruby Edition. They discuss the Foreword, the Preface, and the first 7 pages of Chapter 1.

View Details

Nadia and Saron discuss Creating BottleNumbers (5.5), Recognizing Liskov Violations (5.6), and the Summary (5.7).

View Details

Nadia and Saron discuss Trusting The Process (5.2.5), Appreciating Immutability (5.3), and Assuming Fast Enough (5.4).

View Details

Nadia and Saron discuss Extracting BottleNumber (5.2.3) and Removing Arguments (5.2.4).

View Details

Nadia and Saron discuss Enumerating Flocked Method Commonalities (5.1.3), Insisting Upon Messages (5.1.4), Modeling Abstractions (5.2.1), and Naming Classes (5.2.2).

View Details

Nadia and Saron discuss Identifying Patterns in Code (5.1.1) and Spotting Common Qualities (5.1.2).

View Details

Nadia and Saron discuss Discovering Deeper Abstractions (4.8), Depending on Abstractions (4.9), and the summary to Chapter 4 (4.10).

View Details

Nadia and Saron discuss Seeking Stable Landing Points (4.5), Obeying the Liskov Substitution Principle (4.6), and Taking Bigger Steps (4.7).

View Details

Nadia and Saron start Chapter 4, 'Practicing Horizontal Refactoring'. They look at 'Replacing Difference With Sameness' (4.1), 'Equivocating About Names' (4.2), 'Deriving Names From Responsibilities' (4.3), and 'Choosing Meaningful Defaults' (4.4).

View Details

Nadia and Saron discuss Unearthing Concepts (3.7), and Summary (3.8).

View Details

Nadia and Saron discuss 'Listening To Change' (3.1), 'Starting with the Open/Closed Principle' (3.2), 'Recognizing Code Smells' (3.3), 'Identifying the Best Point of Attack (3.4), 'Refactoring Systematically' (3.5), and 'Following the Flocking Rules' (3.6).

View Details

Nadia and Saron discuss 'Writing Cost-Effective Tests' (2.10), 'Avoiding the Echo-Chamber' (2.11), 'Considering Options' (2.12), and 'Summary' (2.13).

View Details

Nadia and Saron continue on with Chapter 2, 'Test Driving Shameless Green'. This week they discuss 'Hewing To The Plan' (2.6), 'Exposing Responsibilities' (2.7), 'Choosing Names' (2.8), and 'Revealing Intentions' (2.9).

View Details

Nadia and Saron begin Chapter 2: Test Driving Shameless Green and discuss Understanding Testing (2.1), Writing the First Test (2.2), Removing Duplication (2.3), Understanding Transformations (2.4), and Tolerating Duplication (2.5).

View Details

Nadia and Saron discuss section 1.2, Judging Code, in Sandi Metz and Katrina Owen's '99 Bottles'.

View Details

Nadia and Saron chat with Sandi Metz and Katrina Owen about how they wrote the book, what it was like to work together, and how readers can get the most out of the book.

View Details

In which Nadia and Saron discuss the following possible solutions to the 99 Bottles song: Speculatively General (1.1.2), Concretely Abstract (1.1.3), and Shameless Green (1.1.4).

View Details

Nadia and Saron discuss 1.1.1 Incomprehensibly Concise from Sandi Metz and Katrina Owen's newest book, '99 Bottles'.

View Details

In which Nadia and Saron start discussing Sandi Metz and Katrina Owen's '99 Bottles'. They start with the Preface and go up to the introduction to section 1.1., 'Simplifying Code'.

View Details

In which Nadia and Saron talk to Avdi Grimm about his book, Confident Ruby, how he came about creating it and what he hopes listeners get from reading it.

View Details

In which Nadia and Saron discuss the second part of MetricFu (7.1), Stringer (7.2), and Avdi's Parting Words (8).

View Details

In which Nadia and Saron discuss using bouncer methods (6.3), the introduction to the 'Refactoring for Confidence' section (7), and the first part of MetricFu (7.1).

View Details

In which Nadia and Saron discuss signaling early termination with throw (5.7), handling failure (6), preferring top-level rescue clause (6.1), and using checked methods for risky operations (6.2).

View Details

In which Nadia and Saron discuss representing failure with a special case object (5.4), returning a status object (5.5), and yielding a status object (5.6).

View Details

In which Nadia and Saron start Section 5 of Confident Ruby, "Delivering Results." They discuss writing total functions (5.1), using call backs instead of returning (5.2), and representing failure with a benign value (5.3).

View Details

In which Nadia and Saron discuss yielding a parameter builder object (4.22) and receiving policies instead of data (4.23). They also repeatedly refer to Chapter 4 as Chapter 2 at the end, but that's because they started discussing Chapter 4 in Episode 2.

View Details

In which Nadia and Saron discuss substituting a benign value for nil (4.19), using symbols as placeholder objects (4.20), and bundling arguments into parameter objects (4.21).

View Details

In which Nadia & Saron discuss handling special cases with a Guard Clause (4.16), representing special cases as objects (4.17), and representing do-nothing cases as null objects (4.18).

View Details

In which Nadia & Saron discussing using #fetch to assert the presence of Hash keys (4.13), using #fetch for defaults (4.14), and documenting assumptions with assertions (4.15).

View Details

In which Nadia & Saron discuss wrapping collaborators in adapters (4.10), using transparent adapters to gradually introduce abstraction (4.11), and rejecting unworkable values with preconditions.

View Details

Nadia and Saron visit Kansas City for RailsConf 2016, the largest conference for rails developers. They reflect on amazing talks, key takeaways, and their conference experience.

View Details

In which Nadia and Saron discuss defining conversion functions (4.8) and replacing "string typing" with classes (4.9).

Links

Thoughtbot on Polymorphism in Ruby

View Details

In which Nadia and Saron discuss defining conversions to user-defined types (4.5), using built-in conversion functions (4.6), and taking a closer look at the Array() conversion function (4.7).

View Details

In which Nadia and Saron discuss how to conditionally call conversion methods (4.3) and how to define your own conversion protocols (4.4).

Links

Peter Saxton's Domain Driven Design blog series

View Details

In which Saron and Nadia discuss the introduction to the 'Collecting Input' section (4.1) and look at using built-in conversion protocols (4.2).

View Details

In which Saron and Nadia discuss how the Ruby Book Club came to be and discuss the foreword (chapter 1) and introduction (chapter 2) to Avdi Grimm's 'Confident Ruby'. They also discuss Chapter 3, 'Performing Work'.

Links

Confident Ruby

Practical Object-Oriented Design in Ruby