Where we discuss an hour of a Ruby book each week
Nadia Odunayo & Saron Yitbarek
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.
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.
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.
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'.
Nadia and Saron finish Chapter 7! They discuss how Ruby implements hash functions and hash optimisation in Ruby 2.0.
Nadia and Saron start Chapter 7. They talk about hash tables, including how we save and retrieve values from them, hash collisions, and rehashing.
Nadia and Saron discuss constant lookup and finish off Chapter 6.
Nadia and Saron discuss Module#prepend and dive deeper into how modules and submodules behave.
Nadia and Saron discuss the global and inline method caches, including modules into classes and one another.
Nadia and Saron start Chapter 6! They discuss how Ruby implements modules and the method lookup algorithm.
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.
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.
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.
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'.
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.
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.
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.
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.
Nadia and Saron look at local and dynamic access of variables in chapter 3 of Ruby Under A Microscope.
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.
Nadia and Saron start chapter 3, which explores the step after compilation: code execution.
Nadia and Saron finish off Chapter 2 of 'Ruby Under A Microscope', looking at the Local Table.
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.
Nadia and Saron continue on with Chapter 2. They look at how Ruby compiles a simple script and compiling a call to a block.
Nadia and Saron continue with Chapter 1 and dig into parsing. They also take a look ahead at Chapter 2, which covers compilation.
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.
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.
Nadia and Saron finish Chapter 6 of Refactoring Ruby. They discuss Isolate Dynamic Receptor and Move Eval from Runtime to Parse Time.
In this rebroadcast, Nadia and Saron interview Sandi Metz and Katrina Owen on their book, 99 Bottles of OOP.
Nadia and Saron continue with Chapter 6 discussing Dynamic Method Definition and Replace Dynamic Receptor with Dynamic Method Definition.
Nadia and Saron continue discussing Chapter 6, covering the methods Introduce Named Parameter, Remove Named Parameter, and Remove Unused Default Parameter.
Nadia and Saron discuss three more refactoring methods in Chapter 6: Replace Loop with Collection Closure Method, Extract Surrounding Method, and Introduce Class Annotation.
Nadia and Saron look at Remove Assignments to Parameters, Replace Method with Method Object, and Substitute Algorithm.
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.
Nadia and Saron jump to Chapter 6 of Refactoring: Ruby, "Composing Methods." They discuss the Extract Method, the Inline Method, and Inline Temp.
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.
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.
Nadia and Saron finish off the refactoring example in Chapter 1.
Nadia and Saron begin refactoring the movie rental example in Chapter 1.
Nadia and Saron start a new book — Refactoring: Ruby Edition. They discuss the Foreword, the Preface, and the first 7 pages of Chapter 1.
Nadia and Saron discuss Creating BottleNumbers (5.5), Recognizing Liskov Violations (5.6), and the Summary (5.7).
Nadia and Saron discuss Trusting The Process (5.2.5), Appreciating Immutability (5.3), and Assuming Fast Enough (5.4).
Nadia and Saron discuss Extracting BottleNumber (5.2.3) and Removing Arguments (5.2.4).
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).
Nadia and Saron discuss Identifying Patterns in Code (5.1.1) and Spotting Common Qualities (5.1.2).
Nadia and Saron discuss Discovering Deeper Abstractions (4.8), Depending on Abstractions (4.9), and the summary to Chapter 4 (4.10).
Nadia and Saron discuss Seeking Stable Landing Points (4.5), Obeying the Liskov Substitution Principle (4.6), and Taking Bigger Steps (4.7).
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).
Nadia and Saron discuss Unearthing Concepts (3.7), and Summary (3.8).
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).
Nadia and Saron discuss 'Writing Cost-Effective Tests' (2.10), 'Avoiding the Echo-Chamber' (2.11), 'Considering Options' (2.12), and 'Summary' (2.13).