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 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 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 '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).
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).
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).
Nadia and Saron discuss section 1.2, Judging Code, in Sandi Metz and Katrina Owen's '99 Bottles'.
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.
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).
Nadia and Saron discuss 1.1.1 Incomprehensibly Concise from Sandi Metz and Katrina Owen's newest book, '99 Bottles'.
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'.
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.
In which Nadia and Saron discuss the second part of MetricFu (7.1), Stringer (7.2), and Avdi's Parting Words (8).
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).
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).
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).
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).
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.
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).
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).
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).
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.
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.
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
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).
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
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).
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