Skip to content

Instantly share code, notes, and snippets.

@lsaville
Last active May 19, 2021 13:45
Show Gist options
  • Save lsaville/f917f220b10bfab8c51d70e72b94e5c9 to your computer and use it in GitHub Desktop.
Save lsaville/f917f220b10bfab8c51d70e72b94e5c9 to your computer and use it in GitHub Desktop.
  • Episode #001: Episode #001: Binary Literals
  • Episode #002: Episode #002: Large Integer Literals
  • Episode #003: Episode #003: Character Literals
  • Episode #004: Episode #004: Barewords
  • Episode #005: Episode #005: Array Literals
  • Episode #006: Episode #006: Forwardable
  • Episode #007: Episode #007: Constructors
  • Episode #008: Episode #008: #fetch as an Assertion
  • Episode #009: Episode #009: Symbol Literals
  • Episode #010: Episode #010: Finding $HOME
  • Episode #011: Episode #011: Method and Message
  • Episode #012: Episode #012: #fetch for Defaults
  • Episode #013: Episode #013: Singleton Objects
  • Episode #014: Episode #014: super
  • Episode #015: Episode #015: Advanced #fetch
  • Episode #016: Episode #016: super in Modules
  • Episode #017: Episode #017: Pay it Forward
  • Episode #018: Episode #018: Subclassing Array
  • Episode #019: Episode #019: Pluggable Selector
  • Episode #020: Episode #020: Struct
  • Episode #021: Episode #021: Domain Model Events
  • Episode #022: Episode #022: Inline Rescue
  • Episode #023: Episode #023: Tempfile
  • Episode #024: Episode #024: Incidental Change
  • Episode #025: Episode #025: OpenStruct
  • Episode #026: Episode #026: FFI Part 1: Proof of the Concept
  • Episode #027: Episode #027: Macros and Modules
  • Episode #028: Episode #028: Macros and Modules, Part 2
  • Episode #029: Episode #029: Redirecting Output
  • Episode #030: Episode #030: Backticks
  • Episode #031: Episode #031: Observer Variations
  • Episode #032: Episode #032: Hash Default Blocks
  • Episode #033: Episode #033: Classes and Constants
  • Episode #034: Episode #034: Struct from Hash
  • Episode #035: Episode #035: Callable
  • Episode #036: Episode #036: Blocks, Procs, and Lambdas
  • Episode #037: Episode #037: Proc and Threequals
  • Episode #038: Episode #038: Caller-Specified Fallback
  • Episode #039: Episode #039: Gem Love Part 1
  • Episode #040: Episode #040: Gradual Stiffening
  • Episode #041: Episode #041: String#scan
  • Episode #042: Episode #042: Streaming
  • Episode #043: Episode #043: Exclusive Or
  • Episode #044: Episode #044: #one?
  • Episode #045: Episode #045: Hash Default Value
  • Episode #046: Episode #046: Gem Love Part 2
  • Episode #047: Episode #047: FFI Part 2: Smoke Test One
  • Episode #048: Episode #048: Memoize
  • Episode #049: Episode #049: Utility Function
  • Episode #050: Episode #050: Include Namespace Module
  • Episode #051: Episode #051: FFI Part 3: A New Library
  • Episode #052: Episode #052: The End of Mocking
  • Episode #053: Episode #053: Selectively Run Tests
  • Episode #054: Episode #054: FFI Part 4: Test of the Mainloop
  • Episode #055: Episode #055: Runnable Library
  • Episode #056: Episode #056: xmpfilter
  • Episode #057: Episode #057: FFI Part 5: The Mock API
  • Episode #058: Episode #058: ARGF
  • Episode #059: Episode #059: Enumerator
  • Episode #060: Episode #060: Ascend
  • Episode #061: Episode #061: FFI Part 6: PulseFFI Awakens
  • Episode #062: Episode #062: Fiber
  • Episode #063: Episode #063: Gem-Love Part 3
  • Episode #064: Episode #064: Yield or Enumerate
  • Episode #065: Episode #065: FFI Part 7: The Last Refactor
  • Episode #066: Episode #066: Caching an API
  • Episode #067: Episode #067: Moneta
  • Episode #068: Episode #068: Display Builder
  • Episode #069: Episode #069: Gem-Love Part 4
  • Episode #070: Episode #070: Break
  • Episode #071: Episode #071: Break With Value
  • Episode #072: Episode #072: Tail Part 1: Random Access
  • Episode #073: Episode #073: Tail Part 2: Do While
  • Episode #074: Episode #074: Tail Part 3: #rindex
  • Episode #075: Episode #075: Tail Part 4: copy
  • Episode #076: Episode #076: Tail Part 5: Idiom
  • Episode #077: Episode #077: Tail Part 6: Process As Object
  • Episode #078: Episode #078: Tail Part 7: Cooperating Objects
  • Episode #079: Episode #079: Concat
  • Episode #080: Episode #080: Splat Basics
  • Episode #081: Episode #081: Implicit Splat
  • Episode #082: Episode #082: Inline Assignment
  • Episode #083: Episode #083: Custom Splat
  • Episode #084: Episode #084: Splat Group
  • Episode #085: Episode #085: Ignore Arguments
  • Episode #086: Episode #086: Naked Splat
  • Episode #087: Episode #087: Naming Things: Headcount
  • Episode #088: Episode #088: Gem Love Part 5
  • Episode #089: Episode #089: Coincidental Duplication
  • Episode #090: Episode #090: class<<self
  • Episode #091: Episode #091: Ruby 2.0: Rebinding Methods
  • Episode #092: Episode #092: Coincidental Duplication Redux
  • Episode #093: Episode #093: Boolean
  • Episode #094: Episode #094: Bang Bang
  • Episode #095: Episode #095: Gem-Love Part 6
  • Episode #096: Episode #096: Gem-Love 7
  • Episode #097: Episode #097: Gem-Love 8
  • Episode #098: Episode #098: Gem-Love Part 9
  • Episode #099: Episode #099: String Subscript Regex
  • Episode #100: Episode #100: Screen Scraping Gateway
  • Episode #101: Episode #101: Intention Revealing Message
  • Episode #102: Episode #102: Gem-Love Part 10
  • Episode #103: Episode #103: Gem-Love Part 11
  • Episode #104: Episode #104: Parsing Time
  • Episode #105: Episode #105: Checking for a Terminal
  • Episode #106: Episode #106: Class Accessors
  • Episode #107: Episode #107: String Subscript Assignment
  • Episode #108: Episode #108: The Trouble With Nil
  • Episode #109: Episode #109: SAX
  • Episode #110: Episode #110: Catch And Throw
  • Episode #111: Episode #111: Symbol Placeholder
  • Episode #112: Episode #112: Special Case
  • Episode #113: Episode #113: p
  • Episode #114: Episode #114: Null Object
  • Episode #115: Episode #115: pp
  • Episode #116: Episode #116: Extract Command Object
  • Episode #117: Episode #117: Client Session Object
  • Episode #118: Episode #118: Even And Odd
  • Episode #119: Episode #119: Intention Revealing Argument
  • Episode #120: Episode #120: Outside-In
  • Episode #121: Episode #121: Testing Blocks
  • Episode #122: Episode #122: Testing Blocks With Rspec
  • Episode #123: Episode #123: Removing Debug Output
  • Episode #124: Episode #124: Elixir
  • Episode #125: Episode #125: And/Or
  • Episode #126: Episode #126: Queue
  • Episode #127: Episode #127: Parallel Fib
  • Episode #128: Episode #128: Enumerable Queue
  • Episode #129: Episode #129: Rake
  • Episode #130: Episode #130: Rake File lists
  • Episode #131: Episode #131: Rake Rules
  • Episode #132: Episode #132: Rake Pathmap
  • Episode #133: Episode #133: Rake File Operations
  • Episode #134: Episode #134: Rake Clean
  • Episode #135: Episode #135: Rake Multitask
  • Episode #136: Episode #136: Dead Thread
  • Episode #137: Episode #137: Mutex
  • Episode #138: Episode #138: Condition Variable
  • Episode #139: Episode #139: Timed Queue
  • Episode #140: Episode #140: Threads are Hard
  • Episode #141: Episode #141: Bounded Queue
  • Episode #142: Episode #142: Infinity
  • Episode #143: Episode #143: Thread Interruptions
  • Episode #144: Episode #144: Bulk Generation
  • Episode #145: Episode #145: Active Object
  • Episode #146: Episode #146: Monitor
  • Episode #147: Episode #147: Atomicity
  • Episode #148: Episode #148: Rake Invoke
  • Episode #149: Episode #149: Sum
  • Episode #150: Episode #150: Stats
  • Episode #151: Episode #151: Sleep
  • Episode #152: Episode #152: Progress Bar
  • Episode #153: Episode #153: Testing Sleep
  • Episode #154: Episode #154: Testing Threads
  • Episode #155: Episode #155: Matching Digits
  • Episode #156: Episode #156: Array New with James Edward Gray II
  • Episode #157: Episode #157: Lockstep Testing
  • Episode #158: Episode #158: Constant Lookup Scope
  • Episode #159: Episode #159: Array Set Operations
  • Episode #160: Episode #160: Reduce Redux
  • Episode #161: Episode #161: Thread Local Variable
  • Episode #162: Episode #162: PStore
  • Episode #163: Episode #163: YAML::Store
  • Episode #164: Episode #164: Mapper
  • Episode #165: Episode #165: Refactor Tapas::Queue
  • Episode #166: Episode #166: Not Implemented
  • Episode #167: Episode #167: Debugging in Gems
  • Episode #168: Episode #168: Enumerable Internals
  • Episode #169: Episode #169: Caching Gateway
  • Episode #170: Episode #170: Hash Merge
  • Episode #171: Episode #171: puts
  • Episode #172: Episode #172: Registry
  • Episode #173: Episode #173: For
  • Episode #174: Episode #174: Multiple Assignment
  • Episode #175: Episode #175: REPL-Driven Development
  • Episode #176: Episode #176: Dotenv
  • Episode #177: Episode #177: Aliasing
  • Episode #178: Episode #178: Identity Map
  • Episode #179: Episode #179: Sequel
  • Episode #180: Episode #180: Ghost Load
  • Episode #181: Episode #181: Schwartzian Transform
  • Episode #182: Episode #182: Macro
  • Episode #183: Episode #183: Extracting Ghost Load
  • Episode #184: Episode #184: Sequel, Postgres, JSON
  • Episode #185: Episode #185: Two Refactorings
  • Episode #186: Episode #186: Keyword Arguments
  • Episode #187: Episode #187: More Keyword Arguments
  • Episode #188: Episode #188: Fail And Raise
  • Episode #189: Episode #189: Assisted Refactoring
  • Episode #190: Episode #190: Gsub
  • Episode #191: Episode #191: Virtual Proxy
  • Episode #192: Episode #192: Filenames
  • Episode #193: Episode #193: Pathname
  • Episode #194: Episode #194: String Format
  • Episode #195: Episode #195: Advanced String Formats
  • Episode #196: Episode #196: String Templates
  • Episode #197: Episode #197: Decorator
  • Episode #198: Episode #198: Decorator Transparency
  • Episode #199: Episode #199: Regexp Union
  • Episode #200: Episode #200: Quantity
  • Episode #201: Episode #201: Immutable Object
  • Episode #202: Episode #202: Identity And Equality
  • Episode #203: Episode #203: Hash Table
  • Episode #204: Episode #204: Hash Equality
  • Episode #205: Episode #205: Comparable
  • Episode #206: Episode #206: Coercion
  • Episode #207: Episode #207: Conversion Function
  • Episode #208: Episode #208: Lenient Conversions
  • Episode #209: Episode #209: Implicit And Explicit Conversion
  • Episode #210: Episode #210: Implicit Conversion
  • Episode #211: Episode #211: Protected
  • Episode #212: Episode #212: More Of Same
  • Episode #213: Episode #213: Conversion Protocol
  • Episode #214: Episode #214: Conversion Ratio
  • Episode #215: Episode #215: Grep
  • Episode #216: Episode #216: Tell, Don’t Ask
  • Episode #217: Episode #217: Redesign
  • Episode #218: Episode #218: Spaceship Revisited
  • Episode #219: Episode #219: Adamantium
  • Episode #220: Episode #220: Type and Class
  • Episode #221: Episode #221: Def Return Value
  • Episode #222: Episode #222: String Partition
  • Episode #223: Episode #223: Equalizer
  • Episode #224: Episode #224: Surrogate Ordering
  • Episode #225: Episode #225: Unitwise
  • Episode #226: Episode #226: Evil Monkeys
  • Episode #227: Episode #227: Multiline Memoize
  • Episode #228: Episode #228: Reconsidering Regexen
  • Episode #229: Episode #229: Consequences
  • Episode #230: Episode #230: Black Box
  • Episode #231: Episode #231: First
  • Episode #232: Episode #232: Range
  • Episode #233: Episode #233: Flip-Flop
  • Episode #234: Episode #234: Warn
  • Episode #235: Episode #235: Load
  • Episode #236: Episode #236: Wrapped Load
  • Episode #237: Episode #237: Require
  • Episode #238: Episode #238: Gem Require
  • Episode #239: Episode #239: Parameter Default
  • Episode #240: Episode #240: Relative Require
  • Episode #241: Episode #241: Match
  • Episode #242: Episode #242: Logical Require
  • Episode #243: Episode #243: Replace Parameter with Option
  • Episode #244: Episode #244: Drop While
  • Episode #245: Episode #245: Current Dir
  • Episode #246: Episode #246: Values At
  • Episode #247: Episode #247: Multiline Strings
  • Episode #248: Episode #248: Min By
  • Episode #249: Episode #249: Unindent
  • Episode #250: Episode #250: Refinements
  • Episode #251: Episode #251: Email Template
  • Episode #252: Episode #252: Pop
  • Episode #253: Episode #253: Downto
  • Episode #254: Episode #254: Step
  • Episode #255: Episode #255: Httpd
  • Episode #256: Episode #256: Workflow
  • Episode #257: Episode #257: Retry
  • Episode #258: Episode #258: Bitwise Operations with Peter Cooper
  • Episode #259: Episode #259: Redo
  • Episode #260: Episode #260: Regex Capture Groups with Nell Shamrell
  • Episode #261: Episode #261: Next
  • Episode #262: Episode #262: Advanced Next
  • Episode #263: Episode #263: Immutable Enumerators with Tom Stuart
  • Episode #264: Episode #264: Destructuring
  • Episode #265: Episode #265: Method Introspection with Noah Gibbs
  • Episode #266: Episode #266: Pattern Matching
  • Episode #267: Episode #267: Kernel Open with Rob Miller
  • Episode #268: Episode #268: Complex Predicate
  • Episode #269: Episode #269: TSort with Justin Weiss
  • Episode #270: Episode #270: Referential Transparency
  • Episode #271: Episode #271: Understanding RSpec Matchers with Noel Rappin
  • Episode #272: Episode #272: Complex RSpec Matchers with Noel Rappin
  • Episode #273: Episode #273: Naming Test Data
  • Episode #274: Episode #274: Backreference
  • Episode #275: Episode #275: Antique Shop
  • Episode #276: Episode #276: Fattr
  • Episode #277: Episode #277: Loop
  • Episode #278: Episode #278: Lazy
  • Episode #279: Episode #279: Audited Predicate
  • Episode #280: Episode #280: Itself
  • Episode #281: Episode #281: Splatted Send
  • Episode #282: Episode #282: Advanced Audited Predicate
  • Episode #283: Episode #283: Count
  • Episode #284: Episode #284: Testing Retry
  • Episode #285: Episode #285: Flat Map
  • Episode #286: Episode #286: More Coincidental Duplication
  • Episode #287: Episode #287: Mocking Smells 1
  • Episode #288: Episode #288: Partition
  • Episode #289: Episode #289: Mocking Smells 2
  • Episode #290: Episode #290: Chunk
  • Episode #291: Episode #291: Advanced Chunk
  • Episode #292: Episode #292: Delegate Class
  • Episode #293: Episode #293: Integer Formats
  • Episode #294: Episode #294: Predicate Return Value Part 1
  • Episode #295: Episode #295: Predicate Return Value Part 2
  • Episode #296: Episode #296: Mocking Smells 3
  • Episode #297: Episode #297: Test Spies
  • Episode #298: Episode #298: File Find
  • Episode #299: Episode #299: Instance Spy
  • Episode #300: Episode #300: Safe Proxy Part 1
  • Episode #301: Episode #301: Safe Proxy Part 2
  • Episode #302: Episode #302: Safe Proxy Part 3
  • Episode #303: Episode #303: Exception Test
  • Episode #304: Episode #304: Custom Exception
  • Episode #305: Episode #305: Circuit Breaker
  • Episode #306: Episode #306: Random Samples
  • Episode #307: Episode #307: Command Loop
  • Episode #308: Episode #308: Keyword Sugar
  • Episode #309: Episode #309: Globbing with Chris Strom
  • Episode #310: Episode #310: Randomness
  • Episode #311: Episode #311: Secure Random
  • Episode #312: Episode #312: Mocking Smells 4
  • Episode #313: Episode #313: Temporary Directory
  • Episode #314: Episode #314: Filesystem Testing
  • Episode #315: Episode #315: Random Seed
  • Episode #316: Episode #316: each
  • Episode #317: Episode #317: Transpose
  • Episode #318: Episode #318: Expect
  • Episode #319: Episode #319: Log Thread
  • Episode #320: Episode #320: Rerun
  • Episode #321: Episode #321: Smart Collection
  • Episode #322: Episode #322: Benchmark
  • Episode #323: Episode #323: Strip
  • Episode #324: Episode #324: Observed Attribute
  • Episode #325: Episode #325: Benchmark-IPS
  • Episode #326: Episode #326: Differentiation
  • Episode #327: Episode #327: Tracepoint
  • Episode #328: Episode #328: Stack Overflow
  • Episode #329: Episode #329: Transaction Script
  • Episode #330: Episode #330: Rake: Finding Tasks
  • Episode #331: Episode #331: Process Object
  • Episode #332: Episode #332: Notify, Don’t Tell
  • Episode #333: Episode #333: Processes Everywhere
  • Episode #334: Episode #334: Rspec Compound Matchers
  • Episode #335: Episode #335: Rule
  • Episode #336: Episode #336: What Changed?
  • Episode #337: Episode #337: Benign Value
  • Episode #338: Episode #338: Error Value
  • Episode #339: Episode #339: Logger
  • Episode #340: Episode #340: Controlling Log Level
  • Episode #341: Episode #341: Hammers And Diapers
  • Episode #342: Episode #342: Example Data
  • Episode #343: Episode #343: Crystal
  • Episode #344: Episode #344: Nil Conversions
  • Episode #345: Episode #345: Optional Logging
  • Episode #346: Episode #346: User
  • Episode #347: Episode #347: Unpaging Facade
  • Episode #348: Episode #348: Divmod
  • Episode #349: Episode #349: Log Formatting
  • Episode #350: Episode #350: Logging Program Name
  • Episode #351: Episode #351: Log Rotation
  • Episode #352: Episode #352: String Justify
  • Episode #353: Episode #353: Trap
  • Episode #354: Episode #354: Advanced Trap
  • Episode #355: Episode #355: Word Wrap
  • Episode #356: Episode #356: Dynamic Word Wrap
  • Episode #357: Episode #357: Object Oriented Programming
  • Episode #358: Episode #358: Rule Table
  • Episode #359: Episode #359: Colored Logs
  • Episode #360: Episode #360: Assumptions
  • Episode #361: Episode #361: Safe Navigation Part 1: Reliable Associations
  • Episode #362: Episode #362: Safe Navigation Part 2: Try, Try Again
  • Episode #363: Episode #363: Safe Navigation Part 3: Everything is Optional
  • Episode #364: Episode #364: Safe Navigation Part 4: Refinements
  • Episode #365: Episode #365: Safe Navigation Part 5: Adapter
  • Episode #366: Episode #366: Hash Invert
  • Episode #367: Episode #367: Logs And Signals
  • Episode #368: Episode #368: Dig
  • Episode #369: Episode #369: Dig Implementation
  • Episode #370: Episode #370: Protocol Complication
  • Episode #371: Episode #371: Hash To Proc
  • Episode #372: Episode #372: Awesome Print
  • Episode #373: Episode #373: Immediacy
  • Episode #374: Episode #374: Awesome Print and Rails
  • Episode #375: Episode #375: Named Capture
  • Episode #376: Episode #376: Arrays To Hashes
  • Episode #377: Episode #377: Chunk While
  • Episode #378: Episode #378: Fetch Values
  • Episode #379: Episode #379: Squiggly Heredoc
  • Episode #380: Episode #380: Method Dependencies
  • Episode #381: Episode #381: Integer To String
  • Episode #382: Episode #382: Integer To String, Part 2
  • Episode #383: Episode #383: Break The Circle
  • Episode #384: Episode #384: Loop Golf
  • Episode #385: Episode #385: Error 127
  • Episode #386: Episode #386: Errno
  • Episode #387: Episode #387: Fiddle
  • Episode #388: Episode #388: Inverted Grep
  • Episode #389: Episode #389: Magic Subshell
  • Episode #390: Episode #390: Fiddle Importer
  • Episode #391: Episode #391: Hash Subset
  • Episode #392: Episode #392: Editor Macro
  • Episode #393: Episode #393: Sort Check
  • Episode #394: Episode #394: Consistency
  • Episode #395: Episode #395: Microconcerns
  • Episode #396: Episode #396: Invariant
  • Episode #397: Episode #397: Gem Logging
  • Episode #398: Episode #398: StringIO
  • Episode #399: Episode #399: StringIO Test Fake
  • Episode #400: Episode #400: Primitive Obsession
  • Episode #401: Episode #401: Whole Value
  • Episode #402: Episode #402: Self Save Part 1
  • Episode #403: Episode #403: Self Save Part 2
  • Episode #404: Episode #404: Self Save Part 3
  • Episode #405: Episode #405: Self Save Part 4
  • Episode #406: Episode #406: Last Match
  • Episode #407: Episode #407: Pseudoglobal
  • Episode #408: Episode #408: Leaning Toothpicks
  • Episode #409: Episode #409: Optional Gem
  • Episode #410: Episode #410: Stay Positive
  • Episode #411: Episode #411: Stay Positive 2
  • Episode #412: Episode #412: Autovivification
  • Episode #413: Episode #413: Top Level Constant
  • Episode #414: Episode #414: Subprocesses Part 1: Basics
  • Episode #415: Episode #415: Tabular Struct Refactoring with Sam Livingston-Gray
  • Episode #416: Episode #416: Subprocesses Part 2: Command Input Operator
  • Episode #417: Episode #417: Subprocesses Part 3: Spawn
  • Episode #418: Episode #418: No Comment
  • Episode #419: Episode #419: Subprocesses Part 4: Redirection
  • Episode #420: Episode #420: Rake Custom Task
  • Episode #421: Episode #421: Cache Rot
  • Episode #422: Episode #422: Partial Safe Navigation
  • Episode #423: Episode #423: Subprocesses Part 5: SIGCHLD
  • Episode #424: Episode #424: Rake Regex Rule
  • Episode #425: Episode #425: Subprocesses Part 6: Limits
  • Episode #426: Episode #426: Subprocesses Part 7: Soft Limits
  • Episode #427: Episode #427: Subprocesses Part 8: Environmental Isolation
  • Episode #428: Episode #428: Http.rb
  • Episode #429: Episode #429: Oga
  • Episode #430: Episode #430: Parallel Hierarchy
  • Episode #431: Episode #431: Exceptional Value
  • Episode #432: Episode #432: Uniform Abstraction Level
  • Episode #433: Episode #433: Uniform Abstraction Level Part 2: Blank
  • Episode #434: Episode #434: Scanf
  • Episode #435: Episode #435: Date Math
  • Episode #436: Episode #436: Ruby 2.4 Destructuring Conditional
  • Episode #437: Episode #437: Plural Name
  • Episode #438: Episode #438: Subscript Constructor
  • Episode #439: Episode #439: Method Search
  • Episode #440: Episode #440: Detect Map
  • Episode #441: Episode #441: Pluggable Conversion
  • Episode #442: Episode #442: Decoupled Pluggable Conversion
  • Episode #443: Episode #443: Inherited
  • Episode #444: Episode #444: Block Inherited
  • Episode #445: Episode #445: Excessive Decoupling
  • Episode #446: Episode #446: Just-In-Time Decoupling
  • Episode #447: Episode #447: Pessimize
  • Episode #448: Episode #448: Specific Whole Value
  • Episode #449: Episode #449: Substitutable Whole Value
  • Episode #450: Episode #450: Class Membership
  • Episode #451: Episode #451: Advanced Class Membership
  • Episode #452: Episode #452: Array Function
  • Episode #453: Episode #453: Singleton Class
  • Episode #454: Episode #454: Class Method
  • Episode #455: Episode #455: Ensure
  • Episode #456: Episode #456: Singleton Class Exec
  • Episode #457: Episode #457: Subprocesses Part 9: Exec
  • Episode #458: Episode #458: Dangerous Method
  • Episode #459: Episode #459: Array Product
  • Episode #460: Episode #460: Values
  • Episode #461: Episode #461: Compendious Thunks: Intro
  • Episode #462: Episode #462: Compendious Thunks Command Pattern Intro
  • Episode #463: Episode #463: Command Pattern Undo
  • Episode #464: Episode #464: Chain of Responsibility
  • Episode #465: Episode #465: Whither the Successor in the Chain of Responsibility
  • Episode #466: Episode #466: Ancestral Behavior
  • Episode #467: Episode #467: Class Variable
  • Episode #468: Episode #468: Line Endings
  • Episode #469: Episode #469: Rack
  • Episode #470: Episode #470: Binary Mode
  • Episode #471: Episode #471: Which
  • Episode #472: Episode #472: Contextual Identity Part 1
  • Episode #473: Episode #473: Contextual Identity Part 2
  • Episode #474: Episode #474: Do the Work
  • Episode #475: Episode #475: Cycle
  • Episode #476: Episode #476: Group By
  • Episode #477: Episode #477: Variable
  • Episode #478: Episode #478: Combination
  • Episode #479: Episode #479: Handle
  • Episode #480: Episode #480: Read and Write
  • Episode #481: Episode #481: Mixin to Object
  • Episode #482: Episode #482: Create and Extend
  • Episode #483: Episode #483: Extract Default to Method
  • Episode #485: Episode #484: Dup and Clone
  • Episode #485: Episode #485: Subprocesses Part 10: Open Pipe
  • Episode #486: Episode #486: Initialize Copy
  • Episode #487: Episode #487: Prototype Pattern
  • Episode #488: Episode #488: At Exit
  • Episode #489: Episode #489: Exit
  • Episode #490: Episode #490: Crash Logger
  • Episode #491: Episode #491 Special Variables Part 1: Process State
  • Episode #492: Episode #492: Special Variables Part 2: I/O
  • Episode #493: Episode #493: Special Variables Part 3: Regex Matching
  • Episode #494: Episode #494: Special Variables Part 4: Speak English!
  • Episode #495: Episode #495: Faker
  • Episode #496: Episode #496: Deep Freeze
  • Episode #497: Episode #497: Deep Dup
  • Episode #498: Episode #498: Query to Command
  • Episode #499: Episode #499: Subprocesses Part 11: Fork
  • Episode #500: Episode #500: Subprocesses Part 12: Fork and Exec
  • Episode #501: Episode #501: Suppress Output
  • Episode #502: Episode #502: Subprocesses Part 13: Detach, Wait, Kill
  • Episode #503: Episode #503: Subprocesses Part 14: Advanced Wait
  • Episode #504: Episode #504: Disposable Object
  • Episode #505: Episode #505: Subprocesses Part 15: Capture
  • Episode #506: Episode #506: Whole Values in Rails with Justin Weiss
  • Episode #507: Episode #507: Functional Mockup
  • Episode #508: Episode #508: RSpec Focus Tests with Erin Dees
  • Episode #509: Episode #509: Logical Matrix with Piotr Szotkowski
  • Episode #510: Episode #510: RSpec Tags
  • Episode #511: Episode #511: Minimum Viable Method
  • Episode #512: Episode #512: Single File
  • Episode #513: Episode #513: Literal Expectation
  • Episode #514: Episode #514: Value and Identity with Arne Brasseur
  • Episode #515: Episode #515: Guilds with Steve Klabnik
  • Episode #516: Episode #516: TDD is easy! – with Michal Taszycki
  • Episode #517: Episode #517: Table Print with Justin Searls
  • Episode #518: Episode #518: Humane Exceptions with Hiro Asari
  • Episode #519: Episode #519 – Supporting Different Service Versions with OO – Emily Stolfo
  • Episode #520: Episode #520: Bundler Tips and Tricks with Andre Arko
  • Episode #521: Episode #521: Distributable Desktop Apps – Jason Clark
  • Episode #522: Episode #522: Cucumber Expressions with Matt Wynne
  • Episode #523: Episode 523: Data Munging Play-by-Play Part 1 with Avdi Grimm
  • Episode #524: Episode 524: Data Munging Play-by-Play Part 2 with Avdi Grimm
  • Episode #525: Episode #525 – Memory Profiling – Nate Berkopec
  • Episode #526: Episode #526: Asking for help … – Jim Remsik
  • Episode #527: Episode #527: OpenAPI and Apivore – with Ariel Caplan
  • Episode #528: Episode #528: Refactoring for Interviews – Nickolas Means
  • Episode #529: Episode #529: Pull Request Template – Andy Croll
  • Episode #530: Episode #530: Two Factor Authentication – Frank Rietta
  • Episode #531: Episode #531: Password Authentication with Brandon Dees – Part 1
  • Episode #532: Episode #532: Password Authentication with Brandon Dees – Part 2
  • Episode #533: Episode #533: Rails System Test with Sam Phippen
  • Episode #534: Episode #534: Breaking Down Complex Pull Requests with Claudio Baccigalupo
  • Episode #535: Episode #535: String Cleaning with Avdi
  • Episode #536: Episode #536: Learning from the Wider Developer Community with PJ Hagerty
  • Episode #537: Episode #537: The Message Myth with Avdi
  • Episode #538: Better Tests with Mutant
  • Episode #539: Better Code with Mutant
  • Episode #540: Ruby Spelunking
  • Episode #541: Abstraction and Performance – Part 1
  • Episode #542: Abstraction and Performance – Part 2
  • Episode #543: Using Sidekiq Middleware
  • Episode #544: Risk-Oriented Testing
  • Episode #545: Memory Management in C Extensions – Part 1
  • Episode #546: Memory Management in C Extensions – Part 2
  • Episode #547: JSON API in Rails – Part 1
  • Episode #548: JSON API in Rails – Part 2
  • Episode #549: Smaller Objects, Faster Code
  • Episode #550: Github Flow Automation
  • Episode #551: From Math to Code
  • Episode #552: API Design for productivity
  • Episode #553: The TOO HARD Code Smell
  • Episode #554: ActiveRecord Optimizations
  • Episode #555: Getting started with rom-rb
  • Episode #556: Writing changes with rom-rb
  • Episode #557: Building queries with rom-rb
  • Episode #558: yield_self
  • Episode #559: Full Utilization
  • Episode #560: API Exploration
  • Episode #561: Building a REPL
  • Episode #562: Explore and Extend – Part 1
  • Episode #563: Explore and Extend – Part 2
  • Episode #564: Exploratory Refactoring
  • Episode #565: Parameter Destructuring
  • Episode #566: Dynamic Understanding of Dynamic Systems
  • Episode #567: Serverless Ruby with AWS Lambda
  • Episode #568: Polymorphic Attributes in Rails – Part 1
  • Episode #569: Polymorphic Attributes in Rails – Part 2
  • Episode #570: Asynch with Polling
  • Episode #571: Pitch a Plan, not a Promotion
  • Episode #572: Roda – Part 1
  • Episode #573: Roda – Part 2
  • Episode #574: LIKE Injection in SQL
  • Episode #575: Part 1: Patching with Git
  • Episode #576: Part 2: Telling Git Your Intentions
  • Episode #577: Performance Testing – Staying Fast
  • Episode #578: Performance Testing – Scaling with Inputs
  • Episode #579: Aphorism to Empiricism
  • Episode #580: Savon & SOAP APIs
  • Episode #581: Async with Multiplexing
  • Episode #582: Why GraphQL?
  • Episode #583: Async with the Reactor Pattern
  • Episode #584: From Hash to Value Object
  • Episode #585: Presenter Object
  • Episode #586: Don’t Use Greater-Than
  • Episode #587: Clarify Test Comparison
  • Episode #588: Keyword Argument Struct
  • Episode #589: Mixed Argument Struct
  • Episode #590: Communicative Assertion
  • Episode #591: Dynamic Inspect
  • Episode #592: Set
  • Episode #593: Presenter and View
  • Episode #594: Test Substitute
  • Episode #595: Bindings and Local Variables
  • Episode #596: Partial Function Application
  • Episode #597: Demystifying the View
  • Episode #598: Git Storytelling – Part 1
  • Episode #599: Git Storytelling – Part 2
  • Episode #600: Git Storytelling – Part 3
  • Episode #601: Module Builder Pattern – Part 1
  • Episode #602: Module Builder Pattern – Part 2
  • Episode #603: Function Composition Operators
  • Episode #604: Extended Regex Syntax
  • Episode #605: StimulusJS
  • Episode #606: Sagas
  • Episode #607: Code Coverage with SimpleCov
  • Episode #608: Composed Regex
  • Episode #609: Trying Stuff in Docker
  • Episode #610: Manipulating Docker Containers
  • Episode #611: Kubernetes: What and When
  • Episode #612: VS Code and Docker
  • Episode #613: Pattern Matching
  • Episode #614: NPM for Dev Dependencies
  • Episode #615: Mistake-Proof API
  • Episode #616: Aggregate Boundaries
  • Episode #617: Function Pipelining in Ruby
  • Episode #618: Understanding OAuth2… with Horses!
  • Episode #619: Eliminating RSpec Boilderplate with Claudio Baccigalupo
  • Episode #620: Serverless Ruby with AWS SAM
  • Episode #621: lsof; or: what process is using my port?!
  • Episode #622: Send Variations
  • Episode #623: Strace
  • Episode #624: ltrace
  • Episode #625: Docker Diff
  • Episode #626: Numbered Parameters
  • Episode #627: Rake Global Tasks
  • Episode #628: Process Substitution
  • Episode #629: Nested Class
  • Episode #630: Where do Private Methods Come From?
  • Episode #631: Testing with Coat Hangers
  • Episode #632: Loops!
  • Episode #633: Sprout Class
  • Episode #634: You Could Have Sed It in Ruby
  • Episode #635: ARGF, That’s Some AWK-ward Ruby!
  • Episode #636: I got my flippy-floppies
  • Episode #637: mitmproxy
  • Episode #638: Ruby as a Filter
  • Episode #639: Interpolation over Concatenation
  • Episode #640: Autosplit
  • Episode #641: Unroll Test Loops
  • Episode #642: Line Ending Processing Mode
  • Episode #643: Rake Introspection
  • Episode #644: Console Width
  • Episode #645: Grep, Sort, Uniq
  • Episode #646: Zip
  • Episode #647: Lazy Zip
  • Episode #648: Output Record Separator
  • Episode #649: Input Record Separator
  • Episode #650: Re-Run Just the Tests That Failed
  • Episode #651: Chomp
  • Episode #652: Null-Terminated Record
  • Episode #653: Why Containers for Development?
  • Episode #654: A Quick Dev Container
  • Episode #655: Repeatable Devcontainer
  • Episode #656: Understanding npm run (and why to avoid npx!)
  • Episode #657: Dockerfile
  • Episode #658: Container Run Layers
  • Episode #659: Caching Files in a Devcontainer
  • Episode #660: Nokogiri
  • Episode #661: Devcontainer Portmapping
  • Episode #662: Furnishing Your Devcontainer
  • Episode #663: Accessorizing Your Devcontainer Shell
  • Episode #664: Devcontainer Shell Shortcut
  • Episode #665: .env for Devcontainers
  • Episode #666: Devcontainer Path
  • Episode #667: Leaky Devcontainer Filesystem Abstractions
  • Episode #668: Devcontainer Unprivileged User
  • Episode #669: README-Driven Development
  • Episode #670: Ship first, then code
  • Episode #671: Share Credentials with a Devcontainer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment